mbedtls: fix crt_bundle test to ensure proper server start event

This fixes occasional test failure that was observed due to
client task getting started before server was up.
pull/7307/head
Mahavir Jain 2021-07-08 12:01:44 +05:30 zatwierdzone przez bot
rodzic 3be3d5fff2
commit ea3c901874
1 zmienionych plików z 12 dodań i 8 usunięć

Wyświetl plik

@ -168,6 +168,9 @@ void server_task(void *pvParameters)
goto exit;
}
/* Signal that server is up and hence client task can start now */
xSemaphoreGive(*sema);
bool connected = false;
while (!exit_flag) {
@ -272,8 +275,6 @@ int client_task(const uint8_t *bundle, esp_crt_validate_res_t *res)
esp_crt_bundle_set(bundle);
}
ESP_LOGI(TAG, "Connecting to %s:%s...", SERVER_ADDRESS, SERVER_PORT);
if ((ret = mbedtls_net_connect(&client.client_fd, SERVER_ADDRESS, SERVER_PORT, MBEDTLS_NET_PROTO_TCP)) != 0) {
ESP_LOGE(TAG, "mbedtls_net_connect returned -%x", -ret);
@ -319,13 +320,16 @@ TEST_CASE("custom certificate bundle", "[mbedtls]")
test_case_uses_tcpip();
xSemaphoreHandle exit_sema = xSemaphoreCreateBinary();
xSemaphoreHandle signal_sem = xSemaphoreCreateBinary();
TEST_ASSERT_NOT_NULL(signal_sem);
exit_flag = false;
xTaskCreate(server_task, "server task", 8192, &exit_sema, 10, NULL);
xTaskCreate(server_task, "server task", 8192, &signal_sem, 10, NULL);
// Wait for the server to start up
vTaskDelay(100 / portTICK_PERIOD_MS);
if (!xSemaphoreTake(signal_sem, 10000 / portTICK_PERIOD_MS)) {
TEST_FAIL_MESSAGE("signal_sem not released, server start failed");
}
/* Test with default crt bundle that doesnt contain the ca crt */
client_task(NULL, &validate_res);
@ -337,11 +341,11 @@ TEST_CASE("custom certificate bundle", "[mbedtls]")
exit_flag = true;
if (!xSemaphoreTake(exit_sema, 10000 / portTICK_PERIOD_MS)) {
TEST_FAIL_MESSAGE("exit_sem not released by server task");
if (!xSemaphoreTake(signal_sem, 10000 / portTICK_PERIOD_MS)) {
TEST_FAIL_MESSAGE("signal_sem not released, server exit failed");
}
vSemaphoreDelete(exit_sema);
vSemaphoreDelete(signal_sem);
}
#endif //!TEMPORARY_DISABLED_FOR_TARGETS(ESP32S3)