blob: 19bb7bf421ca906564dbf6dbb925fac52c0d07e9 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
|
cmake_minimum_required(VERSION 3.13 FATAL_ERROR)
cmake_policy(SET CMP0057 NEW)
project(regression_test LANGUAGES C)
get_filename_component(
SOURCE_DIR
${CMAKE_CURRENT_LIST_DIR}/../../../regression/interoperability_test/mqtt_test
ABSOLUTE)
if(NOT "-DNXD_MQTT_REQUIRE_TLS" IN_LIST ${CMAKE_BUILD_TYPE})
list(APPEND mqtt_test_cases mqtt_subscriber_test)
set(mqtt_subscriber_test_file_list
${SOURCE_DIR}/linux_mqtt_subscriber_test_entry.c
${SOURCE_DIR}/linux_mqtt_subscriber_test_server.c
${SOURCE_DIR}/linux_mqtt_subscriber_test_publisher.c
${SOURCE_DIR}/netx_mqtt_subscriber_test.c)
list(APPEND mqtt_test_cases mqtt_subscriber_empty_message_test)
set(mqtt_subscriber_empty_message_test_file_list
${SOURCE_DIR}/linux_mqtt_subscriber_test_entry.c
${SOURCE_DIR}/linux_mqtt_subscriber_test_server.c
${SOURCE_DIR}/linux_mqtt_subscriber_empty_message_test_publisher.c
${SOURCE_DIR}/netx_mqtt_subscriber_empty_message_test.c)
endif()
if("-DNX_SECURE_ENABLE" IN_LIST ${CMAKE_BUILD_TYPE})
list(APPEND mqtt_test_cases mqtt_tls_subscriber_twice_test)
set(mqtt_tls_subscriber_twice_test_file_list
${SOURCE_DIR}/linux_mqtt_tls_subscriber_test_entry.c
${SOURCE_DIR}/linux_mqtt_tls_subscriber_test_server.c
${SOURCE_DIR}/linux_mqtt_tls_subscriber_twice_test_publisher.c
${SOURCE_DIR}/netx_mqtt_tls_subscriber_twice_test.c)
list(APPEND mqtt_test_cases mqtt_double_subscribers_test)
set(mqtt_double_subscribers_test_file_list
${SOURCE_DIR}/linux_mqtt_tls_subscriber_test_entry.c
${SOURCE_DIR}/linux_mqtt_tls_subscriber_test_server.c
${SOURCE_DIR}/linux_mqtt_tls_subscriber_test_publisher.c
${SOURCE_DIR}/netx_mqtt_double_subscribers_test.c)
list(APPEND mqtt_test_cases mqtt_tls_subscriber_test)
set(mqtt_tls_subscriber_test_file_list
${SOURCE_DIR}/linux_mqtt_tls_subscriber_test_entry.c
${SOURCE_DIR}/linux_mqtt_tls_subscriber_test_server.c
${SOURCE_DIR}/linux_mqtt_tls_subscriber_test_publisher.c
${SOURCE_DIR}/netx_mqtt_tls_subscriber_test.c)
list(APPEND debug_secure_build_mqtt_test_cases mqtt_tls_debug_test)
set(mqtt_tls_debug_test_file_list
${SOURCE_DIR}/netx_mqtt_tls_subscriber_test.c)
endif()
set(test_utility_files
${SOURCE_DIR}/netxtestcontrol.c
${SOURCE_DIR}/nx_crypto_ciphersuites_regression.c
${SOURCE_DIR}/nx_ram_network_driver_test_1500.c
${SOURCE_DIR}/nx_secure_fips_test_utility.c)
get_filename_component(
UTILITY_SOURCE_DIR
${CMAKE_CURRENT_LIST_DIR}/../../../regression/interoperability_test/test_frame
ABSOLUTE)
add_library(
test_utility
${UTILITY_SOURCE_DIR}/tls_test_get_external_test_process_output.c
${UTILITY_SOURCE_DIR}/tls_test_launch_external_test_process.c
${UTILITY_SOURCE_DIR}/tls_test_launch_external_test_process_in_background.c
${UTILITY_SOURCE_DIR}/tls_test_director_clean_all.c
${UTILITY_SOURCE_DIR}/tls_test_director_cleanup_registered_instances.c
${UTILITY_SOURCE_DIR}/tls_test_director_create.c
${UTILITY_SOURCE_DIR}/tls_test_director_destroy.c
${UTILITY_SOURCE_DIR}/tls_test_director_register_test_instance.c
${UTILITY_SOURCE_DIR}/tls_test_director_test_start.c
${UTILITY_SOURCE_DIR}/tls_test_instance_attributes_access.c
${UTILITY_SOURCE_DIR}/tls_test_instance_append.c
${UTILITY_SOURCE_DIR}/tls_test_instance_create.c
${UTILITY_SOURCE_DIR}/tls_test_instance_destroy.c
${UTILITY_SOURCE_DIR}/tls_test_instance_find_next.c
${UTILITY_SOURCE_DIR}/tls_test_instance_set_exit_status.c
${UTILITY_SOURCE_DIR}/tls_test_instance_shared_buffer_manipulate.c
${UTILITY_SOURCE_DIR}/tls_test_kill_external_test_process.c
${UTILITY_SOURCE_DIR}/tls_test_semaphore_create.c
${UTILITY_SOURCE_DIR}/tls_test_semaphore_destroy.c
${UTILITY_SOURCE_DIR}/tls_test_semaphore_post.c
${UTILITY_SOURCE_DIR}/tls_test_semaphore_wait.c
${UTILITY_SOURCE_DIR}/tls_test_wait_all_child_process.c
${UTILITY_SOURCE_DIR}/tls_test_wait_external_test_process.c
${UTILITY_SOURCE_DIR}/tls_test_uninterruptable_wait.c)
target_link_libraries(test_utility PUBLIC azrtos::netxduo)
target_include_directories(test_utility PUBLIC ${UTILITY_SOURCE_DIR})
include(network_config.cmake)
set(PCAP_SOURCE
${CMAKE_CURRENT_LIST_DIR}/../../../regression/interoperability_test/nx_pcap_network_driver.c
)
foreach(test_case ${mqtt_test_cases})
add_executable(${test_case} ${${test_case}_file_list} ${PCAP_SOURCE})
network_config(${test_case})
target_link_libraries(${test_case} PRIVATE test_utility pcap)
add_test(
NAME ${CMAKE_BUILD_TYPE}::${test_case}
COMMAND
bash -c
"export PATH=${SOURCE_DIR}/test_scripts/:$PATH;
ip link del ${${test_case}_interface}>/dev/null 2>&1;
ip link add ${${test_case}_interface} type veth peer name ${${test_case}_remote_interface} || exit 1;
ifconfig ${${test_case}_interface} up || { ip link del ${${test_case}_interface}; exit 1; };
ifconfig ${${test_case}_remote_interface} ${${test_case}_remote_ip} up netmask ${TEST_NETMASK} || { ip link del ${${test_case}_interface};exit 1; };
ethtool --offload ${${test_case}_remote_interface} tx off || { ip link del ${${test_case}_interface}; exit 1; };
tcpdump -i ${${test_case}_remote_interface} -s 0 -w ${CMAKE_CURRENT_BINARY_DIR}/${test_case}.pcap&
pid=$!
${CMAKE_CURRENT_BINARY_DIR}/${test_case};
exit_code=$?
sleep 1;
kill -TERM $pid
ip link del ${${test_case}_interface} || exit 1;
[[ $exit_code = 0 ]] || [[ $exit_code = 233 ]] || { echo Exit code: $exit_code; exit $exit_code; };"
WORKING_DIRECTORY ${SOURCE_DIR})
endforeach()
|