From: Jaeyun Date: Fri, 12 Aug 2022 07:56:16 +0000 (+0900) Subject: [Build] dependency to mqtt lib X-Git-Tag: submit/tizen/20220819.071123~8 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=620a2ea44ce8dd6e488ee1eb86c6a8050fce3d87;p=platform%2Fupstream%2Fnnstreamer-edge.git [Build] dependency to mqtt lib Find pkgconfig or library of mqtt library, and set flags if found dependency to mqtt. Fix build error (invalid args when calling mqtt-connect in test). Handle invalid param - topic. Signed-off-by: Jaeyun --- diff --git a/CMakeLists.txt b/CMakeLists.txt index 8e8c221..469c7ac 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,8 @@ CMAKE_MINIMUM_REQUIRED(VERSION 2.6) PROJECT(nnstreamer-edge) +INCLUDE(FindPkgConfig) + OPTION(ENABLE_TEST "Enable Test case" OFF) OPTION(ENABLE_DEBUG "Enable Debug" OFF) @@ -14,8 +16,6 @@ SET(CMAKE_CXX_STANDARD 14) # Set CFLAGS SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Werror") SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -pthread -fPIE -fPIC -g") -SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DENABLE_MQTT=1") -SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DENABLE_MQTT=1") IF (ENABLE_DEBUG) SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DDEBUG=1") @@ -37,11 +37,34 @@ SET(SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/src) SET(INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/include) SET(NNS_EDGE_SRC_DIR ${SOURCE_DIR}/libnnstreamer-edge) +# Paho MQTT Library +SET(ENABLE_PAHO_MQTT OFF) + +PKG_SEARCH_MODULE(PAHO_MQTT_PKG "paho-mqtt-c") +IF(PAHO_MQTT_PKG_FOUND) + MESSAGE("Found Paho MQTT pkgconfig.") + SET(ENABLE_PAHO_MQTT ON) + SET(PAHO_MQTT_LIB ${PAHO_MQTT_PKG_LDFLAGS}) +ELSE() + FIND_LIBRARY(PAHO_MQTT_LIB NAMES paho-mqtt3a paho-mqtt3c paho-mqtt3as paho-mqtt3cs) + + IF(PAHO_MQTT_LIB-NOTFOUND) + MESSAGE("Cannot find Paho MQTT library." ) + ELSE() + MESSAGE("Found Paho MQTT library.") + SET(ENABLE_PAHO_MQTT ON) + ENDIF() +ENDIF() + +IF(ENABLE_PAHO_MQTT) + SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DENABLE_MQTT=1") + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DENABLE_MQTT=1") +ENDIF() + # Check requires packages # TODO FIXME remove glib dependency SET(REQUIRES_LIST "glib-2.0 gio-2.0") -INCLUDE(FindPkgConfig) PKG_CHECK_MODULES(EDGE_REQUIRE_PKGS REQUIRED ${REQUIRES_LIST}) FOREACH(flag ${EDGE_REQUIRE_PKGS_CFLAGS}) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index d02a6ff..4f42aa5 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -3,20 +3,18 @@ SET(NNS_EDGE_LIB_NAME nnstreamer-edge) SET(NNS_EDGE_SRCS ${NNS_EDGE_SRC_DIR}/nnstreamer-edge-common.c ${NNS_EDGE_SRC_DIR}/nnstreamer-edge-internal.c - ${NNS_EDGE_SRC_DIR}/nnstreamer-edge-mqtt.c ) +IF(ENABLE_PAHO_MQTT) + SET(NNS_EDGE_SRCS ${NNS_EDGE_SRCS} ${NNS_EDGE_SRC_DIR}/nnstreamer-edge-mqtt.c) +ENDIF() + ADD_LIBRARY(${NNS_EDGE_LIB_NAME} SHARED ${NNS_EDGE_SRCS}) SET_TARGET_PROPERTIES(${NNS_EDGE_LIB_NAME} PROPERTIES VERSION ${SO_VERSION}) TARGET_INCLUDE_DIRECTORIES(${NNS_EDGE_LIB_NAME} PRIVATE ${INCLUDE_DIR} ${EDGE_REQUIRE_PKGS_INCLUDE_DIRS}) TARGET_LINK_LIBRARIES(${NNS_EDGE_LIB_NAME} ${EDGE_REQUIRE_PKGS_LDFLAGS}) - -PKG_SEARCH_MODULE (PAHO_MQTT_PKG "paho-mqtt-c") -IF (PAHO_MQTT_PKG_MODULE_NAME) - TARGET_LINK_LIBRARIES(${NNS_EDGE_LIB_NAME} ${PAHO_MQTT_PKG_LDFLAGS}) -ELSE() - MESSAGE (WARNING "paho-mqtt-c pkgcong is not found. Hardcoded build configuration is used.") - TARGET_LINK_LIBRARIES(${NNS_EDGE_LIB_NAME} paho-mqtt3a paho-mqtt3c paho-mqtt3as paho-mqtt3cs) +IF(ENABLE_PAHO_MQTT) + TARGET_LINK_LIBRARIES(${NNS_EDGE_LIB_NAME} ${PAHO_MQTT_LIB}) ENDIF() INSTALL (TARGETS ${NNS_EDGE_LIB_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR}) diff --git a/src/libnnstreamer-edge/nnstreamer-edge-mqtt.c b/src/libnnstreamer-edge/nnstreamer-edge-mqtt.c index 5991c73..fba2805 100644 --- a/src/libnnstreamer-edge/nnstreamer-edge-mqtt.c +++ b/src/libnnstreamer-edge/nnstreamer-edge-mqtt.c @@ -207,6 +207,11 @@ nns_edge_mqtt_connect (nns_edge_h edge_h, const char *topic) char *url; char *client_id; + if (!STR_IS_VALID (topic)) { + nns_edge_loge ("Invalid param, given topic is invalid."); + return NNS_EDGE_ERROR_INVALID_PARAMETER; + } + eh = (nns_edge_handle_s *) edge_h; if (!NNS_EDGE_MAGIC_IS_VALID (eh)) { diff --git a/tests/unittest_nnstreamer-edge.cc b/tests/unittest_nnstreamer-edge.cc index 025670b..29633f3 100644 --- a/tests/unittest_nnstreamer-edge.cc +++ b/tests/unittest_nnstreamer-edge.cc @@ -2815,6 +2815,7 @@ TEST(edgeMeta, deserializeInvalidParam03_n) free (data); } +#if defined(ENABLE_MQTT) /** * @brief Edge event callback for test. */ @@ -2883,18 +2884,18 @@ _test_edge_hybrid_event_cb (nns_edge_event_h event_h, void *user_data) /** * @brief Check whether MQTT broker is running or not. */ -static int +static bool _check_mqtt_broker () { int ret = 0; ret = system ("ps aux | grep mosquitto | grep -v grep"); if (0 != ret) { - nns_edge_loge ("MQTT broker is not running. Skip query hybrid test."); - ret = -1; + nns_edge_logw ("MQTT broker is not running. Skip query hybrid test."); + return false; } - return ret; + return true; } /** @@ -2913,14 +2914,15 @@ TEST(edgeMqtt, connectLocal) int ret = 0; char *val; - if (0 != _check_mqtt_broker ()) + if (!_check_mqtt_broker ()) return; _td_server = _get_test_data (true); _td_client = _get_test_data (false); /* Prepare server (127.0.0.1:port) */ - nns_edge_create_handle ("temp-server", NNS_EDGE_CONNECT_TYPE_HYBRID, NNS_EDGE_FLAG_RECV | NNS_EDGE_FLAG_SEND | NNS_EDGE_FLAG_SERVER, &server_h); + nns_edge_create_handle ("temp-server", NNS_EDGE_CONNECT_TYPE_HYBRID, + NNS_EDGE_FLAG_RECV | NNS_EDGE_FLAG_SEND | NNS_EDGE_FLAG_SERVER, &server_h); nns_edge_set_event_callback (server_h, _test_edge_hybrid_event_cb, _td_server); nns_edge_set_info (server_h, "HOST", "localhost"); nns_edge_set_info (server_h, "PORT", "0"); @@ -2931,7 +2933,8 @@ TEST(edgeMqtt, connectLocal) _td_server->handle = server_h; /* Prepare client */ - nns_edge_create_handle ("temp-client", NNS_EDGE_CONNECT_TYPE_HYBRID, NNS_EDGE_FLAG_RECV | NNS_EDGE_FLAG_SEND, &client_h); + nns_edge_create_handle ("temp-client", NNS_EDGE_CONNECT_TYPE_HYBRID, + NNS_EDGE_FLAG_RECV | NNS_EDGE_FLAG_SEND, &client_h); nns_edge_set_event_callback (client_h, _test_edge_hybrid_event_cb, _td_client); nns_edge_set_info (client_h, "CAPS", "test client"); nns_edge_set_info (client_h, "HOST", "localhost"); @@ -3014,37 +3017,88 @@ TEST(edgeMqtt, connectLocal) _free_test_data (_td_client); } +/** + * @brief Connect to the mqtt broker with invalid param. + */ +TEST(edgeMqtt, connectInvalidParam1_n) +{ + int ret = -1; + + if (!_check_mqtt_broker ()) + return; + + ret = nns_edge_mqtt_connect (NULL, "temp-mqtt-topic"); + EXPECT_NE (ret, NNS_EDGE_ERROR_NONE); +} + +/** + * @brief Connect to the mqtt broker with invalid param. + */ +TEST(edgeMqtt, connectInvalidParam2_n) +{ + int ret = -1; + nns_edge_h edge_h; + char *msg = NULL; + + if (!_check_mqtt_broker ()) + return; + + ret = nns_edge_create_handle ("temp-server", NNS_EDGE_CONNECT_TYPE_HYBRID, + NNS_EDGE_FLAG_RECV | NNS_EDGE_FLAG_SEND | NNS_EDGE_FLAG_SERVER, &edge_h); + EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE); + nns_edge_set_info (edge_h, "DEST_HOST", "tcp://localhost"); + nns_edge_set_info (edge_h, "DEST_PORT", "1883"); + + ret = nns_edge_mqtt_connect (edge_h, NULL); + EXPECT_NE (ret, NNS_EDGE_ERROR_NONE); + + ret = nns_edge_release_handle (edge_h); + EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE); +} /** * @brief Connect to the mqtt broker with invalid param. */ -TEST(edgeMqtt, connectInvalidParam_n) +TEST(edgeMqtt, connectInvalidParam3_n) { int ret = -1; - if (0 != _check_mqtt_broker ()) + nns_edge_h edge_h; + char *msg = NULL; + + if (!_check_mqtt_broker ()) return; - ret = nns_edge_mqtt_connect (NULL); + ret = nns_edge_create_handle ("temp-server", NNS_EDGE_CONNECT_TYPE_HYBRID, + NNS_EDGE_FLAG_RECV | NNS_EDGE_FLAG_SEND | NNS_EDGE_FLAG_SERVER, &edge_h); + EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE); + nns_edge_set_info (edge_h, "DEST_HOST", "tcp://localhost"); + nns_edge_set_info (edge_h, "DEST_PORT", "1883"); + + ret = nns_edge_mqtt_connect (edge_h, ""); EXPECT_NE (ret, NNS_EDGE_ERROR_NONE); + + ret = nns_edge_release_handle (edge_h); + EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE); } /** * @brief Connect to the mqtt broker with invalid hostaddress. */ -TEST(edgeMqtt, connectInvalidParam2_n) +TEST(edgeMqtt, connectInvalidParam4_n) { int ret = -1; nns_edge_h edge_h; - if (0 != _check_mqtt_broker ()) + if (!_check_mqtt_broker ()) return; - ret = nns_edge_create_handle ("temp-server", NNS_EDGE_CONNECT_TYPE_HYBRID, NNS_EDGE_FLAG_RECV | NNS_EDGE_FLAG_SEND | NNS_EDGE_FLAG_SERVER, &edge_h); + ret = nns_edge_create_handle ("temp-server", NNS_EDGE_CONNECT_TYPE_HYBRID, + NNS_EDGE_FLAG_RECV | NNS_EDGE_FLAG_SEND | NNS_EDGE_FLAG_SERVER, &edge_h); EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE); nns_edge_set_info (edge_h, "DEST_HOST", "tcp://none"); nns_edge_set_info (edge_h, "DEST_PORT", "1883"); - ret = nns_edge_mqtt_connect (edge_h); + ret = nns_edge_mqtt_connect (edge_h, "temp-mqtt-topic"); EXPECT_NE (ret, NNS_EDGE_ERROR_NONE); ret = nns_edge_release_handle (edge_h); @@ -3057,7 +3111,8 @@ TEST(edgeMqtt, connectInvalidParam2_n) TEST(edgeMqtt, closeInvalidParam_n) { int ret = -1; - if (0 != _check_mqtt_broker ()) + + if (!_check_mqtt_broker ()) return; ret = nns_edge_mqtt_close (NULL); @@ -3072,10 +3127,11 @@ TEST(edgeMqtt, closeInvalidParam2_n) int ret = -1; nns_edge_h edge_h; - if (0 != _check_mqtt_broker ()) + if (!_check_mqtt_broker ()) return; - ret = nns_edge_create_handle ("temp-server", NNS_EDGE_CONNECT_TYPE_HYBRID, NNS_EDGE_FLAG_RECV | NNS_EDGE_FLAG_SEND | NNS_EDGE_FLAG_SERVER, &edge_h); + ret = nns_edge_create_handle ("temp-server", NNS_EDGE_CONNECT_TYPE_HYBRID, + NNS_EDGE_FLAG_RECV | NNS_EDGE_FLAG_SEND | NNS_EDGE_FLAG_SERVER, &edge_h); EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE); ret = nns_edge_mqtt_close (edge_h); @@ -3091,9 +3147,9 @@ TEST(edgeMqtt, closeInvalidParam2_n) TEST(edgeMqtt, publishInvalidParam_n) { int ret = -1; - const char* msg = "TEMP_MESSAGE"; + const char *msg = "TEMP_MESSAGE"; - if (0 != _check_mqtt_broker ()) + if (!_check_mqtt_broker ()) return; ret = nns_edge_mqtt_publish (NULL, msg, strlen (msg) + 1); @@ -3107,12 +3163,13 @@ TEST(edgeMqtt, publishInvalidParam2_n) { int ret = -1; nns_edge_h edge_h; - const char* msg = "TEMP_MESSAGE"; + const char *msg = "TEMP_MESSAGE"; - if (0 != _check_mqtt_broker ()) + if (!_check_mqtt_broker ()) return; - ret = nns_edge_create_handle ("temp-server", NNS_EDGE_CONNECT_TYPE_HYBRID, NNS_EDGE_FLAG_RECV | NNS_EDGE_FLAG_SEND | NNS_EDGE_FLAG_SERVER, &edge_h); + ret = nns_edge_create_handle ("temp-server", NNS_EDGE_CONNECT_TYPE_HYBRID, + NNS_EDGE_FLAG_RECV | NNS_EDGE_FLAG_SEND | NNS_EDGE_FLAG_SERVER, &edge_h); EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE); ret = nns_edge_mqtt_publish (edge_h, NULL, strlen (msg) + 1); @@ -3122,7 +3179,6 @@ TEST(edgeMqtt, publishInvalidParam2_n) EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE); } - /** * @brief Publish with invalid param. */ @@ -3130,12 +3186,13 @@ TEST(edgeMqtt, publishInvalidParam3_n) { int ret = -1; nns_edge_h edge_h; - const char* msg = "TEMP_MESSAGE"; + const char *msg = "TEMP_MESSAGE"; - if (0 != _check_mqtt_broker ()) + if (!_check_mqtt_broker ()) return; - ret = nns_edge_create_handle ("temp-server", NNS_EDGE_CONNECT_TYPE_HYBRID, NNS_EDGE_FLAG_RECV | NNS_EDGE_FLAG_SEND | NNS_EDGE_FLAG_SERVER, &edge_h); + ret = nns_edge_create_handle ("temp-server", NNS_EDGE_CONNECT_TYPE_HYBRID, + NNS_EDGE_FLAG_RECV | NNS_EDGE_FLAG_SEND | NNS_EDGE_FLAG_SERVER, &edge_h); EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE); ret = nns_edge_mqtt_publish (edge_h, msg, 0); @@ -3152,12 +3209,13 @@ TEST(edgeMqtt, publishInvalidParam4_n) { int ret = -1; nns_edge_h edge_h; - const char* msg = "TEMP_MESSAGE"; + const char *msg = "TEMP_MESSAGE"; - if (0 != _check_mqtt_broker ()) + if (!_check_mqtt_broker ()) return; - ret = nns_edge_create_handle ("temp-server", NNS_EDGE_CONNECT_TYPE_HYBRID, NNS_EDGE_FLAG_RECV | NNS_EDGE_FLAG_SEND | NNS_EDGE_FLAG_SERVER, &edge_h); + ret = nns_edge_create_handle ("temp-server", NNS_EDGE_CONNECT_TYPE_HYBRID, + NNS_EDGE_FLAG_RECV | NNS_EDGE_FLAG_SEND | NNS_EDGE_FLAG_SERVER, &edge_h); EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE); ret = nns_edge_mqtt_publish (edge_h, msg, strlen (msg) + 1); @@ -3173,7 +3231,8 @@ TEST(edgeMqtt, publishInvalidParam4_n) TEST(edgeMqtt, subscribeInvalidParam_n) { int ret = -1; - if (0 != _check_mqtt_broker ()) + + if (!_check_mqtt_broker ()) return; ret = nns_edge_mqtt_subscribe (NULL); @@ -3188,10 +3247,11 @@ TEST(edgeMqtt, subscribeInvalidParam2_n) int ret = -1; nns_edge_h edge_h; - if (0 != _check_mqtt_broker ()) + if (!_check_mqtt_broker ()) return; - ret = nns_edge_create_handle ("temp-server", NNS_EDGE_CONNECT_TYPE_HYBRID, NNS_EDGE_FLAG_RECV | NNS_EDGE_FLAG_SEND | NNS_EDGE_FLAG_SERVER, &edge_h); + ret = nns_edge_create_handle ("temp-server", NNS_EDGE_CONNECT_TYPE_HYBRID, + NNS_EDGE_FLAG_RECV | NNS_EDGE_FLAG_SEND | NNS_EDGE_FLAG_SERVER, &edge_h); EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE); ret = nns_edge_mqtt_subscribe (edge_h); @@ -3209,7 +3269,7 @@ TEST(edgeMqtt, getMessageInvalidParam_n) int ret = -1; char *msg = NULL; - if (0 != _check_mqtt_broker ()) + if (!_check_mqtt_broker ()) return; ret = nns_edge_mqtt_get_message (NULL, &msg); @@ -3224,10 +3284,11 @@ TEST(edgeMqtt, getMessageInvalidParam2_n) int ret = -1; nns_edge_h edge_h; - if (0 != _check_mqtt_broker ()) + if (!_check_mqtt_broker ()) return; - ret = nns_edge_create_handle ("temp-server", NNS_EDGE_CONNECT_TYPE_HYBRID, NNS_EDGE_FLAG_RECV | NNS_EDGE_FLAG_SEND | NNS_EDGE_FLAG_SERVER, &edge_h); + ret = nns_edge_create_handle ("temp-server", NNS_EDGE_CONNECT_TYPE_HYBRID, + NNS_EDGE_FLAG_RECV | NNS_EDGE_FLAG_SEND | NNS_EDGE_FLAG_SERVER, &edge_h); EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE); ret = nns_edge_mqtt_get_message (edge_h, NULL); @@ -3246,15 +3307,16 @@ TEST(edgeMqtt, getMessageWithinTimeout_n) nns_edge_h edge_h; char *msg = NULL; - if (0 != _check_mqtt_broker ()) + if (!_check_mqtt_broker ()) return; - ret = nns_edge_create_handle ("temp-server", NNS_EDGE_CONNECT_TYPE_HYBRID, NNS_EDGE_FLAG_RECV | NNS_EDGE_FLAG_SEND | NNS_EDGE_FLAG_SERVER, &edge_h); + ret = nns_edge_create_handle ("temp-server", NNS_EDGE_CONNECT_TYPE_HYBRID, + NNS_EDGE_FLAG_RECV | NNS_EDGE_FLAG_SEND | NNS_EDGE_FLAG_SERVER, &edge_h); EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE); nns_edge_set_info (edge_h, "DEST_HOST", "tcp://localhost"); nns_edge_set_info (edge_h, "DEST_PORT", "1883"); - ret = nns_edge_mqtt_connect (edge_h); + ret = nns_edge_mqtt_connect (edge_h, "temp-mqtt-topic"); EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE); ret = nns_edge_mqtt_get_message (edge_h, &msg); @@ -3266,6 +3328,7 @@ TEST(edgeMqtt, getMessageWithinTimeout_n) ret = nns_edge_release_handle (edge_h); EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE); } +#endif /* ENABLE_MQTT */ /** * @brief Main gtest