1d4afb5ceSopenharmony_ciproject(lws-minimal-http-client C) 2d4afb5ceSopenharmony_cicmake_minimum_required(VERSION 2.8.12) 3d4afb5ceSopenharmony_cifind_package(libwebsockets CONFIG REQUIRED) 4d4afb5ceSopenharmony_cilist(APPEND CMAKE_MODULE_PATH ${LWS_CMAKE_DIR}) 5d4afb5ceSopenharmony_ciinclude(CheckCSourceCompiles) 6d4afb5ceSopenharmony_ciinclude(LwsCheckRequirements) 7d4afb5ceSopenharmony_ci 8d4afb5ceSopenharmony_ciset(SAMP lws-minimal-http-client) 9d4afb5ceSopenharmony_ciset(SRCS minimal-http-client.c) 10d4afb5ceSopenharmony_ci 11d4afb5ceSopenharmony_ciset(has_fault_injection 1) 12d4afb5ceSopenharmony_ciset(has_h2 1) 13d4afb5ceSopenharmony_ciset(has_plugins 1) 14d4afb5ceSopenharmony_ciset(has_ss_policy_parse 1) 15d4afb5ceSopenharmony_ciset(has_no_system_vhost 1) 16d4afb5ceSopenharmony_ciset(has_async_dns 1) 17d4afb5ceSopenharmony_ciset(has_mbedtls 1) 18d4afb5ceSopenharmony_ci 19d4afb5ceSopenharmony_ciset(requirements 1) 20d4afb5ceSopenharmony_ci 21d4afb5ceSopenharmony_cirequire_lws_config(LWS_ROLE_H1 1 requirements) 22d4afb5ceSopenharmony_cirequire_lws_config(LWS_WITH_CLIENT 1 requirements) 23d4afb5ceSopenharmony_cirequire_lws_config(LWS_WITH_SYS_STATE 1 requirements) 24d4afb5ceSopenharmony_ci 25d4afb5ceSopenharmony_cirequire_lws_config(LWS_ROLE_H2 1 has_h2) 26d4afb5ceSopenharmony_cirequire_lws_config(LWS_WITH_SYS_FAULT_INJECTION 1 has_fault_injection) 27d4afb5ceSopenharmony_cirequire_lws_config(LWS_WITH_EVLIB_PLUGINS 1 has_plugins) 28d4afb5ceSopenharmony_cirequire_lws_config(LWS_WITH_EVENT_LIBS 1 has_plugins) 29d4afb5ceSopenharmony_ci 30d4afb5ceSopenharmony_cirequire_lws_config(LWS_WITH_SECURE_STREAMS 1 has_ss_policy_parse) 31d4afb5ceSopenharmony_cirequire_lws_config(LWS_WITH_SECURE_STREAMS_STATIC_POLICY_ONLY 0 has_ss_policy_parse) 32d4afb5ceSopenharmony_ci 33d4afb5ceSopenharmony_cirequire_lws_config(LWS_WITH_SYS_ASYNC_DNS 0 has_no_system_vhost) 34d4afb5ceSopenharmony_cirequire_lws_config(LWS_WITH_SYS_NTPCLIENT 0 has_no_system_vhost) 35d4afb5ceSopenharmony_cirequire_lws_config(LWS_WITH_SYS_DHCP_CLIENT 0 has_no_system_vhost) 36d4afb5ceSopenharmony_ci 37d4afb5ceSopenharmony_cirequire_lws_config(LWS_WITH_SYS_ASYNC_DNS 1 has_async_dns) 38d4afb5ceSopenharmony_cirequire_lws_config(LWS_WITH_MBEDTLS 1 has_mbedtls) 39d4afb5ceSopenharmony_ci 40d4afb5ceSopenharmony_ciif (requirements) 41d4afb5ceSopenharmony_ci add_executable(${SAMP} ${SRCS}) 42d4afb5ceSopenharmony_ci 43d4afb5ceSopenharmony_ci find_program(VALGRIND "valgrind") 44d4afb5ceSopenharmony_ci 45d4afb5ceSopenharmony_ci sai_resource(warmcat_conns 1 40 http_client_warmcat) 46d4afb5ceSopenharmony_ci 47d4afb5ceSopenharmony_ci if (LWS_CTEST_INTERNET_AVAILABLE) 48d4afb5ceSopenharmony_ci set(mytests http-client-warmcat-h1) 49d4afb5ceSopenharmony_ci if (has_h2) 50d4afb5ceSopenharmony_ci add_test(NAME http-client-warmcat COMMAND lws-minimal-http-client ) 51d4afb5ceSopenharmony_ci list(APPEND mytests http-client-warmcat) 52d4afb5ceSopenharmony_ci endif() 53d4afb5ceSopenharmony_ci 54d4afb5ceSopenharmony_ci 55d4afb5ceSopenharmony_ci add_test(NAME http-client-warmcat-h1 COMMAND lws-minimal-http-client --h1) 56d4afb5ceSopenharmony_ci 57d4afb5ceSopenharmony_ci if (has_fault_injection) 58d4afb5ceSopenharmony_ci 59d4afb5ceSopenharmony_ci # creation related faults 60d4afb5ceSopenharmony_ci 61d4afb5ceSopenharmony_ci list(APPEND mytests http-client-fi-ctx1) 62d4afb5ceSopenharmony_ci add_test(NAME http-client-fi-ctx1 COMMAND lws-minimal-http-client --expected-exit 5 --fault-injection "ctx_createfail1") 63d4afb5ceSopenharmony_ci 64d4afb5ceSopenharmony_ci # if (has_plugins) 65d4afb5ceSopenharmony_ci # !!! need to actually select an available evlib plugin to trigger this 66d4afb5ceSopenharmony_ci # list(APPEND mytests http-client-fi-pi) 67d4afb5ceSopenharmony_ci # add_test(NAME http-client-fi-pi COMMAND lws-minimal-http-client --expected-exit 5 --fault-injection "ctx_createfail_plugin_init") 68d4afb5ceSopenharmony_ci # endif() 69d4afb5ceSopenharmony_ci 70d4afb5ceSopenharmony_ci list(APPEND mytests http-client-fi-ctx2) 71d4afb5ceSopenharmony_ci add_test(NAME http-client-fi-ctx2 COMMAND lws-minimal-http-client --expected-exit 5 --fault-injection "ctx_createfail_evlib_sel") 72d4afb5ceSopenharmony_ci 73d4afb5ceSopenharmony_ci list(APPEND mytests http-client-fi-ctx3) 74d4afb5ceSopenharmony_ci add_test(NAME http-client-fi-ctx3 COMMAND lws-minimal-http-client --expected-exit 5 --fault-injection "ctx_createfail_oom_ctx") 75d4afb5ceSopenharmony_ci 76d4afb5ceSopenharmony_ci list(APPEND mytests http-client-fi-ctx4) 77d4afb5ceSopenharmony_ci add_test(NAME http-client-fi-ctx4 COMMAND lws-minimal-http-client --expected-exit 5 --fault-injection "ctx_createfail_privdrop") 78d4afb5ceSopenharmony_ci 79d4afb5ceSopenharmony_ci list(APPEND mytests http-client-fi-ctx5) 80d4afb5ceSopenharmony_ci add_test(NAME http-client-fi-ctx5 COMMAND lws-minimal-http-client --expected-exit 5 --fault-injection "ctx_createfail_maxfds") 81d4afb5ceSopenharmony_ci 82d4afb5ceSopenharmony_ci list(APPEND mytests http-client-fi-ctx6) 83d4afb5ceSopenharmony_ci add_test(NAME http-client-fi-ctx6 COMMAND lws-minimal-http-client --expected-exit 5 --fault-injection "ctx_createfail_oom_fds") 84d4afb5ceSopenharmony_ci 85d4afb5ceSopenharmony_ci list(APPEND mytests http-client-fi-ctx7) 86d4afb5ceSopenharmony_ci add_test(NAME http-client-fi-ctx7 COMMAND lws-minimal-http-client --expected-exit 5 --fault-injection "ctx_createfail_plat_init") 87d4afb5ceSopenharmony_ci 88d4afb5ceSopenharmony_ci list(APPEND mytests http-client-fi-ctx8) 89d4afb5ceSopenharmony_ci add_test(NAME http-client-fi-ctx8 COMMAND lws-minimal-http-client --expected-exit 5 --fault-injection "ctx_createfail_evlib_init") 90d4afb5ceSopenharmony_ci 91d4afb5ceSopenharmony_ci list(APPEND mytests http-client-fi-ctx9) 92d4afb5ceSopenharmony_ci add_test(NAME http-client-fi-ctx9 COMMAND lws-minimal-http-client --expected-exit 5 --fault-injection "ctx_createfail_evlib_pt") 93d4afb5ceSopenharmony_ci 94d4afb5ceSopenharmony_ci if (NOT has_no_system_vhost) 95d4afb5ceSopenharmony_ci 96d4afb5ceSopenharmony_ci list(APPEND mytests http-client-fi-ctx10) 97d4afb5ceSopenharmony_ci add_test(NAME http-client-fi-ctx10 COMMAND lws-minimal-http-client --expected-exit 5 --fault-injection "ctx_createfail_sys_vh") 98d4afb5ceSopenharmony_ci 99d4afb5ceSopenharmony_ci list(APPEND mytests http-client-fi-ctx11) 100d4afb5ceSopenharmony_ci add_test(NAME http-client-fi-ctx11 COMMAND lws-minimal-http-client --expected-exit 5 --fault-injection "ctx_createfail_sys_vh_init") 101d4afb5ceSopenharmony_ci 102d4afb5ceSopenharmony_ci endif() 103d4afb5ceSopenharmony_ci 104d4afb5ceSopenharmony_ci list(APPEND mytests http-client-fi-ctx12) 105d4afb5ceSopenharmony_ci add_test(NAME http-client-fi-ctx12 COMMAND lws-minimal-http-client --expected-exit 5 --fault-injection "ctx_createfail_def_vh") 106d4afb5ceSopenharmony_ci 107d4afb5ceSopenharmony_ci 108d4afb5ceSopenharmony_ci list(APPEND mytests http-client-fi-vh1) 109d4afb5ceSopenharmony_ci add_test(NAME http-client-fi-vh1 COMMAND lws-minimal-http-client --expected-exit 5 --fault-injection "vh/vh_create_oom") 110d4afb5ceSopenharmony_ci 111d4afb5ceSopenharmony_ci list(APPEND mytests http-client-fi-vh2) 112d4afb5ceSopenharmony_ci add_test(NAME http-client-fi-vh2 COMMAND lws-minimal-http-client --expected-exit 5 --fault-injection "vh/vh_create_pcols_oom") 113d4afb5ceSopenharmony_ci 114d4afb5ceSopenharmony_ci list(APPEND mytests http-client-fi-vh3) 115d4afb5ceSopenharmony_ci add_test(NAME http-client-fi-vh3 COMMAND lws-minimal-http-client --expected-exit 5 --fault-injection "vh/vh_create_ssl_srv") 116d4afb5ceSopenharmony_ci 117d4afb5ceSopenharmony_ci list(APPEND mytests http-client-fi-vh4) 118d4afb5ceSopenharmony_ci add_test(NAME http-client-fi-vh4 COMMAND lws-minimal-http-client --expected-exit 5 --fault-injection "vh/vh_create_ssl_cli") 119d4afb5ceSopenharmony_ci 120d4afb5ceSopenharmony_ci list(APPEND mytests http-client-fi-vh5) 121d4afb5ceSopenharmony_ci add_test(NAME http-client-fi-vh5 COMMAND lws-minimal-http-client --expected-exit 5 --fault-injection "vh/vh_create_srv_init") 122d4afb5ceSopenharmony_ci 123d4afb5ceSopenharmony_ci 124d4afb5ceSopenharmony_ci list(APPEND mytests http-client-fi-dnsfail) 125d4afb5ceSopenharmony_ci add_test(NAME http-client-fi-dnsfail COMMAND lws-minimal-http-client --expected-exit 3 --fault-injection "wsi=user/dnsfail") 126d4afb5ceSopenharmony_ci 127d4afb5ceSopenharmony_ci if (has_async_dns) 128d4afb5ceSopenharmony_ci list(APPEND mytests http-client-fi-connfail) 129d4afb5ceSopenharmony_ci add_test(NAME http-client-fi-connfail COMMAND lws-minimal-http-client --expected-exit 2 --fault-injection "wsi=user/connfail") 130d4afb5ceSopenharmony_ci else() 131d4afb5ceSopenharmony_ci list(APPEND mytests http-client-fi-connfail) 132d4afb5ceSopenharmony_ci add_test(NAME http-client-fi-connfail COMMAND lws-minimal-http-client --expected-exit 2 --fault-injection "wsi=user/connfail") 133d4afb5ceSopenharmony_ci endif() 134d4afb5ceSopenharmony_ci 135d4afb5ceSopenharmony_ci list(APPEND mytests http-client-fi-user-est-fail) 136d4afb5ceSopenharmony_ci add_test(NAME http-client-fi-user-est-fail COMMAND lws-minimal-http-client --expected-exit 3 --fault-injection "wsi/user_reject_at_est") 137d4afb5ceSopenharmony_ci 138d4afb5ceSopenharmony_ci endif() 139d4afb5ceSopenharmony_ci if (has_mbedtls) 140d4afb5ceSopenharmony_ci list(APPEND mytests http-client-mbedtls-wrong-ca) 141d4afb5ceSopenharmony_ci add_test(NAME http-client-mbedtls-wrong-ca COMMAND lws-minimal-http-client -w --expected-exit 3) 142d4afb5ceSopenharmony_ci message("... adding mbedtls wrong CA test") 143d4afb5ceSopenharmony_ci else() 144d4afb5ceSopenharmony_ci message("... skipping mbedtls wrong CA test") 145d4afb5ceSopenharmony_ci endif() 146d4afb5ceSopenharmony_ci 147d4afb5ceSopenharmony_ci set_tests_properties(${mytests} PROPERTIES 148d4afb5ceSopenharmony_ci WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/minimal-examples/http-client/minimal-http-client 149d4afb5ceSopenharmony_ci TIMEOUT 20) 150d4afb5ceSopenharmony_ci 151d4afb5ceSopenharmony_ci if (DEFINED ENV{SAI_OVN}) 152d4afb5ceSopenharmony_ci set_tests_properties(${mytests} PROPERTIES 153d4afb5ceSopenharmony_ci FIXTURES_REQUIRED "res_http_client_warmcat") 154d4afb5ceSopenharmony_ci endif() 155d4afb5ceSopenharmony_ci 156d4afb5ceSopenharmony_ci endif() 157d4afb5ceSopenharmony_ci 158d4afb5ceSopenharmony_ci if (websockets_shared) 159d4afb5ceSopenharmony_ci target_link_libraries(${SAMP} websockets_shared ${LIBWEBSOCKETS_DEP_LIBS}) 160d4afb5ceSopenharmony_ci add_dependencies(${SAMP} websockets_shared) 161d4afb5ceSopenharmony_ci else() 162d4afb5ceSopenharmony_ci target_link_libraries(${SAMP} websockets ${LIBWEBSOCKETS_DEP_LIBS}) 163d4afb5ceSopenharmony_ci endif() 164d4afb5ceSopenharmony_ciendif() 165