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.
This commit is contained in:
Mahavir Jain
2021-07-08 12:01:44 +05:30
committed by bot
parent 3be3d5fff2
commit ea3c901874

View File

@@ -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)