mirror of
https://github.com/espressif/esp-idf.git
synced 2025-08-01 19:54:32 +02:00
unit test: adapt tests to single core configuration
This commit is contained in:
@@ -51,9 +51,11 @@ TEST_CASE("ets_delay produces correct delay on both CPUs", "[delay]")
|
|||||||
TEST_ASSERT( xSemaphoreTake(args.done, delay_ms * 2 / portTICK_PERIOD_MS) );
|
TEST_ASSERT( xSemaphoreTake(args.done, delay_ms * 2 / portTICK_PERIOD_MS) );
|
||||||
TEST_ASSERT_INT32_WITHIN(1000, args.delay_us, args.result);
|
TEST_ASSERT_INT32_WITHIN(1000, args.delay_us, args.result);
|
||||||
|
|
||||||
|
#if portNUM_PROCESSORS == 2
|
||||||
xTaskCreatePinnedToCore(test_delay_task, "", 2048, (void*) &args, 3, NULL, 1);
|
xTaskCreatePinnedToCore(test_delay_task, "", 2048, (void*) &args, 3, NULL, 1);
|
||||||
TEST_ASSERT( xSemaphoreTake(args.done, delay_ms * 2 / portTICK_PERIOD_MS) );
|
TEST_ASSERT( xSemaphoreTake(args.done, delay_ms * 2 / portTICK_PERIOD_MS) );
|
||||||
TEST_ASSERT_INT32_WITHIN(1000, args.delay_us, args.result);
|
TEST_ASSERT_INT32_WITHIN(1000, args.delay_us, args.result);
|
||||||
|
#endif
|
||||||
|
|
||||||
ref_clock_deinit();
|
ref_clock_deinit();
|
||||||
vSemaphoreDelete(args.done);
|
vSemaphoreDelete(args.done);
|
||||||
@@ -72,9 +74,11 @@ TEST_CASE("vTaskDelay produces correct delay on both CPUs", "[delay]")
|
|||||||
TEST_ASSERT( xSemaphoreTake(args.done, delay_ms * 2 / portTICK_PERIOD_MS) );
|
TEST_ASSERT( xSemaphoreTake(args.done, delay_ms * 2 / portTICK_PERIOD_MS) );
|
||||||
TEST_ASSERT_INT32_WITHIN(1000, args.delay_us, args.result);
|
TEST_ASSERT_INT32_WITHIN(1000, args.delay_us, args.result);
|
||||||
|
|
||||||
|
#if portNUM_PROCESSORS == 2
|
||||||
xTaskCreatePinnedToCore(test_delay_task, "", 2048, (void*) &args, 3, NULL, 1);
|
xTaskCreatePinnedToCore(test_delay_task, "", 2048, (void*) &args, 3, NULL, 1);
|
||||||
TEST_ASSERT( xSemaphoreTake(args.done, delay_ms * 2 / portTICK_PERIOD_MS) );
|
TEST_ASSERT( xSemaphoreTake(args.done, delay_ms * 2 / portTICK_PERIOD_MS) );
|
||||||
TEST_ASSERT_INT32_WITHIN(1000, args.delay_us, args.result);
|
TEST_ASSERT_INT32_WITHIN(1000, args.delay_us, args.result);
|
||||||
|
#endif
|
||||||
|
|
||||||
ref_clock_deinit();
|
ref_clock_deinit();
|
||||||
vSemaphoreDelete(args.done);
|
vSemaphoreDelete(args.done);
|
||||||
|
@@ -180,7 +180,7 @@ TEST_CASE("context switch saves FP registers", "[fp]")
|
|||||||
state.fail = 0;
|
state.fail = 0;
|
||||||
xTaskCreatePinnedToCore(tskTestFP, "tsk1", 2048, &state, 3, NULL, 0);
|
xTaskCreatePinnedToCore(tskTestFP, "tsk1", 2048, &state, 3, NULL, 0);
|
||||||
xTaskCreatePinnedToCore(tskTestFP, "tsk2", 2048, &state, 3, NULL, 0);
|
xTaskCreatePinnedToCore(tskTestFP, "tsk2", 2048, &state, 3, NULL, 0);
|
||||||
xTaskCreatePinnedToCore(tskTestFP, "tsk3", 2048, &state, 3, NULL, 1);
|
xTaskCreatePinnedToCore(tskTestFP, "tsk3", 2048, &state, 3, NULL, portNUM_PROCESSORS - 1);
|
||||||
xTaskCreatePinnedToCore(tskTestFP, "tsk4", 2048, &state, 3, NULL, 0);
|
xTaskCreatePinnedToCore(tskTestFP, "tsk4", 2048, &state, 3, NULL, 0);
|
||||||
while (state.done != 4) {
|
while (state.done != 4) {
|
||||||
vTaskDelay(100 / portTICK_PERIOD_MS);
|
vTaskDelay(100 / portTICK_PERIOD_MS);
|
||||||
|
@@ -404,8 +404,10 @@ void test_fatfs_concurrent(const char* filename_prefix)
|
|||||||
|
|
||||||
printf("writing f1 and f2\n");
|
printf("writing f1 and f2\n");
|
||||||
|
|
||||||
xTaskCreatePinnedToCore(&read_write_task, "rw1", 2048, &args1, 3, NULL, 0);
|
const int cpuid_0 = 0;
|
||||||
xTaskCreatePinnedToCore(&read_write_task, "rw2", 2048, &args2, 3, NULL, 1);
|
const int cpuid_1 = portNUM_PROCESSORS - 1;
|
||||||
|
xTaskCreatePinnedToCore(&read_write_task, "rw1", 2048, &args1, 3, NULL, cpuid_0);
|
||||||
|
xTaskCreatePinnedToCore(&read_write_task, "rw2", 2048, &args2, 3, NULL, cpuid_1);
|
||||||
|
|
||||||
xSemaphoreTake(args1.done, portMAX_DELAY);
|
xSemaphoreTake(args1.done, portMAX_DELAY);
|
||||||
printf("f1 done\n");
|
printf("f1 done\n");
|
||||||
@@ -421,10 +423,10 @@ void test_fatfs_concurrent(const char* filename_prefix)
|
|||||||
|
|
||||||
printf("reading f1 and f2, writing f3 and f4\n");
|
printf("reading f1 and f2, writing f3 and f4\n");
|
||||||
|
|
||||||
xTaskCreatePinnedToCore(&read_write_task, "rw3", 2048, &args3, 3, NULL, 1);
|
xTaskCreatePinnedToCore(&read_write_task, "rw3", 2048, &args3, 3, NULL, cpuid_1);
|
||||||
xTaskCreatePinnedToCore(&read_write_task, "rw4", 2048, &args4, 3, NULL, 0);
|
xTaskCreatePinnedToCore(&read_write_task, "rw4", 2048, &args4, 3, NULL, cpuid_0);
|
||||||
xTaskCreatePinnedToCore(&read_write_task, "rw1", 2048, &args1, 3, NULL, 0);
|
xTaskCreatePinnedToCore(&read_write_task, "rw1", 2048, &args1, 3, NULL, cpuid_0);
|
||||||
xTaskCreatePinnedToCore(&read_write_task, "rw2", 2048, &args2, 3, NULL, 1);
|
xTaskCreatePinnedToCore(&read_write_task, "rw2", 2048, &args2, 3, NULL, cpuid_1);
|
||||||
|
|
||||||
xSemaphoreTake(args1.done, portMAX_DELAY);
|
xSemaphoreTake(args1.done, portMAX_DELAY);
|
||||||
printf("f1 done\n");
|
printf("f1 done\n");
|
||||||
|
@@ -46,7 +46,9 @@ TEST_CASE("xPortInIsrContext test", "[freertos]")
|
|||||||
{
|
{
|
||||||
xTaskCreatePinnedToCore(testthread, "tst" , 4096, NULL, 3, NULL, 0);
|
xTaskCreatePinnedToCore(testthread, "tst" , 4096, NULL, 3, NULL, 0);
|
||||||
vTaskDelay(150 / portTICK_PERIOD_MS);
|
vTaskDelay(150 / portTICK_PERIOD_MS);
|
||||||
|
#if portNUM_PROCESSORS == 2
|
||||||
xTaskCreatePinnedToCore(testthread, "tst" , 4096, NULL, 3, NULL, 1);
|
xTaskCreatePinnedToCore(testthread, "tst" , 4096, NULL, 3, NULL, 1);
|
||||||
vTaskDelay(150 / portTICK_PERIOD_MS);
|
vTaskDelay(150 / portTICK_PERIOD_MS);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -50,7 +50,7 @@ TEST_CASE("Test for per-task non-reentrant tasks", "[freertos]")
|
|||||||
error = 0;
|
error = 0;
|
||||||
xTaskCreatePinnedToCore(tskTestRand, "tsk1", 2048, (void *)100, 3, NULL, 0);
|
xTaskCreatePinnedToCore(tskTestRand, "tsk1", 2048, (void *)100, 3, NULL, 0);
|
||||||
xTaskCreatePinnedToCore(tskTestRand, "tsk2", 2048, (void *)200, 3, NULL, 0);
|
xTaskCreatePinnedToCore(tskTestRand, "tsk2", 2048, (void *)200, 3, NULL, 0);
|
||||||
xTaskCreatePinnedToCore(tskTestRand, "tsk3", 2048, (void *)300, 3, NULL, 1);
|
xTaskCreatePinnedToCore(tskTestRand, "tsk3", 2048, (void *)300, 3, NULL, portNUM_PROCESSORS - 1);
|
||||||
xTaskCreatePinnedToCore(tskTestRand, "tsk4", 2048, (void *)400, 3, NULL, 0);
|
xTaskCreatePinnedToCore(tskTestRand, "tsk4", 2048, (void *)400, 3, NULL, 0);
|
||||||
while (done != 4) {
|
while (done != 4) {
|
||||||
vTaskDelay(1000 / portTICK_PERIOD_MS);
|
vTaskDelay(1000 / portTICK_PERIOD_MS);
|
||||||
|
@@ -72,6 +72,7 @@ TEST_CASE("Yield from lower priority task, same CPU", "[freertos]")
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#if portNUM_PROCESSORS == 2
|
||||||
TEST_CASE("Yield from lower priority task, other CPU", "[freertos]")
|
TEST_CASE("Yield from lower priority task, other CPU", "[freertos]")
|
||||||
{
|
{
|
||||||
uint32_t trigger_ccount, yield_ccount, now_ccount, delta;
|
uint32_t trigger_ccount, yield_ccount, now_ccount, delta;
|
||||||
@@ -106,3 +107,4 @@ TEST_CASE("Yield from lower priority task, other CPU", "[freertos]")
|
|||||||
vTaskDelete(sender_task);
|
vTaskDelete(sender_task);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif // portNUM_PROCESSORS == 2
|
||||||
|
@@ -62,6 +62,8 @@ TEST_CASE("portMUX recursive locks (no contention)", "[freertos]")
|
|||||||
BENCHMARK_END("no contention recursive");
|
BENCHMARK_END("no contention recursive");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if portNUM_PROCESSORS == 2
|
||||||
|
|
||||||
static volatile int shared_value;
|
static volatile int shared_value;
|
||||||
static portMUX_TYPE shared_mux;
|
static portMUX_TYPE shared_mux;
|
||||||
static xSemaphoreHandle done_sem;
|
static xSemaphoreHandle done_sem;
|
||||||
@@ -130,4 +132,5 @@ TEST_CASE("portMUX high contention", "[freertos]")
|
|||||||
TEST_ASSERT_EQUAL_INT(REPEAT_OPS * TOTAL_TASKS, shared_value);
|
TEST_ASSERT_EQUAL_INT(REPEAT_OPS * TOTAL_TASKS, shared_value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif // portNUM_PROCESSORS == 2
|
||||||
|
|
||||||
|
@@ -11,6 +11,8 @@
|
|||||||
#include "sdkconfig.h"
|
#include "sdkconfig.h"
|
||||||
|
|
||||||
|
|
||||||
|
#if portNUM_PROCESSORS == 2
|
||||||
|
|
||||||
// https://github.com/espressif/arduino-esp32/issues/120
|
// https://github.com/espressif/arduino-esp32/issues/120
|
||||||
TEST_CASE("Reading RTC registers on APP CPU doesn't affect clock", "[newlib]")
|
TEST_CASE("Reading RTC registers on APP CPU doesn't affect clock", "[newlib]")
|
||||||
{
|
{
|
||||||
@@ -48,3 +50,4 @@ TEST_CASE("Reading RTC registers on APP CPU doesn't affect clock", "[newlib]")
|
|||||||
TEST_ASSERT_TRUE(xSemaphoreTake(done, 5000 / portTICK_RATE_MS));
|
TEST_ASSERT_TRUE(xSemaphoreTake(done, 5000 / portTICK_RATE_MS));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif // portNUM_PROCESSORS == 2
|
||||||
|
@@ -157,7 +157,7 @@ TEST_CASE("spi flash functions can run along with IRAM interrupts", "[spi_flash]
|
|||||||
timer_enable_intr(TIMER_GROUP_0, TIMER_0);
|
timer_enable_intr(TIMER_GROUP_0, TIMER_0);
|
||||||
timer_start(TIMER_GROUP_0, TIMER_0);
|
timer_start(TIMER_GROUP_0, TIMER_0);
|
||||||
|
|
||||||
xTaskCreatePinnedToCore(read_task, "r", 2048, &read_arg, 3, NULL, 1);
|
xTaskCreatePinnedToCore(read_task, "r", 2048, &read_arg, 3, NULL, portNUM_PROCESSORS - 1);
|
||||||
xSemaphoreTake(read_arg.done, portMAX_DELAY);
|
xSemaphoreTake(read_arg.done, portMAX_DELAY);
|
||||||
|
|
||||||
timer_pause(TIMER_GROUP_0, TIMER_0);
|
timer_pause(TIMER_GROUP_0, TIMER_0);
|
||||||
|
@@ -346,9 +346,10 @@ void test_spiffs_concurrent(const char* filename_prefix)
|
|||||||
read_write_test_arg_t args2 = READ_WRITE_TEST_ARG_INIT(names[1], 2);
|
read_write_test_arg_t args2 = READ_WRITE_TEST_ARG_INIT(names[1], 2);
|
||||||
|
|
||||||
printf("writing f1 and f2\n");
|
printf("writing f1 and f2\n");
|
||||||
|
const int cpuid_0 = 0;
|
||||||
xTaskCreatePinnedToCore(&read_write_task, "rw1", 2048, &args1, 3, NULL, 0);
|
const int cpuid_1 = portNUM_PROCESSORS - 1;
|
||||||
xTaskCreatePinnedToCore(&read_write_task, "rw2", 2048, &args2, 3, NULL, 1);
|
xTaskCreatePinnedToCore(&read_write_task, "rw1", 2048, &args1, 3, NULL, cpuid_0);
|
||||||
|
xTaskCreatePinnedToCore(&read_write_task, "rw2", 2048, &args2, 3, NULL, cpuid_1);
|
||||||
|
|
||||||
xSemaphoreTake(args1.done, portMAX_DELAY);
|
xSemaphoreTake(args1.done, portMAX_DELAY);
|
||||||
printf("f1 done\n");
|
printf("f1 done\n");
|
||||||
@@ -364,10 +365,10 @@ void test_spiffs_concurrent(const char* filename_prefix)
|
|||||||
|
|
||||||
printf("reading f1 and f2, writing f3 and f4\n");
|
printf("reading f1 and f2, writing f3 and f4\n");
|
||||||
|
|
||||||
xTaskCreatePinnedToCore(&read_write_task, "rw3", 2048, &args3, 3, NULL, 1);
|
xTaskCreatePinnedToCore(&read_write_task, "rw3", 2048, &args3, 3, NULL, cpuid_1);
|
||||||
xTaskCreatePinnedToCore(&read_write_task, "rw4", 2048, &args4, 3, NULL, 0);
|
xTaskCreatePinnedToCore(&read_write_task, "rw4", 2048, &args4, 3, NULL, cpuid_0);
|
||||||
xTaskCreatePinnedToCore(&read_write_task, "rw1", 2048, &args1, 3, NULL, 0);
|
xTaskCreatePinnedToCore(&read_write_task, "rw1", 2048, &args1, 3, NULL, cpuid_0);
|
||||||
xTaskCreatePinnedToCore(&read_write_task, "rw2", 2048, &args2, 3, NULL, 1);
|
xTaskCreatePinnedToCore(&read_write_task, "rw2", 2048, &args2, 3, NULL, cpuid_1);
|
||||||
|
|
||||||
xSemaphoreTake(args1.done, portMAX_DELAY);
|
xSemaphoreTake(args1.done, portMAX_DELAY);
|
||||||
printf("f1 done\n");
|
printf("f1 done\n");
|
||||||
|
@@ -109,8 +109,10 @@ TEST_CASE("multiple tasks can access wl handle simultaneously", "[wear_levelling
|
|||||||
const size_t stack_size = 4096;
|
const size_t stack_size = 4096;
|
||||||
|
|
||||||
printf("writing 1 and 2\n");
|
printf("writing 1 and 2\n");
|
||||||
xTaskCreatePinnedToCore(&read_write_task, "rw1", stack_size, &args1, 3, NULL, 0);
|
const int cpuid_0 = 0;
|
||||||
xTaskCreatePinnedToCore(&read_write_task, "rw2", stack_size, &args2, 3, NULL, 1);
|
const int cpuid_1 = portNUM_PROCESSORS - 1;
|
||||||
|
xTaskCreatePinnedToCore(&read_write_task, "rw1", stack_size, &args1, 3, NULL, cpuid_0);
|
||||||
|
xTaskCreatePinnedToCore(&read_write_task, "rw2", stack_size, &args2, 3, NULL, cpuid_1);
|
||||||
|
|
||||||
xSemaphoreTake(args1.done, portMAX_DELAY);
|
xSemaphoreTake(args1.done, portMAX_DELAY);
|
||||||
printf("f1 done\n");
|
printf("f1 done\n");
|
||||||
@@ -125,10 +127,10 @@ TEST_CASE("multiple tasks can access wl handle simultaneously", "[wear_levelling
|
|||||||
read_write_test_arg_t args4 = READ_WRITE_TEST_ARG_INIT(3 * sector_size, 4, handle, sector_size/sizeof(uint32_t));
|
read_write_test_arg_t args4 = READ_WRITE_TEST_ARG_INIT(3 * sector_size, 4, handle, sector_size/sizeof(uint32_t));
|
||||||
|
|
||||||
printf("reading 1 and 2, writing 3 and 4\n");
|
printf("reading 1 and 2, writing 3 and 4\n");
|
||||||
xTaskCreatePinnedToCore(&read_write_task, "rw3", stack_size, &args3, 3, NULL, 1);
|
xTaskCreatePinnedToCore(&read_write_task, "rw3", stack_size, &args3, 3, NULL, cpuid_1);
|
||||||
xTaskCreatePinnedToCore(&read_write_task, "rw4", stack_size, &args4, 3, NULL, 0);
|
xTaskCreatePinnedToCore(&read_write_task, "rw4", stack_size, &args4, 3, NULL, cpuid_0);
|
||||||
xTaskCreatePinnedToCore(&read_write_task, "rw1", stack_size, &args1, 3, NULL, 0);
|
xTaskCreatePinnedToCore(&read_write_task, "rw1", stack_size, &args1, 3, NULL, cpuid_0);
|
||||||
xTaskCreatePinnedToCore(&read_write_task, "rw2", stack_size, &args2, 3, NULL, 1);
|
xTaskCreatePinnedToCore(&read_write_task, "rw2", stack_size, &args2, 3, NULL, cpuid_1);
|
||||||
|
|
||||||
xSemaphoreTake(args1.done, portMAX_DELAY);
|
xSemaphoreTake(args1.done, portMAX_DELAY);
|
||||||
printf("f1 done\n");
|
printf("f1 done\n");
|
||||||
|
Reference in New Issue
Block a user