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
parent 4333e618b5
commit f817971f68

View File

@ -165,6 +165,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) {
@ -269,8 +272,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);
@ -316,13 +317,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);
@ -334,11 +338,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);
}
TEST_CASE("custom certificate bundle - weak hash", "[mbedtls]")