Эх сурвалжийг харах

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.
Mahavir Jain 4 жил өмнө
parent
commit
ea3c901874

+ 12 - 8
components/mbedtls/test/test_esp_crt_bundle.c

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