#include "test_utils.h" #include "mdns.h" #include "esp_event.h" #include "unity.h" #define MDNS_HOSTNAME "test-hostname" #define MDNS_DELEGATE_HOSTNAME "delegate-hostname" #define MDNS_INSTANCE "test-instance" #define MDNS_SERVICE_NAME "_http" #define MDNS_SERVICE_PROTO "_tcp" #define MDNS_SERVICE_PORT 80 static void yield_to_all_priorities(void) { // Lower the test-task priority before testing to ensure other tasks got executed on forced context switch size_t test_task_prio_before = uxTaskPriorityGet(NULL); vTaskPrioritySet(NULL, tskIDLE_PRIORITY); taskYIELD(); // Let the RTOS to switch context vTaskPrioritySet(NULL, test_task_prio_before); } TEST_CASE("mdns api to fail in invalid state", "[mdns][leaks=64]") { TEST_ASSERT_NOT_EQUAL(ESP_OK, mdns_init() ); TEST_ASSERT_NOT_EQUAL(ESP_OK, mdns_hostname_set(MDNS_HOSTNAME) ); TEST_ASSERT_NOT_EQUAL(ESP_OK, mdns_instance_name_set(MDNS_INSTANCE) ); TEST_ASSERT_NOT_EQUAL(ESP_OK, mdns_service_add(MDNS_INSTANCE, MDNS_SERVICE_NAME, MDNS_SERVICE_PROTO, MDNS_SERVICE_PORT, NULL, 0) ); } TEST_CASE("mdns init and deinit", "[mdns][leaks=64]") { test_case_uses_tcpip(); TEST_ASSERT_EQUAL(ESP_OK, esp_event_loop_create_default()); TEST_ASSERT_EQUAL(ESP_OK, mdns_init() ); yield_to_all_priorities(); // Make sure that mdns task has executed to complete initialization mdns_free(); esp_event_loop_delete_default(); } TEST_CASE("mdns api return expected err-code and do not leak memory", "[mdns][leaks=64]") { mdns_txt_item_t serviceTxtData[CONFIG_MDNS_MAX_SERVICES] = { {NULL, NULL}, }; mdns_ip_addr_t addr; addr.addr.type = ESP_IPADDR_TYPE_V4; addr.addr.u_addr.ip4.addr = esp_ip4addr_aton("127.0.0.1"); addr.next = NULL; for (int i=0; i