Move unittest into tests 25/238425/2 accepted/tizen/unified/20200717.124734 submit/tizen/20200716.050013
authorYu <jiung.yu@samsung.com>
Tue, 14 Jul 2020 01:44:44 +0000 (10:44 +0900)
committerYu <jiung.yu@samsung.com>
Tue, 14 Jul 2020 04:00:26 +0000 (13:00 +0900)
Change-Id: I48a15e02c90d0326a5b3324165aa4d2eb2ec3942
Signed-off-by: Yu jiung <jiung.yu@samsung.com>
52 files changed:
CMakeLists.txt
packaging/capi-network-nsd.spec
src/CMakeLists.txt
src/dns-sd/CMakeLists.txt
src/dns-sd/dns-sd-util.h
src/dns-sd/dns-sd.c
src/ssdp/CMakeLists.txt
src/ssdp/ssdp-util.h
src/ssdp/ssdp.c
test/CMakeLists.txt [deleted file]
test/dns-sd-test.c [deleted file]
test/ssdp-browse-test.c [deleted file]
test/ssdp-register-test.c [deleted file]
test/ssdp-test.c [deleted file]
tests/CMakeLists.txt [new file with mode: 0644]
tests/dns-sd-test.c [new file with mode: 0644]
tests/include/assert_local.h [new file with mode: 0755]
tests/include/nsd-mock-switch.h [new file with mode: 0644]
tests/include/tct_common.h [new file with mode: 0755]
tests/include/testcase.h [new file with mode: 0755]
tests/mock/nsd-mock-cynara.c [new file with mode: 0644]
tests/mock/nsd-mock-dns-sd.c [new file with mode: 0644]
tests/mock/nsd-mock-gdbus.c [new file with mode: 0644]
tests/mock/nsd-mock-gio.c [new file with mode: 0644]
tests/mock/nsd-mock-gssdp.c [new file with mode: 0644]
tests/mock/nsd-mock.c [new file with mode: 0644]
tests/ssdp-browse-test.c [new file with mode: 0644]
tests/ssdp-register-test.c [new file with mode: 0644]
tests/ssdp-test.c [new file with mode: 0644]
tests/tct-nsd-core.cpp [new file with mode: 0755]
tests/tct-nsd-core.h [new file with mode: 0755]
tests/utc-nsd-dnssd-browse.c [new file with mode: 0644]
tests/utc-nsd-dnssd-register.c [new file with mode: 0644]
tests/utc-nsd-ssdp-browse.c [new file with mode: 0644]
tests/utc-nsd-ssdp-register.c [new file with mode: 0644]
unittest/CMakeLists.txt [deleted file]
unittest/include/assert_local.h [deleted file]
unittest/include/nsd-mock-switch.h [deleted file]
unittest/include/tct_common.h [deleted file]
unittest/include/testcase.h [deleted file]
unittest/mock/nsd-mock-cynara.c [deleted file]
unittest/mock/nsd-mock-dns-sd.c [deleted file]
unittest/mock/nsd-mock-gdbus.c [deleted file]
unittest/mock/nsd-mock-gio.c [deleted file]
unittest/mock/nsd-mock-gssdp.c [deleted file]
unittest/mock/nsd-mock.c [deleted file]
unittest/tct-nsd-core.cpp [deleted file]
unittest/tct-nsd-core.h [deleted file]
unittest/utc-nsd-dnssd-browse.c [deleted file]
unittest/utc-nsd-dnssd-register.c [deleted file]
unittest/utc-nsd-ssdp-browse.c [deleted file]
unittest/utc-nsd-ssdp-register.c [deleted file]

index c3c6a7de141747d61f82374902144142d03b9a95..89360a5362d3a61026f14eb5eb45fdf53ae68d84 100644 (file)
@@ -26,75 +26,19 @@ INCLUDE(FindPkgConfig)
 
 ########################## search for packages ################################
 
-SET(COMMON_DEPS "dlog glib-2.0 gio-2.0 capi-base-common capi-system-info gio-unix-2.0 gssdp-1.0 dns_sd cynara-client")
+SET(LIB_DEPS "dlog glib-2.0 gio-2.0 capi-base-common capi-system-info gio-unix-2.0 gssdp-1.0 dns_sd cynara-client")
 SET(PC_DEPS "capi-base-common")
-
-
-PKG_CHECK_MODULES(NSD_DEPS REQUIRED ${COMMON_DEPS})
-
-########################  directory configuration  ############################
-
-SET(BIN_DIR
-    "${CMAKE_INSTALL_PREFIX}/bin"
-    CACHE PATH
-    "User executables directory")
-
-SET(SBIN_DIR
-    "${CMAKE_INSTALL_PREFIX}/sbin"
-    CACHE PATH
-    "System admin executables directory")
-
-SET(SYS_CONFIG_DIR
-    "${CMAKE_INSTALL_PREFIX}/etc"
-    CACHE PATH
-    "Read-only single-machine data directory")
-
-SET(INCLUDE_DIR
-    "${CMAKE_INSTALL_PREFIX}/include"
-    CACHE PATH
-    "Header files directory")
-
-SET(LOCAL_STATE_DIR
-    "${CMAKE_INSTALL_PREFIX}/var"
-    CACHE PATH
-    "Modifiable single-machine data directory")
-
-SET(DATA_ROOT_DIR
-    "${CMAKE_INSTALL_PREFIX}/share"
-    CACHE PATH
-    "Read-only architecture-independent data root directory")
-
-ADD_DEFINITIONS("-DLIB_DIR=\"${LIB_DIR}\"")
-ADD_DEFINITIONS("-DBIN_DIR=\"${BIN_DIR}\"")
-ADD_DEFINITIONS("-DSBIN_DIR=\"${SBIN_DIR}\"")
-ADD_DEFINITIONS("-DSYS_CONFIG_DIR=\"${SYS_CONFIG_DIR}\"")
-ADD_DEFINITIONS("-DINCLUDE_DIR=\"${INCLUDE_DIR}\"")
-ADD_DEFINITIONS("-DLOCAL_STATE_DIR=\"${LOCAL_STATE_DIR}\"")
-ADD_DEFINITIONS("-DDATA_ROOT_DIR=\"${DATA_ROOT_DIR}\"")
-
-############################# compiler flags ##################################
-FOREACH(flag ${NSD_DEPS_CFLAGS})
-    SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
-ENDFOREACH(flag)
-
-
-SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -fPIC -Wall -Werror")
-SET(CMAKE_C_FLAGS_DEBUG      "-O0 -g")
-SET(CMAKE_C_FLAGS_RELEASE    "-O2 -g")
-
-# Don't export symbols by default
-ADD_DEFINITIONS("-fvisibility=hidden")
-
-SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed -Wl,--rpath=${LIBDIR}")
+SET(TEST_DEPS "glib-2.0")
+SET(GTEST_DEPS "gmock capi-system-info cynara-client")
 
 SET(TARGET_NSD "nsd")
 SET(TARGET_LIB_NSD_DNS_SD "nsd-dns-sd")
 SET(TARGET_LIB_NSD_SSDP "nsd-ssdp")
 SET(TARGET_NSD_TESTS "nsd-tests")
 
+ADD_DEFINITIONS("-DUSE_DLOG")
 
 ADD_SUBDIRECTORY(include)
 ADD_SUBDIRECTORY(src)
 ADD_SUBDIRECTORY(pkgconfig)
-ADD_SUBDIRECTORY(test)
-ADD_SUBDIRECTORY(unittest)
\ No newline at end of file
+ADD_SUBDIRECTORY(tests)
\ No newline at end of file
index c6de4c8272f581915d7dfdef458592184829a3f4..b1dc5b37bd8e2b3c165be779c82d5a35bf8c73c3 100644 (file)
@@ -1,6 +1,6 @@
 Name:       capi-network-nsd
 Summary:    A Network Service Discovery libraries in Native API
-Version:    0.1.0
+Version:    0.1.1
 Release:    1
 Group:      System/Network
 License:    Apache-2.0
@@ -107,7 +107,7 @@ tar xf %{name}-gcov.tar -C %{buildroot}%{_datadir}/gcov/obj
 %endif
 
 %check
-LD_LIBRARY_PATH=./src/ssdp:./src/dns-sd unittest/tct-nsd-core
+LD_LIBRARY_PATH=./src/ssdp:./src/dns-sd tests/tct-nsd-core
 %if 0%{?gcov:1}
 lcov -c --ignore-errors graph --no-external -b . -d . -o nsd.info
 genhtml nsd.info -o out --legend --show-details
@@ -134,6 +134,7 @@ genhtml nsd.info -o out --legend --show-details
 %manifest nsd-tests.manifest
 %attr(755,root,root) %{_bindir}/dns-sd-test
 %attr(755,root,root) %{_bindir}/ssdp-test
+%attr(755,root,root) %{_bindir}/tct-nsd-core
 
 %files -n libnsd-dns-sd
 %manifest libnsd-dns-sd.manifest
index 106a88d8682b2b9e5cac7785ffeabfbc22feb979..91b5282896257f68a99b446c3393d9fc694cf1c6 100644 (file)
 #
 # @file        CMakeLists.txt
 #
-
-SET(NSD_PATH ${PROJECT_SOURCE_DIR}/src)
-
-INCLUDE_DIRECTORIES(
-    ${CMAKE_SOURCE_DIR}/include
-    )
-
 ADD_SUBDIRECTORY(dns-sd)
 ADD_SUBDIRECTORY(ssdp)
index 2740807c663ef46a78bd0f438d86d431328d9411..c0813df0d46bf68fe9914e712429e78b79d1cca9 100644 (file)
 #
 # @file        CMakeLists.txt
 #
+########################## search for packages ################################
 
-SET(LIB_DNS_SD_PATH ${NSD_PATH}/dns-sd)
+PKG_CHECK_MODULES(LIB_NSD_DNS_SD_DEPS REQUIRED ${LIB_DEPS})
 
-INCLUDE_DIRECTORIES(
-    ${LIB_DNS_SD_PATH}
-    ${NSD_PATH}/include
-    )
+############################# compiler flags ##################################
 
-SET(LIB_DNS_SD_SOURCES
-    ${LIB_DNS_SD_PATH}/dns-sd.c
-    )
+SET(EXTRA_FLAGS "-fPIC -Wall -Werror -fvisibility=hidden")
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_FLAGS}")
+SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lpthread -pie")
 
-ADD_DEFINITIONS("-fvisibility=default")
+########################  directory configuration  ############################
 
-ADD_LIBRARY(${TARGET_LIB_NSD_DNS_SD} SHARED ${LIB_DNS_SD_SOURCES})
+INCLUDE_DIRECTORIES(${LIB_NSD_DNS_SD_DEPS_INCLUDE_DIRS})
+LINK_DIRECTORIES(${LIB_NSD_DNS_SD_DEPS_LIBRARY_DIRS})
 
+INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/include)
+
+SET(LIB_DNS_SD_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/dns-sd.c)
+
+ADD_LIBRARY(${TARGET_LIB_NSD_DNS_SD} SHARED ${LIB_DNS_SD_SRCS})
+TARGET_LINK_LIBRARIES(${TARGET_LIB_NSD_DNS_SD} ${LIB_NSD_DNS_SD_DEPS_LIBRARIES})
 SET_TARGET_PROPERTIES(
     ${TARGET_LIB_NSD_DNS_SD}
-    PROPERTIES
-        SOVERSION ${MAJORVER}
-        VERSION ${FULLVER}
-    )
-
-TARGET_LINK_LIBRARIES(${TARGET_LIB_NSD_DNS_SD}
-    ${NSD_DEPS_LIBRARIES}
-    dl
-    )
+     PROPERTIES
+     VERSION ${FULLVER}
+     SOVERSION ${MAJORVER}
+)
 
 INSTALL(TARGETS ${TARGET_LIB_NSD_DNS_SD} DESTINATION ${LIB_DIR})
index 99c1f08721a8ff16d7dbbe205b7abc9f9ece4ad3..f65d4dd8717f777b1ac9088b26698e22247b938c 100644 (file)
@@ -22,6 +22,7 @@
 #include <dns-sd.h>
 #include <system_info.h>
 
+#ifdef USE_DLOG
 #undef LOG_TAG
 #define LOG_TAG "CAPI_NETWORK_DNSSD"
 
 #define __DNSSD_LOG_FUNC_ENTER__ LOGD("Enter") //LCOV_EXCL_LINE
 #define __DNSSD_LOG_FUNC_EXIT__ LOGD("Quit") //LCOV_EXCL_LINE
 
+#else /* USE_DLOG */
+
+#define DNSSD_LOGD(format, args...)
+#define DNSSD_LOGI(format, args...)
+#define DNSSD_LOGW(format, args...)
+#define DNSSD_LOGE(format, args...)
+
+#define __DNSSD_LOG_FUNC_ENTER__
+#define __DNSSD_LOG_FUNC_EXIT__
+
+#endif /* USE_DLOG */
+
 #define NETWORK_SERVICE_DISCOVERY_FEATURE "http://tizen.org/feature/network.service_discovery.dnssd"
 
 #define CHECK_FEATURE_SUPPORTED(feature_name)\
index 7b3a06a8823560a163716f4a5e4359244d2295b8..44732b29cd938b9ec3b474945090014ff3e06dc0 100644 (file)
@@ -406,7 +406,7 @@ static void __dnssd_resolve_data_add_event_handler(guint *watch_id, resolve_repl
        *watch_id = __dnssd_io_add_watch(dns_sd_fd, __dnssd_resolve_data_io_events, data);
 }
 
-int dnssd_initialize(void)
+EXPORT_API int dnssd_initialize(void)
 {
        __DNSSD_LOG_FUNC_ENTER__;
        int res = 0;
@@ -432,7 +432,7 @@ int dnssd_initialize(void)
        return DNSSD_ERROR_NONE;
 }
 
-int dnssd_deinitialize(void)
+EXPORT_API int dnssd_deinitialize(void)
 {
        __DNSSD_LOG_FUNC_ENTER__;
 
@@ -448,7 +448,7 @@ int dnssd_deinitialize(void)
        return DNSSD_ERROR_NONE;
 }
 
-int dnssd_create_local_service(const char *service_type,
+EXPORT_API int dnssd_create_local_service(const char *service_type,
                dnssd_service_h *dnssd_service)
 {
        __DNSSD_LOG_FUNC_ENTER__;
@@ -519,7 +519,7 @@ static int __get_valid_registered_handle(dnssd_service_h dnssd_service, dnssd_ha
        return DNSSD_ERROR_NONE;
 }
 
-int dnssd_destroy_local_service(dnssd_service_h dnssd_service)
+EXPORT_API int dnssd_destroy_local_service(dnssd_service_h dnssd_service)
 {
        __DNSSD_LOG_FUNC_ENTER__;
        dnssd_handle_s *local_handle = NULL;
@@ -545,7 +545,7 @@ int dnssd_destroy_local_service(dnssd_service_h dnssd_service)
        return DNSSD_ERROR_NONE;
 }
 
-int dnssd_service_set_name(dnssd_service_h local_service,
+EXPORT_API int dnssd_service_set_name(dnssd_service_h local_service,
                const char *service_name)
 {
        __DNSSD_LOG_FUNC_ENTER__;
@@ -575,7 +575,7 @@ int dnssd_service_set_name(dnssd_service_h local_service,
        return DNSSD_ERROR_NONE;
 }
 
-int dnssd_service_set_port(dnssd_service_h local_service, int port)
+EXPORT_API int dnssd_service_set_port(dnssd_service_h local_service, int port)
 {
        __DNSSD_LOG_FUNC_ENTER__;
        dnssd_handle_s *local_handle = NULL;
@@ -603,7 +603,7 @@ int dnssd_service_set_port(dnssd_service_h local_service, int port)
        return DNSSD_ERROR_NONE;
 }
 
-int dnssd_service_set_interface(dnssd_service_h local_service, const char *interface)
+EXPORT_API int dnssd_service_set_interface(dnssd_service_h local_service, const char *interface)
 {
        __DNSSD_LOG_FUNC_ENTER__;
        dnssd_handle_s *local_handle = NULL;
@@ -634,7 +634,7 @@ int dnssd_service_set_interface(dnssd_service_h local_service, const char *inter
 }
 
 
-int dnssd_service_add_txt_record(dnssd_service_h local_service,
+EXPORT_API int dnssd_service_add_txt_record(dnssd_service_h local_service,
                const char *key, unsigned short length, const void *value)
 {
        __DNSSD_LOG_FUNC_ENTER__;
@@ -688,7 +688,7 @@ int dnssd_service_add_txt_record(dnssd_service_h local_service,
        return DNSSD_ERROR_NONE;
 }
 
-int dnssd_service_remove_txt_record(dnssd_service_h local_service,
+EXPORT_API int dnssd_service_remove_txt_record(dnssd_service_h local_service,
                const char *key)
 {
        __DNSSD_LOG_FUNC_ENTER__;
@@ -737,7 +737,7 @@ int dnssd_service_remove_txt_record(dnssd_service_h local_service,
        return DNSSD_ERROR_NONE;
 }
 
-int dnssd_service_set_record(dnssd_service_h local_service, unsigned short type,
+EXPORT_API int dnssd_service_set_record(dnssd_service_h local_service, unsigned short type,
                unsigned short length, const void *data)
 {
        __DNSSD_LOG_FUNC_ENTER__;
@@ -778,7 +778,7 @@ int dnssd_service_set_record(dnssd_service_h local_service, unsigned short type,
        return DNSSD_ERROR_NONE;
 }
 
-int dnssd_service_unset_record(dnssd_service_h local_service,
+EXPORT_API int dnssd_service_unset_record(dnssd_service_h local_service,
                unsigned short type)
 {
        __DNSSD_LOG_FUNC_ENTER__;
@@ -869,7 +869,7 @@ static void __dnssd_register_reply_cb(DNSServiceRef sd_ref, unsigned int flags,
        }
 }
 
-int dnssd_register_local_service(dnssd_service_h local_service,
+EXPORT_API int dnssd_register_local_service(dnssd_service_h local_service,
                dnssd_registered_cb register_cb, void *user_data)
 {
        __DNSSD_LOG_FUNC_ENTER__;
@@ -930,7 +930,7 @@ int dnssd_register_local_service(dnssd_service_h local_service,
        return DNSSD_ERROR_NONE;
 }
 
-int dnssd_deregister_local_service(dnssd_service_h local_service)
+EXPORT_API int dnssd_deregister_local_service(dnssd_service_h local_service)
 {
        __DNSSD_LOG_FUNC_ENTER__;
        DNSServiceErrorType ret;
@@ -973,6 +973,7 @@ int dnssd_deregister_local_service(dnssd_service_h local_service)
        return DNSSD_ERROR_NONE;
 }
 
+//LCOV_EXCL_START
 static gboolean __remove_service_getaddrinfo_socket(gpointer user_data)
 {
        DNSSD_LOGD("Remove DNSServiceGetAddrInfo socket");
@@ -1319,7 +1320,7 @@ static void __dnssd_browse_reply_cb(DNSServiceRef sd_ref, unsigned int flags,
        __DNSSD_LOG_FUNC_EXIT__;
 }
 
-int dnssd_start_browsing_service(const char *service_type,
+EXPORT_API int dnssd_start_browsing_service(const char *service_type,
                dnssd_browser_h *dnssd_service, dnssd_found_cb found_cb,
                void *user_data)
 {
@@ -1385,7 +1386,7 @@ int dnssd_start_browsing_service(const char *service_type,
        return DNSSD_ERROR_NONE;
 }
 
-int dnssd_start_browsing_service_on_interface(const char *service_type, const char *interface,
+EXPORT_API int dnssd_start_browsing_service_on_interface(const char *service_type, const char *interface,
                dnssd_browser_h *dnssd_service, dnssd_found_cb found_cb,
                void *user_data)
 {
@@ -1571,7 +1572,7 @@ void __destroy_browsing_handle(dnssd_handle_s *browsing_handle)
        return;
 }
 
-int dnssd_stop_browsing_service(dnssd_browser_h dnssd_service)
+EXPORT_API int dnssd_stop_browsing_service(dnssd_browser_h dnssd_service)
 {
        __DNSSD_LOG_FUNC_ENTER__;
        dnssd_handle_s *local_handle;
@@ -1589,6 +1590,7 @@ int dnssd_stop_browsing_service(dnssd_browser_h dnssd_service)
        __DNSSD_LOG_FUNC_EXIT__;
        return DNSSD_ERROR_NONE;
 }
+//LCOV_EXCL_STOP
 
 static int __get_valid_handle(dnssd_service_h dnssd_service, dnssd_handle_s **handle)
 {
@@ -1608,7 +1610,7 @@ static int __get_valid_handle(dnssd_service_h dnssd_service, dnssd_handle_s **ha
        return DNSSD_ERROR_NONE;
 }
 
-int dnssd_service_get_type(dnssd_service_h dnssd_service, char **service_type)
+EXPORT_API int dnssd_service_get_type(dnssd_service_h dnssd_service, char **service_type)
 {
        __DNSSD_LOG_FUNC_ENTER__;
        dnssd_handle_s *local_handle = NULL;
@@ -1633,7 +1635,7 @@ int dnssd_service_get_type(dnssd_service_h dnssd_service, char **service_type)
        return DNSSD_ERROR_NONE;
 }
 
-int dnssd_service_get_name(dnssd_service_h dnssd_service, char **service_name)
+EXPORT_API int dnssd_service_get_name(dnssd_service_h dnssd_service, char **service_name)
 {
        __DNSSD_LOG_FUNC_ENTER__;
        dnssd_handle_s *local_handle = NULL;
@@ -1672,7 +1674,7 @@ int dnssd_service_get_name(dnssd_service_h dnssd_service, char **service_name)
        return DNSSD_ERROR_NONE;
 }
 
-int dnssd_service_get_ip(dnssd_service_h dnssd_service, char **ip_v4_address,
+EXPORT_API int dnssd_service_get_ip(dnssd_service_h dnssd_service, char **ip_v4_address,
                char **ip_v6_address)
 {
        __DNSSD_LOG_FUNC_ENTER__;
@@ -1724,7 +1726,7 @@ int dnssd_service_get_ip(dnssd_service_h dnssd_service, char **ip_v4_address,
        return DNSSD_ERROR_NONE;
 }
 
-int dnssd_service_get_port(dnssd_service_h dnssd_service, int *port)
+EXPORT_API int dnssd_service_get_port(dnssd_service_h dnssd_service, int *port)
 {
        __DNSSD_LOG_FUNC_ENTER__;
        dnssd_handle_s *local_handle = NULL;
@@ -1762,7 +1764,7 @@ int dnssd_service_get_port(dnssd_service_h dnssd_service, int *port)
        return DNSSD_ERROR_NONE;
 }
 
-int dnssd_service_get_all_txt_record(dnssd_service_h dnssd_service,
+EXPORT_API int dnssd_service_get_all_txt_record(dnssd_service_h dnssd_service,
                unsigned short *length, void **value)
 {
        __DNSSD_LOG_FUNC_ENTER__;
index 782cfea0ee98796bf35ec652b4383cd68b7282e1..1bfda6fff3c76feb2a97e57dbccf21df6f9d9348 100644 (file)
 #
 # @file        CMakeLists.txt
 #
+########################## search for packages ################################
 
-SET(LIB_SSDP_PATH ${NSD_PATH}/ssdp)
+PKG_CHECK_MODULES(LIB_NSD_SSDP_DEPS REQUIRED ${LIB_DEPS})
 
-INCLUDE_DIRECTORIES(
-    ${LIB_SSDP_PATH}
-    ${NSD_PATH}/include
-    )
+############################# compiler flags ##################################
 
-SET(LIB_SSDP_SOURCES
-    ${LIB_SSDP_PATH}/ssdp.c
-    )
+SET(EXTRA_FLAGS "-fPIC -Wall -Werror -fvisibility=hidden")
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_FLAGS}")
+SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lpthread -pie")
 
-ADD_DEFINITIONS("-fvisibility=default")
+########################  directory configuration  ############################
 
-ADD_LIBRARY(${TARGET_LIB_NSD_SSDP} SHARED ${LIB_SSDP_SOURCES})
+INCLUDE_DIRECTORIES(${LIB_NSD_SSDP_DEPS_INCLUDE_DIRS})
+LINK_DIRECTORIES(${LIB_NSD_SSDP_DEPS_LIBRARY_DIRS})
 
+INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/include)
+
+SET(LIB_SSDP_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/ssdp.c)
+
+ADD_LIBRARY(${TARGET_LIB_NSD_SSDP} SHARED ${LIB_SSDP_SRCS})
+TARGET_LINK_LIBRARIES(${TARGET_LIB_NSD_SSDP} ${LIB_NSD_SSDP_DEPS_LIBRARIES})
 SET_TARGET_PROPERTIES(
     ${TARGET_LIB_NSD_SSDP}
-    PROPERTIES
-        SOVERSION ${MAJORVER}
-        VERSION ${FULLVER}
-    )
-
-TARGET_LINK_LIBRARIES(${TARGET_LIB_NSD_SSDP}
-    ${NSD_DEPS_LIBRARIES}      
-    dl
-    )
+     PROPERTIES
+     VERSION ${FULLVER}
+     SOVERSION ${MAJORVER}
+)
 
 INSTALL(TARGETS ${TARGET_LIB_NSD_SSDP} DESTINATION ${LIB_DIR})
index 967df105222bfb6dc71f12ddbf8383d6969b5709..405091b2d39da574013baa89b1ce8bec6dddd8bf 100644 (file)
@@ -17,7 +17,6 @@
 #ifndef __ssdp_util_h__
 #define __ssdp_util_h__
 
-#define USE_DLOG
 #ifdef USE_DLOG
 #include <dlog.h>
 #include <system_info.h>
index 935dd91fb20546fa07abba69a5aa57cf6474747b..19ad4bba3814196af676e3863919e89310fe18f3 100644 (file)
@@ -430,7 +430,7 @@ __ssdp_res_unavailable_cb(GSSDPResourceBrowser *resource_browser,
 }
 //LCOV_EXCL_STOP
 
-int ssdp_initialize()
+EXPORT_API int ssdp_initialize()
 {
        __SSDP_LOG_FUNC_ENTER__;
        int status = SSDP_ERROR_NONE;
@@ -467,7 +467,7 @@ int ssdp_initialize()
        return status;
 }
 
-int ssdp_deinitialize()
+EXPORT_API int ssdp_deinitialize()
 {
        __SSDP_LOG_FUNC_ENTER__;
        int status = SSDP_ERROR_NONE;
@@ -495,7 +495,7 @@ int ssdp_deinitialize()
        return status;
 }
 
-int ssdp_create_local_service(const char *target, ssdp_service_h *ssdp_service)
+EXPORT_API int ssdp_create_local_service(const char *target, ssdp_service_h *ssdp_service)
 {
        __SSDP_LOG_FUNC_ENTER__;
        int status = SSDP_ERROR_NONE;
@@ -545,7 +545,7 @@ int ssdp_create_local_service(const char *target, ssdp_service_h *ssdp_service)
        return status;
 }
 
-int ssdp_destroy_local_service(ssdp_service_h ssdp_service)
+EXPORT_API int ssdp_destroy_local_service(ssdp_service_h ssdp_service)
 {
        __SSDP_LOG_FUNC_ENTER__;
        int status = SSDP_ERROR_NONE;
@@ -585,7 +585,7 @@ int ssdp_destroy_local_service(ssdp_service_h ssdp_service)
        return status;
 }
 
-int ssdp_service_set_usn(ssdp_service_h local_service, const char* usn)
+EXPORT_API int ssdp_service_set_usn(ssdp_service_h local_service, const char* usn)
 {
        __SSDP_LOG_FUNC_ENTER__;
        int status = SSDP_ERROR_NONE;
@@ -629,7 +629,7 @@ int ssdp_service_set_usn(ssdp_service_h local_service, const char* usn)
        return status;
 }
 
-int ssdp_service_set_url(ssdp_service_h local_service, const char *url)
+EXPORT_API int ssdp_service_set_url(ssdp_service_h local_service, const char *url)
 {
        __SSDP_LOG_FUNC_ENTER__;
        int status = SSDP_ERROR_NONE;
@@ -672,7 +672,7 @@ int ssdp_service_set_url(ssdp_service_h local_service, const char *url)
        return status;
 }
 
-int ssdp_service_get_target(ssdp_service_h ssdp_service, char **target)
+EXPORT_API int ssdp_service_get_target(ssdp_service_h ssdp_service, char **target)
 {
        __SSDP_LOG_FUNC_ENTER__;
        int status = SSDP_ERROR_NONE;
@@ -714,7 +714,7 @@ int ssdp_service_get_target(ssdp_service_h ssdp_service, char **target)
        return status;
 }
 
-int ssdp_service_get_usn(ssdp_service_h ssdp_service, char **usn)
+EXPORT_API int ssdp_service_get_usn(ssdp_service_h ssdp_service, char **usn)
 {
        __SSDP_LOG_FUNC_ENTER__;
        int status = SSDP_ERROR_NONE;
@@ -756,7 +756,7 @@ int ssdp_service_get_usn(ssdp_service_h ssdp_service, char **usn)
        return status;
 }
 
-int ssdp_service_get_url(ssdp_service_h ssdp_service, char **url)
+EXPORT_API int ssdp_service_get_url(ssdp_service_h ssdp_service, char **url)
 {
        __SSDP_LOG_FUNC_ENTER__;
        int status = SSDP_ERROR_NONE;
@@ -798,7 +798,7 @@ int ssdp_service_get_url(ssdp_service_h ssdp_service, char **url)
        return status;
 }
 
-int ssdp_register_local_service(ssdp_service_h local_service,
+EXPORT_API int ssdp_register_local_service(ssdp_service_h local_service,
                                        ssdp_registered_cb cb, void *user_data)
 {
        __SSDP_LOG_FUNC_ENTER__;
@@ -878,7 +878,7 @@ int ssdp_register_local_service(ssdp_service_h local_service,
 }
 
 
-int ssdp_deregister_local_service(ssdp_service_h local_service)
+EXPORT_API int ssdp_deregister_local_service(ssdp_service_h local_service)
 {
        __SSDP_LOG_FUNC_ENTER__;
        int status = SSDP_ERROR_NONE;
@@ -921,7 +921,7 @@ int ssdp_deregister_local_service(ssdp_service_h local_service)
        return status;
 }
 
-int ssdp_start_browsing_service(const char* target, ssdp_browser_h* ssdp_browser,
+EXPORT_API int ssdp_start_browsing_service(const char* target, ssdp_browser_h* ssdp_browser,
                                        ssdp_found_cb found_cb, void *user_data)
 {
        __SSDP_LOG_FUNC_ENTER__;
@@ -1019,7 +1019,7 @@ GLIST_ITER_END()
        return status;
 }
 
-int ssdp_stop_browsing_service(ssdp_browser_h ssdp_browser)
+EXPORT_API int ssdp_stop_browsing_service(ssdp_browser_h ssdp_browser)
 {
        __SSDP_LOG_FUNC_ENTER__;
        int status = SSDP_ERROR_NONE;
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
deleted file mode 100644 (file)
index b258641..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-SET(INC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../include)
-INCLUDE_DIRECTORIES(${INC_DIR})
-
-INCLUDE(FindPkgConfig)
-pkg_check_modules(TARGET_NSD_TESTS REQUIRED capi-base-common glib-2.0)
-FOREACH(flag ${TARGET_NSD_TESTS_CFLAGS})
-    SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
-    MESSAGE(${flag})
-ENDFOREACH()
-
-SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -Wall -fPIE")
-SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed -pie")
-
-aux_source_directory(. sources)
-FOREACH(src ${sources})
-    GET_FILENAME_COMPONENT(src_name ${src} NAME_WE)
-    MESSAGE("${src_name}")
-    ADD_EXECUTABLE(${src_name} ${src})
-    TARGET_LINK_LIBRARIES(${src_name} ${TARGET_LIB_NSD_DNS_SD} ${TARGET_LIB_NSD_SSDP} ${TARGET_NSD_TESTS_LDFLAGS})
-ENDFOREACH()
-
-INSTALL(TARGETS dns-sd-test RUNTIME DESTINATION ${BIN_DIR})
-INSTALL(TARGETS ssdp-test RUNTIME DESTINATION ${BIN_DIR})
diff --git a/test/dns-sd-test.c b/test/dns-sd-test.c
deleted file mode 100644 (file)
index 7ddb54a..0000000
+++ /dev/null
@@ -1,655 +0,0 @@
-/*
-* Copyright (c) 2012, 2013 Samsung Electronics Co., Ltd.
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-
-#include <string.h>
-#include <stdio.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <glib.h>
-#include <netdb.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-
-#include "dns-sd.h"
-
-gboolean test_thread(GIOChannel *source, GIOCondition condition, gpointer data);
-
-static bool test_get_user_string(const char *msg, char *buf, int buf_size)
-{
-       if (msg == NULL || buf == NULL || buf_size < 2)
-               return false;
-
-       int i = 0, c;
-       printf("%s\n", msg);
-       memset(buf, 0, buf_size);
-       while (true) {
-               c = getchar();
-               if (i == 0 && c == '\n')
-                       continue;
-
-               if (c == '\n' || c == EOF)
-                       break;
-
-               buf[i++] = c;
-               if (i == buf_size-1)
-                       break;
-       }
-
-       buf[i] = '\0';
-       return true;
-}
-
-static bool test_get_user_bytes(const char *msg, char *buf, int buf_size)
-{
-       if (msg == NULL || buf == NULL || buf_size < 2)
-               return false;
-
-       int i = 0, c;
-       printf("%s\n", msg);
-       memset(buf, 0, buf_size);
-       while (true) {
-               c = getchar();
-               if (i == 0 && c == '\n')
-                       continue;
-
-               if (c == '\n' || c == EOF)
-                       break;
-
-               buf[i++] = c;
-               if (i == buf_size-1)
-                       break;
-       }
-
-       return true;
-}
-
-static const char *dnssd_error_to_string(dnssd_error_e error)
-{
-       switch (error) {
-       case DNSSD_ERROR_NONE:
-               return "DNSSD_ERROR_NONE";
-       case DNSSD_ERROR_OUT_OF_MEMORY:
-               return "DNSSD_ERROR_OUT_OF_MEMORY";
-       case DNSSD_ERROR_INVALID_PARAMETER:
-               return "DNSSD_ERROR_INVALID_PARAMETER";
-       case DNSSD_ERROR_NOT_SUPPORTED:
-               return "DNSSD_ERROR_NOT_SUPPORTED";
-       case DNSSD_ERROR_NOT_INITIALIZED:
-               return "DNSSD_ERROR_NOT_INITIALIZED";
-       case DNSSD_ERROR_ALREADY_REGISTERED:
-               return "DNSSD_ERROR_ALREADY_REGISTERED";
-       case DNSSD_ERROR_NAME_CONFLICT:
-               return "DNSSD_ERROR_NAME_CONFLICT";
-       case DNSSD_ERROR_SERVICE_NOT_RUNNING:
-               return "DNSSD_ERROR_SERVICE_NOT_RUNNING";
-       case DNSSD_ERROR_OPERATION_FAILED:
-               return "DNSSD_ERROR_OPERATION_FAILED";
-       default:
-               return "UNSUPPORTED_ERROR";
-       }
-}
-
-static void show_txt_record(unsigned short txt_len, const unsigned char *txt_record)
-{
-       const unsigned char *ptr = txt_record;
-       const unsigned char *max = txt_record + txt_len;
-       while (ptr < max) {
-               const unsigned char *const end = ptr + 1 + ptr[0];
-               if (end > max) {
-                       printf("<< invalid data >>");
-                       break;
-               }
-               if (++ptr < end)
-                       printf(" ");   /* As long as string is non-empty, begin with a space */
-               while (ptr < end) {
-                       if (strchr(" &;`'\"|*?~<>^()[]{}$", *ptr))
-                               printf("\\");
-                       if (*ptr == '\\')
-                               printf("\\\\\\\\");
-                       else if (*ptr >= ' ')
-                               printf("%c", *ptr);
-                       else
-                               printf("\\\\x%02X", *ptr);
-                       ptr++;
-               }
-       }
-       printf("\n");
-}
-
-int test_dnssd_initialize()
-{
-       int rv;
-       printf("Initialize DNS SD CAPI\n");
-
-       rv = dnssd_initialize();
-       if (rv != DNSSD_ERROR_NONE) {
-               printf("Failed to Initialize DNS SD CAPI [%s]\n",
-                               dnssd_error_to_string(rv));
-               return 0;
-       }
-       printf("Successfully Initialized DNS SD CAPI\n");
-       return 1;
-}
-
-int test_dnssd_deinitialize()
-{
-       int rv;
-       printf("De-Initialize DNS SD CAPI\n");
-
-       rv = dnssd_deinitialize();
-       if (rv != DNSSD_ERROR_NONE) {
-               printf("Failed to De-Initialize DNS SD CAPI [%s]\n",
-                               dnssd_error_to_string(rv));
-               return 0;
-       }
-       printf("Successfully De-Initialized DNS SD CAPI\n");
-       return 1;
-}
-
-int test_dnssd_create_local_service()
-{
-       int rv = -1;
-
-       dnssd_service_h service = 0;
-       char service_type[255];
-       printf("Create DNS Service\n");
-       test_get_user_string("Enter type:(Example : _http._tcp, "
-                       "_printer._tcp etc)", service_type, 255);
-       rv = dnssd_create_local_service(service_type, &service);
-       if (rv != DNSSD_ERROR_NONE) {
-               printf("Failed to create DNS SD Service, error [%s]\n",
-                               dnssd_error_to_string(rv));
-               return 0;
-       }
-
-       printf("Successfully created DNS SD Service[%u]\n", service);
-       return 1;
-}
-
-int test_dnssd_destroy_local_service()
-{
-       int rv = -1;
-       dnssd_service_h service = 0;
-       printf("Destroy DNS Service\n");
-       printf("Enter Local Service Handle:\n");
-       rv = scanf("%u", &service);
-       rv = dnssd_destroy_local_service(service);
-       if (rv != DNSSD_ERROR_NONE) {
-               printf("Failed to destroy DNS SD Service, error [%s]\n",
-                               dnssd_error_to_string(rv));
-               return 0;
-       }
-
-       printf("Successfully destroyed DNS SD Service\n");
-       return 1;
-}
-
-static void dnssd_register_reply(dnssd_error_e result,
-               dnssd_service_h local_service, void *user_data)
-{
-       printf("Register Callback\n");
-       printf("Handler  : %u\n", local_service);
-       printf("State : ");
-       switch (result) {
-       case DNSSD_ERROR_NONE:
-               printf("DNSSD_REGISTERED\n");
-               break;
-       case DNSSD_ERROR_ALREADY_REGISTERED:
-               printf("DNSSD_ERROR_ALREADY_REGISTERED\n");
-               break;
-       case DNSSD_ERROR_NAME_CONFLICT:
-               printf("DNSSD_ERROR_NAME_CONFLICT\n");
-               break;
-       default:
-               printf("Unknown State\n");
-       }
-}
-
-int test_dnssd_register_local_service()
-{
-       dnssd_service_h service = 0;
-       int rv;
-       char service_name[255] = {0,};
-       int port;
-       char buffer[255];
-       char key[10];
-       unsigned short buf_len;
-
-       printf("Register DNS Service\n");
-       printf("Enter Local Service Handler:\n");
-       rv = scanf("%u", &service);
-
-       test_get_user_string("Enter Service Name:", service_name, 255);
-       rv = dnssd_service_set_name(service, service_name);
-       if (rv != DNSSD_ERROR_NONE) {
-               printf("Failed to set name [%s]\n", dnssd_error_to_string(rv));
-               return 0;
-       }
-
-       printf("Enter port:\n");
-       rv = scanf("%d", &port);
-       rv = dnssd_service_set_port(service, port);
-       if (rv != DNSSD_ERROR_NONE) {
-               printf("Failed to set port [%s]\n", dnssd_error_to_string(rv));
-               return 0;
-       }
-
-       printf("Enter length of TXT Record:\n");
-       rv = scanf("%hu", &buf_len);
-
-       test_get_user_bytes("Enter record data:", buffer, 255);
-       test_get_user_string("Enter TXT Record key:", key, 10);
-
-       rv = dnssd_service_add_txt_record(service, key, buf_len, buffer);
-       if (rv != DNSSD_ERROR_NONE) {
-               printf("Failed to set txt record value\n");
-               return 0;
-       }
-
-       rv = dnssd_register_local_service(service, dnssd_register_reply, NULL);
-       if (rv != DNSSD_ERROR_NONE) {
-               printf("Failed to register for dns service, error [%s]",
-                               dnssd_error_to_string(rv));
-               return 0;
-       }
-       printf("Succeeded to register for dns service");
-       return 1;
-}
-
-int test_dnssd_deregister_local_service()
-{
-       dnssd_service_h service = 0;
-       int rv;
-
-       printf("De-register DNS Service\n");
-       printf("Enter Local Service Handler:\n");
-       rv = scanf("%u", &service);
-
-       rv = dnssd_deregister_local_service(service);
-       if (rv != DNSSD_ERROR_NONE) {
-               printf("Failed to deregister dns service, error [%s]\n",
-                               dnssd_error_to_string(rv));
-               return 0;
-       }
-       printf("Successfully deregistered dns service\n");
-       return 1;
-}
-
-int test_dnssd_service_get_type()
-{
-       int rv = -1;
-       dnssd_service_h service;
-       char * type = NULL;
-       printf("Get DNS-SD service type\n");
-       printf("Enter Service Handler:\n");
-       rv = scanf("%u", &service);
-       rv = dnssd_service_get_type(service, &type);
-       if (rv != DNSSD_ERROR_NONE) {
-               printf("Failed to get DNS SD Service type, error [%s]\n",
-                               dnssd_error_to_string(rv));
-               return 0;
-       }
-
-       if (type)
-               printf("Service type [%s]\n", type);
-       g_free(type);
-       printf("Successfully get DNS SD Service type\n");
-       return 1;
-}
-
-int test_dnssd_service_get_name()
-{
-       int rv = -1;
-       dnssd_service_h service;
-       char * name = NULL;
-       printf("Get DNS-SD Service Name\n");
-       printf("Enter Service Handler:\n");
-       rv = scanf("%u", &service);
-       rv = dnssd_service_get_name(service, &name);
-       if (rv != DNSSD_ERROR_NONE) {
-               printf("Failed to get DNS SD Service name, error [%s]\n",
-                               dnssd_error_to_string(rv));
-               return 0;
-       }
-
-       if (name)
-               printf("Service name [%s]\n", name);
-       g_free(name);
-       printf("Successfully get DNS SD Service name\n");
-       return 1;
-}
-
-int test_dnssd_service_get_ip()
-{
-       int rv = -1;
-       dnssd_service_h service;
-       char * ip_v4_address = NULL;
-       char * ip_v6_address = NULL;
-       printf("Get DNS-SD Service IP\n");
-       printf("Enter Service Handler:\n");
-       rv = scanf("%u", &service);
-       rv = dnssd_service_get_ip(service, &ip_v4_address, &ip_v6_address);
-       if (rv != DNSSD_ERROR_NONE) {
-               printf("Failed to get DNS SD Service IP, error [%s]\n",
-                               dnssd_error_to_string(rv));
-               return 0;
-       }
-
-       printf("Service IP v4 [%s]\n", ip_v4_address);
-       printf("Service IP v6 [%s]\n", ip_v6_address);
-       g_free(ip_v4_address);
-       g_free(ip_v6_address);
-       printf("Successfully get DNS SD Service IP\n");
-       return 1;
-}
-
-int test_dnssd_service_get_port()
-{
-       int rv = -1;
-       dnssd_service_h service;
-       int port = 0;
-       printf("Get DNS-SD Service Port\n");
-       printf("Enter Service Handler:\n");
-       rv = scanf("%u", &service);
-       rv = dnssd_service_get_port(service, &port);
-       if (rv != DNSSD_ERROR_NONE) {
-               printf("Failed to get DNS SD Service port, error [%s]\n",
-                               dnssd_error_to_string(rv));
-               return 0;
-       }
-
-       printf("Service port [%d]\n", port);
-       printf("Successfully get DNS SD Service port\n");
-       return 1;
-}
-
-int test_dnssd_service_set_record()
-{
-       dnssd_service_h service;
-       int rv;
-       unsigned short type, length, buf_len;
-       void *data;
-       char buffer[255];
-       char key[10];
-       printf("Add record to DNS SD Service\n");
-       printf("Enter Local Service Handle:\n");
-       rv = scanf("%u", &service);
-
-       printf("Enter type of Resource Record:\n");
-       rv = scanf("%hu", &type);
-
-       printf("Enter length of Resource Record:\n");
-       rv = scanf("%hu", &buf_len);
-
-       test_get_user_bytes("Enter record data:", buffer, 255);
-       test_get_user_string("Enter TXT Record key:", key, 10);
-
-       rv = dnssd_service_add_txt_record(service, key, buf_len, buffer);
-       if (rv != DNSSD_ERROR_NONE) {
-               printf("Failed to set txt record value\n");
-               return 0;
-       }
-
-       rv = dnssd_service_get_all_txt_record(service, &length, &data);
-       if (rv != DNSSD_ERROR_NONE) {
-               printf("Failed to get txt record value\n");
-               return 0;
-       }
-
-       rv = dnssd_service_set_record(service, type, length, data);
-       if (rv != DNSSD_ERROR_NONE) {
-               printf("Failed to add record\n");
-               g_free(data);
-               return 0;
-       }
-
-       printf("Successfully added record\n");
-
-       return 1;
-}
-
-int test_dnssd_service_unset_record()
-{
-       dnssd_service_h service;
-       int rv;
-       unsigned short type;
-       printf("Remove record from DNS SD Service\n");
-       printf("Enter Local Service Handle:\n");
-       rv = scanf("%u", &service);
-
-       printf("Enter type of Resource Record:\n");
-       rv = scanf("%hu", &type);
-
-       rv = dnssd_service_unset_record(service, type);
-       if (rv != DNSSD_ERROR_NONE) {
-               printf("Failed to remove record\n");
-               return 0;
-       }
-
-       printf("Successfully removed record\n");
-       return 1;
-}
-
-static void dnssd_browse_reply(dnssd_service_state_e service_state,
-               dnssd_service_h remote_service, void *user_data)
-{
-       int rv = 0;
-       printf("Browse Service Callback\n");
-       printf("Handler       : %u\n", remote_service);
-       printf("State         : ");
-       switch (service_state) {
-       case DNSSD_SERVICE_STATE_AVAILABLE:
-               printf("Available\n");
-               break;
-       case DNSSD_SERVICE_STATE_UNAVAILABLE:
-               printf("Un-Available\n");
-               break;
-       case DNSSD_SERVICE_STATE_NAME_LOOKUP_FAILED:
-               printf("Lookup failure for service name\n");
-               break;
-       case DNSSD_SERVICE_STATE_HOST_NAME_LOOKUP_FAILED:
-               printf("Lookup failure for host name and port number\n");
-               break;
-       case DNSSD_SERVICE_STATE_ADDRESS_LOOKUP_FAILED:
-               printf("Lookup failure for IP address\n");
-               break;
-       default:
-               printf("Unknown Browse State\n");
-               break;
-       }
-
-       char *name = NULL;
-       char *type = NULL;
-
-       rv = dnssd_service_get_name(remote_service, &name);
-       if (rv == DNSSD_ERROR_NONE && name != NULL)
-               printf("Service Name  : %s\n", name);
-
-       rv = dnssd_service_get_type(remote_service, &type);
-       if (rv == DNSSD_ERROR_NONE && type != NULL)
-               printf("Service Type  : %s\n", type);
-
-       if (service_state == DNSSD_SERVICE_STATE_AVAILABLE) {
-               char *ip_v4_address = NULL;
-               char *ip_v6_address = NULL;
-               unsigned char *txt_record = NULL;
-               unsigned short txt_len = 0;
-               int port = 0;
-
-               rv = dnssd_service_get_ip(remote_service, &ip_v4_address, &ip_v6_address);
-               if (rv  == DNSSD_ERROR_NONE) {
-                       if (ip_v4_address)
-                       printf("IPv4 Address  : %s\n", ip_v4_address);
-                       if (ip_v6_address)
-                       printf("IPv6 Address  : %s\n", ip_v6_address);
-               }
-
-               rv = dnssd_service_get_port(remote_service, &port);
-               printf("Port          : %d\n", port);
-
-               printf("TXT Record    : ");
-               dnssd_service_get_all_txt_record(remote_service, &txt_len,
-                               (void *)&txt_record);
-               show_txt_record(txt_len, txt_record);
-
-               g_free(ip_v4_address);
-               g_free(ip_v6_address);
-               g_free(txt_record);
-       }
-       g_free(name);
-       g_free(type);
-}
-
-int test_dnssd_start_browsing_service()
-{
-       dnssd_service_h service = 0;
-       char service_type[255];
-       int rv;
-
-       printf("Browse DNS Service\n");
-       test_get_user_string("Enter type:(Example : _http._tcp, "
-                       "_printer._tcp etc)", service_type, 255);
-
-       rv = dnssd_start_browsing_service(service_type, &service,
-                       dnssd_browse_reply, NULL);
-       if (rv != DNSSD_ERROR_NONE) {
-               printf("Failed to browse for dns service, error %s",
-                               dnssd_error_to_string(rv));
-               return 0;
-       }
-
-       printf("Succeeded to browse for dns service[%u]\n", service);
-       return 1;
-}
-
-int test_dnssd_stop_browsing_service()
-{
-       dnssd_service_h service;
-       int rv;
-       printf("Enter Browse Service Handle:\n");
-       rv = scanf("%u", &service);
-
-       rv = dnssd_stop_browsing_service(service);
-       if (rv != DNSSD_ERROR_NONE) {
-               printf("Failed to stop browse dns service %s\n",
-                               dnssd_error_to_string(rv));
-               return 0;
-       }
-       printf("Successfully stopped browsing dns service\n");
-       return 1;
-}
-
-static void MenuScreen()
-{
-       printf("_____________________________________\n");
-       printf("|_____________MENU-SCREEN___________|\n");
-       printf("| 0 - EXIT                          |\n");
-       printf("| 1 - Initialize DNS SD             |\n");
-       printf("| 2 - De-Initialize DNS SD          |\n");
-       printf("| 3 - DNS SD Create Service         |\n");
-       printf("| 4 - DNS SD Destroy Service        |\n");
-       printf("| 5 - Register DNS Service          |\n");
-       printf("| 6 - De-Register DNS Service       |\n");
-       printf("| 7 - Add Record to DNS Service     |\n");
-       printf("| 8 - Remove Registered Record      |\n");
-       printf("| 9 - Browse DNS Service            |\n");
-       printf("| a - Stop Browse DNS Service       |\n");
-       printf("|___________________________________|\n");
-}
-
-int test_thread(GIOChannel *source, GIOCondition condition, gpointer data)
-{
-       int rv;
-       char a[10];
-       GMainLoop *mainloop = data;
-
-       printf("Event received from stdin\n");
-
-       rv = read(0, a, 10);
-       if (rv <= 0 || a[0] == '0') {
-               printf("Terminating  Test Application");
-               g_main_loop_quit(mainloop);
-               rv = 1;
-       }
-
-       if (a[0] == '\n' || a[0] == '\r') {
-               printf("\n\n mDNSResponder Test App\n\n");
-               printf("Options..\n");
-               MenuScreen();
-               printf("Press ENTER to show options menu.......\n");
-       }
-
-       switch (a[0]) {
-       case '1':
-               rv = test_dnssd_initialize();
-               break;
-       case '2':
-               rv = test_dnssd_deinitialize();
-               break;
-       case '3':
-               rv = test_dnssd_create_local_service();
-               break;
-       case '4':
-               rv = test_dnssd_destroy_local_service();
-               break;
-       case '5':
-               rv = test_dnssd_register_local_service();
-               break;
-       case '6':
-               rv = test_dnssd_deregister_local_service();
-               break;
-       case '7':
-               rv = test_dnssd_service_set_record();
-               break;
-       case '8':
-               rv = test_dnssd_service_unset_record();
-               break;
-       case '9':
-               rv = test_dnssd_start_browsing_service();
-               break;
-       case 'a':
-               rv = test_dnssd_stop_browsing_service();
-               break;
-       }
-
-       if (rv == 1)
-               printf("\nOperation Succeeded!\n");
-       else
-               printf("\nOperation Failed!\n");
-
-       return TRUE;
-
-}
-
-int main(int argc, char **argv)
-{
-       GMainLoop *mainloop;
-       mainloop = g_main_loop_new(NULL, FALSE);
-
-       GIOChannel *channel = g_io_channel_unix_new(0);
-       g_io_add_watch(channel, (G_IO_IN|G_IO_ERR|G_IO_HUP|G_IO_NVAL),
-                       test_thread, mainloop);
-
-       printf("Test Thread created...\n");
-
-       g_main_loop_run(mainloop);
-
-       printf("Test Application Terminated\n");
-       g_main_loop_unref(mainloop);
-
-       return 0;
-}
diff --git a/test/ssdp-browse-test.c b/test/ssdp-browse-test.c
deleted file mode 100644 (file)
index d2c0840..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
-* Copyright (c) 2012, 2013 Samsung Electronics Co., Ltd.
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <string.h>
-#include <errno.h>
-#include <time.h>
-#include <assert.h>
-
-#include <glib.h>
-#include <glib-object.h>
-
-#include <ssdp.h>
-
-#define RESET_COLOR "\e[m"
-#define MAKE_RED "\e[31m"
-#define MAKE_GREEN "\e[32m"
-
-#define MENU_PRINT(str) printf("%s\n", str)
-
-#define __FUNC_ENTER__ printf("\n%s() entering...\n", __func__)
-#define __FUNC_EXIT__ printf("\n%s() leaving...\n", __func__)
-
-void test_found_cb(ssdp_service_state_e state, ssdp_service_h ssdp_service, void *user_data)
-{
-       __FUNC_ENTER__;
-       char *usn;
-       char *url;
-       printf("service handler: %u\n", ssdp_service);
-       ssdp_service_get_usn(ssdp_service, &usn);
-       ssdp_service_get_url(ssdp_service, &url);
-       printf("state: %s\n", state == SSDP_SERVICE_STATE_AVAILABLE ? "AVAILABLE" : "UNAVAILABE");
-       printf("usn: %s\n", usn);
-       printf("url: %s\n", url);
-       g_free(usn);
-       g_free(url);
-       __FUNC_EXIT__;
-}
-
-int main(int argc, char *argv[])
-{
-       GMainLoop *main_loop = NULL;
-       int ret = -1;
-       ssdp_browser_h browser_id;
-       char *target = "upnp:rootdevice";
-
-       /* Initialize required subsystems */
-#if !GLIB_CHECK_VERSION(2, 35, 0)
-       g_type_init();
-#endif
-
-       if (ssdp_initialize() == 0)
-               printf(MAKE_GREEN"Initialized"RESET_COLOR"\n");
-
-       if (ssdp_start_browsing_service(target, &browser_id, &test_found_cb, NULL) == 0)
-               printf(MAKE_GREEN"Start browsing"RESET_COLOR"\n");
-
-       /* Crate the GLIB main loop */
-       main_loop = g_main_loop_new(NULL, FALSE);
-
-       /* Run the main loop */
-       g_main_loop_run(main_loop);
-
-       g_main_loop_unref(main_loop);
-
-       return ret;
-}
diff --git a/test/ssdp-register-test.c b/test/ssdp-register-test.c
deleted file mode 100644 (file)
index 0c89349..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
-* Copyright (c) 2012, 2013 Samsung Electronics Co., Ltd.
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <string.h>
-#include <errno.h>
-#include <time.h>
-#include <assert.h>
-
-#include <glib.h>
-#include <glib-object.h>
-
-#include <ssdp.h>
-
-#define RESET_COLOR "\e[m"
-#define MAKE_RED "\e[31m"
-#define MAKE_GREEN "\e[32m"
-
-#define MENU_PRINT(str) printf("%s\n", str)
-
-#define __FUNC_ENTER__ printf("\n%s() entering...\n", __func__)
-#define __FUNC_EXIT__ printf("\n%s() leaving...\n", __func__)
-
-
-void test_registered_cb(ssdp_error_e result, ssdp_service_h ssdp_service, void *user_data)
-{
-       __FUNC_ENTER__;
-       printf("service handler: %u\n", ssdp_service);
-       printf("result: %d\n", result);
-       __FUNC_EXIT__;
-}
-
-int main(int argc, char *argv[])
-{
-       GMainLoop *main_loop = NULL;
-       int ret = -1;
-       ssdp_service_h serv_id;
-       char *target = "upnp:rootdevice";
-       char *usn = "uuid:1234abce-12ab";
-       char *url = "localhost";
-
-
-       /* Initialize required subsystems */
-#if !GLIB_CHECK_VERSION(2, 35, 0)
-       g_type_init();
-#endif
-
-       if (ssdp_initialize() == 0)
-               printf(MAKE_GREEN"Initialized"RESET_COLOR"\n");
-
-       if (ssdp_create_local_service(target, &serv_id) == 0)
-               printf(MAKE_GREEN"Create service. Type: %s, handle: %u "RESET_COLOR"\n", target, serv_id);
-
-       if (ssdp_service_set_usn(serv_id, usn) == 0)
-               printf(MAKE_GREEN"Set USN %s"RESET_COLOR"\n", usn);
-
-       if (ssdp_service_set_url(serv_id, url) == 0)
-               printf(MAKE_GREEN"Set URL %s"RESET_COLOR"\n", url);
-
-       if (ssdp_register_local_service(serv_id, &test_registered_cb, NULL) == 0)
-               printf(MAKE_GREEN"Start registering"RESET_COLOR"\n");
-
-       /* Crate the GLIB main loop */
-       main_loop = g_main_loop_new(NULL, FALSE);
-
-       /* Run the main loop */
-       g_main_loop_run(main_loop);
-
-       g_main_loop_unref(main_loop);
-
-       return ret;
-}
diff --git a/test/ssdp-test.c b/test/ssdp-test.c
deleted file mode 100644 (file)
index efee492..0000000
+++ /dev/null
@@ -1,541 +0,0 @@
-/*
-* Copyright (c) 2012, 2013 Samsung Electronics Co., Ltd.
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <string.h>
-#include <errno.h>
-#include <time.h>
-#include <assert.h>
-
-#include <glib.h>
-#include <glib-object.h>
-
-#include <ssdp.h>
-
-#define RESET_COLOR "\e[m"
-#define MAKE_RED "\e[31m"
-#define MAKE_GREEN "\e[32m"
-
-#define MENU_PRINT(str) printf("%s\n", str)
-
-#define __FUNC_ENTER__ printf("\n%s() entering...\n", __func__)
-#define __FUNC_EXIT__ printf("\n%s() leaving...\n", __func__)
-
-/*
-void __ssdp_available_cb (ssdp_service_state_e state,
-                                               const char *usn, const char *urls, void *user_data)
-{
-       printf(MAKE_GREEN"cb %s "RESET_COLOR"\n", __func__);
-       if (state == SSDP_SERIVCE_AVAILABLE) {
-               printf("usn : [%s]\n", usn);
-               printf("url : [%s]\n", urls);
-       }
-       else if (state == SSDP_SERIVCE_UNAVAILABLE) {
-               printf("service unavailable\n");
-       }
-}
-
-void __foreach_ssdp_found_cb (const char *target,
-               const char *usn, const char *urls, void *user_data)
-{
-       printf(MAKE_GREEN"\ncb %s "RESET_COLOR"\n", __func__);
-
-       if (target)
-               printf("target [%s]\n", target);
-       if (usn)
-               printf("usn [%s]\n", usn);
-       if (urls)
-               printf("urls [%s]\n", urls);
-
-       printf(MAKE_GREEN"Success %s "RESET_COLOR"\n", __func__);
-       __FUNC_EXIT__;
-       return;
-}
-*/
-
-int test_ssdp_initialize()
-{
-       __FUNC_ENTER__;
-       int rv = 0;
-
-       rv = ssdp_initialize();
-       if (rv == 0) {
-               printf(MAKE_GREEN"Success %s "RESET_COLOR"\n", __func__);
-               __FUNC_EXIT__;
-               return 1;
-       }
-
-       printf(MAKE_RED"FAILED %s"RESET_COLOR"\n", __func__);
-       __FUNC_EXIT__;
-       return -1;
-}
-
-int test_ssdp_deinitialize()
-{
-       __FUNC_ENTER__;
-       int rv = 0;
-
-       rv = ssdp_deinitialize();
-       if (rv == 0) {
-               printf(MAKE_GREEN"Success %s "RESET_COLOR"\n", __func__);
-               __FUNC_EXIT__;
-               return 1;
-       }
-
-       printf(MAKE_RED"FAILED %s"RESET_COLOR"\n", __func__);
-       __FUNC_EXIT__;
-       return -1;
-}
-
-int test_ssdp_create_service()
-{
-       __FUNC_ENTER__;
-       int rv = 0;
-       char *target = NULL;
-       ssdp_service_h serv_id;
-
-       printf("\nEnter target: (Example : upnp:rootdevice)");
-       if (scanf("%255ms", &target) < 1)
-               return -1;
-
-
-       rv = ssdp_create_local_service(target, &serv_id);
-       g_free(target);
-       printf("service handler %u\n", serv_id);
-
-       if (rv == 0) {
-               printf(MAKE_GREEN"Success %s "RESET_COLOR"\n", __func__);
-               return 1;
-       }
-
-       printf(MAKE_RED"FAILED %s"RESET_COLOR" Error: %d\n", __func__, rv);
-       __FUNC_EXIT__;
-       return -1;
-}
-
-int test_ssdp_destroy_service()
-{
-       __FUNC_ENTER__;
-       int rv = 0;
-       ssdp_service_h serv_id = 0;
-
-       printf("\nEnter service id: ");
-       if (scanf("%u", &serv_id) < 1)
-               return -1;
-
-       rv = ssdp_destroy_local_service(serv_id);
-       if (rv == 0) {
-               printf(MAKE_GREEN"Success %s "RESET_COLOR"\n", __func__);
-               __FUNC_EXIT__;
-               return 1;
-       }
-
-       printf(MAKE_RED"FAILED %s"RESET_COLOR"\n", __func__);
-       __FUNC_EXIT__;
-       return -1;
-}
-
-int test_ssdp_set_usn()
-{
-       __FUNC_ENTER__;
-       int rv = 0;
-       char *usn = NULL;
-       ssdp_service_h serv_id = 0;
-
-       printf("\nEnter service id: ");
-       if (scanf("%u", &serv_id) < 1)
-               return -1;
-
-       printf("\nEnter usn: (Example : uuid:1234abcd-12ab-12ab-12ab-1234567abc12::upnp:rootdevice)");
-       if (scanf("%255ms", &usn) < 1)
-               return -1;
-
-       rv = ssdp_service_set_usn(serv_id, usn);
-       g_free(usn);
-       if (rv == 0) {
-               printf(MAKE_GREEN"Success %s "RESET_COLOR"\n", __func__);
-               __FUNC_EXIT__;
-               return 1;
-       }
-
-       printf(MAKE_RED"FAILED %s"RESET_COLOR" Error: %d\n", __func__, rv);
-       __FUNC_EXIT__;
-       return -1;
-}
-
-int test_ssdp_set_url()
-{
-       __FUNC_ENTER__;
-       int rv = 0;
-       char *url = NULL;
-       ssdp_service_h serv_id = 0;
-
-       printf("\nEnter service id: ");
-       if (scanf("%u", &serv_id) < 1)
-               return -1;
-
-       printf("\nEnter url: (Example : http://192.168.0.110/)");
-       if (scanf("%255ms", &url) < 1)
-               return -1;
-
-       rv = ssdp_service_set_url(serv_id, url);
-       g_free(url);
-       if (rv == 0) {
-               printf(MAKE_GREEN"Success %s "RESET_COLOR"\n", __func__);
-               __FUNC_EXIT__;
-               return 1;
-       }
-
-       printf(MAKE_RED"FAILED %s"RESET_COLOR"\n", __func__);
-       __FUNC_EXIT__;
-       return -1;
-}
-
-int test_ssdp_get_target()
-{
-       __FUNC_ENTER__;
-       int rv = 0;
-       char *target = NULL;
-       ssdp_service_h serv_id = 0;
-
-       printf("\nEnter service id: ");
-       if (scanf("%u", &serv_id) < 1)
-               return -1;
-
-       rv = ssdp_service_get_target(serv_id, &target);
-       if (rv == 0) {
-               printf("target [%s]\n", target);
-               g_free(target);
-               printf(MAKE_GREEN"Success %s "RESET_COLOR"\n", __func__);
-               __FUNC_EXIT__;
-               return 1;
-       }
-
-       printf(MAKE_RED"FAILED %s"RESET_COLOR"\n", __func__);
-       __FUNC_EXIT__;
-       return -1;
-}
-
-int test_ssdp_get_usn()
-{
-       __FUNC_ENTER__;
-               int rv = 0;
-       char *usn = NULL;
-       ssdp_service_h serv_id = 0;
-
-       printf("\nEnter service id: ");
-       if (scanf("%u", &serv_id) < 1)
-               return -1;
-
-       rv = ssdp_service_get_usn(serv_id, &usn);
-       if (rv == 0) {
-               printf("usn [%s]\n", usn);
-               g_free(usn);
-               printf(MAKE_GREEN"Success %s "RESET_COLOR"\n", __func__);
-               return 1;
-       }
-
-       printf(MAKE_RED"FAILED %s"RESET_COLOR"\n", __func__);
-       return -1;
-}
-
-int test_ssdp_get_url()
-{
-       __FUNC_ENTER__;
-       int rv = 0;
-       char *url = NULL;
-       ssdp_service_h serv_id = 0;
-
-       printf("\nEnter service id: ");
-       if (scanf("%u", &serv_id) < 1)
-               return -1;
-
-       rv = ssdp_service_get_url(serv_id, &url);
-       if (rv == 0) {
-               printf("url [%s]\n", url);
-               g_free(url);
-               printf(MAKE_GREEN"Success %s "RESET_COLOR"\n", __func__);
-               __FUNC_EXIT__;
-               return 1;
-       }
-
-       printf(MAKE_RED"FAILED %s"RESET_COLOR"\n", __func__);
-       __FUNC_EXIT__;
-       return -1;
-}
-
-void test_registered_cb(ssdp_error_e result, ssdp_service_h ssdp_service, void *user_data)
-{
-       __FUNC_ENTER__;
-       printf("service handler: %u\n", ssdp_service);
-       printf("result: %d\n", result);
-       __FUNC_EXIT__;
-}
-
-void test_found_cb(ssdp_service_state_e state, ssdp_service_h ssdp_service, void *user_data)
-{
-       __FUNC_ENTER__;
-       char *usn;
-       char *url;
-       printf("service handler: %u\n", ssdp_service);
-       ssdp_service_get_usn(ssdp_service, &usn);
-       ssdp_service_get_url(ssdp_service, &url);
-       printf("state: %s\n", state == SSDP_SERVICE_STATE_AVAILABLE ? "AVAILABLE" : "UNAVAILABE");
-       printf("usn: %s\n", usn);
-       printf("url: %s\n", url);
-       g_free(usn);
-       g_free(url);
-       __FUNC_EXIT__;
-}
-
-int test_ssdp_register_service()
-{
-       __FUNC_ENTER__;
-       int rv = 0;
-       ssdp_service_h serv_id = 0;
-
-       printf("\nEnter service id: ");
-       if (scanf("%u", &serv_id) < 1)
-               return -1;
-
-       rv = ssdp_register_local_service(serv_id, &test_registered_cb, NULL);
-       if (rv == 0) {
-               printf(MAKE_GREEN"Success %s "RESET_COLOR"\n", __func__);
-               __FUNC_EXIT__;
-               return 1;
-       }
-
-       printf(MAKE_RED"FAILED %s"RESET_COLOR"\n", __func__);
-       __FUNC_EXIT__;
-       return -1;
-}
-
-int test_ssdp_deregister_service()
-{
-       __FUNC_ENTER__;
-       int rv = 0;
-       ssdp_service_h serv_id = 0;
-
-       printf("\nEnter service id: ");
-       if (scanf("%u", &serv_id) < 1)
-               return -1;
-
-       rv = ssdp_deregister_local_service(serv_id);
-if (rv == 0) {
-               printf(MAKE_GREEN"Success %s "RESET_COLOR"\n", __func__);
-               __FUNC_EXIT__;
-               return 1;
-       }
-
-       printf(MAKE_RED"FAILED %s"RESET_COLOR"\n", __func__);
-       __FUNC_EXIT__;
-       return -1;
-}
-
-int test_ssdp_service_browse()
-{
-       __FUNC_ENTER__;
-       int rv = 0;
-       ssdp_browser_h browser_id = 0;
-       char *target = NULL;
-
-       printf("\nEnter target: (Example : upnp:rootdevice)");
-       if (scanf("%255ms", &target) < 1)
-               return -1;
-
-       rv = ssdp_start_browsing_service(target, &browser_id, &test_found_cb, NULL);
-       g_free(target);
-       if (rv == 0) {
-               printf(MAKE_GREEN"Success %s "RESET_COLOR"\n", __func__);
-               __FUNC_EXIT__;
-               return 1;
-       }
-
-       printf(MAKE_RED"FAILED %s"RESET_COLOR"\n", __func__);
-       __FUNC_EXIT__;
-       return -1;
-}
-
-int test_ssdp_service_stop_browse()
-{
-       __FUNC_ENTER__;
-       int rv = 0;
-       ssdp_browser_h browser_id = 0;
-
-       printf("\nEnter browser id: ");
-       if (scanf("%u", &browser_id) < 1)
-               return -1;
-
-       rv = ssdp_stop_browsing_service(browser_id);
-       if (rv == 0) {
-               printf(MAKE_GREEN"Success %s "RESET_COLOR"\n", __func__);
-               __FUNC_EXIT__;
-               return 1;
-       }
-
-       printf(MAKE_RED"FAILED %s"RESET_COLOR"\n", __func__);
-       __FUNC_EXIT__;
-       return -1;
-}
-
-int test_ssdp_foreach_found()
-{
-       /*
-       __FUNC_ENTER__;
-       int rv = 0;
-       ssdp_service_h serv_id = 0;
-
-       printf("\nEnter service id: ");
-       if (scanf("%u", &serv_id) < 1)
-               return -1;
-
-       rv = ssdp_service_foreach_found(serv_id, __foreach_ssdp_found_cb, NULL);
-       if (rv == 0) {
-               printf(MAKE_GREEN"Success %s "RESET_COLOR"\n", __func__);
-               __FUNC_EXIT__;
-               return 1;
-       }
-
-       printf(MAKE_RED"FAILED %s"RESET_COLOR"\n", __func__);
-       __FUNC_EXIT__;
-       */
-       return -1;
-}
-
-static void MenuScreen()
-{
-       MENU_PRINT("___________________________________");
-       MENU_PRINT("|__________MENU-SCREEN ___________|");
-       MENU_PRINT("| 0 - EXIT                        |");
-       MENU_PRINT("| 1 - Initialize SSDP             |");
-       MENU_PRINT("| 2 - deinitialize SSDP           |");
-       MENU_PRINT("| 3 - Create SSDP Service         |");
-       MENU_PRINT("| 4 - Destroy SSDP Service        |");
-       MENU_PRINT("| 5 - Set SSDP USN                |");
-       MENU_PRINT("| 6 - Set SSDP Location           |");
-       MENU_PRINT("| 7 - Get SSDP Target             |");
-       MENU_PRINT("| 8 - Get SSDP USN                |");
-       MENU_PRINT("| 9 - Get SSDP Location           |");
-       MENU_PRINT("| a - Register SSDP Service       |");
-       MENU_PRINT("| b - Deregister SSDP Service     |");
-       MENU_PRINT("| c - Browse SSDP Service         |");
-       MENU_PRINT("| d - Stop Browsing SSDP          |");
-       MENU_PRINT("|_________________________________|");
-}
-
-
-int test_thread()
-{
-       int rv;
-       char a[10];
-
-       printf("Event received from stdin\n");
-
-       rv = read(0, a, 10);
-
-       if (rv <= 0 || a[0] == '0')
-               exit(1);
-
-       if (a[0] == '\n' || a[0] == '\r') {
-               printf("\n\n SSDP CAPI Test App\n\n");
-               printf("Options..\n");
-               MenuScreen();
-               printf("Press ENTER to show options menu.......\n");
-       }
-
-       switch (a[0]) {
-       case '1':
-               rv = test_ssdp_initialize();
-               break;
-       case '2':
-               rv = test_ssdp_deinitialize();
-               break;
-       case '3':
-               rv = test_ssdp_create_service();
-               break;
-       case '4':
-               rv = test_ssdp_destroy_service();
-               break;
-       case '5':
-               rv = test_ssdp_set_usn();
-               break;
-       case '6':
-               rv = test_ssdp_set_url();
-               break;
-       case '7':
-               rv = test_ssdp_get_target();
-               break;
-       case '8':
-               rv = test_ssdp_get_usn();
-               break;
-       case '9':
-               rv = test_ssdp_get_url();
-               break;
-       case 'a':
-               rv = test_ssdp_register_service();
-               break;
-       case 'b':
-               rv = test_ssdp_deregister_service();
-               break;
-       case 'c':
-               rv = test_ssdp_service_browse();
-               break;
-       case 'd':
-               rv = test_ssdp_service_stop_browse();
-               break;
-       default:
-               break;
-       }
-
-       if (rv == 1)
-               printf("\nOperation Succeeded!\n");
-       else
-               printf("\nOperation Failed!\n");
-
-       return TRUE;
-}
-
-/* test thread */
-
-int main(int argc, char *argv[])
-{
-       GMainLoop *main_loop = NULL;
-       int ret = -1;
-
-       /* Initialize required subsystems */
-#if !GLIB_CHECK_VERSION(2, 35, 0)
-       g_type_init();
-#endif
-
-       /* test thread */
-
-       GIOChannel *channel = g_io_channel_unix_new(0);
-       g_io_add_watch(channel, (G_IO_IN|G_IO_ERR|G_IO_HUP|G_IO_NVAL), test_thread, NULL);
-
-       printf("Test Thread Created...\n");
-
-       /* Crate the GLIB main loop */
-       main_loop = g_main_loop_new(NULL, FALSE);
-
-       /* Run the main loop */
-       g_main_loop_run(main_loop);
-
-       g_main_loop_unref(main_loop);
-
-       return ret;
-}
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
new file mode 100644 (file)
index 0000000..5566d98
--- /dev/null
@@ -0,0 +1,84 @@
+# Copyright (c) 2020 Samsung Electronics Co., Ltd All Rights Reserved
+#
+#    Licensed under the Apache License, Version 2.0 (the "License");
+#    you may not use this file except in compliance with the License.
+#    You may obtain a copy of the License at
+#
+#        http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS,
+#    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#    See the License for the specific language governing permissions and
+#    limitations under the License.
+#
+# @file        CMakeLists.txt
+#
+########################## search for packages ################################
+
+PKG_CHECK_MODULES(NSD_TESTS_DEPS REQUIRED ${TEST_DEPS})
+
+############################# compiler flags ##################################
+
+SET(EXTRA_FLAGS "-Wall -Werror")
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} ${CFLAGS} -fPIE")
+
+########################  directory configuration  ############################
+
+INCLUDE_DIRECTORIES(${NSD_TESTS_DEPS_INCLUDE_DIRS})
+LINK_DIRECTORIES(${NSD_TESTS_DEPS_LIBRARY_DIRS})
+
+INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/include)
+
+# Build
+FILE(GLOB NSD_TEST_SRCS *-test.c)
+FOREACH(SRC ${NSD_TEST_SRCS})
+    GET_FILENAME_COMPONENT(SRC_NAME ${SRC} NAME_WE)
+    MESSAGE(${SRC_NAME})
+    ADD_EXECUTABLE(${SRC_NAME} ${SRC})
+    TARGET_LINK_LIBRARIES(${SRC_NAME} ${TARGET_LIB_NSD_DNS_SD} ${TARGET_LIB_NSD_SSDP} ${TARGET_NSD_TESTS_REQ_PKGS_LIBRARIES})
+ENDFOREACH()
+
+#Install
+INSTALL(TARGETS dns-sd-test RUNTIME DESTINATION ${BIN_DIR})
+INSTALL(TARGETS ssdp-test RUNTIME DESTINATION ${BIN_DIR})
+
+SET(UNITTEST_NAME "tct-nsd-core")
+
+########################## search for packages ################################
+
+PKG_CHECK_MODULES(unittest_pkgs REQUIRED ${GTEST_DEPS})
+
+############################# compiler flags ##################################
+
+SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_FLAGS} -std=c++11")
+
+########################  directory configuration  ############################
+
+INCLUDE_DIRECTORIES(${unittest_pkgs_INCLUDE_DIRS})
+LINK_DIRECTORIES(${unittest_pkgs_LIBRARY_DIRS})
+
+INCLUDE_DIRECTORIES(
+    ${CMAKE_SOURCE_DIR}/include
+    ${CMAKE_CURRENT_SOURCE_DIR}/include
+)
+
+FILE(GLOB NSD_MOCK_SRCS mock/*.c)
+
+SET(TC_SOURCES
+    utc-nsd-ssdp-register.c
+    utc-nsd-ssdp-browse.c
+    utc-nsd-dnssd-register.c
+    utc-nsd-dnssd-browse.c
+)
+
+# Build
+ADD_EXECUTABLE(${UNITTEST_NAME} ${UNITTEST_NAME}.cpp ${TC_SOURCES} ${NSD_MOCK_SRCS})
+TARGET_LINK_LIBRARIES(${UNITTEST_NAME}
+    ${unittest_pkgs_LIBRARIES}
+    ${TARGET_LIB_NSD_DNS_SD}
+    ${TARGET_LIB_NSD_SSDP}
+    dl
+)
+
+INSTALL(TARGETS ${UNITTEST_NAME} RUNTIME DESTINATION ${BIN_DIR})
\ No newline at end of file
diff --git a/tests/dns-sd-test.c b/tests/dns-sd-test.c
new file mode 100644 (file)
index 0000000..7ddb54a
--- /dev/null
@@ -0,0 +1,655 @@
+/*
+* Copyright (c) 2012, 2013 Samsung Electronics Co., Ltd.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+#include <string.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <glib.h>
+#include <netdb.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <arpa/inet.h>
+
+#include "dns-sd.h"
+
+gboolean test_thread(GIOChannel *source, GIOCondition condition, gpointer data);
+
+static bool test_get_user_string(const char *msg, char *buf, int buf_size)
+{
+       if (msg == NULL || buf == NULL || buf_size < 2)
+               return false;
+
+       int i = 0, c;
+       printf("%s\n", msg);
+       memset(buf, 0, buf_size);
+       while (true) {
+               c = getchar();
+               if (i == 0 && c == '\n')
+                       continue;
+
+               if (c == '\n' || c == EOF)
+                       break;
+
+               buf[i++] = c;
+               if (i == buf_size-1)
+                       break;
+       }
+
+       buf[i] = '\0';
+       return true;
+}
+
+static bool test_get_user_bytes(const char *msg, char *buf, int buf_size)
+{
+       if (msg == NULL || buf == NULL || buf_size < 2)
+               return false;
+
+       int i = 0, c;
+       printf("%s\n", msg);
+       memset(buf, 0, buf_size);
+       while (true) {
+               c = getchar();
+               if (i == 0 && c == '\n')
+                       continue;
+
+               if (c == '\n' || c == EOF)
+                       break;
+
+               buf[i++] = c;
+               if (i == buf_size-1)
+                       break;
+       }
+
+       return true;
+}
+
+static const char *dnssd_error_to_string(dnssd_error_e error)
+{
+       switch (error) {
+       case DNSSD_ERROR_NONE:
+               return "DNSSD_ERROR_NONE";
+       case DNSSD_ERROR_OUT_OF_MEMORY:
+               return "DNSSD_ERROR_OUT_OF_MEMORY";
+       case DNSSD_ERROR_INVALID_PARAMETER:
+               return "DNSSD_ERROR_INVALID_PARAMETER";
+       case DNSSD_ERROR_NOT_SUPPORTED:
+               return "DNSSD_ERROR_NOT_SUPPORTED";
+       case DNSSD_ERROR_NOT_INITIALIZED:
+               return "DNSSD_ERROR_NOT_INITIALIZED";
+       case DNSSD_ERROR_ALREADY_REGISTERED:
+               return "DNSSD_ERROR_ALREADY_REGISTERED";
+       case DNSSD_ERROR_NAME_CONFLICT:
+               return "DNSSD_ERROR_NAME_CONFLICT";
+       case DNSSD_ERROR_SERVICE_NOT_RUNNING:
+               return "DNSSD_ERROR_SERVICE_NOT_RUNNING";
+       case DNSSD_ERROR_OPERATION_FAILED:
+               return "DNSSD_ERROR_OPERATION_FAILED";
+       default:
+               return "UNSUPPORTED_ERROR";
+       }
+}
+
+static void show_txt_record(unsigned short txt_len, const unsigned char *txt_record)
+{
+       const unsigned char *ptr = txt_record;
+       const unsigned char *max = txt_record + txt_len;
+       while (ptr < max) {
+               const unsigned char *const end = ptr + 1 + ptr[0];
+               if (end > max) {
+                       printf("<< invalid data >>");
+                       break;
+               }
+               if (++ptr < end)
+                       printf(" ");   /* As long as string is non-empty, begin with a space */
+               while (ptr < end) {
+                       if (strchr(" &;`'\"|*?~<>^()[]{}$", *ptr))
+                               printf("\\");
+                       if (*ptr == '\\')
+                               printf("\\\\\\\\");
+                       else if (*ptr >= ' ')
+                               printf("%c", *ptr);
+                       else
+                               printf("\\\\x%02X", *ptr);
+                       ptr++;
+               }
+       }
+       printf("\n");
+}
+
+int test_dnssd_initialize()
+{
+       int rv;
+       printf("Initialize DNS SD CAPI\n");
+
+       rv = dnssd_initialize();
+       if (rv != DNSSD_ERROR_NONE) {
+               printf("Failed to Initialize DNS SD CAPI [%s]\n",
+                               dnssd_error_to_string(rv));
+               return 0;
+       }
+       printf("Successfully Initialized DNS SD CAPI\n");
+       return 1;
+}
+
+int test_dnssd_deinitialize()
+{
+       int rv;
+       printf("De-Initialize DNS SD CAPI\n");
+
+       rv = dnssd_deinitialize();
+       if (rv != DNSSD_ERROR_NONE) {
+               printf("Failed to De-Initialize DNS SD CAPI [%s]\n",
+                               dnssd_error_to_string(rv));
+               return 0;
+       }
+       printf("Successfully De-Initialized DNS SD CAPI\n");
+       return 1;
+}
+
+int test_dnssd_create_local_service()
+{
+       int rv = -1;
+
+       dnssd_service_h service = 0;
+       char service_type[255];
+       printf("Create DNS Service\n");
+       test_get_user_string("Enter type:(Example : _http._tcp, "
+                       "_printer._tcp etc)", service_type, 255);
+       rv = dnssd_create_local_service(service_type, &service);
+       if (rv != DNSSD_ERROR_NONE) {
+               printf("Failed to create DNS SD Service, error [%s]\n",
+                               dnssd_error_to_string(rv));
+               return 0;
+       }
+
+       printf("Successfully created DNS SD Service[%u]\n", service);
+       return 1;
+}
+
+int test_dnssd_destroy_local_service()
+{
+       int rv = -1;
+       dnssd_service_h service = 0;
+       printf("Destroy DNS Service\n");
+       printf("Enter Local Service Handle:\n");
+       rv = scanf("%u", &service);
+       rv = dnssd_destroy_local_service(service);
+       if (rv != DNSSD_ERROR_NONE) {
+               printf("Failed to destroy DNS SD Service, error [%s]\n",
+                               dnssd_error_to_string(rv));
+               return 0;
+       }
+
+       printf("Successfully destroyed DNS SD Service\n");
+       return 1;
+}
+
+static void dnssd_register_reply(dnssd_error_e result,
+               dnssd_service_h local_service, void *user_data)
+{
+       printf("Register Callback\n");
+       printf("Handler  : %u\n", local_service);
+       printf("State : ");
+       switch (result) {
+       case DNSSD_ERROR_NONE:
+               printf("DNSSD_REGISTERED\n");
+               break;
+       case DNSSD_ERROR_ALREADY_REGISTERED:
+               printf("DNSSD_ERROR_ALREADY_REGISTERED\n");
+               break;
+       case DNSSD_ERROR_NAME_CONFLICT:
+               printf("DNSSD_ERROR_NAME_CONFLICT\n");
+               break;
+       default:
+               printf("Unknown State\n");
+       }
+}
+
+int test_dnssd_register_local_service()
+{
+       dnssd_service_h service = 0;
+       int rv;
+       char service_name[255] = {0,};
+       int port;
+       char buffer[255];
+       char key[10];
+       unsigned short buf_len;
+
+       printf("Register DNS Service\n");
+       printf("Enter Local Service Handler:\n");
+       rv = scanf("%u", &service);
+
+       test_get_user_string("Enter Service Name:", service_name, 255);
+       rv = dnssd_service_set_name(service, service_name);
+       if (rv != DNSSD_ERROR_NONE) {
+               printf("Failed to set name [%s]\n", dnssd_error_to_string(rv));
+               return 0;
+       }
+
+       printf("Enter port:\n");
+       rv = scanf("%d", &port);
+       rv = dnssd_service_set_port(service, port);
+       if (rv != DNSSD_ERROR_NONE) {
+               printf("Failed to set port [%s]\n", dnssd_error_to_string(rv));
+               return 0;
+       }
+
+       printf("Enter length of TXT Record:\n");
+       rv = scanf("%hu", &buf_len);
+
+       test_get_user_bytes("Enter record data:", buffer, 255);
+       test_get_user_string("Enter TXT Record key:", key, 10);
+
+       rv = dnssd_service_add_txt_record(service, key, buf_len, buffer);
+       if (rv != DNSSD_ERROR_NONE) {
+               printf("Failed to set txt record value\n");
+               return 0;
+       }
+
+       rv = dnssd_register_local_service(service, dnssd_register_reply, NULL);
+       if (rv != DNSSD_ERROR_NONE) {
+               printf("Failed to register for dns service, error [%s]",
+                               dnssd_error_to_string(rv));
+               return 0;
+       }
+       printf("Succeeded to register for dns service");
+       return 1;
+}
+
+int test_dnssd_deregister_local_service()
+{
+       dnssd_service_h service = 0;
+       int rv;
+
+       printf("De-register DNS Service\n");
+       printf("Enter Local Service Handler:\n");
+       rv = scanf("%u", &service);
+
+       rv = dnssd_deregister_local_service(service);
+       if (rv != DNSSD_ERROR_NONE) {
+               printf("Failed to deregister dns service, error [%s]\n",
+                               dnssd_error_to_string(rv));
+               return 0;
+       }
+       printf("Successfully deregistered dns service\n");
+       return 1;
+}
+
+int test_dnssd_service_get_type()
+{
+       int rv = -1;
+       dnssd_service_h service;
+       char * type = NULL;
+       printf("Get DNS-SD service type\n");
+       printf("Enter Service Handler:\n");
+       rv = scanf("%u", &service);
+       rv = dnssd_service_get_type(service, &type);
+       if (rv != DNSSD_ERROR_NONE) {
+               printf("Failed to get DNS SD Service type, error [%s]\n",
+                               dnssd_error_to_string(rv));
+               return 0;
+       }
+
+       if (type)
+               printf("Service type [%s]\n", type);
+       g_free(type);
+       printf("Successfully get DNS SD Service type\n");
+       return 1;
+}
+
+int test_dnssd_service_get_name()
+{
+       int rv = -1;
+       dnssd_service_h service;
+       char * name = NULL;
+       printf("Get DNS-SD Service Name\n");
+       printf("Enter Service Handler:\n");
+       rv = scanf("%u", &service);
+       rv = dnssd_service_get_name(service, &name);
+       if (rv != DNSSD_ERROR_NONE) {
+               printf("Failed to get DNS SD Service name, error [%s]\n",
+                               dnssd_error_to_string(rv));
+               return 0;
+       }
+
+       if (name)
+               printf("Service name [%s]\n", name);
+       g_free(name);
+       printf("Successfully get DNS SD Service name\n");
+       return 1;
+}
+
+int test_dnssd_service_get_ip()
+{
+       int rv = -1;
+       dnssd_service_h service;
+       char * ip_v4_address = NULL;
+       char * ip_v6_address = NULL;
+       printf("Get DNS-SD Service IP\n");
+       printf("Enter Service Handler:\n");
+       rv = scanf("%u", &service);
+       rv = dnssd_service_get_ip(service, &ip_v4_address, &ip_v6_address);
+       if (rv != DNSSD_ERROR_NONE) {
+               printf("Failed to get DNS SD Service IP, error [%s]\n",
+                               dnssd_error_to_string(rv));
+               return 0;
+       }
+
+       printf("Service IP v4 [%s]\n", ip_v4_address);
+       printf("Service IP v6 [%s]\n", ip_v6_address);
+       g_free(ip_v4_address);
+       g_free(ip_v6_address);
+       printf("Successfully get DNS SD Service IP\n");
+       return 1;
+}
+
+int test_dnssd_service_get_port()
+{
+       int rv = -1;
+       dnssd_service_h service;
+       int port = 0;
+       printf("Get DNS-SD Service Port\n");
+       printf("Enter Service Handler:\n");
+       rv = scanf("%u", &service);
+       rv = dnssd_service_get_port(service, &port);
+       if (rv != DNSSD_ERROR_NONE) {
+               printf("Failed to get DNS SD Service port, error [%s]\n",
+                               dnssd_error_to_string(rv));
+               return 0;
+       }
+
+       printf("Service port [%d]\n", port);
+       printf("Successfully get DNS SD Service port\n");
+       return 1;
+}
+
+int test_dnssd_service_set_record()
+{
+       dnssd_service_h service;
+       int rv;
+       unsigned short type, length, buf_len;
+       void *data;
+       char buffer[255];
+       char key[10];
+       printf("Add record to DNS SD Service\n");
+       printf("Enter Local Service Handle:\n");
+       rv = scanf("%u", &service);
+
+       printf("Enter type of Resource Record:\n");
+       rv = scanf("%hu", &type);
+
+       printf("Enter length of Resource Record:\n");
+       rv = scanf("%hu", &buf_len);
+
+       test_get_user_bytes("Enter record data:", buffer, 255);
+       test_get_user_string("Enter TXT Record key:", key, 10);
+
+       rv = dnssd_service_add_txt_record(service, key, buf_len, buffer);
+       if (rv != DNSSD_ERROR_NONE) {
+               printf("Failed to set txt record value\n");
+               return 0;
+       }
+
+       rv = dnssd_service_get_all_txt_record(service, &length, &data);
+       if (rv != DNSSD_ERROR_NONE) {
+               printf("Failed to get txt record value\n");
+               return 0;
+       }
+
+       rv = dnssd_service_set_record(service, type, length, data);
+       if (rv != DNSSD_ERROR_NONE) {
+               printf("Failed to add record\n");
+               g_free(data);
+               return 0;
+       }
+
+       printf("Successfully added record\n");
+
+       return 1;
+}
+
+int test_dnssd_service_unset_record()
+{
+       dnssd_service_h service;
+       int rv;
+       unsigned short type;
+       printf("Remove record from DNS SD Service\n");
+       printf("Enter Local Service Handle:\n");
+       rv = scanf("%u", &service);
+
+       printf("Enter type of Resource Record:\n");
+       rv = scanf("%hu", &type);
+
+       rv = dnssd_service_unset_record(service, type);
+       if (rv != DNSSD_ERROR_NONE) {
+               printf("Failed to remove record\n");
+               return 0;
+       }
+
+       printf("Successfully removed record\n");
+       return 1;
+}
+
+static void dnssd_browse_reply(dnssd_service_state_e service_state,
+               dnssd_service_h remote_service, void *user_data)
+{
+       int rv = 0;
+       printf("Browse Service Callback\n");
+       printf("Handler       : %u\n", remote_service);
+       printf("State         : ");
+       switch (service_state) {
+       case DNSSD_SERVICE_STATE_AVAILABLE:
+               printf("Available\n");
+               break;
+       case DNSSD_SERVICE_STATE_UNAVAILABLE:
+               printf("Un-Available\n");
+               break;
+       case DNSSD_SERVICE_STATE_NAME_LOOKUP_FAILED:
+               printf("Lookup failure for service name\n");
+               break;
+       case DNSSD_SERVICE_STATE_HOST_NAME_LOOKUP_FAILED:
+               printf("Lookup failure for host name and port number\n");
+               break;
+       case DNSSD_SERVICE_STATE_ADDRESS_LOOKUP_FAILED:
+               printf("Lookup failure for IP address\n");
+               break;
+       default:
+               printf("Unknown Browse State\n");
+               break;
+       }
+
+       char *name = NULL;
+       char *type = NULL;
+
+       rv = dnssd_service_get_name(remote_service, &name);
+       if (rv == DNSSD_ERROR_NONE && name != NULL)
+               printf("Service Name  : %s\n", name);
+
+       rv = dnssd_service_get_type(remote_service, &type);
+       if (rv == DNSSD_ERROR_NONE && type != NULL)
+               printf("Service Type  : %s\n", type);
+
+       if (service_state == DNSSD_SERVICE_STATE_AVAILABLE) {
+               char *ip_v4_address = NULL;
+               char *ip_v6_address = NULL;
+               unsigned char *txt_record = NULL;
+               unsigned short txt_len = 0;
+               int port = 0;
+
+               rv = dnssd_service_get_ip(remote_service, &ip_v4_address, &ip_v6_address);
+               if (rv  == DNSSD_ERROR_NONE) {
+                       if (ip_v4_address)
+                       printf("IPv4 Address  : %s\n", ip_v4_address);
+                       if (ip_v6_address)
+                       printf("IPv6 Address  : %s\n", ip_v6_address);
+               }
+
+               rv = dnssd_service_get_port(remote_service, &port);
+               printf("Port          : %d\n", port);
+
+               printf("TXT Record    : ");
+               dnssd_service_get_all_txt_record(remote_service, &txt_len,
+                               (void *)&txt_record);
+               show_txt_record(txt_len, txt_record);
+
+               g_free(ip_v4_address);
+               g_free(ip_v6_address);
+               g_free(txt_record);
+       }
+       g_free(name);
+       g_free(type);
+}
+
+int test_dnssd_start_browsing_service()
+{
+       dnssd_service_h service = 0;
+       char service_type[255];
+       int rv;
+
+       printf("Browse DNS Service\n");
+       test_get_user_string("Enter type:(Example : _http._tcp, "
+                       "_printer._tcp etc)", service_type, 255);
+
+       rv = dnssd_start_browsing_service(service_type, &service,
+                       dnssd_browse_reply, NULL);
+       if (rv != DNSSD_ERROR_NONE) {
+               printf("Failed to browse for dns service, error %s",
+                               dnssd_error_to_string(rv));
+               return 0;
+       }
+
+       printf("Succeeded to browse for dns service[%u]\n", service);
+       return 1;
+}
+
+int test_dnssd_stop_browsing_service()
+{
+       dnssd_service_h service;
+       int rv;
+       printf("Enter Browse Service Handle:\n");
+       rv = scanf("%u", &service);
+
+       rv = dnssd_stop_browsing_service(service);
+       if (rv != DNSSD_ERROR_NONE) {
+               printf("Failed to stop browse dns service %s\n",
+                               dnssd_error_to_string(rv));
+               return 0;
+       }
+       printf("Successfully stopped browsing dns service\n");
+       return 1;
+}
+
+static void MenuScreen()
+{
+       printf("_____________________________________\n");
+       printf("|_____________MENU-SCREEN___________|\n");
+       printf("| 0 - EXIT                          |\n");
+       printf("| 1 - Initialize DNS SD             |\n");
+       printf("| 2 - De-Initialize DNS SD          |\n");
+       printf("| 3 - DNS SD Create Service         |\n");
+       printf("| 4 - DNS SD Destroy Service        |\n");
+       printf("| 5 - Register DNS Service          |\n");
+       printf("| 6 - De-Register DNS Service       |\n");
+       printf("| 7 - Add Record to DNS Service     |\n");
+       printf("| 8 - Remove Registered Record      |\n");
+       printf("| 9 - Browse DNS Service            |\n");
+       printf("| a - Stop Browse DNS Service       |\n");
+       printf("|___________________________________|\n");
+}
+
+int test_thread(GIOChannel *source, GIOCondition condition, gpointer data)
+{
+       int rv;
+       char a[10];
+       GMainLoop *mainloop = data;
+
+       printf("Event received from stdin\n");
+
+       rv = read(0, a, 10);
+       if (rv <= 0 || a[0] == '0') {
+               printf("Terminating  Test Application");
+               g_main_loop_quit(mainloop);
+               rv = 1;
+       }
+
+       if (a[0] == '\n' || a[0] == '\r') {
+               printf("\n\n mDNSResponder Test App\n\n");
+               printf("Options..\n");
+               MenuScreen();
+               printf("Press ENTER to show options menu.......\n");
+       }
+
+       switch (a[0]) {
+       case '1':
+               rv = test_dnssd_initialize();
+               break;
+       case '2':
+               rv = test_dnssd_deinitialize();
+               break;
+       case '3':
+               rv = test_dnssd_create_local_service();
+               break;
+       case '4':
+               rv = test_dnssd_destroy_local_service();
+               break;
+       case '5':
+               rv = test_dnssd_register_local_service();
+               break;
+       case '6':
+               rv = test_dnssd_deregister_local_service();
+               break;
+       case '7':
+               rv = test_dnssd_service_set_record();
+               break;
+       case '8':
+               rv = test_dnssd_service_unset_record();
+               break;
+       case '9':
+               rv = test_dnssd_start_browsing_service();
+               break;
+       case 'a':
+               rv = test_dnssd_stop_browsing_service();
+               break;
+       }
+
+       if (rv == 1)
+               printf("\nOperation Succeeded!\n");
+       else
+               printf("\nOperation Failed!\n");
+
+       return TRUE;
+
+}
+
+int main(int argc, char **argv)
+{
+       GMainLoop *mainloop;
+       mainloop = g_main_loop_new(NULL, FALSE);
+
+       GIOChannel *channel = g_io_channel_unix_new(0);
+       g_io_add_watch(channel, (G_IO_IN|G_IO_ERR|G_IO_HUP|G_IO_NVAL),
+                       test_thread, mainloop);
+
+       printf("Test Thread created...\n");
+
+       g_main_loop_run(mainloop);
+
+       printf("Test Application Terminated\n");
+       g_main_loop_unref(mainloop);
+
+       return 0;
+}
diff --git a/tests/include/assert_local.h b/tests/include/assert_local.h
new file mode 100755 (executable)
index 0000000..7c88a02
--- /dev/null
@@ -0,0 +1,118 @@
+//
+// Copyright (c) 2020 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Apache License, Version 2.0 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+#ifndef _ASSERT_H_
+#define _ASSERT_H_
+#include <stdio.h>
+#include <stdlib.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define assert(exp) \
+    do { \
+        if (!(exp)) { \
+            fprintf(stderr, \
+                "\n[TCT][%s][Line : %d] Assert Fail; Following expression is not true: %s\n", \
+                __FILE__, __LINE__, #exp); \
+            return 1; \
+        } \
+    } while (0)
+
+#define assert_eq(var, ref) \
+    do { \
+        if (var != ref) { \
+            fprintf(stderr, \
+                "\n[TCT][%s][Line : %d] Assert fail; Values (%s == 0x%x) and (%s == 0x%x) are not equal\n", \
+                __FILE__, __LINE__, #var, (int)var, #ref, (int)ref); \
+            return 1; \
+        } \
+    } while (0)
+
+#define assert_eq_no_return(var, ref) \
+    do { \
+        if (var != ref) { \
+            fprintf(stderr, \
+                "\n[TCT][%s][Line : %d] Assert fail; Values (%s == 0x%x) and (%s == 0x%x) are not equal\n", \
+                __FILE__, __LINE__, #var, (int)var, #ref, (int)ref); \
+            return ; \
+        } \
+    } while (0)
+
+#define assert_neq_no_return(var, ref) \
+    do { \
+        if (var == ref) { \
+            fprintf(stderr, \
+                "\n[TCT][%s][Line : %d] Assert fail; Values (%s == 0x%x) and (%s == 0x%x) are equal\n", \
+                __FILE__, __LINE__,  #var, (int)var, #ref, (int)ref); \
+            return ; \
+        } \
+    } while (0)
+
+#define assert_neq(var, ref) \
+    do { \
+        if (var == ref) { \
+            fprintf(stderr, \
+                "\n[TCT][%s][Line : %d] Assert fail; Values (%s == 0x%x) and (%s == 0x%x) are equal\n", \
+                __FILE__, __LINE__,  #var, (int)var, #ref, (int)ref); \
+            return 1; \
+        } \
+    } while (0)
+
+#define assert_gt(var, ref) \
+    do { \
+        if (var <= ref) { \
+            fprintf(stderr, \
+                "\n[TCT][%s][Line : %d] Assert fail; Values (%s == 0x%x) is not greater than (%s == 0x%x)\n", \
+            __FILE__, __LINE__,  #var, (int)var, #ref, (int)ref); \
+            return 1; \
+        } \
+    } while (0)
+
+#define assert_geq(var, ref) \
+    do { \
+        if (var < ref) { \
+            fprintf(stderr, \
+                "\n[TCT][%s][Line : %d] Assert fail; Values (%s == 0x%x) is not greater than or equal to (%s == 0x%x)\n", \
+                __FILE__, __LINE__,  #var, (int)var, #ref, (int)ref); \
+            return 1; \
+        } \
+    } while (0)
+
+#define assert_lt(var, ref) \
+    do { \
+        if (var >= ref) { \
+            fprintf(stderr, \
+                "\n[TCT][%s][Line : %d] Assert fail; Values (%s == 0x%x) is not lower than (%s == 0x%x)\n", \
+                __FILE__, __LINE__,  #var, (int)var, #ref, (int)ref); \
+            return 1; \
+        } \
+    } while (0)
+
+#define assert_leq(var, ref) \
+    do { \
+        if (var > ref) { \
+            fprintf(stderr, \
+                "\n[TCT][%s][Line : %d] Assert fail; Values (%s == 0x%x) is not lower than or equal to (%s == 0x%x)\n", \
+            __FILE__, __LINE__,  #var, (int)var, #ref, (int)ref); \
+            return 1; \
+        } \
+    } while (0)
+
+#ifdef __cplusplus
+}
+#endif
+#endif //  _ASSERT_H_
diff --git a/tests/include/nsd-mock-switch.h b/tests/include/nsd-mock-switch.h
new file mode 100644 (file)
index 0000000..1a47fbf
--- /dev/null
@@ -0,0 +1,29 @@
+//
+// Copyright (c) 2020 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Apache License, Version 2.0 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+#ifndef _NSD_MOCK_SWTICH_H_
+#define _NSD_MOCK_SWTICH_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+void nsd_mock_dnssd_register_set_g_dbus_get_sync_failure(gboolean failure);
+gboolean nsd_mock_dnssd_register_get_g_dbus_get_sync_failure(void);
+void nsd_mock_dnssd_register_set_g_dbus_connection_call_sync_failure(gboolean failure);
+gboolean nsd_mock_dnssd_register_get_g_dbus_connection_call_sync_failure(void);
+#ifdef __cplusplus
+}
+#endif
+#endif //  _ASSERT_H_
diff --git a/tests/include/tct_common.h b/tests/include/tct_common.h
new file mode 100755 (executable)
index 0000000..5617478
--- /dev/null
@@ -0,0 +1,216 @@
+//
+// Copyright (c) 2020 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Apache License, Version 2.0 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+#ifndef _TCT_COMMON_H_
+#define _TCT_COMMON_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "assert_local.h"
+
+#include <malloc.h>
+#include <stdbool.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <string.h>
+#include <sys/stat.h>
+
+#define CONFIG_LINE_LEN_MAX                    2048
+#define CONFIG_VALUE_LEN_MAX           1024
+
+#define UTC_LOG "utc.log"
+#define ERR_UTC_LOG "utc_error.log"
+#define TC_RESULT "tc_result.log"
+
+FILE *g_fpLog;
+FILE *g_fpLogDump;
+int g_Serr;
+
+int old_Serr;
+
+#define FPRINTF(...) {\
+       g_fpLog = fopen(ERR_LOG, "a");\
+       fprintf(g_fpLog, __VA_ARGS__);\
+       fclose(g_fpLog);\
+}
+
+#define DUMP_UTC_ERRLOG() {\
+       g_Serr = dup(fileno(stderr));\
+       g_fpLogDump = freopen(ERR_UTC_LOG, "w", stderr);\
+       fflush(stderr);\
+}
+
+#define CLOSE_UTC_ERRLOG() {\
+       if(g_fpLogDump) \
+       {\
+               if (g_Serr != -1)\
+               {\
+                       old_Serr = fileno(stderr);\
+                       if(old_Serr != -1)\
+                       {\
+                               dup2(g_Serr, old_Serr);\
+                       }\
+                       close(g_Serr);\
+               }\
+               fclose(g_fpLogDump);\
+       }\
+}
+
+#define PRINT_TC_RESULT(...) {\
+       g_fpLog = fopen(TC_RESULT, "w");\
+       fprintf(g_fpLog, __VA_ARGS__);\
+       fclose(g_fpLog);\
+}
+
+
+#define FREE_MEMORY_TC(buffer) {\
+       if ( buffer != NULL )\
+{\
+       free(buffer);\
+       buffer = NULL;\
+}\
+}
+
+
+#define IS_FEATURE_SUPPORTED(feature_name, featureFlag, ModuleName)\
+{\
+       if ( !(TCTCheckSystemInfoFeatureSupported(feature_name, ModuleName)) )\
+{\
+       featureFlag = false;\
+}\
+       else\
+{\
+       featureFlag = true;\
+}\
+}
+
+#define PRINT_RESULT(eCompare, eRetVal, API, Error) {\
+       if ( eRetVal == eCompare )\
+{\
+       if ( DEBUG )\
+{\
+       FPRINTF("[Line : %d][%s] %s passed\\n", __LINE__, API_NAMESPACE, API);\
+}\
+}\
+       else \
+{\
+       FPRINTF("[Line : %d][%s] %s failed, error returned = %s [%d]\\n", __LINE__, API_NAMESPACE, API, Error, eRetVal);\
+       return 1;\
+}\
+}
+
+#define PRINT_RESULT_NORETURN(eCompare, eRetVal, API, Error) {\
+       if ( eRetVal == eCompare )\
+{\
+       if ( DEBUG )\
+{\
+       FPRINTF("[Line : %d][%s] %s passed\\n", __LINE__, API_NAMESPACE, API);\
+}\
+}\
+       else \
+{\
+       FPRINTF("[Line : %d][%s] %s failed, error returned = %s [%d]\\n", __LINE__, API_NAMESPACE, API, Error, eRetVal);\
+}\
+}
+
+#define PRINT_RESULT_CLEANUP(eCompare, eRetVal, API, Error, FreeResource) {\
+       if ( eRetVal == eCompare )\
+{\
+       if ( DEBUG )\
+{\
+       FPRINTF("[Line : %d][%s] %s passed\\n", __LINE__, API_NAMESPACE, API);\
+}\
+}\
+else \
+{\
+       FPRINTF("[Line : %d][%s] %s failed, error returned = %s [%d]\\n", __LINE__, API_NAMESPACE, API, Error, eRetVal);\
+       FreeResource;\
+       return 1;\
+}\
+}
+
+#define CHECK_VALUE_STRING(StringVariable, API) {\
+       if ( StringVariable == NULL )\
+{\
+       FPRINTF("[Line : %d][%s] %s failed, error returned = value returned is NULL\\n", __LINE__, API_NAMESPACE, API);\
+       return 1;\
+}\
+       else if ( DEBUG )\
+{\
+       FPRINTF("[Line : %d][%s] value returned = %s\\n", __LINE__, API_NAMESPACE, StringVariable);\
+}\
+       free(StringVariable);\
+       StringVariable = NULL;\
+}
+
+#define CHECK_VALUE_INT(Variable, API) {\
+       if ( Variable == 0 )\
+{\
+       FPRINTF("[Line : %d][%s] %s failed, error returned = value returned is Zero\\n", __LINE__, API_NAMESPACE, API);\
+       return 1;\
+}\
+       else if ( DEBUG )\
+{\
+       FPRINTF("[Line : %d][%s] value returned = %d\\n", __LINE__, API_NAMESPACE, Variable);\
+}\
+}
+
+#define CHECK_HANDLE(Handle, API) {\
+       if ( Handle == NULL )\
+{\
+       FPRINTF("[Line : %d][%s] %s failed, error returned = Handle returned is NULL\\n", __LINE__, API_NAMESPACE, API);\
+       return 1;\
+}\
+}
+
+#define FREE_MEMORY(buffer) {\
+       if ( buffer != NULL )\
+{\
+       free(buffer);\
+       buffer = NULL;\
+}\
+}
+
+bool TCTCheckSystemInfoFeatureSupported(char* pszKey, char* pszModuleName){
+    return false;
+}
+char* TCTSystemInfoGetError(int nRet){
+    return NULL;
+}
+bool GetValueFromConfigFile(char* pstrKeyString, char* pstrValue, char* pstrModule){
+    return false;
+}
+bool GetValueForTCTSetting(char* pstrKeyString, char* pstrValue, char* pstrModule){
+    return false;
+}
+
+#define dlog_print( type, tag, ...) do{ \
+    fprintf(stdout,  ##__VA_ARGS__ ); \
+    fprintf(stdout,  "\n" ); \
+} while(0)
+
+#define PRINT_UTC_LOG(...) do{ \
+    fprintf(stdout,  ##__VA_ARGS__ ); \
+    fprintf(stdout,  "\n" ); \
+} while(0)
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // _TCT_COMMON_H_
diff --git a/tests/include/testcase.h b/tests/include/testcase.h
new file mode 100755 (executable)
index 0000000..febac28
--- /dev/null
@@ -0,0 +1,40 @@
+//
+// Copyright (c) 2020 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Apache License, Version 2.0 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+#ifndef _TESTCASE_H_
+#define _TESTCASE_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* pointer to startup/cleanup functions */
+typedef void (*void_fun_ptr)(void);
+
+/* pointer to testcase functions */
+typedef int (*tc_fun_ptr)(void);
+
+/* struct describing specific testcase */
+typedef struct testcase_s {
+    const char* name;
+    tc_fun_ptr function;
+    void_fun_ptr startup;
+    void_fun_ptr cleanup;
+} testcase;
+
+#ifdef __cplusplus
+}
+#endif
+#endif // _TESTCASE_H_
diff --git a/tests/mock/nsd-mock-cynara.c b/tests/mock/nsd-mock-cynara.c
new file mode 100644 (file)
index 0000000..b7094b0
--- /dev/null
@@ -0,0 +1,28 @@
+//
+// Copyright (c) 2020 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Apache License, Version 2.0 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#include <cynara-client.h>
+
+#ifndef API
+#define API __attribute__ ((visibility("default")))
+#endif
+
+API int cynara_check(cynara *p_cynara,
+               const char *client, const char *client_session,
+               const char *user, const char *privilege)
+{
+       return CYNARA_API_ACCESS_ALLOWED;
+}
diff --git a/tests/mock/nsd-mock-dns-sd.c b/tests/mock/nsd-mock-dns-sd.c
new file mode 100644 (file)
index 0000000..03907bf
--- /dev/null
@@ -0,0 +1,577 @@
+//
+// Copyright (c) 2020 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Apache License, Version 2.0 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <netinet/ip.h>
+#include <dns_sd.h>
+
+#ifndef API
+#define API __attribute__ ((visibility("default")))
+#endif
+
+/* dnssd_sock_t, ipc_msg_hdr and request_op_t are from dnssd_ipc.h */
+
+#   define dnssd_InvalidSocket  -1
+#   define dnssd_SocketValid(s) ((s) >= 0)
+
+typedef int dnssd_sock_t;
+
+typedef struct
+{
+    uint32_t op;        // request_op_t or reply_op_t
+} ipc_msg_hdr;
+
+typedef enum
+{
+    request_op_none = 0,    // No request yet received on this connection
+    connection_request = 1, // connected socket via DNSServiceConnect()
+    reg_record_request,     // reg/remove record only valid for connected sockets
+    remove_record_request,
+    enumeration_request,
+    reg_service_request,
+    browse_request,
+    resolve_request,
+    query_request,
+    reconfirm_record_request,
+    add_record_request,
+    update_record_request,
+    setdomain_request,      // Up to here is in Tiger and B4W 1.0.3
+    getproperty_request,    // New in B4W 1.0.4
+    port_mapping_request,   // New in Leopard and B4W 2.0
+    addrinfo_request,
+    send_bpf,               // New in SL
+    getpid_request,
+    release_request,
+    connection_delegate_request,
+
+    cancel_request = 63
+} request_op_t;
+
+typedef struct _DNSServiceRef_t DNSServiceOp;
+typedef struct _DNSRecordRef_t DNSRecord;
+
+typedef struct
+{
+    ipc_msg_hdr ipc_hdr;
+    DNSServiceFlags cb_flags;
+    uint32_t cb_interface;
+    DNSServiceErrorType cb_err;
+} CallbackHeader;
+
+// client stub callback to process message from server and deliver results to client application
+typedef void (*ProcessReplyFn)(DNSServiceOp *const sdr, const CallbackHeader *const cbh, const char *msg, const char *const end);
+
+#define ValidatorBits 0x12345678
+#define DNSServiceRefValid(X) (dnssd_SocketValid((X)->sockfd) && (((X)->sockfd ^ (X)->validator) == ValidatorBits))
+
+/* The virtual #_DNSServiceRef_t structure for unittest */
+struct _DNSServiceRef_t
+{
+    dnssd_sock_t sockfd;                // Connected socket between client and daemon
+    dnssd_sock_t validator;             // Used to detect memory corruption, double disposals, etc.
+    uint32_t op;                        // request_op_t or reply_op_t
+    ProcessReplyFn ProcessReply;        // Function pointer to the code to handle received messages
+    void             *AppCallback;      // Client callback function and context
+    void             *AppContext;
+    DNSRecord        *rec;
+};
+
+/* The virtual #_DNSRecordRef_t structure for unittest */
+struct _DNSRecordRef_t
+{
+    DNSRecord       *recnext;
+       DNSServiceOp *sdr;
+};
+
+static ipc_msg_hdr *create_hdr(uint32_t op, size_t *len, char **data_start, int SeparateReturnSocket, DNSServiceOp *ref)
+{
+    char *msg = NULL;
+    ipc_msg_hdr *hdr;
+
+    *len += sizeof(ipc_msg_hdr);
+
+    // Write message to buffer
+    msg = malloc(*len);
+
+    memset(msg, 0, *len);
+    hdr = (ipc_msg_hdr *)msg;
+    hdr->op = op;
+    *data_start = msg + sizeof(ipc_msg_hdr);
+
+    return hdr;
+}
+
+static void FreeDNSRecords(DNSServiceOp *sdRef)
+{
+    DNSRecord *rec = sdRef->rec;
+    while (rec)
+    {
+        DNSRecord *next = rec->recnext;
+        free(rec);
+        rec = next;
+    }
+}
+
+static void FreeDNSServiceOp(DNSServiceOp *x)
+{
+    // We don't use our DNSServiceRefValid macro here because if we're cleaning up after a socket() call failed
+    // then sockfd could legitimately contain a failing value (e.g. dnssd_InvalidSocket)
+       x->sockfd       = dnssd_InvalidSocket;
+       x->validator    = 0xDDDDDDDD;
+       x->op           = request_op_none;
+       x->AppCallback  = NULL;
+       FreeDNSRecords(x);
+       free(x);
+}
+
+#define MOCK_DNSSD_SOCK_FD 5
+
+// Return a connected service ref (deallocate with DNSServiceRefDeallocate)
+static DNSServiceErrorType ConnectToServer(DNSServiceRef *ref, DNSServiceFlags flags, uint32_t op, ProcessReplyFn ProcessReply, void *AppCallback, void *AppContext)
+{
+    DNSServiceOp *sdr;
+
+    if (!ref)
+        return kDNSServiceErr_BadParam;
+
+    sdr = malloc(sizeof(DNSServiceOp));
+    sdr->sockfd        = dnssd_InvalidSocket;
+    sdr->validator     = sdr->sockfd ^ ValidatorBits;
+    sdr->op            = op;
+    sdr->AppCallback   = AppCallback;
+    sdr->AppContext    = AppContext;
+    sdr->rec           = NULL;
+
+       *ref = NULL;
+       sdr->sockfd    = MOCK_DNSSD_SOCK_FD;
+       sdr->validator = sdr->sockfd ^ ValidatorBits;
+
+    *ref = sdr;
+    return kDNSServiceErr_NoError;
+}
+
+#define TIZEN_DNSSD_MOCK_SERVICE "TizenDnssdMock"
+#define TIZEN_DNSSD_MOCK_TYPE "_tizen_dnssd_mock._mock"
+#define TIZEN_DNSSD_MOCK_DOMAIN  "tizen_dnssd_mock."
+#define TIZEN_DNSSD_MOCK_INTERFACE 5
+#define TIZEN_DNSSD_MOCK_PORT 12345
+#define TIZEN_DNSSD_MOCK_TXT_RECORD "txt=Tizen DNSSD MOCK info"
+#define TIZEN_DNSSD_MOCK_HOST_NAME "DNSSD Mock Host name"
+
+static DNSServiceErrorType deliver_request(ipc_msg_hdr *hdr, DNSServiceOp *sdr)
+{
+       if (!DNSServiceRefValid(sdr))
+       return kDNSServiceErr_BadReference;
+
+    free(hdr);
+
+       return kDNSServiceErr_NoError;
+}
+
+API dnssd_sock_t DNSServiceRefSockFD(DNSServiceRef sdRef)
+{
+    if (!sdRef)
+       return dnssd_InvalidSocket;
+
+    if (!DNSServiceRefValid(sdRef))
+       return dnssd_InvalidSocket;
+
+    return sdRef->sockfd;
+}
+
+
+static void __nsd_mock_dnssd_process_result_reg_service_request(DNSServiceOp *const sdr)
+{
+       ((DNSServiceRegisterReply)sdr->AppCallback)(sdr,
+                       0,
+                       kDNSServiceErr_NoError,
+                       NULL,
+                       NULL,
+                       TIZEN_DNSSD_MOCK_DOMAIN,
+                       sdr->AppContext);
+}
+
+static DNSServiceOp *adhoc_browse_handle = NULL;
+static void __nsd_mock_dnssd_process_result_browse_request(DNSServiceOp *const sdr)
+{
+       ((DNSServiceBrowseReply)sdr->AppCallback)(sdr,
+                       kDNSServiceFlagsAdd,
+                       TIZEN_DNSSD_MOCK_INTERFACE,
+                       kDNSServiceErr_NoError,
+                       TIZEN_DNSSD_MOCK_SERVICE,
+                       TIZEN_DNSSD_MOCK_TYPE,
+                       TIZEN_DNSSD_MOCK_DOMAIN,
+                       sdr->AppContext);
+       adhoc_browse_handle = sdr;
+}
+
+static void __nsd_mock_dnssd_process_result_resolve_request(DNSServiceOp *const sdr)
+{
+       ((DNSServiceResolveReply)sdr->AppCallback)(sdr,
+                       kDNSServiceFlagsAdd,
+                       TIZEN_DNSSD_MOCK_INTERFACE,
+                       kDNSServiceErr_NoError,
+                       TIZEN_DNSSD_MOCK_SERVICE,
+                       TIZEN_DNSSD_MOCK_TYPE,
+                       TIZEN_DNSSD_MOCK_PORT,
+                       strlen(TIZEN_DNSSD_MOCK_TXT_RECORD),
+                       (const unsigned char *)TIZEN_DNSSD_MOCK_TXT_RECORD,
+                       sdr->AppContext);
+}
+
+static void __nsd_mock_dnssd_process_result_addrinfo_request(DNSServiceOp *const sdr)
+{
+
+       struct sockaddr_in sa_in4 = {0,};
+       const struct sockaddr *const sa = (struct sockaddr*)&sa_in4;
+       sa_in4.sin_family = AF_INET;
+       ((DNSServiceGetAddrInfoReply)sdr->AppCallback)(sdr,
+                       kDNSServiceFlagsAdd,
+                       TIZEN_DNSSD_MOCK_INTERFACE,
+                       kDNSServiceErr_NoError,
+                       TIZEN_DNSSD_MOCK_HOST_NAME,
+                       sa,
+                       64,
+                       sdr->AppContext);
+
+       /* Adhoc for unavailable service */
+       ((DNSServiceBrowseReply)adhoc_browse_handle->AppCallback)(sdr,
+                       0,
+                       TIZEN_DNSSD_MOCK_INTERFACE,
+                       kDNSServiceErr_NoError,
+                       TIZEN_DNSSD_MOCK_SERVICE,
+                       TIZEN_DNSSD_MOCK_TYPE,
+                       TIZEN_DNSSD_MOCK_DOMAIN,
+                       adhoc_browse_handle->AppContext);
+       adhoc_browse_handle = NULL;
+}
+
+// Handle reply from server, calling application client callback. If there is no reply
+// from the daemon on the socket contained in sdRef, the call will block.
+API DNSServiceErrorType DNSServiceProcessResult(DNSServiceRef sdRef)
+{
+       if (!sdRef)
+               return kDNSServiceErr_BadParam;
+
+       if (!DNSServiceRefValid(sdRef))
+               return kDNSServiceErr_BadReference;
+
+       /* original flow:
+        * Read reply header
+        * check header validity
+        * read body
+        * call sdRef->ProcessReply(sdRef, &cbh, ptr, data + cbh.ipc_hdr.datalen);
+        */
+       if (sdRef->op == reg_service_request)
+               __nsd_mock_dnssd_process_result_reg_service_request(sdRef);
+       else if (sdRef->op == browse_request)
+               __nsd_mock_dnssd_process_result_browse_request(sdRef);
+       else if (sdRef->op == resolve_request)
+               __nsd_mock_dnssd_process_result_resolve_request(sdRef);
+       else if (sdRef->op == addrinfo_request)
+               __nsd_mock_dnssd_process_result_addrinfo_request(sdRef);
+
+    return kDNSServiceErr_NoError;
+}
+
+
+API void DNSServiceRefDeallocate(DNSServiceRef sdRef)
+{
+       if (!sdRef)
+       return;
+
+       if (!DNSServiceRefValid(sdRef))
+       return;
+
+       FreeDNSServiceOp(sdRef);
+}
+
+API DNSServiceErrorType DNSServiceResolve
+(
+    DNSServiceRef                 *sdRef,
+    DNSServiceFlags flags,
+    uint32_t interfaceIndex,
+    const char                    *name,
+    const char                    *regtype,
+    const char                    *domain,
+    DNSServiceResolveReply callBack,
+    void                          *context
+)
+{
+       char *ptr;
+       size_t len;
+       ipc_msg_hdr *hdr;
+       DNSServiceErrorType err;
+
+       if (!sdRef || !name || !regtype || !domain || !callBack)
+               return kDNSServiceErr_BadParam;
+
+       err = ConnectToServer(sdRef, flags, resolve_request, NULL, callBack, context);
+       if (err)
+               return err;    // On error ConnectToServer leaves *sdRef set to NULL
+
+       // Calculate total message length
+       len = 0;
+
+       hdr = create_hdr(resolve_request, &len, &ptr, 0, *sdRef);
+       if (!hdr) {
+               DNSServiceRefDeallocate(*sdRef);
+               *sdRef = NULL;
+               return kDNSServiceErr_NoMemory;
+       }
+
+       err = deliver_request(hdr, *sdRef);     // Will free hdr for us
+       if (err) {
+               DNSServiceRefDeallocate(*sdRef);
+               *sdRef = NULL;
+       }
+
+       return err;
+}
+
+API DNSServiceErrorType DNSServiceRegister
+(
+    DNSServiceRef                       *sdRef,
+    DNSServiceFlags flags,
+    uint32_t interfaceIndex,
+    const char                          *name,
+    const char                          *regtype,
+    const char                          *domain,
+    const char                          *host,
+    uint16_t PortInNetworkByteOrder,
+    uint16_t txtLen,
+    const void                          *txtRecord,
+    DNSServiceRegisterReply callBack,
+    void                                *context
+)
+{
+       char *ptr;
+       size_t len;
+       ipc_msg_hdr *hdr;
+       DNSServiceErrorType err;
+
+       if (!sdRef || !regtype)
+               return kDNSServiceErr_BadParam;
+
+       // No callback must have auto-rename
+       if (!callBack && (flags & kDNSServiceFlagsNoAutoRename))
+               return kDNSServiceErr_BadParam;
+
+       err = ConnectToServer(sdRef, flags, reg_service_request, NULL, callBack, context);
+       if (err)
+               return err;
+
+       len = 0;
+       hdr = create_hdr(reg_service_request, &len, &ptr, 0, *sdRef);
+       if (!hdr) {
+               DNSServiceRefDeallocate(*sdRef);
+               *sdRef = NULL;
+               return kDNSServiceErr_NoMemory;
+       }
+
+       err = deliver_request(hdr, *sdRef);     // Will free hdr for us
+       if (err) {
+               DNSServiceRefDeallocate(*sdRef);
+               *sdRef = NULL;
+       }
+       return err;
+}
+
+API DNSServiceErrorType DNSServiceAddRecord
+(
+    DNSServiceRef sdRef,
+    DNSRecordRef *RecordRef,
+    DNSServiceFlags flags,
+    uint16_t rrtype,
+    uint16_t rdlen,
+    const void *rdata,
+    uint32_t ttl
+)
+{
+    ipc_msg_hdr *hdr;
+    size_t len = 0;
+    char *ptr;
+    DNSRecordRef rref;
+    DNSRecord **p;
+
+       if (!sdRef || !RecordRef || (!rdata && rdlen))
+               return kDNSServiceErr_BadParam;
+
+       if (sdRef->op != reg_service_request)
+               return kDNSServiceErr_BadReference;
+
+       if (!DNSServiceRefValid(sdRef))
+               return kDNSServiceErr_BadReference;
+
+    *RecordRef = NULL;
+
+    hdr = create_hdr(add_record_request, &len, &ptr, 0, sdRef);
+
+    rref = malloc(sizeof(DNSRecord));
+    rref->sdr = sdRef;
+    rref->recnext = NULL;
+
+    *RecordRef = rref;
+
+    p = &(sdRef)->rec;
+    while (*p) p = &(*p)->recnext;
+    *p = rref;
+
+       return deliver_request(hdr, sdRef);;
+}
+
+API DNSServiceErrorType DNSServiceUpdateRecord
+(
+    DNSServiceRef sdRef,
+    DNSRecordRef RecordRef,                            /* may be NULL */
+    DNSServiceFlags flags,
+    uint16_t rdlen,
+    const void                          *rdata,
+    uint32_t ttl
+)
+{
+    (void)sdRef;        // Unused
+    (void)RecordRef;    // Unused
+    (void)flags;        // Unused
+    (void)rdlen;        // Unused
+    (void)rdata;        // Unused
+    (void)ttl;          // Unused
+    return kDNSServiceErr_NoError;
+}
+
+API DNSServiceErrorType DNSServiceRemoveRecord
+(
+    DNSServiceRef sdRef,
+    DNSRecordRef RecordRef,
+    DNSServiceFlags flags
+)
+{
+       ipc_msg_hdr *hdr;
+       size_t len = 0;
+       char *ptr;
+       DNSServiceErrorType err;
+
+       if (!sdRef)
+               return kDNSServiceErr_BadParam;
+       if (!RecordRef)
+               return kDNSServiceErr_BadParam;
+
+       if (!DNSServiceRefValid(sdRef))
+               return kDNSServiceErr_BadReference;
+
+       hdr = create_hdr(remove_record_request, &len, &ptr, 1, sdRef);
+
+       err = deliver_request(hdr, sdRef);      // Will free hdr for us
+       if (!err) {
+               // This RecordRef could have been allocated in DNSServiceRegisterRecord or DNSServiceAddRecord.
+               // If so, delink from the list before freeing
+               DNSRecord **p = &sdRef->rec;
+               while (*p && *p != RecordRef)
+                       p = &(*p)->recnext;
+               if (*p)
+                       *p = RecordRef->recnext;
+
+               free(RecordRef);
+       }
+       return err;
+}
+
+API DNSServiceErrorType DNSServiceGetAddrInfo
+(
+    DNSServiceRef                    *sdRef,
+    DNSServiceFlags flags,
+    uint32_t interfaceIndex,
+    uint32_t protocol,
+    const char                       *hostname,
+    DNSServiceGetAddrInfoReply callBack,
+    void                             *context          /* may be NULL */
+)
+{
+       char *ptr;
+       size_t len;
+       ipc_msg_hdr *hdr;
+       DNSServiceErrorType err;
+
+       if (!sdRef || !hostname || !callBack)
+               return kDNSServiceErr_BadParam;
+
+       err = ConnectToServer(sdRef, flags, addrinfo_request, NULL, callBack, context);
+       if (err)
+               return err;    // On error ConnectToServer leaves *sdRef set to NULL
+
+       // Calculate total message length
+       len = 0;
+
+       hdr = create_hdr(addrinfo_request, &len, &ptr, 0, *sdRef);
+       if (!hdr) {
+               DNSServiceRefDeallocate(*sdRef);
+               *sdRef = NULL;
+               return kDNSServiceErr_NoMemory;
+       }
+
+       err = deliver_request(hdr, *sdRef);     // Will free hdr for us
+       if (err) {
+               DNSServiceRefDeallocate(*sdRef);
+               *sdRef = NULL;
+       }
+       return err;
+}
+
+API DNSServiceErrorType DNSServiceBrowse
+(
+    DNSServiceRef         *sdRef,
+    DNSServiceFlags flags,
+    uint32_t interfaceIndex,
+    const char            *regtype,
+    const char            *domain,
+    DNSServiceBrowseReply callBack,
+    void                  *context
+)
+{
+       char *ptr;
+       size_t len;
+       ipc_msg_hdr *hdr;
+       DNSServiceErrorType err;
+
+       // NULL domain handled below
+       if (!sdRef || !regtype || !callBack)
+               return kDNSServiceErr_BadParam;
+
+
+       err = ConnectToServer(sdRef, flags, browse_request, NULL, callBack, context);
+       if (err)
+               return err;    // On error ConnectToServer leaves *sdRef set to NULL
+
+       len = 0;
+
+       hdr = create_hdr(browse_request, &len, &ptr, 0, *sdRef);
+       if (!hdr) {
+               DNSServiceRefDeallocate(*sdRef);
+               *sdRef = NULL;
+               return kDNSServiceErr_NoMemory;
+       }
+
+       err = deliver_request(hdr, *sdRef);     // Will free hdr for us
+       if (err) {
+               DNSServiceRefDeallocate(*sdRef);
+               *sdRef = NULL;
+       }
+
+       return err;
+}
diff --git a/tests/mock/nsd-mock-gdbus.c b/tests/mock/nsd-mock-gdbus.c
new file mode 100644 (file)
index 0000000..1c0182e
--- /dev/null
@@ -0,0 +1,67 @@
+//
+// Copyright (c) 2020 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Apache License, Version 2.0 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#include <glib.h>
+#include <gio/gio.h>
+
+#ifndef API
+#define API __attribute__ ((visibility("default")))
+#endif
+
+const gchar *netconfig_mock_gdbus_unique_name = "temporal_name";
+
+static GDBusConnection *get_uninitialized_connection(GBusType bus_type,
+               GCancellable  *cancellable,
+               GError **error)
+{
+       GDBusConnection *ret;
+       ret = NULL;
+
+       ret = g_object_new(G_TYPE_DBUS_CONNECTION,
+                       "address", "temporal_address",
+                       "flags", G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_CLIENT |
+                       G_DBUS_CONNECTION_FLAGS_MESSAGE_BUS_CONNECTION,
+                       "exit-on-close", TRUE,
+                       NULL);
+
+       return ret;
+}
+
+API GDBusConnection *g_bus_get_sync(GBusType bus_type, GCancellable *cancellable, GError **error)
+{
+               return get_uninitialized_connection(bus_type, cancellable, error);
+}
+
+API const gchar *g_dbus_connection_get_unique_name(GDBusConnection *connection)
+{
+       return netconfig_mock_gdbus_unique_name;
+}
+
+API GVariant *g_dbus_connection_call_sync(GDBusConnection *connection,
+               const gchar *bus_name,
+               const gchar *object_path,
+               const gchar *interface_name,
+               const gchar *method_name,
+               GVariant *parameters,
+               const GVariantType *reply_type,
+               GDBusCallFlags flags,
+               gint timeout_msec,
+               GCancellable *cancellable,
+               GError **error)
+{
+       *error = NULL;
+       return g_variant_new_string("Haha this is mockup\n");
+}
diff --git a/tests/mock/nsd-mock-gio.c b/tests/mock/nsd-mock-gio.c
new file mode 100644 (file)
index 0000000..4ae7606
--- /dev/null
@@ -0,0 +1,122 @@
+//
+// Copyright (c) 2020 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Apache License, Version 2.0 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+#include <stdio.h>
+
+#include <glib.h>
+#include <gio/gio.h>
+
+#ifndef API
+#define API __attribute__ ((visibility("default")))
+#endif
+
+#define TIZEN_MOCK_IO_CHANNEL_SOURCE 5
+
+API GIOChannel *g_io_channel_unix_new(gint fd)
+{
+       return g_new(GIOChannel, 1);
+}
+
+API GIOStatus g_io_channel_set_flags(GIOChannel  *channel,
+               GIOFlags flags,
+               GError **error)
+{
+       return G_IO_STATUS_NORMAL;
+}
+
+
+API void g_io_channel_set_close_on_unref(GIOChannel *channel,
+                                gboolean do_close)
+{
+       return;
+}
+
+typedef struct {
+       GIOChannel *channel;
+       GIOFunc func;
+       gpointer user_data;
+       gboolean called_once;
+} mock_gio_channel_cb_data_s;
+
+static gboolean __mock_gio_channel_cb(gpointer user_data)
+{
+       mock_gio_channel_cb_data_s *cb_data = (mock_gio_channel_cb_data_s *)user_data;
+
+       if (!user_data)
+               return FALSE;
+
+       if (cb_data->called_once)
+               return TRUE;
+
+       cb_data->func(cb_data->channel, G_IO_IN, cb_data->user_data);
+       cb_data->called_once = TRUE;
+
+       return TRUE;
+}
+
+static void __remove_mock_gio_channel_cb(gpointer data)
+{
+       mock_gio_channel_cb_data_s *cb_data = (mock_gio_channel_cb_data_s *)data;
+       if (!cb_data)
+               return;
+       g_free(cb_data);
+}
+
+API guint g_io_add_watch(GIOChannel *channel,
+               GIOCondition condition,
+               GIOFunc func,
+               gpointer user_data)
+{
+       mock_gio_channel_cb_data_s *cb_data = g_try_malloc0(sizeof(mock_gio_channel_cb_data_s));
+       guint g_mock_gio_channel_cb_source = 0;
+
+       cb_data->channel = channel;
+       cb_data->func = func;
+       cb_data->user_data = user_data;
+       cb_data->called_once = FALSE;
+       g_mock_gio_channel_cb_source = g_idle_add_full(G_PRIORITY_DEFAULT_IDLE,
+                       __mock_gio_channel_cb,
+                       (gpointer)cb_data,
+                       __remove_mock_gio_channel_cb);
+
+       return g_mock_gio_channel_cb_source;
+}
+
+API gboolean g_source_remove (guint tag)
+{
+       GSource *source;
+
+       if (tag != 0)
+               return FALSE;
+
+       printf("g_source_remove %u\n", tag);
+       if (tag > 1000) {
+               printf("FUCK\n");
+               return FALSE;
+       }
+
+       source = g_main_context_find_source_by_id (NULL, tag);
+       if (source)
+               g_source_destroy (source);
+       else
+               printf("Source ID %u was not found when attempting to remove it\n", tag);
+
+  return source != NULL;
+}
+
+API void g_io_channel_unref(GIOChannel *channel)
+{
+       g_free(channel);
+}
diff --git a/tests/mock/nsd-mock-gssdp.c b/tests/mock/nsd-mock-gssdp.c
new file mode 100644 (file)
index 0000000..52fbd97
--- /dev/null
@@ -0,0 +1,171 @@
+//
+// Copyright (c) 2020 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Apache License, Version 2.0 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#include <glib-object.h>
+
+#ifndef API
+#define API __attribute__ ((visibility("default")))
+#endif
+
+#define DEFAULT_MOCK_GSSDP_RESOURCE_ID 5
+
+GType
+gssdp_client_get_type (void) G_GNUC_CONST;
+
+#define GSSDP_TYPE_CLIENT \
+                (gssdp_client_get_type ())
+#define GSSDP_CLIENT(obj) \
+                (G_TYPE_CHECK_INSTANCE_CAST ((obj), \
+                 GSSDP_TYPE_CLIENT, \
+                 GSSDPClient))
+#define GSSDP_CLIENT_CLASS(klass) \
+                (G_TYPE_CHECK_CLASS_CAST ((klass), \
+                 GSSDP_TYPE_CLIENT, \
+                 GSSDPClientClass))
+#define GSSDP_IS_CLIENT(obj) \
+                (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \
+                 GSSDP_TYPE_CLIENT))
+#define GSSDP_IS_CLIENT_CLASS(klass) \
+                (G_TYPE_CHECK_CLASS_TYPE ((klass), \
+                 GSSDP_TYPE_CLIENT))
+#define GSSDP_CLIENT_GET_CLASS(obj) \
+                (G_TYPE_INSTANCE_GET_CLASS ((obj), \
+                 GSSDP_TYPE_CLIENT, \
+                 GSSDPClientClass))
+
+typedef struct _GSSDPClient GSSDPClient;
+typedef struct _GSSDPClientClass GSSDPClientClass;
+
+struct _GSSDPClient {
+        GObject parent;
+};
+
+struct _GSSDPClientClass {
+        GObjectClass parent_class;
+};
+
+GType
+gssdp_resource_group_get_type (void) G_GNUC_CONST;
+
+#define GSSDP_TYPE_RESOURCE_GROUP \
+                (gssdp_resource_group_get_type ())
+#define GSSDP_RESOURCE_GROUP(obj) \
+                (G_TYPE_CHECK_INSTANCE_CAST ((obj), \
+                 GSSDP_TYPE_RESOURCE_GROUP, \
+                 GSSDPResourceGroup))
+#define GSSDP_RESOURCE_GROUP_CLASS(klass) \
+                (G_TYPE_CHECK_CLASS_CAST ((klass), \
+                 GSSDP_TYPE_RESOURCE_GROUP, \
+                 GSSDPResourceGroupClass))
+#define GSSDP_IS_RESOURCE_GROUP(obj) \
+                (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \
+                 GSSDP_TYPE_RESOURCE_GROUP))
+#define GSSDP_IS_RESOURCE_GROUP_CLASS(klass) \
+                (G_TYPE_CHECK_CLASS_TYPE ((klass), \
+                 GSSDP_TYPE_RESOURCE_GROUP))
+#define GSSDP_RESOURCE_GROUP_GET_CLASS(obj) \
+                (G_TYPE_INSTANCE_GET_CLASS ((obj), \
+                 GSSDP_TYPE_RESOURCE_GROUP, \
+                 GSSDPResourceGroupClass))
+
+typedef struct _GSSDPResourceGroup GSSDPResourceGroup;
+typedef struct _GSSDPResourceGroupClass GSSDPResourceGroupClass;
+
+struct _GSSDPResourceGroup {
+        GObject parent;
+};
+
+struct _GSSDPResourceGroupClass {
+        GObjectClass parent_class;
+};
+
+GType
+gssdp_resource_browser_get_type (void) G_GNUC_CONST;
+
+#define GSSDP_TYPE_RESOURCE_BROWSER \
+                (gssdp_resource_browser_get_type ())
+#define GSSDP_RESOURCE_BROWSER(obj) \
+                (G_TYPE_CHECK_INSTANCE_CAST ((obj), \
+                 GSSDP_TYPE_RESOURCE_BROWSER, \
+                 GSSDPResourceBrowser))
+#define GSSDP_RESOURCE_BROWSER_CLASS(klass) \
+                (G_TYPE_CHECK_CLASS_CAST ((klass), \
+                 GSSDP_TYPE_RESOURCE_BROWSER, \
+                 GSSDPResourceBrowserClass))
+#define GSSDP_IS_RESOURCE_BROWSER(obj) \
+                (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \
+                 GSSDP_TYPE_RESOURCE_BROWSER))
+#define GSSDP_IS_RESOURCE_BROWSER_CLASS(klass) \
+                (G_TYPE_CHECK_CLASS_TYPE ((klass), \
+                 GSSDP_TYPE_RESOURCE_BROWSER))
+#define GSSDP_RESOURCE_BROWSER_GET_CLASS(obj) \
+                (G_TYPE_INSTANCE_GET_CLASS ((obj), \
+                 GSSDP_TYPE_RESOURCE_BROWSER, \
+                 GSSDPResourceBrowserClass))
+
+typedef struct _GSSDPResourceBrowser GSSDPResourceBrowser;
+typedef struct _GSSDPResourceBrowserClass GSSDPResourceBrowserClass;
+
+struct _GSSDPResourceBrowser {
+        GObject parent;
+};
+
+struct _GSSDPResourceBrowserClass {
+        GObjectClass parent_class;
+};
+
+API GSSDPClient *gssdp_client_new(GMainContext *main_context,
+               const char *iface,
+               GError **error)
+{
+       return g_object_new(GSSDP_TYPE_CLIENT, NULL);
+}
+
+API GSSDPResourceGroup * gssdp_resource_group_new(GSSDPClient *client)
+{
+       return g_object_new (GSSDP_TYPE_RESOURCE_GROUP,
+                       "client", client,
+                       NULL);
+}
+
+API guint gssdp_resource_group_add_resource_simple(GSSDPResourceGroup *resource_group,
+               const char *target,
+               const char *usn,
+               const char *location)
+{
+        return DEFAULT_MOCK_GSSDP_RESOURCE_ID;
+}
+
+API void gssdp_resource_group_set_available(GSSDPResourceGroup *resource_group,
+               gboolean available)
+{
+       return;
+}
+
+API GSSDPResourceBrowser *gssdp_resource_browser_new(GSSDPClient *client,
+               const char  *target)
+{
+        return g_object_new (GSSDP_TYPE_RESOURCE_BROWSER,
+                       "client", client,
+                               "target", target,
+                               NULL);
+}
+
+API void gssdp_resource_browser_set_active (GSSDPResourceBrowser *resource_browser,
+               gboolean active)
+{
+       return;
+}
diff --git a/tests/mock/nsd-mock.c b/tests/mock/nsd-mock.c
new file mode 100644 (file)
index 0000000..31b7da8
--- /dev/null
@@ -0,0 +1,83 @@
+//
+// Copyright (c) 2020 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Apache License, Version 2.0 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdbool.h>
+#include <string.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+
+#include <net/if.h>
+
+#include <glib.h>
+#include <gio/gio.h>
+
+#ifndef API
+#define API __attribute__ ((visibility("default")))
+#endif
+
+#define DEFAULT_MOCK_GOBJECT_SIGNAL 5
+
+typedef enum {
+       LOG_ID_INVALID = -1,
+       LOG_ID_MAIN,
+       LOG_ID_RADIO,
+       LOG_ID_SYSTEM,
+       LOG_ID_APPS,
+       LOG_ID_KMSG,
+       LOG_ID_SYSLOG,
+       LOG_ID_MAX
+} log_id_t;
+
+API int __dlog_print(log_id_t log_id, int prio, const char *tag, const char *fmt, ...)
+{
+       va_list ap;
+       va_start(ap, fmt);
+       vprintf(fmt, ap);
+       va_end(ap);
+       printf("\n");
+
+       return 0;
+}
+
+API int system_info_get_platform_bool(const char *key, bool *value)
+{
+       *value = true;
+       return 0;
+}
+
+API unsigned int if_nametoindex(const char *ifname)
+{
+       if (!ifname)
+               return 0;
+       else
+               return 1;
+}
+API gulong g_signal_connect_data(gpointer instance,
+               const gchar *detailed_signal,
+               GCallback c_handler,
+               gpointer data,
+               GClosureNotify destroy_data,
+               GConnectFlags connect_flags)
+{
+       return DEFAULT_MOCK_GOBJECT_SIGNAL;
+}
+
+API void g_signal_handler_disconnect (gpointer instance,
+                             gulong   handler_id)
+{
+       return;
+}
diff --git a/tests/ssdp-browse-test.c b/tests/ssdp-browse-test.c
new file mode 100644 (file)
index 0000000..d2c0840
--- /dev/null
@@ -0,0 +1,82 @@
+/*
+* Copyright (c) 2012, 2013 Samsung Electronics Co., Ltd.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <string.h>
+#include <errno.h>
+#include <time.h>
+#include <assert.h>
+
+#include <glib.h>
+#include <glib-object.h>
+
+#include <ssdp.h>
+
+#define RESET_COLOR "\e[m"
+#define MAKE_RED "\e[31m"
+#define MAKE_GREEN "\e[32m"
+
+#define MENU_PRINT(str) printf("%s\n", str)
+
+#define __FUNC_ENTER__ printf("\n%s() entering...\n", __func__)
+#define __FUNC_EXIT__ printf("\n%s() leaving...\n", __func__)
+
+void test_found_cb(ssdp_service_state_e state, ssdp_service_h ssdp_service, void *user_data)
+{
+       __FUNC_ENTER__;
+       char *usn;
+       char *url;
+       printf("service handler: %u\n", ssdp_service);
+       ssdp_service_get_usn(ssdp_service, &usn);
+       ssdp_service_get_url(ssdp_service, &url);
+       printf("state: %s\n", state == SSDP_SERVICE_STATE_AVAILABLE ? "AVAILABLE" : "UNAVAILABE");
+       printf("usn: %s\n", usn);
+       printf("url: %s\n", url);
+       g_free(usn);
+       g_free(url);
+       __FUNC_EXIT__;
+}
+
+int main(int argc, char *argv[])
+{
+       GMainLoop *main_loop = NULL;
+       int ret = -1;
+       ssdp_browser_h browser_id;
+       char *target = "upnp:rootdevice";
+
+       /* Initialize required subsystems */
+#if !GLIB_CHECK_VERSION(2, 35, 0)
+       g_type_init();
+#endif
+
+       if (ssdp_initialize() == 0)
+               printf(MAKE_GREEN"Initialized"RESET_COLOR"\n");
+
+       if (ssdp_start_browsing_service(target, &browser_id, &test_found_cb, NULL) == 0)
+               printf(MAKE_GREEN"Start browsing"RESET_COLOR"\n");
+
+       /* Crate the GLIB main loop */
+       main_loop = g_main_loop_new(NULL, FALSE);
+
+       /* Run the main loop */
+       g_main_loop_run(main_loop);
+
+       g_main_loop_unref(main_loop);
+
+       return ret;
+}
diff --git a/tests/ssdp-register-test.c b/tests/ssdp-register-test.c
new file mode 100644 (file)
index 0000000..0c89349
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+* Copyright (c) 2012, 2013 Samsung Electronics Co., Ltd.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <string.h>
+#include <errno.h>
+#include <time.h>
+#include <assert.h>
+
+#include <glib.h>
+#include <glib-object.h>
+
+#include <ssdp.h>
+
+#define RESET_COLOR "\e[m"
+#define MAKE_RED "\e[31m"
+#define MAKE_GREEN "\e[32m"
+
+#define MENU_PRINT(str) printf("%s\n", str)
+
+#define __FUNC_ENTER__ printf("\n%s() entering...\n", __func__)
+#define __FUNC_EXIT__ printf("\n%s() leaving...\n", __func__)
+
+
+void test_registered_cb(ssdp_error_e result, ssdp_service_h ssdp_service, void *user_data)
+{
+       __FUNC_ENTER__;
+       printf("service handler: %u\n", ssdp_service);
+       printf("result: %d\n", result);
+       __FUNC_EXIT__;
+}
+
+int main(int argc, char *argv[])
+{
+       GMainLoop *main_loop = NULL;
+       int ret = -1;
+       ssdp_service_h serv_id;
+       char *target = "upnp:rootdevice";
+       char *usn = "uuid:1234abce-12ab";
+       char *url = "localhost";
+
+
+       /* Initialize required subsystems */
+#if !GLIB_CHECK_VERSION(2, 35, 0)
+       g_type_init();
+#endif
+
+       if (ssdp_initialize() == 0)
+               printf(MAKE_GREEN"Initialized"RESET_COLOR"\n");
+
+       if (ssdp_create_local_service(target, &serv_id) == 0)
+               printf(MAKE_GREEN"Create service. Type: %s, handle: %u "RESET_COLOR"\n", target, serv_id);
+
+       if (ssdp_service_set_usn(serv_id, usn) == 0)
+               printf(MAKE_GREEN"Set USN %s"RESET_COLOR"\n", usn);
+
+       if (ssdp_service_set_url(serv_id, url) == 0)
+               printf(MAKE_GREEN"Set URL %s"RESET_COLOR"\n", url);
+
+       if (ssdp_register_local_service(serv_id, &test_registered_cb, NULL) == 0)
+               printf(MAKE_GREEN"Start registering"RESET_COLOR"\n");
+
+       /* Crate the GLIB main loop */
+       main_loop = g_main_loop_new(NULL, FALSE);
+
+       /* Run the main loop */
+       g_main_loop_run(main_loop);
+
+       g_main_loop_unref(main_loop);
+
+       return ret;
+}
diff --git a/tests/ssdp-test.c b/tests/ssdp-test.c
new file mode 100644 (file)
index 0000000..efee492
--- /dev/null
@@ -0,0 +1,541 @@
+/*
+* Copyright (c) 2012, 2013 Samsung Electronics Co., Ltd.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <string.h>
+#include <errno.h>
+#include <time.h>
+#include <assert.h>
+
+#include <glib.h>
+#include <glib-object.h>
+
+#include <ssdp.h>
+
+#define RESET_COLOR "\e[m"
+#define MAKE_RED "\e[31m"
+#define MAKE_GREEN "\e[32m"
+
+#define MENU_PRINT(str) printf("%s\n", str)
+
+#define __FUNC_ENTER__ printf("\n%s() entering...\n", __func__)
+#define __FUNC_EXIT__ printf("\n%s() leaving...\n", __func__)
+
+/*
+void __ssdp_available_cb (ssdp_service_state_e state,
+                                               const char *usn, const char *urls, void *user_data)
+{
+       printf(MAKE_GREEN"cb %s "RESET_COLOR"\n", __func__);
+       if (state == SSDP_SERIVCE_AVAILABLE) {
+               printf("usn : [%s]\n", usn);
+               printf("url : [%s]\n", urls);
+       }
+       else if (state == SSDP_SERIVCE_UNAVAILABLE) {
+               printf("service unavailable\n");
+       }
+}
+
+void __foreach_ssdp_found_cb (const char *target,
+               const char *usn, const char *urls, void *user_data)
+{
+       printf(MAKE_GREEN"\ncb %s "RESET_COLOR"\n", __func__);
+
+       if (target)
+               printf("target [%s]\n", target);
+       if (usn)
+               printf("usn [%s]\n", usn);
+       if (urls)
+               printf("urls [%s]\n", urls);
+
+       printf(MAKE_GREEN"Success %s "RESET_COLOR"\n", __func__);
+       __FUNC_EXIT__;
+       return;
+}
+*/
+
+int test_ssdp_initialize()
+{
+       __FUNC_ENTER__;
+       int rv = 0;
+
+       rv = ssdp_initialize();
+       if (rv == 0) {
+               printf(MAKE_GREEN"Success %s "RESET_COLOR"\n", __func__);
+               __FUNC_EXIT__;
+               return 1;
+       }
+
+       printf(MAKE_RED"FAILED %s"RESET_COLOR"\n", __func__);
+       __FUNC_EXIT__;
+       return -1;
+}
+
+int test_ssdp_deinitialize()
+{
+       __FUNC_ENTER__;
+       int rv = 0;
+
+       rv = ssdp_deinitialize();
+       if (rv == 0) {
+               printf(MAKE_GREEN"Success %s "RESET_COLOR"\n", __func__);
+               __FUNC_EXIT__;
+               return 1;
+       }
+
+       printf(MAKE_RED"FAILED %s"RESET_COLOR"\n", __func__);
+       __FUNC_EXIT__;
+       return -1;
+}
+
+int test_ssdp_create_service()
+{
+       __FUNC_ENTER__;
+       int rv = 0;
+       char *target = NULL;
+       ssdp_service_h serv_id;
+
+       printf("\nEnter target: (Example : upnp:rootdevice)");
+       if (scanf("%255ms", &target) < 1)
+               return -1;
+
+
+       rv = ssdp_create_local_service(target, &serv_id);
+       g_free(target);
+       printf("service handler %u\n", serv_id);
+
+       if (rv == 0) {
+               printf(MAKE_GREEN"Success %s "RESET_COLOR"\n", __func__);
+               return 1;
+       }
+
+       printf(MAKE_RED"FAILED %s"RESET_COLOR" Error: %d\n", __func__, rv);
+       __FUNC_EXIT__;
+       return -1;
+}
+
+int test_ssdp_destroy_service()
+{
+       __FUNC_ENTER__;
+       int rv = 0;
+       ssdp_service_h serv_id = 0;
+
+       printf("\nEnter service id: ");
+       if (scanf("%u", &serv_id) < 1)
+               return -1;
+
+       rv = ssdp_destroy_local_service(serv_id);
+       if (rv == 0) {
+               printf(MAKE_GREEN"Success %s "RESET_COLOR"\n", __func__);
+               __FUNC_EXIT__;
+               return 1;
+       }
+
+       printf(MAKE_RED"FAILED %s"RESET_COLOR"\n", __func__);
+       __FUNC_EXIT__;
+       return -1;
+}
+
+int test_ssdp_set_usn()
+{
+       __FUNC_ENTER__;
+       int rv = 0;
+       char *usn = NULL;
+       ssdp_service_h serv_id = 0;
+
+       printf("\nEnter service id: ");
+       if (scanf("%u", &serv_id) < 1)
+               return -1;
+
+       printf("\nEnter usn: (Example : uuid:1234abcd-12ab-12ab-12ab-1234567abc12::upnp:rootdevice)");
+       if (scanf("%255ms", &usn) < 1)
+               return -1;
+
+       rv = ssdp_service_set_usn(serv_id, usn);
+       g_free(usn);
+       if (rv == 0) {
+               printf(MAKE_GREEN"Success %s "RESET_COLOR"\n", __func__);
+               __FUNC_EXIT__;
+               return 1;
+       }
+
+       printf(MAKE_RED"FAILED %s"RESET_COLOR" Error: %d\n", __func__, rv);
+       __FUNC_EXIT__;
+       return -1;
+}
+
+int test_ssdp_set_url()
+{
+       __FUNC_ENTER__;
+       int rv = 0;
+       char *url = NULL;
+       ssdp_service_h serv_id = 0;
+
+       printf("\nEnter service id: ");
+       if (scanf("%u", &serv_id) < 1)
+               return -1;
+
+       printf("\nEnter url: (Example : http://192.168.0.110/)");
+       if (scanf("%255ms", &url) < 1)
+               return -1;
+
+       rv = ssdp_service_set_url(serv_id, url);
+       g_free(url);
+       if (rv == 0) {
+               printf(MAKE_GREEN"Success %s "RESET_COLOR"\n", __func__);
+               __FUNC_EXIT__;
+               return 1;
+       }
+
+       printf(MAKE_RED"FAILED %s"RESET_COLOR"\n", __func__);
+       __FUNC_EXIT__;
+       return -1;
+}
+
+int test_ssdp_get_target()
+{
+       __FUNC_ENTER__;
+       int rv = 0;
+       char *target = NULL;
+       ssdp_service_h serv_id = 0;
+
+       printf("\nEnter service id: ");
+       if (scanf("%u", &serv_id) < 1)
+               return -1;
+
+       rv = ssdp_service_get_target(serv_id, &target);
+       if (rv == 0) {
+               printf("target [%s]\n", target);
+               g_free(target);
+               printf(MAKE_GREEN"Success %s "RESET_COLOR"\n", __func__);
+               __FUNC_EXIT__;
+               return 1;
+       }
+
+       printf(MAKE_RED"FAILED %s"RESET_COLOR"\n", __func__);
+       __FUNC_EXIT__;
+       return -1;
+}
+
+int test_ssdp_get_usn()
+{
+       __FUNC_ENTER__;
+               int rv = 0;
+       char *usn = NULL;
+       ssdp_service_h serv_id = 0;
+
+       printf("\nEnter service id: ");
+       if (scanf("%u", &serv_id) < 1)
+               return -1;
+
+       rv = ssdp_service_get_usn(serv_id, &usn);
+       if (rv == 0) {
+               printf("usn [%s]\n", usn);
+               g_free(usn);
+               printf(MAKE_GREEN"Success %s "RESET_COLOR"\n", __func__);
+               return 1;
+       }
+
+       printf(MAKE_RED"FAILED %s"RESET_COLOR"\n", __func__);
+       return -1;
+}
+
+int test_ssdp_get_url()
+{
+       __FUNC_ENTER__;
+       int rv = 0;
+       char *url = NULL;
+       ssdp_service_h serv_id = 0;
+
+       printf("\nEnter service id: ");
+       if (scanf("%u", &serv_id) < 1)
+               return -1;
+
+       rv = ssdp_service_get_url(serv_id, &url);
+       if (rv == 0) {
+               printf("url [%s]\n", url);
+               g_free(url);
+               printf(MAKE_GREEN"Success %s "RESET_COLOR"\n", __func__);
+               __FUNC_EXIT__;
+               return 1;
+       }
+
+       printf(MAKE_RED"FAILED %s"RESET_COLOR"\n", __func__);
+       __FUNC_EXIT__;
+       return -1;
+}
+
+void test_registered_cb(ssdp_error_e result, ssdp_service_h ssdp_service, void *user_data)
+{
+       __FUNC_ENTER__;
+       printf("service handler: %u\n", ssdp_service);
+       printf("result: %d\n", result);
+       __FUNC_EXIT__;
+}
+
+void test_found_cb(ssdp_service_state_e state, ssdp_service_h ssdp_service, void *user_data)
+{
+       __FUNC_ENTER__;
+       char *usn;
+       char *url;
+       printf("service handler: %u\n", ssdp_service);
+       ssdp_service_get_usn(ssdp_service, &usn);
+       ssdp_service_get_url(ssdp_service, &url);
+       printf("state: %s\n", state == SSDP_SERVICE_STATE_AVAILABLE ? "AVAILABLE" : "UNAVAILABE");
+       printf("usn: %s\n", usn);
+       printf("url: %s\n", url);
+       g_free(usn);
+       g_free(url);
+       __FUNC_EXIT__;
+}
+
+int test_ssdp_register_service()
+{
+       __FUNC_ENTER__;
+       int rv = 0;
+       ssdp_service_h serv_id = 0;
+
+       printf("\nEnter service id: ");
+       if (scanf("%u", &serv_id) < 1)
+               return -1;
+
+       rv = ssdp_register_local_service(serv_id, &test_registered_cb, NULL);
+       if (rv == 0) {
+               printf(MAKE_GREEN"Success %s "RESET_COLOR"\n", __func__);
+               __FUNC_EXIT__;
+               return 1;
+       }
+
+       printf(MAKE_RED"FAILED %s"RESET_COLOR"\n", __func__);
+       __FUNC_EXIT__;
+       return -1;
+}
+
+int test_ssdp_deregister_service()
+{
+       __FUNC_ENTER__;
+       int rv = 0;
+       ssdp_service_h serv_id = 0;
+
+       printf("\nEnter service id: ");
+       if (scanf("%u", &serv_id) < 1)
+               return -1;
+
+       rv = ssdp_deregister_local_service(serv_id);
+if (rv == 0) {
+               printf(MAKE_GREEN"Success %s "RESET_COLOR"\n", __func__);
+               __FUNC_EXIT__;
+               return 1;
+       }
+
+       printf(MAKE_RED"FAILED %s"RESET_COLOR"\n", __func__);
+       __FUNC_EXIT__;
+       return -1;
+}
+
+int test_ssdp_service_browse()
+{
+       __FUNC_ENTER__;
+       int rv = 0;
+       ssdp_browser_h browser_id = 0;
+       char *target = NULL;
+
+       printf("\nEnter target: (Example : upnp:rootdevice)");
+       if (scanf("%255ms", &target) < 1)
+               return -1;
+
+       rv = ssdp_start_browsing_service(target, &browser_id, &test_found_cb, NULL);
+       g_free(target);
+       if (rv == 0) {
+               printf(MAKE_GREEN"Success %s "RESET_COLOR"\n", __func__);
+               __FUNC_EXIT__;
+               return 1;
+       }
+
+       printf(MAKE_RED"FAILED %s"RESET_COLOR"\n", __func__);
+       __FUNC_EXIT__;
+       return -1;
+}
+
+int test_ssdp_service_stop_browse()
+{
+       __FUNC_ENTER__;
+       int rv = 0;
+       ssdp_browser_h browser_id = 0;
+
+       printf("\nEnter browser id: ");
+       if (scanf("%u", &browser_id) < 1)
+               return -1;
+
+       rv = ssdp_stop_browsing_service(browser_id);
+       if (rv == 0) {
+               printf(MAKE_GREEN"Success %s "RESET_COLOR"\n", __func__);
+               __FUNC_EXIT__;
+               return 1;
+       }
+
+       printf(MAKE_RED"FAILED %s"RESET_COLOR"\n", __func__);
+       __FUNC_EXIT__;
+       return -1;
+}
+
+int test_ssdp_foreach_found()
+{
+       /*
+       __FUNC_ENTER__;
+       int rv = 0;
+       ssdp_service_h serv_id = 0;
+
+       printf("\nEnter service id: ");
+       if (scanf("%u", &serv_id) < 1)
+               return -1;
+
+       rv = ssdp_service_foreach_found(serv_id, __foreach_ssdp_found_cb, NULL);
+       if (rv == 0) {
+               printf(MAKE_GREEN"Success %s "RESET_COLOR"\n", __func__);
+               __FUNC_EXIT__;
+               return 1;
+       }
+
+       printf(MAKE_RED"FAILED %s"RESET_COLOR"\n", __func__);
+       __FUNC_EXIT__;
+       */
+       return -1;
+}
+
+static void MenuScreen()
+{
+       MENU_PRINT("___________________________________");
+       MENU_PRINT("|__________MENU-SCREEN ___________|");
+       MENU_PRINT("| 0 - EXIT                        |");
+       MENU_PRINT("| 1 - Initialize SSDP             |");
+       MENU_PRINT("| 2 - deinitialize SSDP           |");
+       MENU_PRINT("| 3 - Create SSDP Service         |");
+       MENU_PRINT("| 4 - Destroy SSDP Service        |");
+       MENU_PRINT("| 5 - Set SSDP USN                |");
+       MENU_PRINT("| 6 - Set SSDP Location           |");
+       MENU_PRINT("| 7 - Get SSDP Target             |");
+       MENU_PRINT("| 8 - Get SSDP USN                |");
+       MENU_PRINT("| 9 - Get SSDP Location           |");
+       MENU_PRINT("| a - Register SSDP Service       |");
+       MENU_PRINT("| b - Deregister SSDP Service     |");
+       MENU_PRINT("| c - Browse SSDP Service         |");
+       MENU_PRINT("| d - Stop Browsing SSDP          |");
+       MENU_PRINT("|_________________________________|");
+}
+
+
+int test_thread()
+{
+       int rv;
+       char a[10];
+
+       printf("Event received from stdin\n");
+
+       rv = read(0, a, 10);
+
+       if (rv <= 0 || a[0] == '0')
+               exit(1);
+
+       if (a[0] == '\n' || a[0] == '\r') {
+               printf("\n\n SSDP CAPI Test App\n\n");
+               printf("Options..\n");
+               MenuScreen();
+               printf("Press ENTER to show options menu.......\n");
+       }
+
+       switch (a[0]) {
+       case '1':
+               rv = test_ssdp_initialize();
+               break;
+       case '2':
+               rv = test_ssdp_deinitialize();
+               break;
+       case '3':
+               rv = test_ssdp_create_service();
+               break;
+       case '4':
+               rv = test_ssdp_destroy_service();
+               break;
+       case '5':
+               rv = test_ssdp_set_usn();
+               break;
+       case '6':
+               rv = test_ssdp_set_url();
+               break;
+       case '7':
+               rv = test_ssdp_get_target();
+               break;
+       case '8':
+               rv = test_ssdp_get_usn();
+               break;
+       case '9':
+               rv = test_ssdp_get_url();
+               break;
+       case 'a':
+               rv = test_ssdp_register_service();
+               break;
+       case 'b':
+               rv = test_ssdp_deregister_service();
+               break;
+       case 'c':
+               rv = test_ssdp_service_browse();
+               break;
+       case 'd':
+               rv = test_ssdp_service_stop_browse();
+               break;
+       default:
+               break;
+       }
+
+       if (rv == 1)
+               printf("\nOperation Succeeded!\n");
+       else
+               printf("\nOperation Failed!\n");
+
+       return TRUE;
+}
+
+/* test thread */
+
+int main(int argc, char *argv[])
+{
+       GMainLoop *main_loop = NULL;
+       int ret = -1;
+
+       /* Initialize required subsystems */
+#if !GLIB_CHECK_VERSION(2, 35, 0)
+       g_type_init();
+#endif
+
+       /* test thread */
+
+       GIOChannel *channel = g_io_channel_unix_new(0);
+       g_io_add_watch(channel, (G_IO_IN|G_IO_ERR|G_IO_HUP|G_IO_NVAL), test_thread, NULL);
+
+       printf("Test Thread Created...\n");
+
+       /* Crate the GLIB main loop */
+       main_loop = g_main_loop_new(NULL, FALSE);
+
+       /* Run the main loop */
+       g_main_loop_run(main_loop);
+
+       g_main_loop_unref(main_loop);
+
+       return ret;
+}
diff --git a/tests/tct-nsd-core.cpp b/tests/tct-nsd-core.cpp
new file mode 100755 (executable)
index 0000000..4468a42
--- /dev/null
@@ -0,0 +1,93 @@
+//
+// Copyright (c) 2020 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Apache License, Version 2.0 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+#include <stdio.h>
+#include <string.h>
+#include "tct_common.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "tct-nsd-core.h"
+
+#ifdef __cplusplus
+}
+#endif
+
+#include <gtest/gtest.h>
+
+#include <malloc.h>
+#include <unistd.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/wait.h>
+#include <stdbool.h>
+
+TEST(nsd, nsd){
+       char *pszGetTCName = NULL;
+       pszGetTCName = (char*)malloc( 256 );
+       memset( pszGetTCName, 0x00, 256);
+       strcpy( pszGetTCName, "utc_nsd");
+       int i=0, result=0;
+
+       dlog_print(DLOG_INFO, "NativeTCT", "[%s:%d] Executing TC Name = %s", __FUNCTION__, __LINE__, pszGetTCName);
+
+       int successCnt = 0;
+       int errorCnt = 0;
+       for ( i = 0; tc_array[i].name; i++ )
+       {
+               if ( 0 == strncmp(pszGetTCName, tc_array[i].name, strlen(pszGetTCName)) )
+               {
+                       if ( tc_array[i].startup )
+                       {
+                               tc_array[i].startup();
+                       }
+
+                       result = tc_array[i].function();
+
+                       if( result == 0 ) {
+                               successCnt++;
+                       } else {
+                               dlog_print(DLOG_INFO, "NativeTCT", "[Error][%d] %s returns value = %d", i, tc_array[i].name, result);
+                               errorCnt++;
+                       }
+
+                       EXPECT_EQ(result, 0);
+
+                       if ( tc_array[i].cleanup )
+                       {
+                               tc_array[i].cleanup();
+                       }
+               }
+               else
+               {
+                       dlog_print(DLOG_INFO, "NativeTCT", "Name check error! [%s][%s]", pszGetTCName, tc_array[i].name);
+                       ASSERT_EQ(0, 1);
+               }
+       }
+
+       dlog_print(DLOG_INFO, "NativeTCT", "==========================");
+       dlog_print(DLOG_INFO, "NativeTCT", "Success [%4d / %4d]", successCnt, successCnt + errorCnt);
+       dlog_print(DLOG_INFO, "NativeTCT", "Error   [%4d / %4d]", errorCnt, successCnt + errorCnt);
+       dlog_print(DLOG_INFO, "NativeTCT", "==========================");
+
+       FREE_MEMORY_TC(pszGetTCName);
+}
+
+int main(int argc, char** argv) {
+    ::testing::InitGoogleTest(&argc, argv);
+    return RUN_ALL_TESTS();
+}
diff --git a/tests/tct-nsd-core.h b/tests/tct-nsd-core.h
new file mode 100755 (executable)
index 0000000..618b90e
--- /dev/null
@@ -0,0 +1,231 @@
+//
+// Copyright (c) 2020 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Apache License, Version 2.0 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+#ifndef __TCT_NSD_NATIVE_H__
+#define __TCT_NSD_NATIVE_H__
+
+#include "testcase.h"
+#include "tct_common.h"
+
+extern void utc_nsd_ssdp_browse_startup(void);
+extern void utc_nsd_ssdp_browse_cleanup(void);
+extern void utc_nsd_ssdp_register_startup(void);
+extern void utc_nsd_ssdp_register_cleanup(void);
+extern void utc_nsd_dnssd_browse_startup(void);
+extern void utc_nsd_dnssd_browse_cleanup(void);
+extern void utc_nsd_dnssd_register_startup(void);
+extern void utc_nsd_dnssd_register_cleanup(void);
+
+extern int utc_nsd_ssdp_start_browsing_service_p(void);
+extern int utc_nsd_ssdp_start_browsing_service_n(void);
+extern int utc_nsd_ssdp_stop_browsing_service_p(void);
+extern int utc_nsd_ssdp_stop_browsing_service_n1(void);
+extern int utc_nsd_ssdp_stop_browsing_service_n2(void);
+extern int utc_nsd_ssdp_initialize_p(void);
+extern int utc_nsd_ssdp_deinitialize_p(void);
+extern int utc_nsd_ssdp_deinitialize_n(void);
+extern int utc_nsd_ssdp_create_local_service_p(void);
+extern int utc_nsd_ssdp_create_local_service_n(void);
+extern int utc_nsd_ssdp_destroy_local_service_p(void);
+extern int utc_nsd_ssdp_detroy_local_service_n(void);
+extern int utc_nsd_ssdp_set_usn_p(void);
+extern int utc_nsd_ssdp_set_usn_n1(void);
+extern int utc_nsd_ssdp_set_usn_n2(void);
+extern int utc_nsd_ssdp_set_url_p(void);
+extern int utc_nsd_ssdp_set_url_n1(void);
+extern int utc_nsd_ssdp_set_url_n2(void);
+extern int utc_nsd_ssdp_get_target_p(void);
+extern int utc_nsd_ssdp_get_target_n1(void);
+extern int utc_nsd_ssdp_get_target_n2(void);
+extern int utc_nsd_ssdp_get_usn_p(void);
+extern int utc_nsd_ssdp_get_usn_n1(void);
+extern int utc_nsd_ssdp_get_usn_n2(void);
+extern int utc_nsd_ssdp_get_url_p(void);
+extern int utc_nsd_ssdp_get_url_n1(void);
+extern int utc_nsd_ssdp_get_url_n2(void);
+extern int utc_nsd_ssdp_register_local_service_p(void);
+extern int utc_nsd_ssdp_register_local_service_n1(void);
+extern int utc_nsd_ssdp_register_local_service_n2(void);
+extern int utc_nsd_ssdp_deregister_local_service_p(void);
+extern int utc_nsd_ssdp_deregister_local_service_n(void);
+extern int utc_nsd_dnssd_browsing_service_full_p(void);
+extern int utc_nsd_dnssd_start_browsing_service_p(void);
+extern int utc_nsd_dnssd_start_browsing_service_n(void);
+extern int utc_nsd_dnssd_stop_browsing_service_p(void);
+extern int utc_nsd_dnssd_stop_browsing_service_n(void);
+extern int utc_nsd_dnssd_start_browsing_service_on_interface_p(void);
+extern int utc_nsd_dnssd_start_browsing_service_on_interface_n1(void);
+extern int utc_nsd_dnssd_start_browsing_service_on_interface_n2(void);
+extern int utc_nsd_dnssd_start_browsing_service_on_interface_n3(void);
+extern int utc_nsd_dnssd_service_get_ip_n1(void);
+extern int utc_nsd_dnssd_service_get_ip_n2(void);
+extern int utc_nsd_dnssd_initialize_p(void);
+extern int utc_nsd_dnssd_initialize_n(void);
+extern int utc_nsd_dnssd_deinitialize_p(void);
+extern int utc_nsd_dnssd_deinitialize_n(void);
+extern int utc_nsd_dnssd_create_local_service_p(void);
+extern int utc_nsd_dnssd_create_local_service_n1(void);
+extern int utc_nsd_dnssd_create_local_service_n2(void);
+extern int utc_nsd_dnssd_destroy_local_service_p(void);
+extern int utc_nsd_dnssd_detroy_local_service_n1(void);
+extern int utc_nsd_dnssd_detroy_local_service_n2(void);
+extern int utc_nsd_dnssd_set_name_p(void);
+extern int utc_nsd_dnssd_set_name_n1(void);
+extern int utc_nsd_dnssd_set_name_n2(void);
+extern int utc_nsd_dnssd_set_name_n3(void);
+extern int utc_nsd_dnssd_set_port_p(void);
+extern int utc_nsd_dnssd_set_port_n1(void);
+extern int utc_nsd_dnssd_set_port_n2(void);
+extern int utc_nsd_dnssd_set_port_n3(void);
+extern int utc_nsd_dnssd_set_interface_p(void);
+extern int utc_nsd_dnssd_set_interface_n1(void);
+extern int utc_nsd_dnssd_set_interface_n2(void);
+extern int utc_nsd_dnssd_set_interface_n3(void);
+extern int utc_nsd_dnssd_set_record_p(void);
+extern int utc_nsd_dnssd_set_record_n1(void);
+extern int utc_nsd_dnssd_set_record_n2(void);
+extern int utc_nsd_dnssd_unset_record_p(void);
+extern int utc_nsd_dnssd_unset_record_n1(void);
+extern int utc_nsd_dnssd_unset_record_n2(void);
+extern int utc_nsd_dnssd_unset_record_n3(void);
+extern int utc_nsd_dnssd_add_txt_record_p(void);
+extern int utc_nsd_dnssd_add_txt_record_n1(void);
+extern int utc_nsd_dnssd_add_txt_record_n2(void);
+extern int utc_nsd_dnssd_add_txt_record_n3(void);
+extern int utc_nsd_dnssd_add_txt_record_n4(void);
+extern int utc_nsd_dnssd_get_all_txt_record_p(void);
+extern int utc_nsd_dnssd_get_all_txt_record_n1(void);
+extern int utc_nsd_dnssd_get_all_txt_record_n2(void);
+extern int utc_nsd_dnssd_get_all_txt_record_n3(void);
+extern int utc_nsd_dnssd_remove_txt_record_p(void);
+extern int utc_nsd_dnssd_remove_txt_record_n1(void);
+extern int utc_nsd_dnssd_remove_txt_record_n2(void);
+extern int utc_nsd_dnssd_get_type_p(void);
+extern int utc_nsd_dnssd_get_type_n1(void);
+extern int utc_nsd_dnssd_get_type_n2(void);
+extern int utc_nsd_dnssd_get_type_n3(void);
+extern int utc_nsd_dnssd_get_name_p(void);
+extern int utc_nsd_dnssd_get_name_n1(void);
+extern int utc_nsd_dnssd_get_name_n2(void);
+extern int utc_nsd_dnssd_get_port_p(void);
+extern int utc_nsd_dnssd_get_port_n1(void);
+extern int utc_nsd_dnssd_get_port_n2(void);
+extern int utc_nsd_dnssd_register_local_service_p(void);
+extern int utc_nsd_dnssd_register_local_service_n(void);
+extern int utc_nsd_dnssd_deregister_local_service_p(void);
+extern int utc_nsd_dnssd_deregister_local_service_n(void);
+
+testcase tc_array[] = {
+       {"utc_nsd_ssdp_start_browsing_service_p",utc_nsd_ssdp_start_browsing_service_p,utc_nsd_ssdp_browse_startup,utc_nsd_ssdp_browse_cleanup},
+       {"utc_nsd_ssdp_start_browsing_service_n",utc_nsd_ssdp_start_browsing_service_n,utc_nsd_ssdp_browse_startup,utc_nsd_ssdp_browse_cleanup},
+       {"utc_nsd_ssdp_stop_browsing_service_p",utc_nsd_ssdp_stop_browsing_service_p,utc_nsd_ssdp_browse_startup,utc_nsd_ssdp_browse_cleanup},
+       {"utc_nsd_ssdp_stop_browsing_service_n1",utc_nsd_ssdp_stop_browsing_service_n1,utc_nsd_ssdp_browse_startup,utc_nsd_ssdp_browse_cleanup},
+       {"utc_nsd_ssdp_stop_browsing_service_n2",utc_nsd_ssdp_stop_browsing_service_n2,utc_nsd_ssdp_browse_startup,utc_nsd_ssdp_browse_cleanup},
+       {"utc_nsd_ssdp_initialize_p",utc_nsd_ssdp_initialize_p,utc_nsd_ssdp_register_startup,utc_nsd_ssdp_register_cleanup},
+       {"utc_nsd_ssdp_deinitialize_p",utc_nsd_ssdp_deinitialize_p,utc_nsd_ssdp_register_startup,utc_nsd_ssdp_register_cleanup},
+       {"utc_nsd_ssdp_deinitialize_n",utc_nsd_ssdp_deinitialize_n,utc_nsd_ssdp_register_startup,utc_nsd_ssdp_register_cleanup},
+       {"utc_nsd_ssdp_create_local_service_p",utc_nsd_ssdp_create_local_service_p,utc_nsd_ssdp_register_startup,utc_nsd_ssdp_register_cleanup},
+       {"utc_nsd_ssdp_create_local_service_n",utc_nsd_ssdp_create_local_service_n,utc_nsd_ssdp_register_startup,utc_nsd_ssdp_register_cleanup},
+       {"utc_nsd_ssdp_destroy_local_service_p",utc_nsd_ssdp_destroy_local_service_p,utc_nsd_ssdp_register_startup,utc_nsd_ssdp_register_cleanup},
+       {"utc_nsd_ssdp_detroy_local_service_n",utc_nsd_ssdp_detroy_local_service_n,utc_nsd_ssdp_register_startup,utc_nsd_ssdp_register_cleanup},
+       {"utc_nsd_ssdp_set_usn_p",utc_nsd_ssdp_set_usn_p,utc_nsd_ssdp_register_startup,utc_nsd_ssdp_register_cleanup},
+       {"utc_nsd_ssdp_set_usn_n1",utc_nsd_ssdp_set_usn_n1,utc_nsd_ssdp_register_startup,utc_nsd_ssdp_register_cleanup},
+       {"utc_nsd_ssdp_set_usn_n2",utc_nsd_ssdp_set_usn_n2,utc_nsd_ssdp_register_startup,utc_nsd_ssdp_register_cleanup},
+       {"utc_nsd_ssdp_set_url_p",utc_nsd_ssdp_set_url_p,utc_nsd_ssdp_register_startup,utc_nsd_ssdp_register_cleanup},
+       {"utc_nsd_ssdp_set_url_n1",utc_nsd_ssdp_set_url_n1,utc_nsd_ssdp_register_startup,utc_nsd_ssdp_register_cleanup},
+       {"utc_nsd_ssdp_set_url_n2",utc_nsd_ssdp_set_url_n2,utc_nsd_ssdp_register_startup,utc_nsd_ssdp_register_cleanup},
+       {"utc_nsd_ssdp_get_target_p",utc_nsd_ssdp_get_target_p,utc_nsd_ssdp_register_startup,utc_nsd_ssdp_register_cleanup},
+       {"utc_nsd_ssdp_get_target_n1",utc_nsd_ssdp_get_target_n1,utc_nsd_ssdp_register_startup,utc_nsd_ssdp_register_cleanup},
+       {"utc_nsd_ssdp_get_target_n2",utc_nsd_ssdp_get_target_n2,utc_nsd_ssdp_register_startup,utc_nsd_ssdp_register_cleanup},
+       {"utc_nsd_ssdp_get_usn_p",utc_nsd_ssdp_get_usn_p,utc_nsd_ssdp_register_startup,utc_nsd_ssdp_register_cleanup},
+       {"utc_nsd_ssdp_get_usn_n1",utc_nsd_ssdp_get_usn_n1,utc_nsd_ssdp_register_startup,utc_nsd_ssdp_register_cleanup},
+       {"utc_nsd_ssdp_get_usn_n2",utc_nsd_ssdp_get_usn_n2,utc_nsd_ssdp_register_startup,utc_nsd_ssdp_register_cleanup},
+       {"utc_nsd_ssdp_get_url_p",utc_nsd_ssdp_get_url_p,utc_nsd_ssdp_register_startup,utc_nsd_ssdp_register_cleanup},
+       {"utc_nsd_ssdp_get_url_n1",utc_nsd_ssdp_get_url_n1,utc_nsd_ssdp_register_startup,utc_nsd_ssdp_register_cleanup},
+       {"utc_nsd_ssdp_get_url_n2",utc_nsd_ssdp_get_url_n2,utc_nsd_ssdp_register_startup,utc_nsd_ssdp_register_cleanup},
+       {"utc_nsd_ssdp_register_local_service_p",utc_nsd_ssdp_register_local_service_p,utc_nsd_ssdp_register_startup,utc_nsd_ssdp_register_cleanup},
+       {"utc_nsd_ssdp_register_local_service_n1",utc_nsd_ssdp_register_local_service_n1,utc_nsd_ssdp_register_startup,utc_nsd_ssdp_register_cleanup},
+       {"utc_nsd_ssdp_register_local_service_n2",utc_nsd_ssdp_register_local_service_n2,utc_nsd_ssdp_register_startup,utc_nsd_ssdp_register_cleanup},
+       {"utc_nsd_ssdp_deregister_local_service_p",utc_nsd_ssdp_deregister_local_service_p,utc_nsd_ssdp_register_startup,utc_nsd_ssdp_register_cleanup},
+       {"utc_nsd_ssdp_deregister_local_service_n",utc_nsd_ssdp_deregister_local_service_n,utc_nsd_ssdp_register_startup,utc_nsd_ssdp_register_cleanup},
+       {"utc_nsd_dnssd_start_browsing_service_p",utc_nsd_dnssd_start_browsing_service_p,utc_nsd_dnssd_browse_startup,utc_nsd_dnssd_browse_cleanup},
+       {"utc_nsd_dnssd_start_browsing_service_n",utc_nsd_dnssd_start_browsing_service_n,utc_nsd_dnssd_browse_startup,utc_nsd_dnssd_browse_cleanup},
+       {"utc_nsd_dnssd_stop_browsing_service_p",utc_nsd_dnssd_stop_browsing_service_p,utc_nsd_dnssd_browse_startup,utc_nsd_dnssd_browse_cleanup},
+       {"utc_nsd_dnssd_stop_browsing_service_n",utc_nsd_dnssd_stop_browsing_service_n,utc_nsd_dnssd_browse_startup,utc_nsd_dnssd_browse_cleanup},
+       {"utc_nsd_dnssd_start_browsing_service_on_interface_p",utc_nsd_dnssd_start_browsing_service_on_interface_p,utc_nsd_dnssd_browse_startup,utc_nsd_dnssd_browse_cleanup},
+       {"utc_nsd_dnssd_start_browsing_service_on_interface_n1",utc_nsd_dnssd_start_browsing_service_on_interface_n1,utc_nsd_dnssd_browse_startup,utc_nsd_dnssd_browse_cleanup},
+       {"utc_nsd_dnssd_start_browsing_service_on_interface_n2",utc_nsd_dnssd_start_browsing_service_on_interface_n2,utc_nsd_dnssd_browse_startup,utc_nsd_dnssd_browse_cleanup},
+       {"utc_nsd_dnssd_start_browsing_service_on_interface_n3",utc_nsd_dnssd_start_browsing_service_on_interface_n3,utc_nsd_dnssd_browse_startup,utc_nsd_dnssd_browse_cleanup},
+       {"utc_nsd_dnssd_service_get_ip_n1",utc_nsd_dnssd_service_get_ip_n1,utc_nsd_dnssd_browse_startup,utc_nsd_dnssd_browse_cleanup},
+       {"utc_nsd_dnssd_service_get_ip_n2",utc_nsd_dnssd_service_get_ip_n2,utc_nsd_dnssd_browse_startup,utc_nsd_dnssd_browse_cleanup},
+       {"utc_nsd_dnssd_initialize_p",utc_nsd_dnssd_initialize_p,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
+       {"utc_nsd_dnssd_initialize_n",utc_nsd_dnssd_initialize_n,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
+       {"utc_nsd_dnssd_deinitialize_p",utc_nsd_dnssd_deinitialize_p,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
+       {"utc_nsd_dnssd_deinitialize_n",utc_nsd_dnssd_deinitialize_n,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
+       {"utc_nsd_dnssd_create_local_service_p",utc_nsd_dnssd_create_local_service_p,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
+       {"utc_nsd_dnssd_create_local_service_n1",utc_nsd_dnssd_create_local_service_n1,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
+       {"utc_nsd_dnssd_create_local_service_n2",utc_nsd_dnssd_create_local_service_n2,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
+       {"utc_nsd_dnssd_destroy_local_service_p",utc_nsd_dnssd_destroy_local_service_p,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
+       {"utc_nsd_dnssd_detroy_local_service_n1",utc_nsd_dnssd_detroy_local_service_n1,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
+       {"utc_nsd_dnssd_detroy_local_service_n2",utc_nsd_dnssd_detroy_local_service_n2,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
+       {"utc_nsd_dnssd_set_name_p",utc_nsd_dnssd_set_name_p,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
+       {"utc_nsd_dnssd_set_name_n1",utc_nsd_dnssd_set_name_n1,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
+       {"utc_nsd_dnssd_set_name_n2",utc_nsd_dnssd_set_name_n2,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
+       {"utc_nsd_dnssd_set_name_n3",utc_nsd_dnssd_set_name_n3,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
+       {"utc_nsd_dnssd_set_port_p",utc_nsd_dnssd_set_port_p,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
+       {"utc_nsd_dnssd_set_port_n1",utc_nsd_dnssd_set_port_n1,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
+       {"utc_nsd_dnssd_set_port_n2",utc_nsd_dnssd_set_port_n2,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
+       {"utc_nsd_dnssd_set_port_n3",utc_nsd_dnssd_set_port_n3,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
+       {"utc_nsd_dnssd_set_interface_p",utc_nsd_dnssd_set_interface_p,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
+       {"utc_nsd_dnssd_set_interface_n1",utc_nsd_dnssd_set_interface_n1,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
+       {"utc_nsd_dnssd_set_interface_n2",utc_nsd_dnssd_set_interface_n2,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
+       {"utc_nsd_dnssd_set_interface_n3",utc_nsd_dnssd_set_interface_n3,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
+       {"utc_nsd_dnssd_set_record_p",utc_nsd_dnssd_set_record_p,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
+       {"utc_nsd_dnssd_set_record_n1",utc_nsd_dnssd_set_record_n1,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
+       {"utc_nsd_dnssd_set_record_n2",utc_nsd_dnssd_set_record_n2,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
+       {"utc_nsd_dnssd_unset_record_p",utc_nsd_dnssd_unset_record_p,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
+       {"utc_nsd_dnssd_unset_record_n1",utc_nsd_dnssd_unset_record_n1,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
+       {"utc_nsd_dnssd_unset_record_n2",utc_nsd_dnssd_unset_record_n2,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
+       {"utc_nsd_dnssd_unset_record_n3",utc_nsd_dnssd_unset_record_n3,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
+       {"utc_nsd_dnssd_add_txt_record_p",utc_nsd_dnssd_add_txt_record_p,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
+       {"utc_nsd_dnssd_add_txt_record_n1",utc_nsd_dnssd_add_txt_record_n1,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
+       {"utc_nsd_dnssd_add_txt_record_n2",utc_nsd_dnssd_add_txt_record_n2,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
+       {"utc_nsd_dnssd_add_txt_record_n3",utc_nsd_dnssd_add_txt_record_n3,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
+       {"utc_nsd_dnssd_add_txt_record_n4",utc_nsd_dnssd_add_txt_record_n4,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
+       {"utc_nsd_dnssd_get_all_txt_record_p",utc_nsd_dnssd_get_all_txt_record_p,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
+       {"utc_nsd_dnssd_get_all_txt_record_n1",utc_nsd_dnssd_get_all_txt_record_n1,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
+       {"utc_nsd_dnssd_get_all_txt_record_n2",utc_nsd_dnssd_get_all_txt_record_n2,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
+       {"utc_nsd_dnssd_get_all_txt_record_n3",utc_nsd_dnssd_get_all_txt_record_n3,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
+       {"utc_nsd_dnssd_remove_txt_record_p",utc_nsd_dnssd_remove_txt_record_p,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
+       {"utc_nsd_dnssd_remove_txt_record_n1",utc_nsd_dnssd_remove_txt_record_n1,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
+       {"utc_nsd_dnssd_remove_txt_record_n2",utc_nsd_dnssd_remove_txt_record_n2,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
+       {"utc_nsd_dnssd_get_type_p",utc_nsd_dnssd_get_type_p,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
+       {"utc_nsd_dnssd_get_type_n1",utc_nsd_dnssd_get_type_n1,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
+       {"utc_nsd_dnssd_get_type_n2",utc_nsd_dnssd_get_type_n2,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
+       {"utc_nsd_dnssd_get_type_n3",utc_nsd_dnssd_get_type_n3,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
+       {"utc_nsd_dnssd_get_name_p",utc_nsd_dnssd_get_name_p,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
+       {"utc_nsd_dnssd_get_name_n1",utc_nsd_dnssd_get_name_n1,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
+       {"utc_nsd_dnssd_get_name_n2",utc_nsd_dnssd_get_name_n2,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
+       {"utc_nsd_dnssd_get_port_p",utc_nsd_dnssd_get_port_p,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
+       {"utc_nsd_dnssd_get_port_n1",utc_nsd_dnssd_get_port_n1,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
+       {"utc_nsd_dnssd_get_port_n2",utc_nsd_dnssd_get_port_n2,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
+       {"utc_nsd_dnssd_register_local_service_p",utc_nsd_dnssd_register_local_service_p,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
+       {"utc_nsd_dnssd_register_local_service_n",utc_nsd_dnssd_register_local_service_n,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
+       {"utc_nsd_dnssd_deregister_local_service_p",utc_nsd_dnssd_deregister_local_service_p,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
+       {"utc_nsd_dnssd_deregister_local_service_n",utc_nsd_dnssd_deregister_local_service_n,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
+       {NULL, NULL}
+};
+
+#endif // __TCT_NSD_NATIVE_H__
diff --git a/tests/utc-nsd-dnssd-browse.c b/tests/utc-nsd-dnssd-browse.c
new file mode 100644 (file)
index 0000000..c2e9adf
--- /dev/null
@@ -0,0 +1,407 @@
+//
+// Copyright (c) 2014 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Apache License, Version 2.0 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#include "assert_local.h"
+#include <glib.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <system_info.h>
+#include <dns-sd.h>
+#include <dns-sd-internal.h>
+//& set: Nsd-dnssd-browse
+
+static bool g_feature = true;
+#define TIZEN_DNSSD_MOCK_TYPE "_tizen_dnssd_mock._mock"
+
+dnssd_browser_h g_browser_id = 0;
+static GMainLoop* loop = NULL;
+static bool found_callback = false;
+
+static void __found_cb(dnssd_service_state_e state, dnssd_service_h dnssd_service, void *user_data)
+{
+       return;
+}
+
+static gboolean browsing_timeout(gpointer data)
+{
+       g_main_loop_quit(loop);
+       g_main_loop_unref(loop);
+       loop = NULL;
+       return FALSE;
+}
+
+static void dnssd_browsing_found(dnssd_service_state_e state,
+               dnssd_service_h remote_service, void *user_data)
+{
+       char *name = NULL;
+       char *type = NULL;
+       char *ip_v4_address = NULL;
+       char *ip_v6_address = NULL;
+       unsigned char *txt_record = NULL;
+       unsigned short txt_len = 0;
+       int port = 0;
+
+       int ret;
+
+       if (state == DNSSD_SERVICE_STATE_AVAILABLE) {
+
+               ret = dnssd_service_get_name(remote_service, &name);
+               if (ret != DNSSD_ERROR_NONE)
+                       goto out;
+
+               ret = dnssd_service_get_type(remote_service, &type);
+               if (ret != DNSSD_ERROR_NONE)
+                       goto out;
+
+               ret = dnssd_service_get_ip(remote_service, &ip_v4_address, &ip_v6_address);
+               if (ret != DNSSD_ERROR_NONE)
+                       goto out;
+
+               ret = dnssd_service_get_port(remote_service, &port);
+               if (ret != DNSSD_ERROR_NONE)
+                       goto out;
+
+               ret = dnssd_service_get_all_txt_record(remote_service, &txt_len,
+                               (void *)&txt_record);
+               if (ret != DNSSD_ERROR_NONE)
+                       goto out;
+
+               found_callback = true;
+               g_main_loop_quit(loop);
+               g_main_loop_unref(loop);
+       }
+out:
+       g_free(ip_v4_address);
+       g_free(ip_v6_address);
+       g_free(txt_record);
+       g_free(name);
+       g_free(type);
+}
+
+static int wait_for_browse_callback(dnssd_browser_h *browser_id)
+{
+       int timeout_testcase = 0;
+       int ret = 0;
+
+       ret = dnssd_start_browsing_service(TIZEN_DNSSD_MOCK_TYPE, browser_id, dnssd_browsing_found, NULL);
+
+       if (ret == DNSSD_ERROR_NONE) {
+               found_callback = false;
+               loop = g_main_loop_new(NULL, FALSE);
+               timeout_testcase = g_timeout_add(20000, browsing_timeout, loop);
+               g_main_loop_run(loop);
+               g_source_remove(timeout_testcase);
+       }
+
+       if (!found_callback)
+                       ret = -1;
+
+       return ret;
+}
+
+/**
+ * @function           utc_nsd_dnssd_browse_startup
+ * @since_tizen                3.0
+ * @description                Initializes DNSSD. Called before each test
+ * @parameter          NA
+ * @return                     NA
+ */
+void utc_nsd_dnssd_browse_startup(void)
+{
+       int ret = DNSSD_ERROR_NONE;
+       ret = system_info_get_platform_bool("http://tizen.org/feature/network.service_discovery.dnssd", &g_feature);
+
+       if (SYSTEM_INFO_ERROR_NONE != ret) {
+               fprintf(stderr, "system_info_get_platform_bool() Fail(%d)\n", ret);
+               return;
+       }
+
+       if (g_feature == true) {
+               ret = dnssd_initialize();
+               if (ret != DNSSD_ERROR_NONE) {
+                       fprintf(stderr, "dnssd_initialize() Fail(%d)", ret);
+                       return;
+               }
+       }
+}
+
+/**
+ * @function           utc_nsd_dnssd_browse_cleanup
+ * @since_tizen                3.0
+ * @description                Deinitialize DNSSD. Called after each test
+ * @parameter          NA
+ * @return                     NA
+ */
+void utc_nsd_dnssd_browse_cleanup(void)
+{
+       int ret = DNSSD_ERROR_NONE;
+
+       if (g_feature == true) {
+               ret = dnssd_deinitialize();
+               if (ret != DNSSD_ERROR_NONE) {
+                       fprintf(stderr, "dnssd_deinitialize() Fail(%d)", ret);
+                       return;
+               }
+       }
+}
+
+
+int utc_nsd_dnssd_browsing_service_full_p(void)
+{
+       int ret = DNSSD_ERROR_NONE;
+       dnssd_browser_h browser_id = 0;
+
+       if (g_feature == false) {
+               ret = dnssd_start_browsing_service(NULL, NULL, NULL, NULL);
+               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       ret = wait_for_browse_callback(&browser_id);
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       dnssd_stop_browsing_service(browser_id);
+       return 0;
+}
+
+/**
+ * @testcase           utc_nsd_dnssd_start_browsing_service_p
+ * @since_tizen                3.0
+ * @type                       Positive
+ * @description                Start browsing DNSSD services
+ * @scenario           Start browsing DNSSD services with a service type
+ *                                     Ensure no error
+ */
+int utc_nsd_dnssd_start_browsing_service_p(void)
+{
+       int ret = DNSSD_ERROR_NONE;
+       dnssd_browser_h browser_id = 0;
+
+       if (g_feature == false) {
+               ret = dnssd_start_browsing_service(NULL, NULL, NULL, NULL);
+               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       ret = dnssd_start_browsing_service("_ftp._tcp", &browser_id, &__found_cb, NULL);
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       dnssd_stop_browsing_service(browser_id);
+       return 0;
+}
+
+/**
+ * @testcase           utc_nsd_dnssd_start_browsing_service_n
+ * @since_tizen                3.0
+ * @type                       Negative
+ * @description                Verify dnssd_start_browsing_service by passing invalid browser handle
+ * @scenario           Pass NULL as a browser handle
+ *                                     Return value should be DNSSD_ERROR_INVALID_PARAMETER
+ */
+int utc_nsd_dnssd_start_browsing_service_n(void)
+{
+       int ret = DNSSD_ERROR_NONE;
+
+       if (g_feature == false) {
+               ret = dnssd_start_browsing_service(NULL, NULL, NULL, NULL);
+               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       ret = dnssd_start_browsing_service("_ftp._tcp", NULL, &__found_cb, NULL);
+       assert_eq(ret, DNSSD_ERROR_INVALID_PARAMETER);
+       return 0;
+}
+
+/**
+ * @testcase           utc_nsd_dnssd_stop_browsing_service_p
+ * @since_tizen                3.0
+ * @type                       Positive
+ * @description                Stop browsing DNSSD services
+ * @scenario           Start browsing DNSSD services with a service type
+ *                                     Stop browsing with valid browser handle
+ *                                     Ensure no error
+ */
+int utc_nsd_dnssd_stop_browsing_service_p(void)
+{
+       int ret = DNSSD_ERROR_NONE;
+       dnssd_browser_h browser_id = 0;
+
+       if (g_feature == false) {
+               ret = dnssd_stop_browsing_service(0);
+               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       ret = dnssd_start_browsing_service("_ftp._tcp", &browser_id, &__found_cb, NULL);
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       dnssd_stop_browsing_service(browser_id);
+       assert_eq(ret, DNSSD_ERROR_NONE);
+       return 0;
+}
+
+/**
+ * @testcase           utc_nsd_dnssd_stop_browsing_service_n
+ * @since_tizen                3.0
+ * @type                       Negative
+ * @description                Verify dnssd_stop_browsing_service by passing invalid browser handle
+ * @scenario           Start browsing DNSSD services with a service target
+ *                                     Stop browsing by passing an invalid browser handle
+ *                                     Return value should be DNSSD_ERROR_SERVICE_NOT_FOUND
+ */
+int utc_nsd_dnssd_stop_browsing_service_n(void)
+{
+       int ret = DNSSD_ERROR_NONE;
+       dnssd_browser_h browser_id = 0;
+
+       if (g_feature == false) {
+               ret = dnssd_stop_browsing_service(0);
+               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       ret = dnssd_start_browsing_service("_ftp._tcp", &browser_id, &__found_cb, NULL);
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       ret = dnssd_stop_browsing_service(0);
+       assert_eq(ret, DNSSD_ERROR_SERVICE_NOT_FOUND);
+
+       dnssd_stop_browsing_service(browser_id);
+
+       return 0;
+}
+
+int utc_nsd_dnssd_start_browsing_service_on_interface_p(void)
+{
+       int ret = DNSSD_ERROR_NONE;
+       dnssd_browser_h browser_id = 0;
+
+       if (g_feature == false) {
+               ret = dnssd_start_browsing_service_on_interface(NULL, NULL, NULL, NULL, NULL);
+               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       ret = dnssd_start_browsing_service_on_interface("_ftp._tcp", "wlan0", &browser_id, &__found_cb, NULL);
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       dnssd_stop_browsing_service(browser_id);
+       assert_eq(ret, DNSSD_ERROR_NONE);
+       return 0;
+}
+
+int utc_nsd_dnssd_start_browsing_service_on_interface_n1(void)
+{
+       int ret = DNSSD_ERROR_NONE;
+       dnssd_browser_h browser_id = 0;
+
+       if (g_feature == false) {
+               ret = dnssd_start_browsing_service_on_interface(NULL, NULL, NULL, NULL, NULL);
+               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       dnssd_deinitialize();
+
+       ret = dnssd_start_browsing_service_on_interface("_ftp._tcp", "wlan0", &browser_id, &__found_cb, NULL);
+       assert_eq(ret, DNSSD_ERROR_NOT_INITIALIZED);
+
+       dnssd_initialize();
+       return 0;
+}
+
+int utc_nsd_dnssd_start_browsing_service_on_interface_n2(void)
+{
+       int ret = DNSSD_ERROR_NONE;
+
+       if (g_feature == false) {
+               ret = dnssd_start_browsing_service(NULL, NULL, NULL, NULL);
+               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       ret = dnssd_start_browsing_service_on_interface("_ftp._tcp", "wlan0", NULL, &__found_cb, NULL);
+       assert_eq(ret, DNSSD_ERROR_INVALID_PARAMETER);
+       return 0;
+}
+
+int utc_nsd_dnssd_start_browsing_service_on_interface_n3(void)
+{
+       int ret = DNSSD_ERROR_NONE;
+       dnssd_browser_h browser_id = 0;
+
+       if (g_feature == false) {
+               ret = dnssd_start_browsing_service(NULL, NULL, NULL, NULL);
+               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       ret = dnssd_start_browsing_service_on_interface("_ftp._tcp", NULL, &browser_id, &__found_cb, NULL);
+       assert_eq(ret, DNSSD_ERROR_INVALID_PARAMETER);
+       return 0;
+}
+/**
+ * @testcase           utc_nsd_dnssd_service_get_ip_n1
+ * @since_tizen                3.0
+ * @type                       Negative
+ * @description                Verify dnssd_service_get_ip by passing invalid browser handle
+ * @scenario           get IP address by invalid browser handle
+ *                                     Return value should be DNSSD_ERROR_SERVICE_NOT_FOUND
+ */
+int utc_nsd_dnssd_service_get_ip_n1(void)
+{
+       int ret = DNSSD_ERROR_NONE;
+       dnssd_service_h service_id = 0;
+       char *ip_v4_address = NULL;
+
+       if (g_feature == false) {
+               ret = dnssd_service_get_ip(service_id, NULL, NULL);
+               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       ret = dnssd_service_get_ip(service_id, &ip_v4_address, NULL);
+       assert_eq(ret, DNSSD_ERROR_SERVICE_NOT_FOUND);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_nsd_dnssd_service_get_ip_n2
+ * @since_tizen                3.0
+ * @type                       Negative
+ * @description                Verify dnssd_service_get_ip by passing invalid parameter
+ * @scenario           get IP address by invalid parameter
+ *                                     Return value should be DNSSD_ERROR_INVALID_PARAMETER
+ */
+int utc_nsd_dnssd_service_get_ip_n2(void)
+{
+       int ret = DNSSD_ERROR_NONE;
+       dnssd_service_h service_id = 0;
+
+       if (g_feature == false) {
+               ret = dnssd_service_get_ip(service_id, NULL, NULL);
+               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       ret = dnssd_service_get_ip(service_id, NULL, NULL);
+       assert_eq(ret, DNSSD_ERROR_INVALID_PARAMETER);
+
+       return 0;
+}
diff --git a/tests/utc-nsd-dnssd-register.c b/tests/utc-nsd-dnssd-register.c
new file mode 100644 (file)
index 0000000..e40bd55
--- /dev/null
@@ -0,0 +1,1816 @@
+//
+// Copyright (c) 2020 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Apache License, Version 2.0 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#include "assert_local.h"
+#include <glib.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <system_info.h>
+#include <dns-sd.h>
+#include <dns-sd-internal.h>
+
+static GMainLoop* loop = NULL;
+static bool registered_callback = false;
+static bool g_feature = true;
+
+static void __registered_cb(dnssd_error_e result,
+               dnssd_service_h dnssd_service, void *user_data)
+{
+       return;
+}
+
+static gboolean register_timeout(gpointer data)
+{
+       registered_callback= false;
+       g_main_loop_quit(loop);
+       g_main_loop_unref(loop);
+       loop = NULL;
+       return FALSE;
+}
+
+static void dnssd_register_reply(dnssd_error_e result,
+               dnssd_service_h local_service, void *user_data)
+{
+       if (result == DNSSD_ERROR_NONE) {
+               registered_callback = true;
+               g_main_loop_quit(loop);
+               g_main_loop_unref(loop);
+       }
+}
+
+static int wait_for_registered_callback(dnssd_service_h local_service)
+{
+       int timeout_testcase = 0;
+       int ret;
+
+       ret = dnssd_register_local_service(local_service, dnssd_register_reply, NULL);
+
+       if (ret == DNSSD_ERROR_NONE)
+       {
+               registered_callback = false;
+               loop = g_main_loop_new(NULL, FALSE);
+               timeout_testcase = g_timeout_add(20000, register_timeout, loop);
+               g_main_loop_run(loop);
+               g_source_remove(timeout_testcase);
+
+               if (!registered_callback)
+               {
+                               ret = -1;
+               }
+       }
+       return ret;
+}
+
+/**
+ * @function           utc_nsd_dnssd_register_startup
+ * @since_tizen                3.0
+ * @description                Initializes DNSSD. Called before each test
+ * @parameter          NA
+ * @return                     NA
+ */
+void utc_nsd_dnssd_register_startup(void)
+{
+       int ret = DNSSD_ERROR_NONE;
+       ret = system_info_get_platform_bool("http://tizen.org/feature/network.service_discovery.dnssd", &g_feature);
+
+       if (SYSTEM_INFO_ERROR_NONE != ret) {
+               fprintf(stderr, "system_info_get_platform_bool() Fail(%d)\n", ret);
+               return;
+       }
+
+       if (g_feature == true) {
+               ret = dnssd_initialize();
+               if (ret != DNSSD_ERROR_NONE) {
+                       fprintf(stderr, "dnssd_initialize() Fail(%d)", ret);
+                       return;
+               }
+       }
+}
+
+/**
+ * @function           utc_nsd_dnssd_register_cleanup
+ * @since_tizen                3.0
+ * @description                Deinitialize DNSSD. Called after each test
+ * @parameter          NA
+ * @return                     NA
+ */
+void utc_nsd_dnssd_register_cleanup(void)
+{
+       if (g_feature == true) {
+               dnssd_deinitialize();
+       }
+}
+
+/**
+ * @testcase           utc_nsd_dnssd_initialize_p
+ * @since_tizen                3.0
+ * @type                       Positive
+ * @description                Initialize DNSSD.
+ * @scenario           Initialize DNSSD.
+ *                                     Ensure no error
+ */
+int utc_nsd_dnssd_initialize_p(void)
+{
+       int ret = DNSSD_ERROR_NONE;
+
+       if (g_feature == false) {
+               ret = dnssd_initialize();
+               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+       dnssd_deinitialize();
+
+       ret = dnssd_initialize();
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_nsd_dnssd_initialize_n
+ * @since_tizen                3.0
+ * @type                       Negative
+ * @description                Verify dnssd_deinitialize after DNSSD is initialized.
+ * @scenario           initialize again.
+ *                                     Return value should be DNSSD_ERROR_INVALID_OPERATION.
+ */
+int utc_nsd_dnssd_initialize_n(void)
+{
+       int ret = DNSSD_ERROR_NONE;
+
+       if (g_feature == false) {
+               ret = dnssd_initialize();
+               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       ret = dnssd_initialize();
+       assert_eq(ret, DNSSD_ERROR_INVALID_OPERATION);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_nsd_dnssd_deinitialize_p
+ * @since_tizen                3.0
+ * @type                       Positive
+ * @description                Deinitialize DNSSD.
+ * @scenario           Deinitialize DNSSD.
+ *                                     Ensure no error
+ */
+int utc_nsd_dnssd_deinitialize_p(void)
+{
+       int ret = DNSSD_ERROR_NONE;
+
+       if (g_feature == false) {
+               ret = dnssd_deinitialize();
+               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+       ret = dnssd_deinitialize();
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       dnssd_initialize();
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_nsd_dnssd_deinitialize_n
+ * @since_tizen                3.0
+ * @type                       Negative
+ * @description                Verify dnssd_deinitialize before DNSSD is initialized.
+ * @scenario           Deinitialize DNSSD and deinitialize again.
+ *                                     Return value should be DNSSD_ERROR_NOT_INITIALIZED.
+ */
+int utc_nsd_dnssd_deinitialize_n(void)
+{
+       int ret = DNSSD_ERROR_NONE;
+
+       if (g_feature == false) {
+               ret = dnssd_deinitialize();
+               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+       dnssd_deinitialize();
+
+       ret = dnssd_deinitialize();
+       assert_eq(ret, DNSSD_ERROR_NOT_INITIALIZED);
+
+       dnssd_initialize();
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_nsd_dnssd_create_local_service_p
+ * @since_tizen                3.0
+ * @type                       Positive
+ * @description                Create a DNSSD local service handle.
+ * @scenario           Create and Destroy a DNSSD local service handle.
+ *                                     Ensure no error
+ */
+int utc_nsd_dnssd_create_local_service_p(void)
+{
+       int ret = DNSSD_ERROR_NONE;
+       static dnssd_service_h serv_id;
+
+       if (g_feature == false) {
+               ret = dnssd_create_local_service(NULL, 0);
+               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       ret = dnssd_create_local_service("_ftp._tcp", &serv_id);
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       dnssd_destroy_local_service(serv_id);
+
+       return 0;
+}
+
+int utc_nsd_dnssd_create_local_service_n1(void)
+{
+       int ret = DNSSD_ERROR_NONE;
+       static dnssd_service_h serv_id;
+
+       if (g_feature == false) {
+               ret = dnssd_create_local_service(NULL, 0);
+               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       dnssd_deinitialize();
+
+       ret = dnssd_create_local_service("_ftp._tcp", &serv_id);
+       assert_eq(ret, DNSSD_ERROR_NOT_INITIALIZED);
+
+       dnssd_initialize();
+       return 0;
+}
+
+/**
+ * @testcase           utc_nsd_dnssd_create_local_service_n2
+ * @since_tizen                3.0
+ * @type                       Negative
+ * @description                Verify dnssd_create_local_service by passing an invalid parameter.
+ * @scenario           Pass NULL as a service handle parameter.
+ *                                     Return value should be DNSSD_ERROR_INVALID_PARAMETER.
+ */
+int utc_nsd_dnssd_create_local_service_n2(void)
+{
+       int ret = DNSSD_ERROR_NONE;
+
+       if (g_feature == false) {
+               ret = dnssd_create_local_service(NULL, 0);
+               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       ret = dnssd_create_local_service("_ftp._tcp", NULL);
+       assert_eq(ret, DNSSD_ERROR_INVALID_PARAMETER);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_nsd_dnssd_destroy_local_service_p
+ * @since_tizen                3.0
+ * @type                       Positive
+ * @description                Destroy a DNSSD local service handle.
+ * @scenario           Create and Destroy a DNSSD local service handle.
+ *                                     Ensure no error
+ */
+int utc_nsd_dnssd_destroy_local_service_p(void)
+{
+       int ret = DNSSD_ERROR_NONE;
+       static dnssd_service_h serv_id;
+
+       if (g_feature == false) {
+               ret = dnssd_destroy_local_service(0);
+               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       ret = dnssd_create_local_service("_ftp._tcp", &serv_id);
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       ret = dnssd_destroy_local_service(serv_id);
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       return 0;
+}
+
+int utc_nsd_dnssd_detroy_local_service_n1(void)
+{
+       int ret = DNSSD_ERROR_NONE;
+       static dnssd_service_h serv_id = 0;
+
+       if (g_feature == false) {
+               ret = dnssd_create_local_service(NULL, 0);
+               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       dnssd_deinitialize();
+
+       ret = dnssd_destroy_local_service(serv_id);
+       assert_eq(ret, DNSSD_ERROR_NOT_INITIALIZED);
+
+       dnssd_initialize();
+       return 0;
+}
+
+/**
+ * @testcase           utc_nsd_dnssd_destroy_local_service_n2
+ * @since_tizen                3.0
+ * @type                       Negative
+ * @description                Verify dnssd_destroy_local_service by passing invalid service handle.
+ * @scenario           Pass an invalid service handle which has not been created before.
+ *                                     Return value should be DNSSD_ERROR_SERVICE_NOT_FOUND.
+ */
+int utc_nsd_dnssd_detroy_local_service_n2(void)
+{
+       int ret = DNSSD_ERROR_NONE;
+       static dnssd_service_h serv_id;
+
+       if (g_feature == false) {
+               ret = dnssd_destroy_local_service(0);
+               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       ret = dnssd_create_local_service("_ftp._tcp", &serv_id);
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       ret = dnssd_destroy_local_service(serv_id + 1);
+       assert_eq(ret, DNSSD_ERROR_SERVICE_NOT_FOUND);
+
+       dnssd_destroy_local_service(serv_id);
+
+       return 0;
+
+}
+/**
+ * @testcase           utc_nsd_dnssd_set_name_p
+ * @since_tizen                3.0
+ * @type                       Positive
+ * @description                Set the service name of a DNSSD local service.
+ * @scenario           Create a DNSSD local service and set the service name of the service.
+ *                                     Ensure no error
+ */
+int utc_nsd_dnssd_set_name_p(void)
+{
+       int ret = DNSSD_ERROR_NONE;
+       static dnssd_service_h serv_id;
+
+       if (g_feature == false) {
+               ret = dnssd_service_set_name(0, NULL);
+               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       dnssd_create_local_service("_ftp._tcp", &serv_id);
+
+       ret = dnssd_service_set_name(serv_id, "test-ftp");
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       dnssd_destroy_local_service(serv_id);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_nsd_dnssd_set_name_n1
+ * @since_tizen                3.0
+ * @type                       Negative
+ * @description                Verify dnssd_service_set_name by passing invalid service handle.
+ * @scenario           Pass an invalid service handle which has not been created before.
+ *                                     Return value should be DNSSD_ERROR_SERVICE_NOT_FOUND.
+ */
+int utc_nsd_dnssd_set_name_n1(void)
+{
+       int ret = DNSSD_ERROR_NONE;
+       static dnssd_service_h serv_id;
+
+       if (g_feature == false) {
+               ret = dnssd_service_set_name(0, NULL);
+               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       dnssd_create_local_service("_ftp._tcp", &serv_id);
+
+       ret = dnssd_service_set_name(serv_id + 1, "test-ftp");
+       assert_eq(ret, DNSSD_ERROR_SERVICE_NOT_FOUND);
+
+       dnssd_destroy_local_service(serv_id);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_nsd_dnssd_set_name_n2
+ * @since_tizen                3.0
+ * @type                       Negative
+ * @description                Verify dnssd_service_set_name by passing invalid service name.
+ * @scenario           Create a DNSSD service and set a service name.
+ *                                     Create another DNSSD service and set the same service name as NULL.
+ *                                     Return value should be DNSSD_ERROR_INVALID_PARAMETER.
+ */
+int utc_nsd_dnssd_set_name_n2(void)
+{
+       int ret = DNSSD_ERROR_NONE;
+       static dnssd_service_h serv_id;
+
+       if (g_feature == false) {
+               ret = dnssd_service_set_name(0, NULL);
+               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       dnssd_create_local_service("_ftp._tcp", &serv_id);
+       ret = dnssd_service_set_name(serv_id, NULL);
+       assert_eq(ret, DNSSD_ERROR_INVALID_PARAMETER);
+
+       dnssd_destroy_local_service(serv_id);
+
+       return 0;
+}
+
+int utc_nsd_dnssd_set_name_n3(void)
+{
+       int ret = DNSSD_ERROR_NONE;
+       static dnssd_service_h serv_id;
+
+       if (g_feature == false) {
+               ret = dnssd_service_set_name(0, NULL);
+               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       dnssd_deinitialize();
+
+       ret = dnssd_service_set_name(serv_id, "test-ftp");
+       assert_eq(ret, DNSSD_ERROR_NOT_INITIALIZED);
+
+       dnssd_initialize();
+       return 0;
+}
+
+/**
+ * @testcase           utc_nsd_dnssd_set_port_p
+ * @since_tizen                3.0
+ * @type                       Positive
+ * @description                Set the port number of a DNSSD local service.
+ * @scenario           Create a DNSSD local service and set the port number of the service.
+ *                                     Ensure no error
+ */
+int utc_nsd_dnssd_set_port_p(void)
+{
+       int ret = DNSSD_ERROR_NONE;
+       static dnssd_service_h serv_id;
+
+       if (g_feature == false) {
+               ret = dnssd_service_set_port(0, 0);
+               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       dnssd_create_local_service("_ftp._tcp", &serv_id);
+
+       ret = dnssd_service_set_port(serv_id, 12345);
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       dnssd_destroy_local_service(serv_id);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_nsd_dnssd_set_port_n1
+ * @since_tizen                3.0
+ * @type                       Negative
+ * @description                Verify dnssd_service_set_port by passing invalid service handle.
+ * @scenario           Pass an invalid service handle which has not been created before.
+ *                                     Return value should be DNSSD_ERROR_SERVICE_NOT_FOUND.
+ */
+int utc_nsd_dnssd_set_port_n1(void)
+{
+       int ret = DNSSD_ERROR_NONE;
+       static dnssd_service_h serv_id;
+
+       if (g_feature == false) {
+               ret = dnssd_service_set_port(0, 0);
+               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       dnssd_create_local_service("_ftp._tcp", &serv_id);
+
+       ret = dnssd_service_set_port(serv_id + 1, 1234);
+       assert_eq(ret, DNSSD_ERROR_SERVICE_NOT_FOUND);
+
+       dnssd_destroy_local_service(serv_id);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_nsd_dnssd_set_port_n2
+ * @since_tizen                3.0
+ * @type                       Negative
+ * @description                Verify dnssd_service_set_port by passing an invalid port number
+ * @scenario           Create a DNSSD service and set a port number as an invalid value.
+ *                                     Return value should be DNSSD_ERROR_INVALID_PARAMETER.
+ */
+int utc_nsd_dnssd_set_port_n2(void)
+{
+       int ret = DNSSD_ERROR_NONE;
+       static dnssd_service_h serv_id;
+
+       if (g_feature == false) {
+               ret = dnssd_service_set_port(0, 0);
+               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       dnssd_create_local_service("_ftp._tcp", &serv_id);
+       ret = dnssd_service_set_port(serv_id, -1234);
+       assert_eq(ret, DNSSD_ERROR_INVALID_PARAMETER);
+
+       dnssd_destroy_local_service(serv_id);
+       return 0;
+}
+
+int utc_nsd_dnssd_set_port_n3(void)
+{
+       int ret = DNSSD_ERROR_NONE;
+       static dnssd_service_h serv_id;
+
+       if (g_feature == false) {
+               ret = dnssd_service_set_port(0, 0);
+               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       dnssd_deinitialize();
+
+       ret = dnssd_service_set_port(serv_id, 12345);
+       assert_eq(ret, DNSSD_ERROR_NOT_INITIALIZED);
+
+       dnssd_initialize();
+       return 0;
+}
+
+int utc_nsd_dnssd_set_interface_p(void)
+{
+       int ret = DNSSD_ERROR_NONE;
+       static dnssd_service_h serv_id;
+
+       if (g_feature == false) {
+               ret = dnssd_service_set_interface(0, NULL);
+               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       dnssd_create_local_service("_ftp._tcp", &serv_id);
+
+       ret = dnssd_service_set_interface(serv_id, "wlan0");
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       dnssd_destroy_local_service(serv_id);
+
+       return 0;
+}
+
+int utc_nsd_dnssd_set_interface_n1(void)
+{
+       int ret = DNSSD_ERROR_NONE;
+       static dnssd_service_h serv_id;
+
+       if (g_feature == false) {
+               ret = dnssd_service_set_interface(0, NULL);
+               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       dnssd_create_local_service("_ftp._tcp", &serv_id);
+
+       ret = dnssd_service_set_interface(serv_id + 1, "wlan0");
+       assert_eq(ret, DNSSD_ERROR_SERVICE_NOT_FOUND);
+
+       dnssd_destroy_local_service(serv_id);
+
+       return 0;
+}
+
+int utc_nsd_dnssd_set_interface_n2(void)
+{
+       int ret = DNSSD_ERROR_NONE;
+       static dnssd_service_h serv_id;
+
+       if (g_feature == false) {
+               ret = dnssd_service_set_interface(0, NULL);
+               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       dnssd_create_local_service("_ftp._tcp", &serv_id);
+       ret = dnssd_service_set_interface(serv_id, NULL);
+       assert_eq(ret, DNSSD_ERROR_INVALID_PARAMETER);
+
+       dnssd_destroy_local_service(serv_id);
+       return 0;
+}
+
+int utc_nsd_dnssd_set_interface_n3(void)
+{
+       int ret = DNSSD_ERROR_NONE;
+       static dnssd_service_h serv_id;
+
+       if (g_feature == false) {
+               ret = dnssd_service_set_interface(0, NULL);
+               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       dnssd_deinitialize();
+
+       ret = dnssd_service_set_interface(serv_id, NULL);
+       assert_eq(ret, DNSSD_ERROR_NOT_INITIALIZED);
+
+       dnssd_initialize();
+       return 0;
+}
+
+/**
+ * @testcase           utc_nsd_dnssd_set_record_p
+ * @since_tizen                3.0
+ * @type                       Positive
+ * @description                Verify dnssd_service_set_record by setting dns resource record
+ * @scenario           Create a DNSSD service and set a dns resource record.
+ *                                     Ensure no error.
+ */
+int utc_nsd_dnssd_set_record_p(void)
+{
+       int ret = DNSSD_ERROR_NONE;
+       static dnssd_service_h serv_id;
+       char buff[32] = {0,};
+       char *value = "http://www.tizen.org";
+
+       if (g_feature == false) {
+               ret = dnssd_service_set_record(0, 0, 0, NULL);
+               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       dnssd_create_local_service("_ftp._tcp", &serv_id);
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       ret = dnssd_service_set_name(serv_id, "Tizen");
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       ret = dnssd_service_set_port(serv_id, 12345);
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       ret = wait_for_registered_callback(serv_id);
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       g_strlcpy(buff + 1, value, sizeof(buff));
+       buff[0] = strlen(value);
+       ret = dnssd_service_set_record(serv_id, 16, buff[0] + 1, (void *)buff);
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       ret = dnssd_service_set_record(serv_id, 16, buff[0] + 1, (void *)buff);
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       dnssd_service_unset_record(serv_id, 16);
+       dnssd_deregister_local_service(serv_id);
+       dnssd_destroy_local_service(serv_id);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_nsd_dnssd_set_record_n
+ * @since_tizen                3.0
+ * @type                       Negative
+ * @description                Verify dnssd_service_set_record by setting dns resource record
+ * @scenario           Create a DNSSD service and pass invalid service ID.
+ *                                     Return value should be DNSSD_ERROR_SERVICE_NOT_FOUND.
+ */
+int utc_nsd_dnssd_set_record_n1(void)
+{
+       int ret = DNSSD_ERROR_NONE;
+       static dnssd_service_h serv_id;
+       char buff[32] = {0,};
+       char *value = "http://www.tizen.org";
+
+       if (g_feature == false) {
+               ret = dnssd_service_set_record(0, 0, 0, NULL);
+               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       dnssd_create_local_service("_ftp._tcp", &serv_id);
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       ret = dnssd_service_set_name(serv_id, "Tizen");
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       ret = dnssd_service_set_port(serv_id, 12345);
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       ret = wait_for_registered_callback(serv_id);
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       g_strlcpy(buff + 1, value, sizeof(buff));
+       buff[0] = strlen(value);
+
+       ret = dnssd_service_set_record(serv_id + 1, 16, buff[0], (void *)buff);
+       assert_eq(ret, DNSSD_ERROR_SERVICE_NOT_FOUND);
+
+       dnssd_service_unset_record(serv_id, 16);
+       dnssd_deregister_local_service(serv_id);
+       dnssd_destroy_local_service(serv_id);
+
+       return 0;
+}
+
+int utc_nsd_dnssd_set_record_n2(void)
+{
+       int ret = DNSSD_ERROR_NONE;
+       static dnssd_service_h serv_id;
+       char buff[32] = {0,};
+       char *value = "http://www.tizen.org";
+
+       if (g_feature == false) {
+               ret = dnssd_service_set_record(0, 0, 0, NULL);
+               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       dnssd_deinitialize();
+
+       g_strlcpy(buff + 1, value, sizeof(buff));
+       buff[0] = strlen(value);
+
+       ret = dnssd_service_set_record(serv_id, 16, buff[0], (void *)buff);
+       assert_eq(ret, DNSSD_ERROR_NOT_INITIALIZED);
+
+       dnssd_initialize();
+
+       return 0;
+}
+/**
+ * @testcase           utc_nsd_dnssd_unset_record_p
+ * @since_tizen                3.0
+ * @type                       Positive
+ * @description                Verify dnssd_service_unset_record by removing dns resource record
+ * @scenario           Unset DNS resource record after creating & setting a dns resource record.
+ *                                     Ensure no error.
+ */
+int utc_nsd_dnssd_unset_record_p(void)
+{
+       int ret = DNSSD_ERROR_NONE;
+       static dnssd_service_h serv_id;
+       char buff[32] = {0,};
+       char *value = "http://www.tizen.org";
+
+       if (g_feature == false) {
+               ret = dnssd_service_unset_record(0, 0);
+               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       dnssd_create_local_service("_ftp._tcp", &serv_id);
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       ret = dnssd_service_set_name(serv_id, "Tizen");
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       ret = dnssd_service_set_port(serv_id, 12345);
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       ret = wait_for_registered_callback(serv_id);
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       g_strlcpy(buff + 1, value, sizeof(buff));
+       buff[0] = strlen(value);
+
+       ret = dnssd_service_set_record(serv_id, 16, buff[0] + 1, (void *)buff);
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       ret = dnssd_service_unset_record(serv_id, 16);
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       dnssd_deregister_local_service(serv_id);
+       dnssd_destroy_local_service(serv_id);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_nsd_dnssd_unset_record_n1
+ * @since_tizen                3.0
+ * @type                       Negative
+ * @description                Verify dnssd_service_set_record by setting dns resource record
+ * @scenario           Create a DNSSD service, set resource record and pass invalid service ID.
+ *                                     Return value should be DNSSD_ERROR_SERVICE_NOT_FOUND.
+ */
+int utc_nsd_dnssd_unset_record_n1(void)
+{
+       int ret = DNSSD_ERROR_NONE;
+       static dnssd_service_h serv_id;
+       char buff[32] = {0,};
+       char *value = "http://www.tizen.org";
+
+       if (g_feature == false) {
+               ret = dnssd_service_unset_record(0, 0);
+               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       dnssd_create_local_service("_ftp._tcp", &serv_id);
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       ret = dnssd_service_set_name(serv_id, "Tizen");
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       ret = dnssd_service_set_port(serv_id, 12345);
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       ret = wait_for_registered_callback(serv_id);
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       g_strlcpy(buff + 1, value, sizeof(buff));
+       buff[0] = strlen(value);
+
+       ret = dnssd_service_set_record(serv_id, 16, buff[0] + 1, (void *)buff);
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       ret = dnssd_service_unset_record(serv_id + 1, 16);
+       assert_eq(ret, DNSSD_ERROR_SERVICE_NOT_FOUND);
+
+       dnssd_service_unset_record(serv_id, 16);
+       dnssd_deregister_local_service(serv_id);
+       dnssd_destroy_local_service(serv_id);
+
+       return 0;
+}
+
+int utc_nsd_dnssd_unset_record_n2(void)
+{
+       int ret = DNSSD_ERROR_NONE;
+       static dnssd_service_h serv_id;
+
+       if (g_feature == false) {
+               ret = dnssd_service_unset_record(0, 0);
+               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       dnssd_create_local_service("_ftp._tcp", &serv_id);
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       ret = dnssd_service_set_name(serv_id, "Tizen");
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       ret = dnssd_service_set_port(serv_id, 12345);
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       ret = wait_for_registered_callback(serv_id);
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       ret = dnssd_service_unset_record(serv_id, 16);
+       assert_eq(ret, DNSSD_ERROR_INVALID_PARAMETER);
+
+       dnssd_service_unset_record(serv_id, 16);
+       dnssd_deregister_local_service(serv_id);
+       dnssd_destroy_local_service(serv_id);
+
+       return 0;
+}
+
+int utc_nsd_dnssd_unset_record_n3(void)
+{
+       int ret = DNSSD_ERROR_NONE;
+       static dnssd_service_h serv_id;
+
+       if (g_feature == false) {
+               ret = dnssd_service_unset_record(0, 0);
+               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       dnssd_deinitialize();
+
+       ret = dnssd_service_unset_record(serv_id, 16);
+       assert_eq(ret, DNSSD_ERROR_NOT_INITIALIZED);
+
+       dnssd_initialize();
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_nsd_dnssd_add_txt_record_p
+ * @since_tizen                3.0
+ * @type                       Positive
+ * @description                Verify dnssd_add_txt_record by setting txt record
+ * @scenario           Create a DNSSD service and set a dns txt record.
+ *                                     Ensure no error.
+ */
+int utc_nsd_dnssd_add_txt_record_p(void)
+{
+       int ret = DNSSD_ERROR_NONE;
+       static dnssd_service_h serv_id;
+       char *key = "path";
+       char *value = "http://www.tizen.org";
+
+       if (g_feature == false) {
+               ret = dnssd_service_add_txt_record(0, NULL, 0, NULL);
+               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       dnssd_create_local_service("_ftp._tcp", &serv_id);
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       ret = dnssd_service_set_name(serv_id, "Tizen");
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       ret = dnssd_service_set_port(serv_id, 12345);
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       ret = wait_for_registered_callback(serv_id);
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       ret = dnssd_service_add_txt_record(serv_id, key, strlen(value), value);
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       ret = dnssd_service_remove_txt_record(serv_id, key);
+
+       dnssd_deregister_local_service(serv_id);
+       dnssd_destroy_local_service(serv_id);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_nsd_dnssd_add_txt_record_n1
+ * @since_tizen                3.0
+ * @type                       Negative
+ * @description                Verify dnssd__add_txt_record by setting txt record
+ * @scenario           Create a DNSSD service and pass invalid service ID.
+ *                                     Return value should be DNSSD_ERROR_SERVICE_NOT_FOUND.
+ */
+int utc_nsd_dnssd_add_txt_record_n1(void)
+{
+       int ret = DNSSD_ERROR_NONE;
+       static dnssd_service_h serv_id;
+       char *key = "path";
+       char *value = "http://www.tizen.org";
+
+       if (g_feature == false) {
+               ret = dnssd_service_add_txt_record(0, NULL, 0, NULL);
+               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       dnssd_create_local_service("_ftp._tcp", &serv_id);
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       ret = dnssd_service_set_name(serv_id, "Tizen");
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       ret = dnssd_service_set_port(serv_id, 12345);
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       ret = wait_for_registered_callback(serv_id);
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       ret = dnssd_service_add_txt_record(serv_id + 1, key, strlen(value), value);
+       assert_eq(ret, DNSSD_ERROR_SERVICE_NOT_FOUND);
+
+       dnssd_deregister_local_service(serv_id);
+       dnssd_destroy_local_service(serv_id);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_nsd_dnssd_add_txt_record_n2
+ * @since_tizen                3.0
+ * @type                       Negative
+ * @description                Verify dnssd_add_txt_record by setting txt record
+ * @scenario           Create a DNSSD service and pass NULL key and NULL value.
+ *                                     Return value should be DNSSD_ERROR_INVALID_PARAMETER.
+ */
+int utc_nsd_dnssd_add_txt_record_n2(void)
+{
+       int ret = DNSSD_ERROR_NONE;
+       static dnssd_service_h serv_id;
+
+       if (g_feature == false) {
+               ret = dnssd_service_add_txt_record(0, NULL, 0, NULL);
+               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       dnssd_create_local_service("_ftp._tcp", &serv_id);
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       ret = dnssd_service_set_name(serv_id, "Tizen");
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       ret = dnssd_service_set_port(serv_id, 12345);
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       ret = wait_for_registered_callback(serv_id);
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       ret = dnssd_service_add_txt_record(serv_id, NULL, 0, NULL);
+       assert_eq(ret, DNSSD_ERROR_INVALID_PARAMETER);
+
+       dnssd_deregister_local_service(serv_id);
+       dnssd_destroy_local_service(serv_id);
+
+       return 0;
+}
+
+int utc_nsd_dnssd_add_txt_record_n3(void)
+{
+       int ret = DNSSD_ERROR_NONE;
+       static dnssd_service_h serv_id;
+       char *key = "path";
+       char *value = "http://www.tizen.org";
+
+       if (g_feature == false) {
+               ret = dnssd_service_add_txt_record(0, NULL, 0, NULL);
+               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       dnssd_create_local_service("_ftp._tcp", &serv_id);
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       ret = dnssd_service_set_name(serv_id, "Tizen");
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       ret = dnssd_service_set_port(serv_id, 12345);
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       ret = wait_for_registered_callback(serv_id);
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       ret = dnssd_service_add_txt_record(serv_id, key, 300, value);
+       assert_eq(ret, DNSSD_ERROR_INVALID_PARAMETER);
+
+       dnssd_deregister_local_service(serv_id);
+       dnssd_destroy_local_service(serv_id);
+
+       return 0;
+}
+
+int utc_nsd_dnssd_add_txt_record_n4(void)
+{
+       int ret = DNSSD_ERROR_NONE;
+       static dnssd_service_h serv_id;
+       char *key = "path";
+       char *value = "http://www.tizen.org";
+
+       if (g_feature == false) {
+               ret = dnssd_service_add_txt_record(0, NULL, 0, NULL);
+               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       dnssd_deinitialize();
+
+       ret = dnssd_service_add_txt_record(serv_id, key, 300, value);
+       assert_eq(ret, DNSSD_ERROR_NOT_INITIALIZED);
+
+       dnssd_initialize();
+
+       return 0;
+}
+/**
+ * @testcase           utc_nsd_dnssd_get_all_txt_record_p
+ * @since_tizen                3.0
+ * @type                       Negative
+ * @description                Verify dnssd_get_all_txt_record
+ * @scenario           Get txt resource record after creating & setting a txt record.
+ *                                     Ensure no error.
+ */
+int utc_nsd_dnssd_get_all_txt_record_p(void)
+{
+       int ret = DNSSD_ERROR_NONE;
+       static dnssd_service_h serv_id;
+       char *key = "path";
+       char *value = "http://www.tizen.org";
+       void *txt_record = NULL;
+       unsigned short length = 0;
+
+       if (g_feature == false) {
+               ret = dnssd_service_get_all_txt_record(0, NULL, NULL);
+               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       dnssd_create_local_service("_ftp._tcp", &serv_id);
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       ret = dnssd_service_set_name(serv_id, "Tizen");
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       ret = dnssd_service_set_port(serv_id, 12345);
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       ret = wait_for_registered_callback(serv_id);
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       ret = dnssd_service_add_txt_record(serv_id, key, strlen(value), value);
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       ret = dnssd_service_get_all_txt_record(serv_id, &length, &txt_record);
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       ret = dnssd_service_remove_txt_record(serv_id, key);
+
+       dnssd_deregister_local_service(serv_id);
+       dnssd_destroy_local_service(serv_id);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_nsd_dnssd_get_all_txt_record_n1
+ * @since_tizen                3.0
+ * @type                       Negative
+ * @description                Verify dnssd_get_all_txt_record
+ * @scenario           Get txt resource record with invalid service ID after creating & setting a txt record.
+ *                                     Return value should be DNSSD_ERROR_SERVICE_NOT_FOUND.
+ */
+int utc_nsd_dnssd_get_all_txt_record_n1(void)
+{
+       int ret = DNSSD_ERROR_NONE;
+       static dnssd_service_h serv_id;
+       char *key = "path";
+       void *txt_record = NULL;
+       unsigned short length = 0;
+
+       if (g_feature == false) {
+               ret = dnssd_service_get_all_txt_record(0, NULL, NULL);
+               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       dnssd_create_local_service("_ftp._tcp", &serv_id);
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       ret = dnssd_service_get_all_txt_record(serv_id + 1, &length, &txt_record);
+       assert_eq(ret, DNSSD_ERROR_SERVICE_NOT_FOUND);
+
+       ret = dnssd_service_remove_txt_record(serv_id, key);
+
+       dnssd_destroy_local_service(serv_id);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_nsd_dnssd_get_all_txt_record_n2
+ * @since_tizen                3.0
+ * @type                       Negative
+ * @description                Verify dnssd_get_all_txt_record
+ * @scenario           Get txt resource record with NULL key after creating & setting a txt record.
+ *                                     Return value should be DNSSD_ERROR_INVALID_PARAMETER.
+ */
+int utc_nsd_dnssd_get_all_txt_record_n2(void)
+{
+       int ret = DNSSD_ERROR_NONE;
+       static dnssd_service_h serv_id;
+       char *key = "path";
+       char *value = "http://www.tizen.org";
+       unsigned short length = 0;
+
+       if (g_feature == false) {
+               ret = dnssd_service_get_all_txt_record(0, NULL, NULL);
+               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       dnssd_create_local_service("_ftp._tcp", &serv_id);
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       ret = dnssd_service_add_txt_record(serv_id, key, strlen(value), value);
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       ret = dnssd_service_get_all_txt_record(serv_id, &length, NULL);
+       assert_eq(ret, DNSSD_ERROR_INVALID_PARAMETER);
+
+       ret = dnssd_service_remove_txt_record(serv_id, key);
+
+       dnssd_destroy_local_service(serv_id);
+
+       return 0;
+}
+
+int utc_nsd_dnssd_get_all_txt_record_n3(void)
+{
+       int ret = DNSSD_ERROR_NONE;
+       static dnssd_service_h serv_id;
+       unsigned short length = 0;
+
+       if (g_feature == false) {
+               ret = dnssd_service_get_all_txt_record(0, NULL, NULL);
+               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+       dnssd_deinitialize();
+
+       ret = dnssd_service_get_all_txt_record(serv_id, &length, NULL);
+       assert_eq(ret, DNSSD_ERROR_NOT_INITIALIZED);
+
+       dnssd_initialize();
+
+       return 0;
+}
+/**
+ * @testcase           utc_nsd_dnssd_remove_txt_record_p
+ * @since_tizen                3.0
+ * @type                       Positive
+ * @description                Verify dnssd_service_remove_txt_record by removing txt record
+ * @scenario           Unset DNS txt record after creating & setting a txt record.
+ *                                     Ensure no error.
+ */
+int utc_nsd_dnssd_remove_txt_record_p(void)
+{
+       int ret = DNSSD_ERROR_NONE;
+       static dnssd_service_h serv_id;
+       char *key = "path";
+       char *value = "http://www.tizen.org";
+
+       if (g_feature == false) {
+               ret = dnssd_service_remove_txt_record(0, NULL);
+               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       dnssd_create_local_service("_ftp._tcp", &serv_id);
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       ret = dnssd_service_set_name(serv_id, "Tizen");
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       ret = dnssd_service_set_port(serv_id, 12345);
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       ret = wait_for_registered_callback(serv_id);
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       ret = dnssd_service_add_txt_record(serv_id, key, strlen(value), value);
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       ret = dnssd_service_remove_txt_record(serv_id, key);
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       dnssd_deregister_local_service(serv_id);
+       dnssd_destroy_local_service(serv_id);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_nsd_dnssd_remove_txt_record_n1
+ * @since_tizen                3.0
+ * @type                       Negative
+ * @description                Verify dnssd_remove_unset_txt_record by removing txt record
+ * @scenario           Unset DNS resource record with invalid service ID after creating & setting a txt record.
+ *                                     Return value should be DNSSD_ERROR_SERVICE_NOT_FOUND.
+ */
+int utc_nsd_dnssd_remove_txt_record_n1(void)
+{
+       int ret = DNSSD_ERROR_NONE;
+       static dnssd_service_h serv_id;
+       char *key = "path";
+       char *value = "http://www.tizen.org";
+
+       if (g_feature == false) {
+               ret = dnssd_service_remove_txt_record(0, NULL);
+               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       dnssd_create_local_service("_ftp._tcp", &serv_id);
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       ret = dnssd_service_set_name(serv_id, "Tizen");
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       ret = dnssd_service_set_port(serv_id, 12345);
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       ret = wait_for_registered_callback(serv_id);
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       ret = dnssd_service_add_txt_record(serv_id, key, strlen(value), value);
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       ret = dnssd_service_remove_txt_record(serv_id + 1, key);
+       assert_eq(ret, DNSSD_ERROR_SERVICE_NOT_FOUND);
+
+       dnssd_service_remove_txt_record(serv_id, NULL);
+       dnssd_deregister_local_service(serv_id);
+       dnssd_destroy_local_service(serv_id);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_nsd_dnssd_remove_txt_record_n2
+ * @since_tizen                3.0
+ * @type                       Negative
+ * @description                Verify dnssd_remove_unset_txt_record by removing txt record
+ * @scenario           Unset DNS resource record with NULL key after creating & setting a txt record.
+ *                                     Return value should be DNSSD_ERROR_SERVICE_NOT_FOUND.
+ */
+int utc_nsd_dnssd_remove_txt_record_n2(void)
+{
+       int ret = DNSSD_ERROR_NONE;
+       static dnssd_service_h serv_id;
+       char *key = "path";
+       char *value = "http://www.tizen.org";
+
+       if (g_feature == false) {
+               ret = dnssd_service_remove_txt_record(0, NULL);
+               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       dnssd_create_local_service("_ftp._tcp", &serv_id);
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       ret = dnssd_service_set_name(serv_id, "Tizen");
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       ret = dnssd_service_set_port(serv_id, 12345);
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       ret = wait_for_registered_callback(serv_id);
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       ret = dnssd_service_add_txt_record(serv_id, key, strlen(value), value);
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       ret = dnssd_service_remove_txt_record(serv_id, NULL);
+       assert_eq(ret, DNSSD_ERROR_INVALID_PARAMETER);
+
+       dnssd_service_remove_txt_record(serv_id, NULL);
+       dnssd_deregister_local_service(serv_id);
+       dnssd_destroy_local_service(serv_id);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_nsd_dnssd_get_type_p
+ * @since_tizen                3.0
+ * @type                       Positive
+ * @description                Get the type of a DNSSD service.
+ * @scenario           Create a DNSSD local service and get the type of a DNSSD service.
+ *                                     Ensure no error
+ */
+int utc_nsd_dnssd_get_type_p(void)
+{
+       int ret = DNSSD_ERROR_NONE;
+       static dnssd_service_h serv_id;
+       char *type = NULL;
+
+       if (g_feature == false) {
+               ret = dnssd_service_get_type(0, NULL);
+               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       dnssd_create_local_service("_ftp._tcp", &serv_id);
+
+       ret = dnssd_service_get_type(serv_id, &type);
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       dnssd_destroy_local_service(serv_id);
+       g_free(type);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_nsd_dnssd_get_type_n1
+ * @since_tizen                3.0
+ * @type                       Negative
+ * @description                Verify dnssd_service_get_type by passing invalid service handle.
+ * @scenario           Pass an invalid service handle which has not been created before.
+ *                                     Return value should be DNSSD_ERROR_SERVICE_NOT_FOUND.
+ */
+int utc_nsd_dnssd_get_type_n1(void)
+{
+       int ret = DNSSD_ERROR_NONE;
+       static dnssd_service_h serv_id;
+       char *type = NULL;
+
+       if (g_feature == false) {
+               ret = dnssd_service_get_type(0, NULL);
+               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       dnssd_create_local_service("_ftp._tcp", &serv_id);
+
+       ret = dnssd_service_get_type(serv_id + 1, &type);
+       assert_eq(ret, DNSSD_ERROR_SERVICE_NOT_FOUND);
+
+       dnssd_destroy_local_service(serv_id);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_nsd_dnssd_get_type_n2
+ * @since_tizen                3.0
+ * @type                       Negative
+ * @description                Verify dnssd_service_get_type by passing an invalid parameter.
+ * @scenario           Pass NULL as a service_type parameter for getting the type of a DNSSD service.
+ *                                     Return value should be DNSSD_ERROR_INVALID_PARAMETER.
+ */
+int utc_nsd_dnssd_get_type_n2(void)
+{
+       int ret = DNSSD_ERROR_NONE;
+       static dnssd_service_h serv_id;
+
+       if (g_feature == false) {
+               ret = dnssd_service_get_type(0, NULL);
+               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       dnssd_create_local_service("_ftp._tcp", &serv_id);
+       ret = dnssd_service_get_type(serv_id, NULL);
+       assert_eq(ret, DNSSD_ERROR_INVALID_PARAMETER);
+
+       dnssd_destroy_local_service(serv_id);
+
+       return 0;
+}
+
+int utc_nsd_dnssd_get_type_n3(void)
+{
+       int ret = DNSSD_ERROR_NONE;
+       static dnssd_service_h serv_id;
+       char *type = NULL;
+
+       if (g_feature == false) {
+               ret = dnssd_service_get_type(0, NULL);
+               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       dnssd_deinitialize();
+
+       ret = dnssd_service_get_type(serv_id, &type);
+       assert_eq(ret, DNSSD_ERROR_NOT_INITIALIZED);
+
+       dnssd_initialize();
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_nsd_dnssd_get_name_p
+ * @since_tizen                3.0
+ * @type                       Positive
+ * @description                Get the service name of a DNSSD service.
+ * @scenario           Create a DNSSD local service and get the service name of a DNSSD service.
+ *                                     Ensure no error
+ */
+int utc_nsd_dnssd_get_name_p(void)
+{
+       int ret = DNSSD_ERROR_NONE;
+       static dnssd_service_h serv_id;
+       char *name = NULL;
+
+       if (g_feature == false) {
+               ret = dnssd_service_get_name(0, NULL);
+               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       dnssd_create_local_service("_ftp._tcp", &serv_id);
+
+       ret = dnssd_service_set_name(serv_id, "test-ftp");
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       ret = dnssd_service_get_name(serv_id, &name);
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       dnssd_destroy_local_service(serv_id);
+       g_free(name);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_nsd_dnssd_get_name_n1
+ * @since_tizen                3.0
+ * @type                       Negative
+ * @description                Verify dnssd_service_get_name by passing invalid service handle.
+ * @scenario           Pass an invalid service handle which has not been created before.
+ *                                     Return value should be DNSSD_ERROR_SERVICE_NOT_FOUND.
+ */
+int utc_nsd_dnssd_get_name_n1(void)
+{
+       int ret = DNSSD_ERROR_NONE;
+       static dnssd_service_h serv_id;
+       char *name = NULL;
+
+       if (g_feature == false) {
+               ret = dnssd_service_get_name(0, NULL);
+               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       dnssd_create_local_service("_ftp._tcp", &serv_id);
+
+       ret = dnssd_service_get_name(serv_id + 1, &name);
+       assert_eq(ret, DNSSD_ERROR_SERVICE_NOT_FOUND);
+
+       dnssd_destroy_local_service(serv_id);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_nsd_dnssd_get_name_n2
+ * @since_tizen                3.0
+ * @type                       Negative
+ * @description                Verify dnssd_service_get_name by passing an invalid parameter
+ * @scenario           Pass NULL as a target parameter for getting the service name of a DNSSD service.
+ *                                     Return value should be DNSSD_ERROR_INVALID_PARAMETER.
+ */
+int utc_nsd_dnssd_get_name_n2(void)
+{
+       int ret = DNSSD_ERROR_NONE;
+       static dnssd_service_h serv_id;
+
+       if (g_feature == false) {
+               ret = dnssd_service_get_name(0, NULL);
+               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       dnssd_create_local_service("_ftp._tcp", &serv_id);
+       ret = dnssd_service_get_name(serv_id, NULL);
+       assert_eq(ret, DNSSD_ERROR_INVALID_PARAMETER);
+
+       dnssd_destroy_local_service(serv_id);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_nsd_dnssd_get_port_p
+ * @since_tizen                3.0
+ * @type                       Positive
+ * @description                Get the port number of a DNSSD service.
+ * @scenario           Create a DNSSD local service and get the port number of a DNSSD service.
+ *                                     Ensure no error
+ */
+int utc_nsd_dnssd_get_port_p(void)
+{
+       int ret = DNSSD_ERROR_NONE;
+       static dnssd_service_h serv_id;
+       int port = 0;
+
+       if (g_feature == false) {
+               ret = dnssd_service_get_port(0, NULL);
+               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       dnssd_create_local_service("_ftp._tcp", &serv_id);
+
+       ret = dnssd_service_set_port(serv_id, 12345);
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       ret = dnssd_service_get_port(serv_id, &port);
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       dnssd_destroy_local_service(serv_id);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_nsd_dnssd_get_port_n1
+ * @since_tizen                3.0
+ * @type                       Negative
+ * @description                Verify dnssd_service_get_port by passing invalid service handle.
+ * @scenario           Pass an invalid service handle which has not been created before.
+ *                                     Return value should be DNSSD_ERROR_SERVICE_NOT_FOUND.
+ */
+int utc_nsd_dnssd_get_port_n1(void)
+{
+       int ret = DNSSD_ERROR_NONE;
+       static dnssd_service_h serv_id;
+       int port = 0;
+
+       if (g_feature == false) {
+               ret = dnssd_service_get_port(0, NULL);
+               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       dnssd_create_local_service("_ftp._tcp", &serv_id);
+
+       ret = dnssd_service_get_port(serv_id + 1, &port);
+       assert_eq(ret, DNSSD_ERROR_SERVICE_NOT_FOUND);
+
+       dnssd_destroy_local_service(serv_id);
+
+       return 0;
+}
+
+
+/**
+ * @testcase           utc_nsd_dnssd_get_port_n2
+ * @since_tizen                3.0
+ * @type                       Negative
+ * @description                Verify dnssd_service_get_port by passing an invalid parameter
+ * @scenario           Pass NULL as a target parameter for getting the port number of a DNSSD service.
+ *                                     Return value should be DNSSD_ERROR_INVALID_PARAMETER.
+ */
+int utc_nsd_dnssd_get_port_n2(void)
+{
+       int ret = DNSSD_ERROR_NONE;
+       static dnssd_service_h serv_id;
+
+       if (g_feature == false) {
+               ret = dnssd_service_get_port(0, NULL);
+               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       dnssd_create_local_service("_ftp._tcp", &serv_id);
+       ret = dnssd_service_get_port(serv_id, NULL);
+       assert_eq(ret, DNSSD_ERROR_INVALID_PARAMETER);
+
+       dnssd_destroy_local_service(serv_id);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_nsd_dnssd_register_local_service_p
+ * @since_tizen                3.0
+ * @type                       Positive
+ * @description                Register a DNSSD local service handle.
+ * @scenario           Create a DNSSD service and set a service name and a port number for the service.
+ *                                     Register, Deregister and Destroy the DNSSD service.
+ *                                     Ensure no error
+ */
+int utc_nsd_dnssd_register_local_service_p(void)
+{
+       int ret = DNSSD_ERROR_NONE;
+       static dnssd_service_h serv_id;
+
+       if (g_feature == false) {
+               ret = dnssd_register_local_service(0, NULL, NULL);
+               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       dnssd_create_local_service("_ftp._tcp", &serv_id);
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       ret = dnssd_service_set_name(serv_id, "Tizen");
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       ret = dnssd_service_set_port(serv_id, 12345);
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       ret = wait_for_registered_callback(serv_id);
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       dnssd_deregister_local_service(serv_id);
+       dnssd_destroy_local_service(serv_id);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_nsd_dnssd_register_local_service_n
+ * @since_tizen                3.0
+ * @type                       Negative
+ * @description                Verify dnssd_register_local_service by passing invalid service handle.
+ * @scenario           Pass an invalid service handle which has not been created before.
+ *                                     Return value should be DNSSD_ERROR_SERVICE_NOT_FOUND.
+ */
+int utc_nsd_dnssd_register_local_service_n(void)
+{
+       int ret = DNSSD_ERROR_NONE;
+       static dnssd_service_h serv_id;
+
+       if (g_feature == false) {
+               ret = dnssd_register_local_service(0, NULL, NULL);
+               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       dnssd_create_local_service("_ftp._tcp", &serv_id);
+
+       ret = dnssd_register_local_service(serv_id + 1, &__registered_cb, NULL);
+       assert_eq(ret, DNSSD_ERROR_SERVICE_NOT_FOUND);
+
+       dnssd_destroy_local_service(serv_id);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_nsd_dnssd_deregister_local_service_p
+ * @since_tizen                3.0
+ * @type                       Positive
+ * @description                Deregister a DNSSD local service handle.
+ * @scenario           Create a DNSSD service and Register
+ *                                     Deregister and Destroy the DNSSD service.
+ *                                     Ensure no error
+ */
+int utc_nsd_dnssd_deregister_local_service_p(void)
+{
+       int ret = DNSSD_ERROR_NONE;
+       static dnssd_service_h serv_id;
+
+       if (g_feature == false) {
+               ret = dnssd_deregister_local_service(0);
+               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       dnssd_create_local_service("_ftp._tcp", &serv_id);
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       ret = dnssd_service_set_name(serv_id, "Tizen");
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       ret = dnssd_service_set_port(serv_id, 12345);
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       ret = wait_for_registered_callback(serv_id);
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       ret = dnssd_deregister_local_service(serv_id);
+       assert_eq(ret, DNSSD_ERROR_NONE);
+
+       dnssd_destroy_local_service(serv_id);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_nsd_dnssd_deregister_local_service_n
+ * @since_tizen                3.0
+ * @type                       Negative
+ * @description                Verify dnssd_deregister_local_service by passing invalid service handle.
+ * @scenario           Pass an invalid service handle which has not been created before.
+ *                                     Return value should be DNSSD_ERROR_SERVICE_NOT_FOUND.
+ */
+int utc_nsd_dnssd_deregister_local_service_n(void)
+{
+       int ret = DNSSD_ERROR_NONE;
+
+       if (g_feature == false) {
+               ret = dnssd_deregister_local_service(0);
+               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       ret = dnssd_deregister_local_service(0);
+       assert_eq(ret, DNSSD_ERROR_SERVICE_NOT_FOUND);
+
+       return 0;
+}
diff --git a/tests/utc-nsd-ssdp-browse.c b/tests/utc-nsd-ssdp-browse.c
new file mode 100644 (file)
index 0000000..0cc47be
--- /dev/null
@@ -0,0 +1,215 @@
+//
+// Copyright (c) 2014 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Apache License, Version 2.0 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+#include "assert_local.h"
+#include <ssdp.h>
+#include <stdlib.h>
+#include <glib.h>
+#include <system_info.h>
+
+//& set: Nsd-ssdp-browse
+
+static GMainLoop* g_loop = NULL;
+static bool g_feature = true;
+
+static void __found_cb(ssdp_service_state_e state, ssdp_service_h ssdp_service, void *user_data)
+{
+       return;
+}
+
+/**
+ * @function           utc_nsd_ssdp_browse_startup
+ * @since_tizen                3.0
+ * @description                Initializes SSDP. Called before each test
+ * @parameter          NA
+ * @return                     NA
+ */
+void utc_nsd_ssdp_browse_startup(void)
+{
+       int ret = SSDP_ERROR_NONE;
+       ret = system_info_get_platform_bool("http://tizen.org/feature/network.service_discovery.ssdp", &g_feature);
+
+       if (SYSTEM_INFO_ERROR_NONE != ret) {
+               fprintf(stderr, "system_info_get_platform_bool() Fail(%d)\n", ret);
+               return;
+       }
+
+       if (g_feature == true) {
+               ret = ssdp_initialize();
+               if (ret != SSDP_ERROR_NONE) {
+                       fprintf(stderr, "dnssd_initialize() Fail(%d)", ret);
+                       return;
+               }
+               g_loop = g_main_loop_new(NULL, FALSE);
+       }
+}
+
+/**
+ * @function           utc_nsd_ssdp_browse_cleanup
+ * @since_tizen                3.0
+ * @description                Deinitialize SSDP. Called after each test
+ * @parameter          NA
+ * @return                     NA
+ */
+void utc_nsd_ssdp_browse_cleanup(void)
+{
+       if (g_feature == true) {
+               ssdp_deinitialize();
+               g_main_loop_unref(g_loop);
+               g_loop = NULL;
+       }
+}
+
+/**
+ * @testcase           utc_nsd_ssdp_start_browsing_service_p
+ * @since_tizen                3.0
+ * @type                       Positive
+ * @description                Start browsing SSDP services
+ * @scenario           Start browsing SSDP services with a service target
+ *                                     Ensure no error
+ */
+int utc_nsd_ssdp_start_browsing_service_p(void)
+{
+       int ret = SSDP_ERROR_NONE;
+       ssdp_browser_h browser_id = 0;
+
+       if (g_feature == false) {
+               ret = ssdp_start_browsing_service(NULL, NULL, NULL, NULL);
+               assert_eq(ret, SSDP_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       ret = ssdp_start_browsing_service("upnp:rootdevice", &browser_id, &__found_cb, NULL);
+       assert_eq(ret, SSDP_ERROR_NONE);
+
+       ssdp_stop_browsing_service(browser_id);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_nsd_ssdp_start_browsing_service_n
+ * @since_tizen                3.0
+ * @type                       Negative
+ * @description                Verify ssdp_start_browsing_service by passing invalid browser handle
+ * @scenario           Pass NULL as a browser handle
+ *                                     Return value should be SSDP_ERROR_INVALID_PARAMETER
+ */
+int utc_nsd_ssdp_start_browsing_service_n(void)
+{
+       int ret = SSDP_ERROR_NONE;
+
+       if (g_feature == false) {
+               ret = ssdp_start_browsing_service(NULL, NULL, NULL, NULL);
+               assert_eq(ret, SSDP_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       ret = ssdp_start_browsing_service("upnp:rootdevice", NULL, &__found_cb, NULL);
+       assert_eq(ret, SSDP_ERROR_INVALID_PARAMETER);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_nsd_ssdp_stop_browsing_service_p
+ * @since_tizen                3.0
+ * @type                       Positive
+ * @description                Stop browsing SSDP services
+ * @scenario           Start browsing SSDP services with a service target
+ *                                     Stop browsing with valid browser handle
+ *                                     Ensure no error
+ */
+int utc_nsd_ssdp_stop_browsing_service_p(void)
+{
+       int ret = SSDP_ERROR_NONE;
+       ssdp_browser_h browser_id = 0;
+
+       if (g_feature == false) {
+               ret = ssdp_stop_browsing_service(0);
+               assert_eq(ret, SSDP_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       ret = ssdp_start_browsing_service("upnp:rootdevice", &browser_id, &__found_cb, NULL);
+       assert_eq(ret, SSDP_ERROR_NONE);
+
+       ssdp_stop_browsing_service(browser_id);
+       assert_eq(ret, SSDP_ERROR_NONE);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_nsd_ssdp_stop_browsing_service_n1
+ * @since_tizen                3.0
+ * @type                       Negative
+ * @description                Verify ssdp_stop_browsing_service by passing invalid browser handle
+ * @scenario           Start browsing SSDP services with a service target
+ *                                     Stop browsing by passing an invalid browser handle
+ *                                     Return value should be SSDP_ERROR_INVALID_PARAMETER
+ */
+int utc_nsd_ssdp_stop_browsing_service_n1(void)
+{
+       int ret = SSDP_ERROR_NONE;
+       ssdp_browser_h browser_id = 0;
+
+       if (g_feature == false) {
+               ret = ssdp_stop_browsing_service(0);
+               assert_eq(ret, SSDP_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       ret = ssdp_start_browsing_service("upnp:rootdevice", &browser_id, &__found_cb, NULL);
+       assert_eq(ret, SSDP_ERROR_NONE);
+
+       ret = ssdp_stop_browsing_service(0);
+       assert_eq(ret, SSDP_ERROR_INVALID_PARAMETER);
+
+       ssdp_stop_browsing_service(browser_id);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_nsd_ssdp_stop_browsing_service_n2
+ * @since_tizen                3.0
+ * @type                       Negative
+ * @description                Verify ssdp_stop_browsing_service by passing invalid browser handle
+ * @scenario           Start browsing SSDP services with a service target
+ *                                     Stop browsing by passing an invalid browser handle which has not been created before
+ *                                     Return value should be SSDP_SERVICE_NOT_FOUND
+ */
+int utc_nsd_ssdp_stop_browsing_service_n2(void)
+{
+       int ret = SSDP_ERROR_NONE;
+       ssdp_browser_h browser_id = 0;
+
+       if (g_feature == false) {
+               ret = ssdp_stop_browsing_service(0);
+               assert_eq(ret, SSDP_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       ret = ssdp_start_browsing_service("upnp:rootdevice", &browser_id, &__found_cb, NULL);
+       assert_eq(ret, SSDP_ERROR_NONE);
+
+       ret = ssdp_stop_browsing_service(browser_id + 1);
+       assert_eq(ret, SSDP_ERROR_SERVICE_NOT_FOUND);
+
+       ssdp_stop_browsing_service(browser_id);
+
+       return 0;
+}
diff --git a/tests/utc-nsd-ssdp-register.c b/tests/utc-nsd-ssdp-register.c
new file mode 100644 (file)
index 0000000..fbd1f01
--- /dev/null
@@ -0,0 +1,923 @@
+//
+// Copyright (c) 2020 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Apache License, Version 2.0 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#include "assert_local.h"
+#include <ssdp.h>
+#include <glib.h>
+#include <stdlib.h>
+#include <string.h>
+#include <system_info.h>
+
+//& set: Nsd-ssdp-register
+
+static GMainLoop* g_loop = NULL;
+static bool g_feature = true;
+
+static void __registered_cb(ssdp_error_e result, ssdp_service_h ssdp_service, void *user_data)
+{
+       return;
+}
+
+
+/**
+ * @function           utc_nsd_ssdp_register_startup
+ * @since_tizen                3.0
+ * @description                Initializes SSDP. Called before each test
+ * @parameter          NA
+ * @return                     NA
+ */
+void utc_nsd_ssdp_register_startup(void)
+{
+       int ret = SSDP_ERROR_NONE;
+       ret = system_info_get_platform_bool("http://tizen.org/feature/network.service_discovery.ssdp", &g_feature);
+
+       if (SYSTEM_INFO_ERROR_NONE != ret) {
+               fprintf(stderr, "system_info_get_platform_bool() Fail(%d)\n", ret);
+               return;
+       }
+
+       if (g_feature == true) {
+               ret = ssdp_initialize();
+               if (ret != SSDP_ERROR_NONE) {
+                       fprintf(stderr, "dnssd_initialize() Fail(%d)", ret);
+                       return;
+               }
+               g_loop = g_main_loop_new(NULL, FALSE);
+       }
+}
+
+/**
+ * @function           utc_nsd_ssdp_register_cleanup
+ * @since_tizen                3.0
+ * @description                Deinitialize SSDP. Called after each test
+ * @parameter          NA
+ * @return                     NA
+ */
+void utc_nsd_ssdp_register_cleanup(void)
+{
+       if (g_feature == true) {
+               ssdp_deinitialize();
+               g_main_loop_unref(g_loop);
+               g_loop = NULL;
+       }
+}
+
+/**
+ * @testcase           utc_nsd_ssdp_initialize_p
+ * @since_tizen                3.0
+ * @type                       Positive
+ * @description                Initialize SSDP.
+ * @scenario           Initialize SSDP.
+ *                                     Ensure no error
+ */
+int utc_nsd_ssdp_initialize_p(void)
+{
+       int ret = SSDP_ERROR_NONE;
+
+       if (g_feature == false) {
+               ret = ssdp_initialize();
+               assert_eq(ret, SSDP_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+       ssdp_deinitialize();
+
+       ret = ssdp_initialize();
+       assert_eq(ret, SSDP_ERROR_NONE);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_nsd_ssdp_deinitialize_p
+ * @since_tizen                3.0
+ * @type                       Positive
+ * @description                Deinitialize SSDP.
+ * @scenario           Deinitialize SSDP.
+ *                                     Ensure no error
+ */
+int utc_nsd_ssdp_deinitialize_p(void)
+{
+       int ret = SSDP_ERROR_NONE;
+
+       if (g_feature == false) {
+               ret = ssdp_deinitialize();
+               assert_eq(ret, SSDP_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+       ret = ssdp_deinitialize();
+       assert_eq(ret, SSDP_ERROR_NONE);
+
+       ssdp_initialize();
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_nsd_ssdp_deinitialize_n
+ * @since_tizen                3.0
+ * @type                       Negative
+ * @description                Verify ssdp_deinitialize before SSDP is initialized.
+ * @scenario           Deinitialize SSDP and deinitialize again.
+ *                                     Return value should be SSDP_ERROR_NOT_INITIALIZED.
+ */
+int utc_nsd_ssdp_deinitialize_n(void)
+{
+       int ret = SSDP_ERROR_NONE;
+
+       if (g_feature == false) {
+               ret = ssdp_deinitialize();
+               assert_eq(ret, SSDP_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+       ssdp_deinitialize();
+
+       ret = ssdp_deinitialize();
+       assert_eq(ret, SSDP_ERROR_NOT_INITIALIZED);
+
+       ssdp_initialize();
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_nsd_ssdp_create_local_service_p
+ * @since_tizen                3.0
+ * @type                       Positive
+ * @description                Create a SSDP local service handle.
+ * @scenario           Create and Destroy a SSDP local service handle.
+ *                                     Ensure no error
+ */
+int utc_nsd_ssdp_create_local_service_p(void)
+{
+       int ret = SSDP_ERROR_NONE;
+       static ssdp_service_h serv_id;
+
+       if (g_feature == false) {
+               ret = ssdp_create_local_service(NULL, NULL);
+               assert_eq(ret, SSDP_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       ret = ssdp_create_local_service("upnp:rootdevice", &serv_id);
+       assert_eq(ret, SSDP_ERROR_NONE);
+
+       ssdp_destroy_local_service(serv_id);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_nsd_ssdp_create_local_service_n
+ * @since_tizen                3.0
+ * @type                       Negative
+ * @description                Verify ssdp_create_local_service by passing an invalid parameter.
+ * @scenario           Pass NULL as a service handle parameter.
+ *                                     Return value should be SSDP_ERROR_INVALID_PARAMETER.
+ */
+int utc_nsd_ssdp_create_local_service_n(void)
+{
+       int ret = SSDP_ERROR_NONE;
+
+       if (g_feature == false) {
+               ret = ssdp_create_local_service(NULL, NULL);
+               assert_eq(ret, SSDP_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       ret = ssdp_create_local_service("upnp:rootdevice", NULL);
+       assert_eq(ret, SSDP_ERROR_INVALID_PARAMETER);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_nsd_ssdp_destroy_local_service_p
+ * @since_tizen                3.0
+ * @type                       Positive
+ * @description                Destroy a SSDP local service handle.
+ * @scenario           Create and Destroy a SSDP local service handle.
+ *                                     Ensure no error
+ */
+int utc_nsd_ssdp_destroy_local_service_p(void)
+{
+       int ret = SSDP_ERROR_NONE;
+       static ssdp_service_h serv_id;
+
+       if (g_feature == false) {
+               ret = ssdp_destroy_local_service(0);
+               assert_eq(ret, SSDP_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       ret = ssdp_create_local_service("upnp:rootdevice", &serv_id);
+       assert_eq(ret, SSDP_ERROR_NONE);
+
+       ret = ssdp_destroy_local_service(serv_id);
+       assert_eq(ret, SSDP_ERROR_NONE);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_nsd_ssdp_destroy_local_service_n
+ * @since_tizen                3.0
+ * @type                       Negative
+ * @description                Verify ssdp_destroy_local_service by passing invalid service handle.
+ * @scenario           Pass an invalid service handle which has not been created before.
+ *                                     Return value should be SSDP_ERROR_SERVICE_NOT_FOUND.
+ */
+int utc_nsd_ssdp_detroy_local_service_n(void)
+{
+       int ret = SSDP_ERROR_NONE;
+       static ssdp_service_h serv_id;
+
+       if (g_feature == false) {
+               ret = ssdp_destroy_local_service(0);
+               assert_eq(ret, SSDP_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       ret = ssdp_create_local_service("upnp:rootdevice", &serv_id);
+       assert_eq(ret, SSDP_ERROR_NONE);
+
+       ret = ssdp_destroy_local_service(serv_id + 1);
+       assert_eq(ret, SSDP_ERROR_SERVICE_NOT_FOUND);
+
+       ssdp_destroy_local_service(serv_id);
+
+       return 0;
+
+}
+
+/**
+ * @testcase           utc_nsd_ssdp_set_usn_p
+ * @since_tizen                3.0
+ * @type                       Positive
+ * @description                Set the USN of a SSDP local service.
+ * @scenario           Create a SSDP local service and set the USN of the service.
+ *                                     Ensure no error
+ */
+int utc_nsd_ssdp_set_usn_p(void)
+{
+       int ret = SSDP_ERROR_NONE;
+       static ssdp_service_h serv_id;
+
+       if (g_feature == false) {
+               ret = ssdp_service_set_usn(0, NULL);
+               assert_eq(ret, SSDP_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       ssdp_create_local_service("upnp:rootdevice", &serv_id);
+
+       ret = ssdp_service_set_usn(serv_id, "uuid:1234abce");
+       assert_eq(ret, SSDP_ERROR_NONE);
+
+       ssdp_destroy_local_service(serv_id);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_nsd_ssdp_set_usn_n1
+ * @since_tizen                3.0
+ * @type                       Negative
+ * @description                Verify ssdp_service_set_usn by passing invalid service handle.
+ * @scenario           Pass an invalid service handle which has not been created before.
+ *                                     Return value should be SSDP_ERROR_SERVICE_NOT_FOUND.
+ */
+int utc_nsd_ssdp_set_usn_n1(void)
+{
+       int ret = SSDP_ERROR_NONE;
+       static ssdp_service_h serv_id;
+       static ssdp_service_h other_serv_id;
+
+       if (g_feature == false) {
+               ret = ssdp_service_set_usn(0, NULL);
+               assert_eq(ret, SSDP_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       ssdp_create_local_service("upnp:rootdevice", &serv_id);
+
+       ret = ssdp_service_set_usn(serv_id + 1, "uuid:1234abce");
+       assert_eq(ret, SSDP_ERROR_SERVICE_NOT_FOUND);
+
+       ssdp_destroy_local_service(other_serv_id);
+       ssdp_destroy_local_service(serv_id);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_nsd_ssdp_set_usn_n2
+ * @since_tizen                3.0
+ * @type                       Negative
+ * @description                Verify ssdp_service_set_usn by passing a duplicate USN.
+ * @scenario           Create a SSDP service and set a USN.
+ *                                     Create another SSDP service and set the same USN as that of the first SSDP service.
+ *                                     Return value should be SSDP_ERROR_INVALID_PARAMETER.
+ */
+int utc_nsd_ssdp_set_usn_n2(void)
+{
+       int ret = SSDP_ERROR_NONE;
+       static ssdp_service_h serv_id;
+       static ssdp_service_h other_serv_id;
+
+       if (g_feature == false) {
+               ret = ssdp_service_set_usn(0, NULL);
+               assert_eq(ret, SSDP_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       ssdp_create_local_service("upnp:rootdevice", &serv_id);
+       ssdp_service_set_usn(serv_id, "uuid:1234abce");
+
+       ssdp_create_local_service("upnp:rootdevice", &other_serv_id);
+       ret = ssdp_service_set_usn(serv_id, "uuid:1234abce");
+       assert_eq(ret, SSDP_ERROR_INVALID_PARAMETER);
+
+       ssdp_destroy_local_service(other_serv_id);
+       ssdp_destroy_local_service(serv_id);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_nsd_ssdp_set_url_p
+ * @since_tizen                3.0
+ * @type                       Positive
+ * @description                Set the URL of a SSDP local service.
+ * @scenario           Create a SSDP local service and set the URL of the service.
+ *                                     Ensure no error
+ */
+int utc_nsd_ssdp_set_url_p(void)
+{
+       int ret = SSDP_ERROR_NONE;
+       static ssdp_service_h serv_id;
+
+       if (g_feature == false) {
+               ret = ssdp_service_set_url(0, NULL);
+               assert_eq(ret, SSDP_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       ssdp_create_local_service("upnp:rootdevice", &serv_id);
+
+       ret = ssdp_service_set_url(serv_id, "192.168.0.1");
+       assert_eq(ret, SSDP_ERROR_NONE);
+
+       ssdp_destroy_local_service(serv_id);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_nsd_ssdp_set_url_n1
+ * @since_tizen                3.0
+ * @type                       Negative
+ * @description                Verify ssdp_service_set_url by passing invalid service handle.
+ * @scenario           Pass an invalid service handle which has not been created before.
+ *                                     Return value should be SSDP_ERROR_SERVICE_NOT_FOUND.
+ */
+int utc_nsd_ssdp_set_url_n1(void)
+{
+       int ret = SSDP_ERROR_NONE;
+       static ssdp_service_h serv_id;
+       static ssdp_service_h other_serv_id;
+
+       if (g_feature == false) {
+               ret = ssdp_service_set_url(0, NULL);
+               assert_eq(ret, SSDP_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       ssdp_create_local_service("upnp:rootdevice", &serv_id);
+
+       ret = ssdp_service_set_url(serv_id + 1, "192.168.0.1");
+       assert_eq(ret, SSDP_ERROR_SERVICE_NOT_FOUND);
+
+       ssdp_destroy_local_service(other_serv_id);
+       ssdp_destroy_local_service(serv_id);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_nsd_ssdp_set_url_n2
+ * @since_tizen                3.0
+ * @type                       Negative
+ * @description                Verify ssdp_service_set_usn by passing a duplicate URL.
+ * @scenario           Create a SSDP service and set a URL.
+ *                                     Create another SSDP service and set the same URL as that of the first SSDP service.
+ *                                     Return value should be SSDP_ERROR_INVALID_PARAMETER.
+ */
+int utc_nsd_ssdp_set_url_n2(void)
+{
+       int ret = SSDP_ERROR_NONE;
+       static ssdp_service_h serv_id;
+       static ssdp_service_h other_serv_id;
+
+       if (g_feature == false) {
+               ret = ssdp_service_set_url(0, NULL);
+               assert_eq(ret, SSDP_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       ssdp_create_local_service("upnp:rootdevice", &serv_id);
+       ssdp_service_set_url(serv_id, "192.168.0.1");
+
+       ssdp_create_local_service("upnp:rootdevice", &other_serv_id);
+       ret = ssdp_service_set_url(serv_id, "192.168.0.1");
+       assert_eq(ret, SSDP_ERROR_INVALID_PARAMETER);
+
+       ssdp_destroy_local_service(other_serv_id);
+       ssdp_destroy_local_service(serv_id);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_nsd_ssdp_get_target_p
+ * @since_tizen                3.0
+ * @type                       Positive
+ * @description                Get the target of a SSDP service.
+ * @scenario           Create a SSDP local service and get the target of a SSDP service.
+ *                                     Ensure no error
+ */
+int utc_nsd_ssdp_get_target_p(void)
+{
+       int ret = SSDP_ERROR_NONE;
+       static ssdp_service_h serv_id;
+       char *target = NULL;
+
+       if (g_feature == false) {
+               ret = ssdp_service_get_target(0, NULL);
+               assert_eq(ret, SSDP_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       ssdp_create_local_service("upnp:rootdevice", &serv_id);
+
+       ret = ssdp_service_get_target(serv_id, &target);
+       assert_eq(ret, SSDP_ERROR_NONE);
+
+       ssdp_destroy_local_service(serv_id);
+       g_free(target);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_nsd_ssdp_get_target_n1
+ * @since_tizen                3.0
+ * @type                       Negative
+ * @description                Verify ssdp_service_get_target by passing invalid service handle.
+ * @scenario           Pass an invalid service handle which has not been created before.
+ *                                     Return value should be SSDP_ERROR_SERVICE_NOT_FOUND.
+ */
+int utc_nsd_ssdp_get_target_n1(void)
+{
+       int ret = SSDP_ERROR_NONE;
+       static ssdp_service_h serv_id;
+       char *target = NULL;
+
+       if (g_feature == false) {
+               ret = ssdp_service_get_target(0, NULL);
+               assert_eq(ret, SSDP_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       ssdp_create_local_service("upnp:rootdevice", &serv_id);
+
+       ret = ssdp_service_get_target(serv_id + 1, &target);
+       assert_eq(ret, SSDP_ERROR_SERVICE_NOT_FOUND);
+
+       ssdp_destroy_local_service(serv_id);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_nsd_ssdp_get_target_n2
+ * @since_tizen                3.0
+ * @type                       Negative
+ * @description                Verify ssdp_service_get_target by passing an invalid parameter.
+ * @scenario           Pass NULL as a target parameter for getting the target of a SSDP service.
+ *                                     Return value should be SSDP_ERROR_INVALID_PARAMETER.
+ */
+int utc_nsd_ssdp_get_target_n2(void)
+{
+       int ret = SSDP_ERROR_NONE;
+       static ssdp_service_h serv_id;
+
+       if (g_feature == false) {
+               ret = ssdp_service_get_target(0, NULL);
+               assert_eq(ret, SSDP_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       ssdp_create_local_service("upnp:rootdevice", &serv_id);
+
+       ret = ssdp_service_get_target(serv_id, NULL);
+       assert_eq(ret, SSDP_ERROR_INVALID_PARAMETER);
+
+       ssdp_destroy_local_service(serv_id);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_nsd_ssdp_get_usn_p
+ * @since_tizen                3.0
+ * @type                       Positive
+ * @description                Get the USN of a SSDP service.
+ * @scenario           Create a SSDP local service and get the USN of a SSDP service.
+ *                                     Ensure no error
+ */
+int utc_nsd_ssdp_get_usn_p(void)
+{
+       int ret = SSDP_ERROR_NONE;
+       static ssdp_service_h serv_id;
+       char *usn = NULL;
+
+       if (g_feature == false) {
+               ret = ssdp_service_get_usn(0, NULL);
+               assert_eq(ret, SSDP_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       ssdp_create_local_service("upnp:rootdevice", &serv_id);
+
+       ret = ssdp_service_set_usn(serv_id, "uuid:1234abce");
+       assert_eq(ret, SSDP_ERROR_NONE);
+
+       ret = ssdp_service_get_usn(serv_id, &usn);
+       assert_eq(ret, SSDP_ERROR_NONE);
+
+       ssdp_destroy_local_service(serv_id);
+       g_free(usn);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_nsd_ssdp_get_usn_n1
+ * @since_tizen                3.0
+ * @type                       Negative
+ * @description                Verify ssdp_service_get_usn by passing invalid service handle.
+ * @scenario           Pass an invalid service handle which has not been created before.
+ *                                     Return value should be SSDP_ERROR_SERVICE_NOT_FOUND.
+ */
+int utc_nsd_ssdp_get_usn_n1(void)
+{
+       int ret = SSDP_ERROR_NONE;
+       static ssdp_service_h serv_id;
+       char *usn = NULL;
+
+       if (g_feature == false) {
+               ret = ssdp_service_get_usn(0, NULL);
+               assert_eq(ret, SSDP_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       ssdp_create_local_service("upnp:rootdevice", &serv_id);
+
+       ret = ssdp_service_get_usn(serv_id + 1, &usn);
+       assert_eq(ret, SSDP_ERROR_SERVICE_NOT_FOUND);
+
+       ssdp_destroy_local_service(serv_id);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_nsd_ssdp_get_usn_n2
+ * @since_tizen                3.0
+ * @type                       Negative
+ * @description                Verify ssdp_service_get_usn by passing an invalid parameter
+ * @scenario           Pass NULL as a target parameter for getting the USN of a SSDP service.
+ *                                     Return value should be SSDP_ERROR_INVALID_PARAMETER.
+ */
+int utc_nsd_ssdp_get_usn_n2(void)
+{
+       int ret = SSDP_ERROR_NONE;
+       static ssdp_service_h serv_id;
+
+       if (g_feature == false) {
+               ret = ssdp_service_get_usn(0, NULL);
+               assert_eq(ret, SSDP_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       ssdp_create_local_service("upnp:rootdevice", &serv_id);
+
+       ret = ssdp_service_get_usn(serv_id, NULL);
+       assert_eq(ret, SSDP_ERROR_INVALID_PARAMETER);
+
+       ssdp_destroy_local_service(serv_id);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_nsd_ssdp_get_url_p
+ * @since_tizen                3.0
+ * @type                       Positive
+ * @description                Get the URL of a SSDP service.
+ * @scenario           Create a SSDP local service and get the URL of a SSDP service.
+ *                                     Ensure no error
+ */
+int utc_nsd_ssdp_get_url_p(void)
+{
+       int ret = SSDP_ERROR_NONE;
+       static ssdp_service_h serv_id;
+       char *url = NULL;
+
+       if (g_feature == false) {
+               ret = ssdp_service_get_url(0, NULL);
+               assert_eq(ret, SSDP_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       ssdp_create_local_service("upnp:rootdevice", &serv_id);
+
+       ret = ssdp_service_set_url(serv_id, "192.168.0.1");
+       assert_eq(ret, SSDP_ERROR_NONE);
+
+       ret = ssdp_service_get_url(serv_id, &url);
+       assert_eq(ret, SSDP_ERROR_NONE);
+
+       ssdp_destroy_local_service(serv_id);
+       g_free(url);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_nsd_ssdp_get_url_n1
+ * @since_tizen                3.0
+ * @type                       Negative
+ * @description                Verify ssdp_service_get_url by passing invalid service handle.
+ * @scenario           Pass an invalid service handle which has not been created before.
+ *                                     Return value should be SSDP_ERROR_SERVICE_NOT_FOUND.
+ */
+int utc_nsd_ssdp_get_url_n1(void)
+{
+       int ret = SSDP_ERROR_NONE;
+       static ssdp_service_h serv_id;
+       char *url = NULL;
+
+       if (g_feature == false) {
+               ret = ssdp_service_get_url(0, NULL);
+               assert_eq(ret, SSDP_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       ssdp_create_local_service("upnp:rootdevice", &serv_id);
+
+       ret = ssdp_service_get_url(serv_id + 1, &url);
+       assert_eq(ret, SSDP_ERROR_SERVICE_NOT_FOUND);
+
+       ssdp_destroy_local_service(serv_id);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_nsd_ssdp_get_url_n2
+ * @since_tizen                3.0
+ * @type                       Negative
+ * @description                Verify ssdp_service_get_url by passing an invalid parameter
+ * @scenario           Pass NULL as a target parameter for getting the URL of a SSDP service.
+ *                                     Return value should be SSDP_ERROR_INVALID_PARAMETER.
+ */
+int utc_nsd_ssdp_get_url_n2(void)
+{
+       int ret = SSDP_ERROR_NONE;
+       static ssdp_service_h serv_id;
+
+       if (g_feature == false) {
+               ret = ssdp_service_get_url(0, NULL);
+               assert_eq(ret, SSDP_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       ssdp_create_local_service("upnp:rootdevice", &serv_id);
+
+       ret = ssdp_service_get_url(serv_id, NULL);
+       assert_eq(ret, SSDP_ERROR_INVALID_PARAMETER);
+
+       ssdp_destroy_local_service(serv_id);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_nsd_ssdp_register_local_service_p
+ * @since_tizen                3.0
+ * @type                       Positive
+ * @description                Register a SSDP local service handle.
+ * @scenario           Create a SSDP service and set a USN and a URL for the service.
+ *                                     Register, Deregister and Destroy the SSDP service.
+ *                                     Ensure no error
+ */
+int utc_nsd_ssdp_register_local_service_p(void)
+{
+       int ret = SSDP_ERROR_NONE;
+       static ssdp_service_h serv_id;
+
+       if (g_feature == false) {
+               ret = ssdp_register_local_service(0, NULL, NULL);
+               assert_eq(ret, SSDP_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       ret = ssdp_create_local_service("upnp:rootdevice", &serv_id);
+       assert_eq(ret, SSDP_ERROR_NONE);
+
+       ret = ssdp_service_set_usn(serv_id, "uuid:1234abce");
+       assert_eq(ret, SSDP_ERROR_NONE);
+
+       ret = ssdp_service_set_url(serv_id, "192.168.0.1");
+       assert_eq(ret, SSDP_ERROR_NONE);
+
+       ret = ssdp_register_local_service(serv_id, &__registered_cb, NULL);
+       assert_eq(ret, SSDP_ERROR_NONE);
+
+       ssdp_deregister_local_service(serv_id);
+       ssdp_destroy_local_service(serv_id);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_nsd_ssdp_register_local_service_n1
+ * @since_tizen                3.0
+ * @type                       Negative
+ * @description                Verify ssdp_register_local_service by passing invalid service handle.
+ * @scenario           Pass an invalid service handle which has not been created before.
+ *                                     Return value should be SSDP_ERROR_SERVICE_NOT_FOUND.
+ */
+int utc_nsd_ssdp_register_local_service_n1(void)
+{
+       int ret = SSDP_ERROR_NONE;
+       static ssdp_service_h serv_id;
+
+       if (g_feature == false) {
+               ret = ssdp_register_local_service(0, NULL, NULL);
+               assert_eq(ret, SSDP_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       ret = ssdp_create_local_service("upnp:rootdevice", &serv_id);
+       assert_eq(ret, SSDP_ERROR_NONE);
+
+       ret = ssdp_service_set_usn(serv_id, "uuid:1234abce");
+       assert_eq(ret, SSDP_ERROR_NONE);
+
+       ret = ssdp_service_set_url(serv_id, "192.168.0.1");
+       assert_eq(ret, SSDP_ERROR_NONE);
+
+       ret = ssdp_register_local_service(serv_id + 1, &__registered_cb, NULL);
+       assert_eq(ret, SSDP_ERROR_SERVICE_NOT_FOUND);
+
+       ssdp_destroy_local_service(serv_id);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_nsd_ssdp_register_local_service_n2
+ * @since_tizen                3.0
+ * @type                       Negative
+ * @description                Verify ssdp_register_local_service by registering the duplcate service
+ * @scenario           Create and Register a SSDP service.
+ *                                     Register the service already registered again.
+ *                                     Return value should be SSDP_ERROR_INVALID_PARAMETER.
+ */
+int utc_nsd_ssdp_register_local_service_n2(void)
+{
+       int ret = SSDP_ERROR_NONE;
+       static ssdp_service_h serv_id;
+
+       if (g_feature == false) {
+               ret = ssdp_register_local_service(0, NULL, NULL);
+               assert_eq(ret, SSDP_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       ssdp_create_local_service("upnp:rootdevice", &serv_id);
+       assert_eq(ret, SSDP_ERROR_NONE);
+
+       ret = ssdp_service_set_usn(serv_id, "uuid:1234abce");
+       assert_eq(ret, SSDP_ERROR_NONE);
+
+       ret = ssdp_service_set_url(serv_id, "192.168.0.1");
+       assert_eq(ret, SSDP_ERROR_NONE);
+
+       ret = ssdp_register_local_service(serv_id, &__registered_cb, NULL);
+       assert_eq(ret, SSDP_ERROR_NONE);
+
+       ret = ssdp_register_local_service(serv_id, &__registered_cb, NULL);
+       assert_eq(ret, SSDP_ERROR_INVALID_PARAMETER);
+
+       ssdp_deregister_local_service(serv_id);
+       ssdp_destroy_local_service(serv_id);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_nsd_ssdp_deregister_local_service_p
+ * @since_tizen                3.0
+ * @type                       Positive
+ * @description                Deregister a SSDP local service handle.
+ * @scenario           Create a SSDP service and Register
+ *                                     Deregister and Destroy the SSDP service.
+ *                                     Ensure no error
+ */
+int utc_nsd_ssdp_deregister_local_service_p(void)
+{
+       int ret = SSDP_ERROR_NONE;
+       static ssdp_service_h serv_id;
+
+       if (g_feature == false) {
+               ret = ssdp_deregister_local_service(0);
+               assert_eq(ret, SSDP_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       ret = ssdp_create_local_service("upnp:rootdevice", &serv_id);
+       assert_eq(ret, SSDP_ERROR_NONE);
+
+       ret = ssdp_service_set_usn(serv_id, "uuid:1234abce");
+       assert_eq(ret, SSDP_ERROR_NONE);
+
+       ret = ssdp_service_set_url(serv_id, "192.168.0.1");
+       assert_eq(ret, SSDP_ERROR_NONE);
+
+       ret = ssdp_register_local_service(serv_id, &__registered_cb, NULL);
+       assert_eq(ret, SSDP_ERROR_NONE);
+
+       ret = ssdp_deregister_local_service(serv_id);
+       assert_eq(ret, SSDP_ERROR_NONE);
+
+       ssdp_destroy_local_service(serv_id);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_nsd_ssdp_deregister_local_service_n
+ * @since_tizen                3.0
+ * @type                       Negative
+ * @description                Verify ssdp_deregister_local_service by passing invalid service handle.
+ * @scenario           Pass an invalid service handle which has not been created before.
+ *                                     Return value should be SSDP_ERROR_SERVICE_NOT_FOUND.
+ */
+int utc_nsd_ssdp_deregister_local_service_n(void)
+{
+       int ret = SSDP_ERROR_NONE;
+       static ssdp_service_h serv_id;
+
+       if (g_feature == false) {
+               ret = ssdp_deregister_local_service(0);
+               assert_eq(ret, SSDP_ERROR_NOT_SUPPORTED);
+               return 0;
+       }
+
+       ret = ssdp_create_local_service("upnp:rootdevice", &serv_id);
+       assert_eq(ret, SSDP_ERROR_NONE);
+
+       ret = ssdp_service_set_usn(serv_id, "uuid:1234abce");
+       assert_eq(ret, SSDP_ERROR_NONE);
+
+       ret = ssdp_service_set_url(serv_id, "192.168.0.1");
+       assert_eq(ret, SSDP_ERROR_NONE);
+
+       ret = ssdp_register_local_service(serv_id, &__registered_cb, NULL);
+       assert_eq(ret, SSDP_ERROR_NONE);
+
+       ret = ssdp_deregister_local_service(serv_id + 1);
+       assert_eq(ret, SSDP_ERROR_SERVICE_NOT_FOUND);
+
+       ssdp_deregister_local_service(serv_id);
+       ssdp_destroy_local_service(serv_id);
+
+       return 0;
+}
+
diff --git a/unittest/CMakeLists.txt b/unittest/CMakeLists.txt
deleted file mode 100644 (file)
index d82efef..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-SET(UNITTEST_NAME "tct-nsd-core")
-
-PKG_CHECK_MODULES(unittest_pkgs REQUIRED
-       gmock
-)
-INCLUDE_DIRECTORIES(${unittest_pkgs_INCLUDE_DIRS})
-LINK_DIRECTORIES(${unittest_pkgs_LIBRARY_DIRS})
-
-INCLUDE_DIRECTORIES(
-    ${CMAKE_SOURCE_DIR}/include
-    ${CMAKE_CURRENT_SOURCE_DIR}/include
-)
-
-FILE(GLOB NSD_MOCK_SRCS
-       mock/*.c
-)
-
-SET(TC_SOURCES
-    utc-nsd-ssdp-register.c
-    utc-nsd-ssdp-browse.c
-    utc-nsd-dnssd-register.c
-    utc-nsd-dnssd-browse.c
-)
-
-ADD_EXECUTABLE(${UNITTEST_NAME} ${UNITTEST_NAME}.cpp ${TC_SOURCES} ${NSD_MOCK_SRCS})
-TARGET_LINK_LIBRARIES(${UNITTEST_NAME}
-    ${unittest_pkgs_LIBRARIES}
-    ${TARGET_LIB_NSD_DNS_SD}
-    ${TARGET_LIB_NSD_SSDP}
-)
diff --git a/unittest/include/assert_local.h b/unittest/include/assert_local.h
deleted file mode 100755 (executable)
index 7c88a02..0000000
+++ /dev/null
@@ -1,118 +0,0 @@
-//
-// Copyright (c) 2020 Samsung Electronics Co., Ltd.
-//
-// Licensed under the Apache License, Version 2.0 (the License);
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-#ifndef _ASSERT_H_
-#define _ASSERT_H_
-#include <stdio.h>
-#include <stdlib.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define assert(exp) \
-    do { \
-        if (!(exp)) { \
-            fprintf(stderr, \
-                "\n[TCT][%s][Line : %d] Assert Fail; Following expression is not true: %s\n", \
-                __FILE__, __LINE__, #exp); \
-            return 1; \
-        } \
-    } while (0)
-
-#define assert_eq(var, ref) \
-    do { \
-        if (var != ref) { \
-            fprintf(stderr, \
-                "\n[TCT][%s][Line : %d] Assert fail; Values (%s == 0x%x) and (%s == 0x%x) are not equal\n", \
-                __FILE__, __LINE__, #var, (int)var, #ref, (int)ref); \
-            return 1; \
-        } \
-    } while (0)
-
-#define assert_eq_no_return(var, ref) \
-    do { \
-        if (var != ref) { \
-            fprintf(stderr, \
-                "\n[TCT][%s][Line : %d] Assert fail; Values (%s == 0x%x) and (%s == 0x%x) are not equal\n", \
-                __FILE__, __LINE__, #var, (int)var, #ref, (int)ref); \
-            return ; \
-        } \
-    } while (0)
-
-#define assert_neq_no_return(var, ref) \
-    do { \
-        if (var == ref) { \
-            fprintf(stderr, \
-                "\n[TCT][%s][Line : %d] Assert fail; Values (%s == 0x%x) and (%s == 0x%x) are equal\n", \
-                __FILE__, __LINE__,  #var, (int)var, #ref, (int)ref); \
-            return ; \
-        } \
-    } while (0)
-
-#define assert_neq(var, ref) \
-    do { \
-        if (var == ref) { \
-            fprintf(stderr, \
-                "\n[TCT][%s][Line : %d] Assert fail; Values (%s == 0x%x) and (%s == 0x%x) are equal\n", \
-                __FILE__, __LINE__,  #var, (int)var, #ref, (int)ref); \
-            return 1; \
-        } \
-    } while (0)
-
-#define assert_gt(var, ref) \
-    do { \
-        if (var <= ref) { \
-            fprintf(stderr, \
-                "\n[TCT][%s][Line : %d] Assert fail; Values (%s == 0x%x) is not greater than (%s == 0x%x)\n", \
-            __FILE__, __LINE__,  #var, (int)var, #ref, (int)ref); \
-            return 1; \
-        } \
-    } while (0)
-
-#define assert_geq(var, ref) \
-    do { \
-        if (var < ref) { \
-            fprintf(stderr, \
-                "\n[TCT][%s][Line : %d] Assert fail; Values (%s == 0x%x) is not greater than or equal to (%s == 0x%x)\n", \
-                __FILE__, __LINE__,  #var, (int)var, #ref, (int)ref); \
-            return 1; \
-        } \
-    } while (0)
-
-#define assert_lt(var, ref) \
-    do { \
-        if (var >= ref) { \
-            fprintf(stderr, \
-                "\n[TCT][%s][Line : %d] Assert fail; Values (%s == 0x%x) is not lower than (%s == 0x%x)\n", \
-                __FILE__, __LINE__,  #var, (int)var, #ref, (int)ref); \
-            return 1; \
-        } \
-    } while (0)
-
-#define assert_leq(var, ref) \
-    do { \
-        if (var > ref) { \
-            fprintf(stderr, \
-                "\n[TCT][%s][Line : %d] Assert fail; Values (%s == 0x%x) is not lower than or equal to (%s == 0x%x)\n", \
-            __FILE__, __LINE__,  #var, (int)var, #ref, (int)ref); \
-            return 1; \
-        } \
-    } while (0)
-
-#ifdef __cplusplus
-}
-#endif
-#endif //  _ASSERT_H_
diff --git a/unittest/include/nsd-mock-switch.h b/unittest/include/nsd-mock-switch.h
deleted file mode 100644 (file)
index 1a47fbf..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-//
-// Copyright (c) 2020 Samsung Electronics Co., Ltd.
-//
-// Licensed under the Apache License, Version 2.0 (the License);
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-#ifndef _NSD_MOCK_SWTICH_H_
-#define _NSD_MOCK_SWTICH_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-void nsd_mock_dnssd_register_set_g_dbus_get_sync_failure(gboolean failure);
-gboolean nsd_mock_dnssd_register_get_g_dbus_get_sync_failure(void);
-void nsd_mock_dnssd_register_set_g_dbus_connection_call_sync_failure(gboolean failure);
-gboolean nsd_mock_dnssd_register_get_g_dbus_connection_call_sync_failure(void);
-#ifdef __cplusplus
-}
-#endif
-#endif //  _ASSERT_H_
diff --git a/unittest/include/tct_common.h b/unittest/include/tct_common.h
deleted file mode 100755 (executable)
index 5617478..0000000
+++ /dev/null
@@ -1,216 +0,0 @@
-//
-// Copyright (c) 2020 Samsung Electronics Co., Ltd.
-//
-// Licensed under the Apache License, Version 2.0 (the License);
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-#ifndef _TCT_COMMON_H_
-#define _TCT_COMMON_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "assert_local.h"
-
-#include <malloc.h>
-#include <stdbool.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <string.h>
-#include <sys/stat.h>
-
-#define CONFIG_LINE_LEN_MAX                    2048
-#define CONFIG_VALUE_LEN_MAX           1024
-
-#define UTC_LOG "utc.log"
-#define ERR_UTC_LOG "utc_error.log"
-#define TC_RESULT "tc_result.log"
-
-FILE *g_fpLog;
-FILE *g_fpLogDump;
-int g_Serr;
-
-int old_Serr;
-
-#define FPRINTF(...) {\
-       g_fpLog = fopen(ERR_LOG, "a");\
-       fprintf(g_fpLog, __VA_ARGS__);\
-       fclose(g_fpLog);\
-}
-
-#define DUMP_UTC_ERRLOG() {\
-       g_Serr = dup(fileno(stderr));\
-       g_fpLogDump = freopen(ERR_UTC_LOG, "w", stderr);\
-       fflush(stderr);\
-}
-
-#define CLOSE_UTC_ERRLOG() {\
-       if(g_fpLogDump) \
-       {\
-               if (g_Serr != -1)\
-               {\
-                       old_Serr = fileno(stderr);\
-                       if(old_Serr != -1)\
-                       {\
-                               dup2(g_Serr, old_Serr);\
-                       }\
-                       close(g_Serr);\
-               }\
-               fclose(g_fpLogDump);\
-       }\
-}
-
-#define PRINT_TC_RESULT(...) {\
-       g_fpLog = fopen(TC_RESULT, "w");\
-       fprintf(g_fpLog, __VA_ARGS__);\
-       fclose(g_fpLog);\
-}
-
-
-#define FREE_MEMORY_TC(buffer) {\
-       if ( buffer != NULL )\
-{\
-       free(buffer);\
-       buffer = NULL;\
-}\
-}
-
-
-#define IS_FEATURE_SUPPORTED(feature_name, featureFlag, ModuleName)\
-{\
-       if ( !(TCTCheckSystemInfoFeatureSupported(feature_name, ModuleName)) )\
-{\
-       featureFlag = false;\
-}\
-       else\
-{\
-       featureFlag = true;\
-}\
-}
-
-#define PRINT_RESULT(eCompare, eRetVal, API, Error) {\
-       if ( eRetVal == eCompare )\
-{\
-       if ( DEBUG )\
-{\
-       FPRINTF("[Line : %d][%s] %s passed\\n", __LINE__, API_NAMESPACE, API);\
-}\
-}\
-       else \
-{\
-       FPRINTF("[Line : %d][%s] %s failed, error returned = %s [%d]\\n", __LINE__, API_NAMESPACE, API, Error, eRetVal);\
-       return 1;\
-}\
-}
-
-#define PRINT_RESULT_NORETURN(eCompare, eRetVal, API, Error) {\
-       if ( eRetVal == eCompare )\
-{\
-       if ( DEBUG )\
-{\
-       FPRINTF("[Line : %d][%s] %s passed\\n", __LINE__, API_NAMESPACE, API);\
-}\
-}\
-       else \
-{\
-       FPRINTF("[Line : %d][%s] %s failed, error returned = %s [%d]\\n", __LINE__, API_NAMESPACE, API, Error, eRetVal);\
-}\
-}
-
-#define PRINT_RESULT_CLEANUP(eCompare, eRetVal, API, Error, FreeResource) {\
-       if ( eRetVal == eCompare )\
-{\
-       if ( DEBUG )\
-{\
-       FPRINTF("[Line : %d][%s] %s passed\\n", __LINE__, API_NAMESPACE, API);\
-}\
-}\
-else \
-{\
-       FPRINTF("[Line : %d][%s] %s failed, error returned = %s [%d]\\n", __LINE__, API_NAMESPACE, API, Error, eRetVal);\
-       FreeResource;\
-       return 1;\
-}\
-}
-
-#define CHECK_VALUE_STRING(StringVariable, API) {\
-       if ( StringVariable == NULL )\
-{\
-       FPRINTF("[Line : %d][%s] %s failed, error returned = value returned is NULL\\n", __LINE__, API_NAMESPACE, API);\
-       return 1;\
-}\
-       else if ( DEBUG )\
-{\
-       FPRINTF("[Line : %d][%s] value returned = %s\\n", __LINE__, API_NAMESPACE, StringVariable);\
-}\
-       free(StringVariable);\
-       StringVariable = NULL;\
-}
-
-#define CHECK_VALUE_INT(Variable, API) {\
-       if ( Variable == 0 )\
-{\
-       FPRINTF("[Line : %d][%s] %s failed, error returned = value returned is Zero\\n", __LINE__, API_NAMESPACE, API);\
-       return 1;\
-}\
-       else if ( DEBUG )\
-{\
-       FPRINTF("[Line : %d][%s] value returned = %d\\n", __LINE__, API_NAMESPACE, Variable);\
-}\
-}
-
-#define CHECK_HANDLE(Handle, API) {\
-       if ( Handle == NULL )\
-{\
-       FPRINTF("[Line : %d][%s] %s failed, error returned = Handle returned is NULL\\n", __LINE__, API_NAMESPACE, API);\
-       return 1;\
-}\
-}
-
-#define FREE_MEMORY(buffer) {\
-       if ( buffer != NULL )\
-{\
-       free(buffer);\
-       buffer = NULL;\
-}\
-}
-
-bool TCTCheckSystemInfoFeatureSupported(char* pszKey, char* pszModuleName){
-    return false;
-}
-char* TCTSystemInfoGetError(int nRet){
-    return NULL;
-}
-bool GetValueFromConfigFile(char* pstrKeyString, char* pstrValue, char* pstrModule){
-    return false;
-}
-bool GetValueForTCTSetting(char* pstrKeyString, char* pstrValue, char* pstrModule){
-    return false;
-}
-
-#define dlog_print( type, tag, ...) do{ \
-    fprintf(stdout,  ##__VA_ARGS__ ); \
-    fprintf(stdout,  "\n" ); \
-} while(0)
-
-#define PRINT_UTC_LOG(...) do{ \
-    fprintf(stdout,  ##__VA_ARGS__ ); \
-    fprintf(stdout,  "\n" ); \
-} while(0)
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif // _TCT_COMMON_H_
diff --git a/unittest/include/testcase.h b/unittest/include/testcase.h
deleted file mode 100755 (executable)
index febac28..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-//
-// Copyright (c) 2020 Samsung Electronics Co., Ltd.
-//
-// Licensed under the Apache License, Version 2.0 (the License);
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-#ifndef _TESTCASE_H_
-#define _TESTCASE_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* pointer to startup/cleanup functions */
-typedef void (*void_fun_ptr)(void);
-
-/* pointer to testcase functions */
-typedef int (*tc_fun_ptr)(void);
-
-/* struct describing specific testcase */
-typedef struct testcase_s {
-    const char* name;
-    tc_fun_ptr function;
-    void_fun_ptr startup;
-    void_fun_ptr cleanup;
-} testcase;
-
-#ifdef __cplusplus
-}
-#endif
-#endif // _TESTCASE_H_
diff --git a/unittest/mock/nsd-mock-cynara.c b/unittest/mock/nsd-mock-cynara.c
deleted file mode 100644 (file)
index b7094b0..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-//
-// Copyright (c) 2020 Samsung Electronics Co., Ltd.
-//
-// Licensed under the Apache License, Version 2.0 (the License);
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
-#include <cynara-client.h>
-
-#ifndef API
-#define API __attribute__ ((visibility("default")))
-#endif
-
-API int cynara_check(cynara *p_cynara,
-               const char *client, const char *client_session,
-               const char *user, const char *privilege)
-{
-       return CYNARA_API_ACCESS_ALLOWED;
-}
diff --git a/unittest/mock/nsd-mock-dns-sd.c b/unittest/mock/nsd-mock-dns-sd.c
deleted file mode 100644 (file)
index 03907bf..0000000
+++ /dev/null
@@ -1,577 +0,0 @@
-//
-// Copyright (c) 2020 Samsung Electronics Co., Ltd.
-//
-// Licensed under the Apache License, Version 2.0 (the License);
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <netinet/ip.h>
-#include <dns_sd.h>
-
-#ifndef API
-#define API __attribute__ ((visibility("default")))
-#endif
-
-/* dnssd_sock_t, ipc_msg_hdr and request_op_t are from dnssd_ipc.h */
-
-#   define dnssd_InvalidSocket  -1
-#   define dnssd_SocketValid(s) ((s) >= 0)
-
-typedef int dnssd_sock_t;
-
-typedef struct
-{
-    uint32_t op;        // request_op_t or reply_op_t
-} ipc_msg_hdr;
-
-typedef enum
-{
-    request_op_none = 0,    // No request yet received on this connection
-    connection_request = 1, // connected socket via DNSServiceConnect()
-    reg_record_request,     // reg/remove record only valid for connected sockets
-    remove_record_request,
-    enumeration_request,
-    reg_service_request,
-    browse_request,
-    resolve_request,
-    query_request,
-    reconfirm_record_request,
-    add_record_request,
-    update_record_request,
-    setdomain_request,      // Up to here is in Tiger and B4W 1.0.3
-    getproperty_request,    // New in B4W 1.0.4
-    port_mapping_request,   // New in Leopard and B4W 2.0
-    addrinfo_request,
-    send_bpf,               // New in SL
-    getpid_request,
-    release_request,
-    connection_delegate_request,
-
-    cancel_request = 63
-} request_op_t;
-
-typedef struct _DNSServiceRef_t DNSServiceOp;
-typedef struct _DNSRecordRef_t DNSRecord;
-
-typedef struct
-{
-    ipc_msg_hdr ipc_hdr;
-    DNSServiceFlags cb_flags;
-    uint32_t cb_interface;
-    DNSServiceErrorType cb_err;
-} CallbackHeader;
-
-// client stub callback to process message from server and deliver results to client application
-typedef void (*ProcessReplyFn)(DNSServiceOp *const sdr, const CallbackHeader *const cbh, const char *msg, const char *const end);
-
-#define ValidatorBits 0x12345678
-#define DNSServiceRefValid(X) (dnssd_SocketValid((X)->sockfd) && (((X)->sockfd ^ (X)->validator) == ValidatorBits))
-
-/* The virtual #_DNSServiceRef_t structure for unittest */
-struct _DNSServiceRef_t
-{
-    dnssd_sock_t sockfd;                // Connected socket between client and daemon
-    dnssd_sock_t validator;             // Used to detect memory corruption, double disposals, etc.
-    uint32_t op;                        // request_op_t or reply_op_t
-    ProcessReplyFn ProcessReply;        // Function pointer to the code to handle received messages
-    void             *AppCallback;      // Client callback function and context
-    void             *AppContext;
-    DNSRecord        *rec;
-};
-
-/* The virtual #_DNSRecordRef_t structure for unittest */
-struct _DNSRecordRef_t
-{
-    DNSRecord       *recnext;
-       DNSServiceOp *sdr;
-};
-
-static ipc_msg_hdr *create_hdr(uint32_t op, size_t *len, char **data_start, int SeparateReturnSocket, DNSServiceOp *ref)
-{
-    char *msg = NULL;
-    ipc_msg_hdr *hdr;
-
-    *len += sizeof(ipc_msg_hdr);
-
-    // Write message to buffer
-    msg = malloc(*len);
-
-    memset(msg, 0, *len);
-    hdr = (ipc_msg_hdr *)msg;
-    hdr->op = op;
-    *data_start = msg + sizeof(ipc_msg_hdr);
-
-    return hdr;
-}
-
-static void FreeDNSRecords(DNSServiceOp *sdRef)
-{
-    DNSRecord *rec = sdRef->rec;
-    while (rec)
-    {
-        DNSRecord *next = rec->recnext;
-        free(rec);
-        rec = next;
-    }
-}
-
-static void FreeDNSServiceOp(DNSServiceOp *x)
-{
-    // We don't use our DNSServiceRefValid macro here because if we're cleaning up after a socket() call failed
-    // then sockfd could legitimately contain a failing value (e.g. dnssd_InvalidSocket)
-       x->sockfd       = dnssd_InvalidSocket;
-       x->validator    = 0xDDDDDDDD;
-       x->op           = request_op_none;
-       x->AppCallback  = NULL;
-       FreeDNSRecords(x);
-       free(x);
-}
-
-#define MOCK_DNSSD_SOCK_FD 5
-
-// Return a connected service ref (deallocate with DNSServiceRefDeallocate)
-static DNSServiceErrorType ConnectToServer(DNSServiceRef *ref, DNSServiceFlags flags, uint32_t op, ProcessReplyFn ProcessReply, void *AppCallback, void *AppContext)
-{
-    DNSServiceOp *sdr;
-
-    if (!ref)
-        return kDNSServiceErr_BadParam;
-
-    sdr = malloc(sizeof(DNSServiceOp));
-    sdr->sockfd        = dnssd_InvalidSocket;
-    sdr->validator     = sdr->sockfd ^ ValidatorBits;
-    sdr->op            = op;
-    sdr->AppCallback   = AppCallback;
-    sdr->AppContext    = AppContext;
-    sdr->rec           = NULL;
-
-       *ref = NULL;
-       sdr->sockfd    = MOCK_DNSSD_SOCK_FD;
-       sdr->validator = sdr->sockfd ^ ValidatorBits;
-
-    *ref = sdr;
-    return kDNSServiceErr_NoError;
-}
-
-#define TIZEN_DNSSD_MOCK_SERVICE "TizenDnssdMock"
-#define TIZEN_DNSSD_MOCK_TYPE "_tizen_dnssd_mock._mock"
-#define TIZEN_DNSSD_MOCK_DOMAIN  "tizen_dnssd_mock."
-#define TIZEN_DNSSD_MOCK_INTERFACE 5
-#define TIZEN_DNSSD_MOCK_PORT 12345
-#define TIZEN_DNSSD_MOCK_TXT_RECORD "txt=Tizen DNSSD MOCK info"
-#define TIZEN_DNSSD_MOCK_HOST_NAME "DNSSD Mock Host name"
-
-static DNSServiceErrorType deliver_request(ipc_msg_hdr *hdr, DNSServiceOp *sdr)
-{
-       if (!DNSServiceRefValid(sdr))
-       return kDNSServiceErr_BadReference;
-
-    free(hdr);
-
-       return kDNSServiceErr_NoError;
-}
-
-API dnssd_sock_t DNSServiceRefSockFD(DNSServiceRef sdRef)
-{
-    if (!sdRef)
-       return dnssd_InvalidSocket;
-
-    if (!DNSServiceRefValid(sdRef))
-       return dnssd_InvalidSocket;
-
-    return sdRef->sockfd;
-}
-
-
-static void __nsd_mock_dnssd_process_result_reg_service_request(DNSServiceOp *const sdr)
-{
-       ((DNSServiceRegisterReply)sdr->AppCallback)(sdr,
-                       0,
-                       kDNSServiceErr_NoError,
-                       NULL,
-                       NULL,
-                       TIZEN_DNSSD_MOCK_DOMAIN,
-                       sdr->AppContext);
-}
-
-static DNSServiceOp *adhoc_browse_handle = NULL;
-static void __nsd_mock_dnssd_process_result_browse_request(DNSServiceOp *const sdr)
-{
-       ((DNSServiceBrowseReply)sdr->AppCallback)(sdr,
-                       kDNSServiceFlagsAdd,
-                       TIZEN_DNSSD_MOCK_INTERFACE,
-                       kDNSServiceErr_NoError,
-                       TIZEN_DNSSD_MOCK_SERVICE,
-                       TIZEN_DNSSD_MOCK_TYPE,
-                       TIZEN_DNSSD_MOCK_DOMAIN,
-                       sdr->AppContext);
-       adhoc_browse_handle = sdr;
-}
-
-static void __nsd_mock_dnssd_process_result_resolve_request(DNSServiceOp *const sdr)
-{
-       ((DNSServiceResolveReply)sdr->AppCallback)(sdr,
-                       kDNSServiceFlagsAdd,
-                       TIZEN_DNSSD_MOCK_INTERFACE,
-                       kDNSServiceErr_NoError,
-                       TIZEN_DNSSD_MOCK_SERVICE,
-                       TIZEN_DNSSD_MOCK_TYPE,
-                       TIZEN_DNSSD_MOCK_PORT,
-                       strlen(TIZEN_DNSSD_MOCK_TXT_RECORD),
-                       (const unsigned char *)TIZEN_DNSSD_MOCK_TXT_RECORD,
-                       sdr->AppContext);
-}
-
-static void __nsd_mock_dnssd_process_result_addrinfo_request(DNSServiceOp *const sdr)
-{
-
-       struct sockaddr_in sa_in4 = {0,};
-       const struct sockaddr *const sa = (struct sockaddr*)&sa_in4;
-       sa_in4.sin_family = AF_INET;
-       ((DNSServiceGetAddrInfoReply)sdr->AppCallback)(sdr,
-                       kDNSServiceFlagsAdd,
-                       TIZEN_DNSSD_MOCK_INTERFACE,
-                       kDNSServiceErr_NoError,
-                       TIZEN_DNSSD_MOCK_HOST_NAME,
-                       sa,
-                       64,
-                       sdr->AppContext);
-
-       /* Adhoc for unavailable service */
-       ((DNSServiceBrowseReply)adhoc_browse_handle->AppCallback)(sdr,
-                       0,
-                       TIZEN_DNSSD_MOCK_INTERFACE,
-                       kDNSServiceErr_NoError,
-                       TIZEN_DNSSD_MOCK_SERVICE,
-                       TIZEN_DNSSD_MOCK_TYPE,
-                       TIZEN_DNSSD_MOCK_DOMAIN,
-                       adhoc_browse_handle->AppContext);
-       adhoc_browse_handle = NULL;
-}
-
-// Handle reply from server, calling application client callback. If there is no reply
-// from the daemon on the socket contained in sdRef, the call will block.
-API DNSServiceErrorType DNSServiceProcessResult(DNSServiceRef sdRef)
-{
-       if (!sdRef)
-               return kDNSServiceErr_BadParam;
-
-       if (!DNSServiceRefValid(sdRef))
-               return kDNSServiceErr_BadReference;
-
-       /* original flow:
-        * Read reply header
-        * check header validity
-        * read body
-        * call sdRef->ProcessReply(sdRef, &cbh, ptr, data + cbh.ipc_hdr.datalen);
-        */
-       if (sdRef->op == reg_service_request)
-               __nsd_mock_dnssd_process_result_reg_service_request(sdRef);
-       else if (sdRef->op == browse_request)
-               __nsd_mock_dnssd_process_result_browse_request(sdRef);
-       else if (sdRef->op == resolve_request)
-               __nsd_mock_dnssd_process_result_resolve_request(sdRef);
-       else if (sdRef->op == addrinfo_request)
-               __nsd_mock_dnssd_process_result_addrinfo_request(sdRef);
-
-    return kDNSServiceErr_NoError;
-}
-
-
-API void DNSServiceRefDeallocate(DNSServiceRef sdRef)
-{
-       if (!sdRef)
-       return;
-
-       if (!DNSServiceRefValid(sdRef))
-       return;
-
-       FreeDNSServiceOp(sdRef);
-}
-
-API DNSServiceErrorType DNSServiceResolve
-(
-    DNSServiceRef                 *sdRef,
-    DNSServiceFlags flags,
-    uint32_t interfaceIndex,
-    const char                    *name,
-    const char                    *regtype,
-    const char                    *domain,
-    DNSServiceResolveReply callBack,
-    void                          *context
-)
-{
-       char *ptr;
-       size_t len;
-       ipc_msg_hdr *hdr;
-       DNSServiceErrorType err;
-
-       if (!sdRef || !name || !regtype || !domain || !callBack)
-               return kDNSServiceErr_BadParam;
-
-       err = ConnectToServer(sdRef, flags, resolve_request, NULL, callBack, context);
-       if (err)
-               return err;    // On error ConnectToServer leaves *sdRef set to NULL
-
-       // Calculate total message length
-       len = 0;
-
-       hdr = create_hdr(resolve_request, &len, &ptr, 0, *sdRef);
-       if (!hdr) {
-               DNSServiceRefDeallocate(*sdRef);
-               *sdRef = NULL;
-               return kDNSServiceErr_NoMemory;
-       }
-
-       err = deliver_request(hdr, *sdRef);     // Will free hdr for us
-       if (err) {
-               DNSServiceRefDeallocate(*sdRef);
-               *sdRef = NULL;
-       }
-
-       return err;
-}
-
-API DNSServiceErrorType DNSServiceRegister
-(
-    DNSServiceRef                       *sdRef,
-    DNSServiceFlags flags,
-    uint32_t interfaceIndex,
-    const char                          *name,
-    const char                          *regtype,
-    const char                          *domain,
-    const char                          *host,
-    uint16_t PortInNetworkByteOrder,
-    uint16_t txtLen,
-    const void                          *txtRecord,
-    DNSServiceRegisterReply callBack,
-    void                                *context
-)
-{
-       char *ptr;
-       size_t len;
-       ipc_msg_hdr *hdr;
-       DNSServiceErrorType err;
-
-       if (!sdRef || !regtype)
-               return kDNSServiceErr_BadParam;
-
-       // No callback must have auto-rename
-       if (!callBack && (flags & kDNSServiceFlagsNoAutoRename))
-               return kDNSServiceErr_BadParam;
-
-       err = ConnectToServer(sdRef, flags, reg_service_request, NULL, callBack, context);
-       if (err)
-               return err;
-
-       len = 0;
-       hdr = create_hdr(reg_service_request, &len, &ptr, 0, *sdRef);
-       if (!hdr) {
-               DNSServiceRefDeallocate(*sdRef);
-               *sdRef = NULL;
-               return kDNSServiceErr_NoMemory;
-       }
-
-       err = deliver_request(hdr, *sdRef);     // Will free hdr for us
-       if (err) {
-               DNSServiceRefDeallocate(*sdRef);
-               *sdRef = NULL;
-       }
-       return err;
-}
-
-API DNSServiceErrorType DNSServiceAddRecord
-(
-    DNSServiceRef sdRef,
-    DNSRecordRef *RecordRef,
-    DNSServiceFlags flags,
-    uint16_t rrtype,
-    uint16_t rdlen,
-    const void *rdata,
-    uint32_t ttl
-)
-{
-    ipc_msg_hdr *hdr;
-    size_t len = 0;
-    char *ptr;
-    DNSRecordRef rref;
-    DNSRecord **p;
-
-       if (!sdRef || !RecordRef || (!rdata && rdlen))
-               return kDNSServiceErr_BadParam;
-
-       if (sdRef->op != reg_service_request)
-               return kDNSServiceErr_BadReference;
-
-       if (!DNSServiceRefValid(sdRef))
-               return kDNSServiceErr_BadReference;
-
-    *RecordRef = NULL;
-
-    hdr = create_hdr(add_record_request, &len, &ptr, 0, sdRef);
-
-    rref = malloc(sizeof(DNSRecord));
-    rref->sdr = sdRef;
-    rref->recnext = NULL;
-
-    *RecordRef = rref;
-
-    p = &(sdRef)->rec;
-    while (*p) p = &(*p)->recnext;
-    *p = rref;
-
-       return deliver_request(hdr, sdRef);;
-}
-
-API DNSServiceErrorType DNSServiceUpdateRecord
-(
-    DNSServiceRef sdRef,
-    DNSRecordRef RecordRef,                            /* may be NULL */
-    DNSServiceFlags flags,
-    uint16_t rdlen,
-    const void                          *rdata,
-    uint32_t ttl
-)
-{
-    (void)sdRef;        // Unused
-    (void)RecordRef;    // Unused
-    (void)flags;        // Unused
-    (void)rdlen;        // Unused
-    (void)rdata;        // Unused
-    (void)ttl;          // Unused
-    return kDNSServiceErr_NoError;
-}
-
-API DNSServiceErrorType DNSServiceRemoveRecord
-(
-    DNSServiceRef sdRef,
-    DNSRecordRef RecordRef,
-    DNSServiceFlags flags
-)
-{
-       ipc_msg_hdr *hdr;
-       size_t len = 0;
-       char *ptr;
-       DNSServiceErrorType err;
-
-       if (!sdRef)
-               return kDNSServiceErr_BadParam;
-       if (!RecordRef)
-               return kDNSServiceErr_BadParam;
-
-       if (!DNSServiceRefValid(sdRef))
-               return kDNSServiceErr_BadReference;
-
-       hdr = create_hdr(remove_record_request, &len, &ptr, 1, sdRef);
-
-       err = deliver_request(hdr, sdRef);      // Will free hdr for us
-       if (!err) {
-               // This RecordRef could have been allocated in DNSServiceRegisterRecord or DNSServiceAddRecord.
-               // If so, delink from the list before freeing
-               DNSRecord **p = &sdRef->rec;
-               while (*p && *p != RecordRef)
-                       p = &(*p)->recnext;
-               if (*p)
-                       *p = RecordRef->recnext;
-
-               free(RecordRef);
-       }
-       return err;
-}
-
-API DNSServiceErrorType DNSServiceGetAddrInfo
-(
-    DNSServiceRef                    *sdRef,
-    DNSServiceFlags flags,
-    uint32_t interfaceIndex,
-    uint32_t protocol,
-    const char                       *hostname,
-    DNSServiceGetAddrInfoReply callBack,
-    void                             *context          /* may be NULL */
-)
-{
-       char *ptr;
-       size_t len;
-       ipc_msg_hdr *hdr;
-       DNSServiceErrorType err;
-
-       if (!sdRef || !hostname || !callBack)
-               return kDNSServiceErr_BadParam;
-
-       err = ConnectToServer(sdRef, flags, addrinfo_request, NULL, callBack, context);
-       if (err)
-               return err;    // On error ConnectToServer leaves *sdRef set to NULL
-
-       // Calculate total message length
-       len = 0;
-
-       hdr = create_hdr(addrinfo_request, &len, &ptr, 0, *sdRef);
-       if (!hdr) {
-               DNSServiceRefDeallocate(*sdRef);
-               *sdRef = NULL;
-               return kDNSServiceErr_NoMemory;
-       }
-
-       err = deliver_request(hdr, *sdRef);     // Will free hdr for us
-       if (err) {
-               DNSServiceRefDeallocate(*sdRef);
-               *sdRef = NULL;
-       }
-       return err;
-}
-
-API DNSServiceErrorType DNSServiceBrowse
-(
-    DNSServiceRef         *sdRef,
-    DNSServiceFlags flags,
-    uint32_t interfaceIndex,
-    const char            *regtype,
-    const char            *domain,
-    DNSServiceBrowseReply callBack,
-    void                  *context
-)
-{
-       char *ptr;
-       size_t len;
-       ipc_msg_hdr *hdr;
-       DNSServiceErrorType err;
-
-       // NULL domain handled below
-       if (!sdRef || !regtype || !callBack)
-               return kDNSServiceErr_BadParam;
-
-
-       err = ConnectToServer(sdRef, flags, browse_request, NULL, callBack, context);
-       if (err)
-               return err;    // On error ConnectToServer leaves *sdRef set to NULL
-
-       len = 0;
-
-       hdr = create_hdr(browse_request, &len, &ptr, 0, *sdRef);
-       if (!hdr) {
-               DNSServiceRefDeallocate(*sdRef);
-               *sdRef = NULL;
-               return kDNSServiceErr_NoMemory;
-       }
-
-       err = deliver_request(hdr, *sdRef);     // Will free hdr for us
-       if (err) {
-               DNSServiceRefDeallocate(*sdRef);
-               *sdRef = NULL;
-       }
-
-       return err;
-}
diff --git a/unittest/mock/nsd-mock-gdbus.c b/unittest/mock/nsd-mock-gdbus.c
deleted file mode 100644 (file)
index 1c0182e..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-//
-// Copyright (c) 2020 Samsung Electronics Co., Ltd.
-//
-// Licensed under the Apache License, Version 2.0 (the License);
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
-#include <glib.h>
-#include <gio/gio.h>
-
-#ifndef API
-#define API __attribute__ ((visibility("default")))
-#endif
-
-const gchar *netconfig_mock_gdbus_unique_name = "temporal_name";
-
-static GDBusConnection *get_uninitialized_connection(GBusType bus_type,
-               GCancellable  *cancellable,
-               GError **error)
-{
-       GDBusConnection *ret;
-       ret = NULL;
-
-       ret = g_object_new(G_TYPE_DBUS_CONNECTION,
-                       "address", "temporal_address",
-                       "flags", G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_CLIENT |
-                       G_DBUS_CONNECTION_FLAGS_MESSAGE_BUS_CONNECTION,
-                       "exit-on-close", TRUE,
-                       NULL);
-
-       return ret;
-}
-
-API GDBusConnection *g_bus_get_sync(GBusType bus_type, GCancellable *cancellable, GError **error)
-{
-               return get_uninitialized_connection(bus_type, cancellable, error);
-}
-
-API const gchar *g_dbus_connection_get_unique_name(GDBusConnection *connection)
-{
-       return netconfig_mock_gdbus_unique_name;
-}
-
-API GVariant *g_dbus_connection_call_sync(GDBusConnection *connection,
-               const gchar *bus_name,
-               const gchar *object_path,
-               const gchar *interface_name,
-               const gchar *method_name,
-               GVariant *parameters,
-               const GVariantType *reply_type,
-               GDBusCallFlags flags,
-               gint timeout_msec,
-               GCancellable *cancellable,
-               GError **error)
-{
-       *error = NULL;
-       return g_variant_new_string("Haha this is mockup\n");
-}
diff --git a/unittest/mock/nsd-mock-gio.c b/unittest/mock/nsd-mock-gio.c
deleted file mode 100644 (file)
index 5ee9f4f..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-//
-// Copyright (c) 2020 Samsung Electronics Co., Ltd.
-//
-// Licensed under the Apache License, Version 2.0 (the License);
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
-#include <glib.h>
-#include <gio/gio.h>
-
-#ifndef API
-#define API __attribute__ ((visibility("default")))
-#endif
-
-#define TIZEN_MOCK_IO_CHANNEL_SOURCE 5
-
-API GIOChannel *g_io_channel_unix_new(gint fd)
-{
-       return g_new(GIOChannel, 1);
-}
-
-API GIOStatus g_io_channel_set_flags(GIOChannel  *channel,
-               GIOFlags flags,
-               GError **error)
-{
-       return G_IO_STATUS_NORMAL;
-}
-
-
-API void g_io_channel_set_close_on_unref(GIOChannel *channel,
-                                gboolean do_close)
-{
-       return;
-}
-
-typedef struct {
-       GIOChannel *channel;
-       GIOFunc func;
-       gpointer user_data;
-       gboolean called_once;
-} mock_gio_channel_cb_data_s;
-
-static gboolean __mock_gio_channel_cb(gpointer user_data)
-{
-       mock_gio_channel_cb_data_s *cb_data = (mock_gio_channel_cb_data_s *)user_data;
-
-       if (!user_data)
-               return FALSE;
-
-       if (cb_data->called_once)
-               return TRUE;
-
-       cb_data->func(cb_data->channel, G_IO_IN, cb_data->user_data);
-       cb_data->called_once = TRUE;
-
-       return TRUE;
-}
-
-static void __remove_mock_gio_channel_cb(gpointer data)
-{
-       mock_gio_channel_cb_data_s *cb_data = (mock_gio_channel_cb_data_s *)data;
-       if (!cb_data)
-               return;
-       g_free(cb_data);
-}
-
-API guint g_io_add_watch(GIOChannel *channel,
-               GIOCondition condition,
-               GIOFunc func,
-               gpointer user_data)
-{
-       mock_gio_channel_cb_data_s *cb_data = g_try_malloc0(sizeof(mock_gio_channel_cb_data_s));
-       guint g_mock_gio_channel_cb_source = 0;
-
-       cb_data->channel = channel;
-       cb_data->func = func;
-       cb_data->user_data = user_data;
-       cb_data->called_once = FALSE;
-       g_mock_gio_channel_cb_source = g_idle_add_full(G_PRIORITY_DEFAULT_IDLE,
-                       __mock_gio_channel_cb,
-                       (gpointer)cb_data,
-                       __remove_mock_gio_channel_cb);
-
-       return g_mock_gio_channel_cb_source;
-}
-
-API void g_io_channel_unref(GIOChannel *channel)
-{
-       g_free(channel);
-}
diff --git a/unittest/mock/nsd-mock-gssdp.c b/unittest/mock/nsd-mock-gssdp.c
deleted file mode 100644 (file)
index 52fbd97..0000000
+++ /dev/null
@@ -1,171 +0,0 @@
-//
-// Copyright (c) 2020 Samsung Electronics Co., Ltd.
-//
-// Licensed under the Apache License, Version 2.0 (the License);
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
-#include <glib-object.h>
-
-#ifndef API
-#define API __attribute__ ((visibility("default")))
-#endif
-
-#define DEFAULT_MOCK_GSSDP_RESOURCE_ID 5
-
-GType
-gssdp_client_get_type (void) G_GNUC_CONST;
-
-#define GSSDP_TYPE_CLIENT \
-                (gssdp_client_get_type ())
-#define GSSDP_CLIENT(obj) \
-                (G_TYPE_CHECK_INSTANCE_CAST ((obj), \
-                 GSSDP_TYPE_CLIENT, \
-                 GSSDPClient))
-#define GSSDP_CLIENT_CLASS(klass) \
-                (G_TYPE_CHECK_CLASS_CAST ((klass), \
-                 GSSDP_TYPE_CLIENT, \
-                 GSSDPClientClass))
-#define GSSDP_IS_CLIENT(obj) \
-                (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \
-                 GSSDP_TYPE_CLIENT))
-#define GSSDP_IS_CLIENT_CLASS(klass) \
-                (G_TYPE_CHECK_CLASS_TYPE ((klass), \
-                 GSSDP_TYPE_CLIENT))
-#define GSSDP_CLIENT_GET_CLASS(obj) \
-                (G_TYPE_INSTANCE_GET_CLASS ((obj), \
-                 GSSDP_TYPE_CLIENT, \
-                 GSSDPClientClass))
-
-typedef struct _GSSDPClient GSSDPClient;
-typedef struct _GSSDPClientClass GSSDPClientClass;
-
-struct _GSSDPClient {
-        GObject parent;
-};
-
-struct _GSSDPClientClass {
-        GObjectClass parent_class;
-};
-
-GType
-gssdp_resource_group_get_type (void) G_GNUC_CONST;
-
-#define GSSDP_TYPE_RESOURCE_GROUP \
-                (gssdp_resource_group_get_type ())
-#define GSSDP_RESOURCE_GROUP(obj) \
-                (G_TYPE_CHECK_INSTANCE_CAST ((obj), \
-                 GSSDP_TYPE_RESOURCE_GROUP, \
-                 GSSDPResourceGroup))
-#define GSSDP_RESOURCE_GROUP_CLASS(klass) \
-                (G_TYPE_CHECK_CLASS_CAST ((klass), \
-                 GSSDP_TYPE_RESOURCE_GROUP, \
-                 GSSDPResourceGroupClass))
-#define GSSDP_IS_RESOURCE_GROUP(obj) \
-                (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \
-                 GSSDP_TYPE_RESOURCE_GROUP))
-#define GSSDP_IS_RESOURCE_GROUP_CLASS(klass) \
-                (G_TYPE_CHECK_CLASS_TYPE ((klass), \
-                 GSSDP_TYPE_RESOURCE_GROUP))
-#define GSSDP_RESOURCE_GROUP_GET_CLASS(obj) \
-                (G_TYPE_INSTANCE_GET_CLASS ((obj), \
-                 GSSDP_TYPE_RESOURCE_GROUP, \
-                 GSSDPResourceGroupClass))
-
-typedef struct _GSSDPResourceGroup GSSDPResourceGroup;
-typedef struct _GSSDPResourceGroupClass GSSDPResourceGroupClass;
-
-struct _GSSDPResourceGroup {
-        GObject parent;
-};
-
-struct _GSSDPResourceGroupClass {
-        GObjectClass parent_class;
-};
-
-GType
-gssdp_resource_browser_get_type (void) G_GNUC_CONST;
-
-#define GSSDP_TYPE_RESOURCE_BROWSER \
-                (gssdp_resource_browser_get_type ())
-#define GSSDP_RESOURCE_BROWSER(obj) \
-                (G_TYPE_CHECK_INSTANCE_CAST ((obj), \
-                 GSSDP_TYPE_RESOURCE_BROWSER, \
-                 GSSDPResourceBrowser))
-#define GSSDP_RESOURCE_BROWSER_CLASS(klass) \
-                (G_TYPE_CHECK_CLASS_CAST ((klass), \
-                 GSSDP_TYPE_RESOURCE_BROWSER, \
-                 GSSDPResourceBrowserClass))
-#define GSSDP_IS_RESOURCE_BROWSER(obj) \
-                (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \
-                 GSSDP_TYPE_RESOURCE_BROWSER))
-#define GSSDP_IS_RESOURCE_BROWSER_CLASS(klass) \
-                (G_TYPE_CHECK_CLASS_TYPE ((klass), \
-                 GSSDP_TYPE_RESOURCE_BROWSER))
-#define GSSDP_RESOURCE_BROWSER_GET_CLASS(obj) \
-                (G_TYPE_INSTANCE_GET_CLASS ((obj), \
-                 GSSDP_TYPE_RESOURCE_BROWSER, \
-                 GSSDPResourceBrowserClass))
-
-typedef struct _GSSDPResourceBrowser GSSDPResourceBrowser;
-typedef struct _GSSDPResourceBrowserClass GSSDPResourceBrowserClass;
-
-struct _GSSDPResourceBrowser {
-        GObject parent;
-};
-
-struct _GSSDPResourceBrowserClass {
-        GObjectClass parent_class;
-};
-
-API GSSDPClient *gssdp_client_new(GMainContext *main_context,
-               const char *iface,
-               GError **error)
-{
-       return g_object_new(GSSDP_TYPE_CLIENT, NULL);
-}
-
-API GSSDPResourceGroup * gssdp_resource_group_new(GSSDPClient *client)
-{
-       return g_object_new (GSSDP_TYPE_RESOURCE_GROUP,
-                       "client", client,
-                       NULL);
-}
-
-API guint gssdp_resource_group_add_resource_simple(GSSDPResourceGroup *resource_group,
-               const char *target,
-               const char *usn,
-               const char *location)
-{
-        return DEFAULT_MOCK_GSSDP_RESOURCE_ID;
-}
-
-API void gssdp_resource_group_set_available(GSSDPResourceGroup *resource_group,
-               gboolean available)
-{
-       return;
-}
-
-API GSSDPResourceBrowser *gssdp_resource_browser_new(GSSDPClient *client,
-               const char  *target)
-{
-        return g_object_new (GSSDP_TYPE_RESOURCE_BROWSER,
-                       "client", client,
-                               "target", target,
-                               NULL);
-}
-
-API void gssdp_resource_browser_set_active (GSSDPResourceBrowser *resource_browser,
-               gboolean active)
-{
-       return;
-}
diff --git a/unittest/mock/nsd-mock.c b/unittest/mock/nsd-mock.c
deleted file mode 100644 (file)
index 31b7da8..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-//
-// Copyright (c) 2020 Samsung Electronics Co., Ltd.
-//
-// Licensed under the Apache License, Version 2.0 (the License);
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-#include <stdio.h>
-#include <stdlib.h>
-#include <stdbool.h>
-#include <string.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-
-#include <net/if.h>
-
-#include <glib.h>
-#include <gio/gio.h>
-
-#ifndef API
-#define API __attribute__ ((visibility("default")))
-#endif
-
-#define DEFAULT_MOCK_GOBJECT_SIGNAL 5
-
-typedef enum {
-       LOG_ID_INVALID = -1,
-       LOG_ID_MAIN,
-       LOG_ID_RADIO,
-       LOG_ID_SYSTEM,
-       LOG_ID_APPS,
-       LOG_ID_KMSG,
-       LOG_ID_SYSLOG,
-       LOG_ID_MAX
-} log_id_t;
-
-API int __dlog_print(log_id_t log_id, int prio, const char *tag, const char *fmt, ...)
-{
-       va_list ap;
-       va_start(ap, fmt);
-       vprintf(fmt, ap);
-       va_end(ap);
-       printf("\n");
-
-       return 0;
-}
-
-API int system_info_get_platform_bool(const char *key, bool *value)
-{
-       *value = true;
-       return 0;
-}
-
-API unsigned int if_nametoindex(const char *ifname)
-{
-       if (!ifname)
-               return 0;
-       else
-               return 1;
-}
-API gulong g_signal_connect_data(gpointer instance,
-               const gchar *detailed_signal,
-               GCallback c_handler,
-               gpointer data,
-               GClosureNotify destroy_data,
-               GConnectFlags connect_flags)
-{
-       return DEFAULT_MOCK_GOBJECT_SIGNAL;
-}
-
-API void g_signal_handler_disconnect (gpointer instance,
-                             gulong   handler_id)
-{
-       return;
-}
diff --git a/unittest/tct-nsd-core.cpp b/unittest/tct-nsd-core.cpp
deleted file mode 100755 (executable)
index 4468a42..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-//
-// Copyright (c) 2020 Samsung Electronics Co., Ltd.
-//
-// Licensed under the Apache License, Version 2.0 (the License);
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-#include <stdio.h>
-#include <string.h>
-#include "tct_common.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "tct-nsd-core.h"
-
-#ifdef __cplusplus
-}
-#endif
-
-#include <gtest/gtest.h>
-
-#include <malloc.h>
-#include <unistd.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <sys/wait.h>
-#include <stdbool.h>
-
-TEST(nsd, nsd){
-       char *pszGetTCName = NULL;
-       pszGetTCName = (char*)malloc( 256 );
-       memset( pszGetTCName, 0x00, 256);
-       strcpy( pszGetTCName, "utc_nsd");
-       int i=0, result=0;
-
-       dlog_print(DLOG_INFO, "NativeTCT", "[%s:%d] Executing TC Name = %s", __FUNCTION__, __LINE__, pszGetTCName);
-
-       int successCnt = 0;
-       int errorCnt = 0;
-       for ( i = 0; tc_array[i].name; i++ )
-       {
-               if ( 0 == strncmp(pszGetTCName, tc_array[i].name, strlen(pszGetTCName)) )
-               {
-                       if ( tc_array[i].startup )
-                       {
-                               tc_array[i].startup();
-                       }
-
-                       result = tc_array[i].function();
-
-                       if( result == 0 ) {
-                               successCnt++;
-                       } else {
-                               dlog_print(DLOG_INFO, "NativeTCT", "[Error][%d] %s returns value = %d", i, tc_array[i].name, result);
-                               errorCnt++;
-                       }
-
-                       EXPECT_EQ(result, 0);
-
-                       if ( tc_array[i].cleanup )
-                       {
-                               tc_array[i].cleanup();
-                       }
-               }
-               else
-               {
-                       dlog_print(DLOG_INFO, "NativeTCT", "Name check error! [%s][%s]", pszGetTCName, tc_array[i].name);
-                       ASSERT_EQ(0, 1);
-               }
-       }
-
-       dlog_print(DLOG_INFO, "NativeTCT", "==========================");
-       dlog_print(DLOG_INFO, "NativeTCT", "Success [%4d / %4d]", successCnt, successCnt + errorCnt);
-       dlog_print(DLOG_INFO, "NativeTCT", "Error   [%4d / %4d]", errorCnt, successCnt + errorCnt);
-       dlog_print(DLOG_INFO, "NativeTCT", "==========================");
-
-       FREE_MEMORY_TC(pszGetTCName);
-}
-
-int main(int argc, char** argv) {
-    ::testing::InitGoogleTest(&argc, argv);
-    return RUN_ALL_TESTS();
-}
diff --git a/unittest/tct-nsd-core.h b/unittest/tct-nsd-core.h
deleted file mode 100755 (executable)
index 54afc4f..0000000
+++ /dev/null
@@ -1,232 +0,0 @@
-//
-// Copyright (c) 2020 Samsung Electronics Co., Ltd.
-//
-// Licensed under the Apache License, Version 2.0 (the License);
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-#ifndef __TCT_NSD_NATIVE_H__
-#define __TCT_NSD_NATIVE_H__
-
-#include "testcase.h"
-#include "tct_common.h"
-
-extern void utc_nsd_ssdp_browse_startup(void);
-extern void utc_nsd_ssdp_browse_cleanup(void);
-extern void utc_nsd_ssdp_register_startup(void);
-extern void utc_nsd_ssdp_register_cleanup(void);
-extern void utc_nsd_dnssd_browse_startup(void);
-extern void utc_nsd_dnssd_browse_cleanup(void);
-extern void utc_nsd_dnssd_register_startup(void);
-extern void utc_nsd_dnssd_register_cleanup(void);
-
-extern int utc_nsd_ssdp_start_browsing_service_p(void);
-extern int utc_nsd_ssdp_start_browsing_service_n(void);
-extern int utc_nsd_ssdp_stop_browsing_service_p(void);
-extern int utc_nsd_ssdp_stop_browsing_service_n1(void);
-extern int utc_nsd_ssdp_stop_browsing_service_n2(void);
-extern int utc_nsd_ssdp_initialize_p(void);
-extern int utc_nsd_ssdp_deinitialize_p(void);
-extern int utc_nsd_ssdp_deinitialize_n(void);
-extern int utc_nsd_ssdp_create_local_service_p(void);
-extern int utc_nsd_ssdp_create_local_service_n(void);
-extern int utc_nsd_ssdp_destroy_local_service_p(void);
-extern int utc_nsd_ssdp_detroy_local_service_n(void);
-extern int utc_nsd_ssdp_set_usn_p(void);
-extern int utc_nsd_ssdp_set_usn_n1(void);
-extern int utc_nsd_ssdp_set_usn_n2(void);
-extern int utc_nsd_ssdp_set_url_p(void);
-extern int utc_nsd_ssdp_set_url_n1(void);
-extern int utc_nsd_ssdp_set_url_n2(void);
-extern int utc_nsd_ssdp_get_target_p(void);
-extern int utc_nsd_ssdp_get_target_n1(void);
-extern int utc_nsd_ssdp_get_target_n2(void);
-extern int utc_nsd_ssdp_get_usn_p(void);
-extern int utc_nsd_ssdp_get_usn_n1(void);
-extern int utc_nsd_ssdp_get_usn_n2(void);
-extern int utc_nsd_ssdp_get_url_p(void);
-extern int utc_nsd_ssdp_get_url_n1(void);
-extern int utc_nsd_ssdp_get_url_n2(void);
-extern int utc_nsd_ssdp_register_local_service_p(void);
-extern int utc_nsd_ssdp_register_local_service_n1(void);
-extern int utc_nsd_ssdp_register_local_service_n2(void);
-extern int utc_nsd_ssdp_deregister_local_service_p(void);
-extern int utc_nsd_ssdp_deregister_local_service_n(void);
-extern int utc_nsd_dnssd_browsing_service_full_p(void);
-extern int utc_nsd_dnssd_start_browsing_service_p(void);
-extern int utc_nsd_dnssd_start_browsing_service_n(void);
-extern int utc_nsd_dnssd_stop_browsing_service_p(void);
-extern int utc_nsd_dnssd_stop_browsing_service_n(void);
-extern int utc_nsd_dnssd_start_browsing_service_on_interface_p(void);
-extern int utc_nsd_dnssd_start_browsing_service_on_interface_n1(void);
-extern int utc_nsd_dnssd_start_browsing_service_on_interface_n2(void);
-extern int utc_nsd_dnssd_start_browsing_service_on_interface_n3(void);
-extern int utc_nsd_dnssd_service_get_ip_n1(void);
-extern int utc_nsd_dnssd_service_get_ip_n2(void);
-extern int utc_nsd_dnssd_initialize_p(void);
-extern int utc_nsd_dnssd_initialize_n(void);
-extern int utc_nsd_dnssd_deinitialize_p(void);
-extern int utc_nsd_dnssd_deinitialize_n(void);
-extern int utc_nsd_dnssd_create_local_service_p(void);
-extern int utc_nsd_dnssd_create_local_service_n1(void);
-extern int utc_nsd_dnssd_create_local_service_n2(void);
-extern int utc_nsd_dnssd_destroy_local_service_p(void);
-extern int utc_nsd_dnssd_detroy_local_service_n1(void);
-extern int utc_nsd_dnssd_detroy_local_service_n2(void);
-extern int utc_nsd_dnssd_set_name_p(void);
-extern int utc_nsd_dnssd_set_name_n1(void);
-extern int utc_nsd_dnssd_set_name_n2(void);
-extern int utc_nsd_dnssd_set_name_n3(void);
-extern int utc_nsd_dnssd_set_port_p(void);
-extern int utc_nsd_dnssd_set_port_n1(void);
-extern int utc_nsd_dnssd_set_port_n2(void);
-extern int utc_nsd_dnssd_set_port_n3(void);
-extern int utc_nsd_dnssd_set_interface_p(void);
-extern int utc_nsd_dnssd_set_interface_n1(void);
-extern int utc_nsd_dnssd_set_interface_n2(void);
-extern int utc_nsd_dnssd_set_interface_n3(void);
-extern int utc_nsd_dnssd_set_record_p(void);
-extern int utc_nsd_dnssd_set_record_n1(void);
-extern int utc_nsd_dnssd_set_record_n2(void);
-extern int utc_nsd_dnssd_unset_record_p(void);
-extern int utc_nsd_dnssd_unset_record_n1(void);
-extern int utc_nsd_dnssd_unset_record_n2(void);
-extern int utc_nsd_dnssd_unset_record_n3(void);
-extern int utc_nsd_dnssd_add_txt_record_p(void);
-extern int utc_nsd_dnssd_add_txt_record_n1(void);
-extern int utc_nsd_dnssd_add_txt_record_n2(void);
-extern int utc_nsd_dnssd_add_txt_record_n3(void);
-extern int utc_nsd_dnssd_add_txt_record_n4(void);
-extern int utc_nsd_dnssd_get_all_txt_record_p(void);
-extern int utc_nsd_dnssd_get_all_txt_record_n1(void);
-extern int utc_nsd_dnssd_get_all_txt_record_n2(void);
-extern int utc_nsd_dnssd_get_all_txt_record_n3(void);
-extern int utc_nsd_dnssd_remove_txt_record_p(void);
-extern int utc_nsd_dnssd_remove_txt_record_n1(void);
-extern int utc_nsd_dnssd_remove_txt_record_n2(void);
-extern int utc_nsd_dnssd_get_type_p(void);
-extern int utc_nsd_dnssd_get_type_n1(void);
-extern int utc_nsd_dnssd_get_type_n2(void);
-extern int utc_nsd_dnssd_get_type_n3(void);
-extern int utc_nsd_dnssd_get_name_p(void);
-extern int utc_nsd_dnssd_get_name_n1(void);
-extern int utc_nsd_dnssd_get_name_n2(void);
-extern int utc_nsd_dnssd_get_port_p(void);
-extern int utc_nsd_dnssd_get_port_n1(void);
-extern int utc_nsd_dnssd_get_port_n2(void);
-extern int utc_nsd_dnssd_register_local_service_p(void);
-extern int utc_nsd_dnssd_register_local_service_n(void);
-extern int utc_nsd_dnssd_deregister_local_service_p(void);
-extern int utc_nsd_dnssd_deregister_local_service_n(void);
-
-testcase tc_array[] = {
-       {"utc_nsd_ssdp_start_browsing_service_p",utc_nsd_ssdp_start_browsing_service_p,utc_nsd_ssdp_browse_startup,utc_nsd_ssdp_browse_cleanup},
-       {"utc_nsd_ssdp_start_browsing_service_n",utc_nsd_ssdp_start_browsing_service_n,utc_nsd_ssdp_browse_startup,utc_nsd_ssdp_browse_cleanup},
-       {"utc_nsd_ssdp_stop_browsing_service_p",utc_nsd_ssdp_stop_browsing_service_p,utc_nsd_ssdp_browse_startup,utc_nsd_ssdp_browse_cleanup},
-       {"utc_nsd_ssdp_stop_browsing_service_n1",utc_nsd_ssdp_stop_browsing_service_n1,utc_nsd_ssdp_browse_startup,utc_nsd_ssdp_browse_cleanup},
-       {"utc_nsd_ssdp_stop_browsing_service_n2",utc_nsd_ssdp_stop_browsing_service_n2,utc_nsd_ssdp_browse_startup,utc_nsd_ssdp_browse_cleanup},
-       {"utc_nsd_ssdp_initialize_p",utc_nsd_ssdp_initialize_p,utc_nsd_ssdp_register_startup,utc_nsd_ssdp_register_cleanup},
-       {"utc_nsd_ssdp_deinitialize_p",utc_nsd_ssdp_deinitialize_p,utc_nsd_ssdp_register_startup,utc_nsd_ssdp_register_cleanup},
-       {"utc_nsd_ssdp_deinitialize_n",utc_nsd_ssdp_deinitialize_n,utc_nsd_ssdp_register_startup,utc_nsd_ssdp_register_cleanup},
-       {"utc_nsd_ssdp_create_local_service_p",utc_nsd_ssdp_create_local_service_p,utc_nsd_ssdp_register_startup,utc_nsd_ssdp_register_cleanup},
-       {"utc_nsd_ssdp_create_local_service_n",utc_nsd_ssdp_create_local_service_n,utc_nsd_ssdp_register_startup,utc_nsd_ssdp_register_cleanup},
-       {"utc_nsd_ssdp_destroy_local_service_p",utc_nsd_ssdp_destroy_local_service_p,utc_nsd_ssdp_register_startup,utc_nsd_ssdp_register_cleanup},
-       {"utc_nsd_ssdp_detroy_local_service_n",utc_nsd_ssdp_detroy_local_service_n,utc_nsd_ssdp_register_startup,utc_nsd_ssdp_register_cleanup},
-       {"utc_nsd_ssdp_set_usn_p",utc_nsd_ssdp_set_usn_p,utc_nsd_ssdp_register_startup,utc_nsd_ssdp_register_cleanup},
-       {"utc_nsd_ssdp_set_usn_n1",utc_nsd_ssdp_set_usn_n1,utc_nsd_ssdp_register_startup,utc_nsd_ssdp_register_cleanup},
-       {"utc_nsd_ssdp_set_usn_n2",utc_nsd_ssdp_set_usn_n2,utc_nsd_ssdp_register_startup,utc_nsd_ssdp_register_cleanup},
-       {"utc_nsd_ssdp_set_url_p",utc_nsd_ssdp_set_url_p,utc_nsd_ssdp_register_startup,utc_nsd_ssdp_register_cleanup},
-       {"utc_nsd_ssdp_set_url_n1",utc_nsd_ssdp_set_url_n1,utc_nsd_ssdp_register_startup,utc_nsd_ssdp_register_cleanup},
-       {"utc_nsd_ssdp_set_url_n2",utc_nsd_ssdp_set_url_n2,utc_nsd_ssdp_register_startup,utc_nsd_ssdp_register_cleanup},
-       {"utc_nsd_ssdp_get_target_p",utc_nsd_ssdp_get_target_p,utc_nsd_ssdp_register_startup,utc_nsd_ssdp_register_cleanup},
-       {"utc_nsd_ssdp_get_target_n1",utc_nsd_ssdp_get_target_n1,utc_nsd_ssdp_register_startup,utc_nsd_ssdp_register_cleanup},
-       {"utc_nsd_ssdp_get_target_n2",utc_nsd_ssdp_get_target_n2,utc_nsd_ssdp_register_startup,utc_nsd_ssdp_register_cleanup},
-       {"utc_nsd_ssdp_get_usn_p",utc_nsd_ssdp_get_usn_p,utc_nsd_ssdp_register_startup,utc_nsd_ssdp_register_cleanup},
-       {"utc_nsd_ssdp_get_usn_n1",utc_nsd_ssdp_get_usn_n1,utc_nsd_ssdp_register_startup,utc_nsd_ssdp_register_cleanup},
-       {"utc_nsd_ssdp_get_usn_n2",utc_nsd_ssdp_get_usn_n2,utc_nsd_ssdp_register_startup,utc_nsd_ssdp_register_cleanup},
-       {"utc_nsd_ssdp_get_url_p",utc_nsd_ssdp_get_url_p,utc_nsd_ssdp_register_startup,utc_nsd_ssdp_register_cleanup},
-       {"utc_nsd_ssdp_get_url_n1",utc_nsd_ssdp_get_url_n1,utc_nsd_ssdp_register_startup,utc_nsd_ssdp_register_cleanup},
-       {"utc_nsd_ssdp_get_url_n2",utc_nsd_ssdp_get_url_n2,utc_nsd_ssdp_register_startup,utc_nsd_ssdp_register_cleanup},
-       {"utc_nsd_ssdp_register_local_service_p",utc_nsd_ssdp_register_local_service_p,utc_nsd_ssdp_register_startup,utc_nsd_ssdp_register_cleanup},
-       {"utc_nsd_ssdp_register_local_service_n1",utc_nsd_ssdp_register_local_service_n1,utc_nsd_ssdp_register_startup,utc_nsd_ssdp_register_cleanup},
-       {"utc_nsd_ssdp_register_local_service_n2",utc_nsd_ssdp_register_local_service_n2,utc_nsd_ssdp_register_startup,utc_nsd_ssdp_register_cleanup},
-       {"utc_nsd_ssdp_deregister_local_service_p",utc_nsd_ssdp_deregister_local_service_p,utc_nsd_ssdp_register_startup,utc_nsd_ssdp_register_cleanup},
-       {"utc_nsd_ssdp_deregister_local_service_n",utc_nsd_ssdp_deregister_local_service_n,utc_nsd_ssdp_register_startup,utc_nsd_ssdp_register_cleanup},
-       {"utc_nsd_dnssd_browsing_service_full_p",utc_nsd_dnssd_browsing_service_full_p,utc_nsd_dnssd_browse_startup,utc_nsd_dnssd_browse_cleanup},
-       {"utc_nsd_dnssd_start_browsing_service_p",utc_nsd_dnssd_start_browsing_service_p,utc_nsd_dnssd_browse_startup,utc_nsd_dnssd_browse_cleanup},
-       {"utc_nsd_dnssd_start_browsing_service_n",utc_nsd_dnssd_start_browsing_service_n,utc_nsd_dnssd_browse_startup,utc_nsd_dnssd_browse_cleanup},
-       {"utc_nsd_dnssd_stop_browsing_service_p",utc_nsd_dnssd_stop_browsing_service_p,utc_nsd_dnssd_browse_startup,utc_nsd_dnssd_browse_cleanup},
-       {"utc_nsd_dnssd_stop_browsing_service_n",utc_nsd_dnssd_stop_browsing_service_n,utc_nsd_dnssd_browse_startup,utc_nsd_dnssd_browse_cleanup},
-       {"utc_nsd_dnssd_start_browsing_service_on_interface_p",utc_nsd_dnssd_start_browsing_service_on_interface_p,utc_nsd_dnssd_browse_startup,utc_nsd_dnssd_browse_cleanup},
-       {"utc_nsd_dnssd_start_browsing_service_on_interface_n1",utc_nsd_dnssd_start_browsing_service_on_interface_n1,utc_nsd_dnssd_browse_startup,utc_nsd_dnssd_browse_cleanup},
-       {"utc_nsd_dnssd_start_browsing_service_on_interface_n2",utc_nsd_dnssd_start_browsing_service_on_interface_n2,utc_nsd_dnssd_browse_startup,utc_nsd_dnssd_browse_cleanup},
-       {"utc_nsd_dnssd_start_browsing_service_on_interface_n3",utc_nsd_dnssd_start_browsing_service_on_interface_n3,utc_nsd_dnssd_browse_startup,utc_nsd_dnssd_browse_cleanup},
-       {"utc_nsd_dnssd_service_get_ip_n1",utc_nsd_dnssd_service_get_ip_n1,utc_nsd_dnssd_browse_startup,utc_nsd_dnssd_browse_cleanup},
-       {"utc_nsd_dnssd_service_get_ip_n2",utc_nsd_dnssd_service_get_ip_n2,utc_nsd_dnssd_browse_startup,utc_nsd_dnssd_browse_cleanup},
-       {"utc_nsd_dnssd_initialize_p",utc_nsd_dnssd_initialize_p,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
-       {"utc_nsd_dnssd_initialize_n",utc_nsd_dnssd_initialize_n,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
-       {"utc_nsd_dnssd_deinitialize_p",utc_nsd_dnssd_deinitialize_p,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
-       {"utc_nsd_dnssd_deinitialize_n",utc_nsd_dnssd_deinitialize_n,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
-       {"utc_nsd_dnssd_create_local_service_p",utc_nsd_dnssd_create_local_service_p,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
-       {"utc_nsd_dnssd_create_local_service_n1",utc_nsd_dnssd_create_local_service_n1,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
-       {"utc_nsd_dnssd_create_local_service_n2",utc_nsd_dnssd_create_local_service_n2,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
-       {"utc_nsd_dnssd_destroy_local_service_p",utc_nsd_dnssd_destroy_local_service_p,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
-       {"utc_nsd_dnssd_detroy_local_service_n1",utc_nsd_dnssd_detroy_local_service_n1,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
-       {"utc_nsd_dnssd_detroy_local_service_n2",utc_nsd_dnssd_detroy_local_service_n2,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
-       {"utc_nsd_dnssd_set_name_p",utc_nsd_dnssd_set_name_p,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
-       {"utc_nsd_dnssd_set_name_n1",utc_nsd_dnssd_set_name_n1,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
-       {"utc_nsd_dnssd_set_name_n2",utc_nsd_dnssd_set_name_n2,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
-       {"utc_nsd_dnssd_set_name_n3",utc_nsd_dnssd_set_name_n3,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
-       {"utc_nsd_dnssd_set_port_p",utc_nsd_dnssd_set_port_p,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
-       {"utc_nsd_dnssd_set_port_n1",utc_nsd_dnssd_set_port_n1,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
-       {"utc_nsd_dnssd_set_port_n2",utc_nsd_dnssd_set_port_n2,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
-       {"utc_nsd_dnssd_set_port_n3",utc_nsd_dnssd_set_port_n3,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
-       {"utc_nsd_dnssd_set_interface_p",utc_nsd_dnssd_set_interface_p,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
-       {"utc_nsd_dnssd_set_interface_n1",utc_nsd_dnssd_set_interface_n1,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
-       {"utc_nsd_dnssd_set_interface_n2",utc_nsd_dnssd_set_interface_n2,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
-       {"utc_nsd_dnssd_set_interface_n3",utc_nsd_dnssd_set_interface_n3,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
-       {"utc_nsd_dnssd_set_record_p",utc_nsd_dnssd_set_record_p,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
-       {"utc_nsd_dnssd_set_record_n1",utc_nsd_dnssd_set_record_n1,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
-       {"utc_nsd_dnssd_set_record_n2",utc_nsd_dnssd_set_record_n2,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
-       {"utc_nsd_dnssd_unset_record_p",utc_nsd_dnssd_unset_record_p,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
-       {"utc_nsd_dnssd_unset_record_n1",utc_nsd_dnssd_unset_record_n1,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
-       {"utc_nsd_dnssd_unset_record_n2",utc_nsd_dnssd_unset_record_n2,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
-       {"utc_nsd_dnssd_unset_record_n3",utc_nsd_dnssd_unset_record_n3,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
-       {"utc_nsd_dnssd_add_txt_record_p",utc_nsd_dnssd_add_txt_record_p,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
-       {"utc_nsd_dnssd_add_txt_record_n1",utc_nsd_dnssd_add_txt_record_n1,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
-       {"utc_nsd_dnssd_add_txt_record_n2",utc_nsd_dnssd_add_txt_record_n2,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
-       {"utc_nsd_dnssd_add_txt_record_n3",utc_nsd_dnssd_add_txt_record_n3,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
-       {"utc_nsd_dnssd_add_txt_record_n4",utc_nsd_dnssd_add_txt_record_n4,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
-       {"utc_nsd_dnssd_get_all_txt_record_p",utc_nsd_dnssd_get_all_txt_record_p,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
-       {"utc_nsd_dnssd_get_all_txt_record_n1",utc_nsd_dnssd_get_all_txt_record_n1,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
-       {"utc_nsd_dnssd_get_all_txt_record_n2",utc_nsd_dnssd_get_all_txt_record_n2,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
-       {"utc_nsd_dnssd_get_all_txt_record_n3",utc_nsd_dnssd_get_all_txt_record_n3,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
-       {"utc_nsd_dnssd_remove_txt_record_p",utc_nsd_dnssd_remove_txt_record_p,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
-       {"utc_nsd_dnssd_remove_txt_record_n1",utc_nsd_dnssd_remove_txt_record_n1,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
-       {"utc_nsd_dnssd_remove_txt_record_n2",utc_nsd_dnssd_remove_txt_record_n2,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
-       {"utc_nsd_dnssd_get_type_p",utc_nsd_dnssd_get_type_p,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
-       {"utc_nsd_dnssd_get_type_n1",utc_nsd_dnssd_get_type_n1,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
-       {"utc_nsd_dnssd_get_type_n2",utc_nsd_dnssd_get_type_n2,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
-       {"utc_nsd_dnssd_get_type_n3",utc_nsd_dnssd_get_type_n3,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
-       {"utc_nsd_dnssd_get_name_p",utc_nsd_dnssd_get_name_p,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
-       {"utc_nsd_dnssd_get_name_n1",utc_nsd_dnssd_get_name_n1,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
-       {"utc_nsd_dnssd_get_name_n2",utc_nsd_dnssd_get_name_n2,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
-       {"utc_nsd_dnssd_get_port_p",utc_nsd_dnssd_get_port_p,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
-       {"utc_nsd_dnssd_get_port_n1",utc_nsd_dnssd_get_port_n1,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
-       {"utc_nsd_dnssd_get_port_n2",utc_nsd_dnssd_get_port_n2,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
-       {"utc_nsd_dnssd_register_local_service_p",utc_nsd_dnssd_register_local_service_p,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
-       {"utc_nsd_dnssd_register_local_service_n",utc_nsd_dnssd_register_local_service_n,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
-       {"utc_nsd_dnssd_deregister_local_service_p",utc_nsd_dnssd_deregister_local_service_p,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
-       {"utc_nsd_dnssd_deregister_local_service_n",utc_nsd_dnssd_deregister_local_service_n,utc_nsd_dnssd_register_startup,utc_nsd_dnssd_register_cleanup},
-       {NULL, NULL}
-};
-
-#endif // __TCT_NSD_NATIVE_H__
diff --git a/unittest/utc-nsd-dnssd-browse.c b/unittest/utc-nsd-dnssd-browse.c
deleted file mode 100644 (file)
index c2e9adf..0000000
+++ /dev/null
@@ -1,407 +0,0 @@
-//
-// Copyright (c) 2014 Samsung Electronics Co., Ltd.
-//
-// Licensed under the Apache License, Version 2.0 (the License);
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
-#include "assert_local.h"
-#include <glib.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <system_info.h>
-#include <dns-sd.h>
-#include <dns-sd-internal.h>
-//& set: Nsd-dnssd-browse
-
-static bool g_feature = true;
-#define TIZEN_DNSSD_MOCK_TYPE "_tizen_dnssd_mock._mock"
-
-dnssd_browser_h g_browser_id = 0;
-static GMainLoop* loop = NULL;
-static bool found_callback = false;
-
-static void __found_cb(dnssd_service_state_e state, dnssd_service_h dnssd_service, void *user_data)
-{
-       return;
-}
-
-static gboolean browsing_timeout(gpointer data)
-{
-       g_main_loop_quit(loop);
-       g_main_loop_unref(loop);
-       loop = NULL;
-       return FALSE;
-}
-
-static void dnssd_browsing_found(dnssd_service_state_e state,
-               dnssd_service_h remote_service, void *user_data)
-{
-       char *name = NULL;
-       char *type = NULL;
-       char *ip_v4_address = NULL;
-       char *ip_v6_address = NULL;
-       unsigned char *txt_record = NULL;
-       unsigned short txt_len = 0;
-       int port = 0;
-
-       int ret;
-
-       if (state == DNSSD_SERVICE_STATE_AVAILABLE) {
-
-               ret = dnssd_service_get_name(remote_service, &name);
-               if (ret != DNSSD_ERROR_NONE)
-                       goto out;
-
-               ret = dnssd_service_get_type(remote_service, &type);
-               if (ret != DNSSD_ERROR_NONE)
-                       goto out;
-
-               ret = dnssd_service_get_ip(remote_service, &ip_v4_address, &ip_v6_address);
-               if (ret != DNSSD_ERROR_NONE)
-                       goto out;
-
-               ret = dnssd_service_get_port(remote_service, &port);
-               if (ret != DNSSD_ERROR_NONE)
-                       goto out;
-
-               ret = dnssd_service_get_all_txt_record(remote_service, &txt_len,
-                               (void *)&txt_record);
-               if (ret != DNSSD_ERROR_NONE)
-                       goto out;
-
-               found_callback = true;
-               g_main_loop_quit(loop);
-               g_main_loop_unref(loop);
-       }
-out:
-       g_free(ip_v4_address);
-       g_free(ip_v6_address);
-       g_free(txt_record);
-       g_free(name);
-       g_free(type);
-}
-
-static int wait_for_browse_callback(dnssd_browser_h *browser_id)
-{
-       int timeout_testcase = 0;
-       int ret = 0;
-
-       ret = dnssd_start_browsing_service(TIZEN_DNSSD_MOCK_TYPE, browser_id, dnssd_browsing_found, NULL);
-
-       if (ret == DNSSD_ERROR_NONE) {
-               found_callback = false;
-               loop = g_main_loop_new(NULL, FALSE);
-               timeout_testcase = g_timeout_add(20000, browsing_timeout, loop);
-               g_main_loop_run(loop);
-               g_source_remove(timeout_testcase);
-       }
-
-       if (!found_callback)
-                       ret = -1;
-
-       return ret;
-}
-
-/**
- * @function           utc_nsd_dnssd_browse_startup
- * @since_tizen                3.0
- * @description                Initializes DNSSD. Called before each test
- * @parameter          NA
- * @return                     NA
- */
-void utc_nsd_dnssd_browse_startup(void)
-{
-       int ret = DNSSD_ERROR_NONE;
-       ret = system_info_get_platform_bool("http://tizen.org/feature/network.service_discovery.dnssd", &g_feature);
-
-       if (SYSTEM_INFO_ERROR_NONE != ret) {
-               fprintf(stderr, "system_info_get_platform_bool() Fail(%d)\n", ret);
-               return;
-       }
-
-       if (g_feature == true) {
-               ret = dnssd_initialize();
-               if (ret != DNSSD_ERROR_NONE) {
-                       fprintf(stderr, "dnssd_initialize() Fail(%d)", ret);
-                       return;
-               }
-       }
-}
-
-/**
- * @function           utc_nsd_dnssd_browse_cleanup
- * @since_tizen                3.0
- * @description                Deinitialize DNSSD. Called after each test
- * @parameter          NA
- * @return                     NA
- */
-void utc_nsd_dnssd_browse_cleanup(void)
-{
-       int ret = DNSSD_ERROR_NONE;
-
-       if (g_feature == true) {
-               ret = dnssd_deinitialize();
-               if (ret != DNSSD_ERROR_NONE) {
-                       fprintf(stderr, "dnssd_deinitialize() Fail(%d)", ret);
-                       return;
-               }
-       }
-}
-
-
-int utc_nsd_dnssd_browsing_service_full_p(void)
-{
-       int ret = DNSSD_ERROR_NONE;
-       dnssd_browser_h browser_id = 0;
-
-       if (g_feature == false) {
-               ret = dnssd_start_browsing_service(NULL, NULL, NULL, NULL);
-               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       ret = wait_for_browse_callback(&browser_id);
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       dnssd_stop_browsing_service(browser_id);
-       return 0;
-}
-
-/**
- * @testcase           utc_nsd_dnssd_start_browsing_service_p
- * @since_tizen                3.0
- * @type                       Positive
- * @description                Start browsing DNSSD services
- * @scenario           Start browsing DNSSD services with a service type
- *                                     Ensure no error
- */
-int utc_nsd_dnssd_start_browsing_service_p(void)
-{
-       int ret = DNSSD_ERROR_NONE;
-       dnssd_browser_h browser_id = 0;
-
-       if (g_feature == false) {
-               ret = dnssd_start_browsing_service(NULL, NULL, NULL, NULL);
-               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       ret = dnssd_start_browsing_service("_ftp._tcp", &browser_id, &__found_cb, NULL);
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       dnssd_stop_browsing_service(browser_id);
-       return 0;
-}
-
-/**
- * @testcase           utc_nsd_dnssd_start_browsing_service_n
- * @since_tizen                3.0
- * @type                       Negative
- * @description                Verify dnssd_start_browsing_service by passing invalid browser handle
- * @scenario           Pass NULL as a browser handle
- *                                     Return value should be DNSSD_ERROR_INVALID_PARAMETER
- */
-int utc_nsd_dnssd_start_browsing_service_n(void)
-{
-       int ret = DNSSD_ERROR_NONE;
-
-       if (g_feature == false) {
-               ret = dnssd_start_browsing_service(NULL, NULL, NULL, NULL);
-               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       ret = dnssd_start_browsing_service("_ftp._tcp", NULL, &__found_cb, NULL);
-       assert_eq(ret, DNSSD_ERROR_INVALID_PARAMETER);
-       return 0;
-}
-
-/**
- * @testcase           utc_nsd_dnssd_stop_browsing_service_p
- * @since_tizen                3.0
- * @type                       Positive
- * @description                Stop browsing DNSSD services
- * @scenario           Start browsing DNSSD services with a service type
- *                                     Stop browsing with valid browser handle
- *                                     Ensure no error
- */
-int utc_nsd_dnssd_stop_browsing_service_p(void)
-{
-       int ret = DNSSD_ERROR_NONE;
-       dnssd_browser_h browser_id = 0;
-
-       if (g_feature == false) {
-               ret = dnssd_stop_browsing_service(0);
-               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       ret = dnssd_start_browsing_service("_ftp._tcp", &browser_id, &__found_cb, NULL);
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       dnssd_stop_browsing_service(browser_id);
-       assert_eq(ret, DNSSD_ERROR_NONE);
-       return 0;
-}
-
-/**
- * @testcase           utc_nsd_dnssd_stop_browsing_service_n
- * @since_tizen                3.0
- * @type                       Negative
- * @description                Verify dnssd_stop_browsing_service by passing invalid browser handle
- * @scenario           Start browsing DNSSD services with a service target
- *                                     Stop browsing by passing an invalid browser handle
- *                                     Return value should be DNSSD_ERROR_SERVICE_NOT_FOUND
- */
-int utc_nsd_dnssd_stop_browsing_service_n(void)
-{
-       int ret = DNSSD_ERROR_NONE;
-       dnssd_browser_h browser_id = 0;
-
-       if (g_feature == false) {
-               ret = dnssd_stop_browsing_service(0);
-               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       ret = dnssd_start_browsing_service("_ftp._tcp", &browser_id, &__found_cb, NULL);
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       ret = dnssd_stop_browsing_service(0);
-       assert_eq(ret, DNSSD_ERROR_SERVICE_NOT_FOUND);
-
-       dnssd_stop_browsing_service(browser_id);
-
-       return 0;
-}
-
-int utc_nsd_dnssd_start_browsing_service_on_interface_p(void)
-{
-       int ret = DNSSD_ERROR_NONE;
-       dnssd_browser_h browser_id = 0;
-
-       if (g_feature == false) {
-               ret = dnssd_start_browsing_service_on_interface(NULL, NULL, NULL, NULL, NULL);
-               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       ret = dnssd_start_browsing_service_on_interface("_ftp._tcp", "wlan0", &browser_id, &__found_cb, NULL);
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       dnssd_stop_browsing_service(browser_id);
-       assert_eq(ret, DNSSD_ERROR_NONE);
-       return 0;
-}
-
-int utc_nsd_dnssd_start_browsing_service_on_interface_n1(void)
-{
-       int ret = DNSSD_ERROR_NONE;
-       dnssd_browser_h browser_id = 0;
-
-       if (g_feature == false) {
-               ret = dnssd_start_browsing_service_on_interface(NULL, NULL, NULL, NULL, NULL);
-               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       dnssd_deinitialize();
-
-       ret = dnssd_start_browsing_service_on_interface("_ftp._tcp", "wlan0", &browser_id, &__found_cb, NULL);
-       assert_eq(ret, DNSSD_ERROR_NOT_INITIALIZED);
-
-       dnssd_initialize();
-       return 0;
-}
-
-int utc_nsd_dnssd_start_browsing_service_on_interface_n2(void)
-{
-       int ret = DNSSD_ERROR_NONE;
-
-       if (g_feature == false) {
-               ret = dnssd_start_browsing_service(NULL, NULL, NULL, NULL);
-               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       ret = dnssd_start_browsing_service_on_interface("_ftp._tcp", "wlan0", NULL, &__found_cb, NULL);
-       assert_eq(ret, DNSSD_ERROR_INVALID_PARAMETER);
-       return 0;
-}
-
-int utc_nsd_dnssd_start_browsing_service_on_interface_n3(void)
-{
-       int ret = DNSSD_ERROR_NONE;
-       dnssd_browser_h browser_id = 0;
-
-       if (g_feature == false) {
-               ret = dnssd_start_browsing_service(NULL, NULL, NULL, NULL);
-               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       ret = dnssd_start_browsing_service_on_interface("_ftp._tcp", NULL, &browser_id, &__found_cb, NULL);
-       assert_eq(ret, DNSSD_ERROR_INVALID_PARAMETER);
-       return 0;
-}
-/**
- * @testcase           utc_nsd_dnssd_service_get_ip_n1
- * @since_tizen                3.0
- * @type                       Negative
- * @description                Verify dnssd_service_get_ip by passing invalid browser handle
- * @scenario           get IP address by invalid browser handle
- *                                     Return value should be DNSSD_ERROR_SERVICE_NOT_FOUND
- */
-int utc_nsd_dnssd_service_get_ip_n1(void)
-{
-       int ret = DNSSD_ERROR_NONE;
-       dnssd_service_h service_id = 0;
-       char *ip_v4_address = NULL;
-
-       if (g_feature == false) {
-               ret = dnssd_service_get_ip(service_id, NULL, NULL);
-               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       ret = dnssd_service_get_ip(service_id, &ip_v4_address, NULL);
-       assert_eq(ret, DNSSD_ERROR_SERVICE_NOT_FOUND);
-
-       return 0;
-}
-
-/**
- * @testcase           utc_nsd_dnssd_service_get_ip_n2
- * @since_tizen                3.0
- * @type                       Negative
- * @description                Verify dnssd_service_get_ip by passing invalid parameter
- * @scenario           get IP address by invalid parameter
- *                                     Return value should be DNSSD_ERROR_INVALID_PARAMETER
- */
-int utc_nsd_dnssd_service_get_ip_n2(void)
-{
-       int ret = DNSSD_ERROR_NONE;
-       dnssd_service_h service_id = 0;
-
-       if (g_feature == false) {
-               ret = dnssd_service_get_ip(service_id, NULL, NULL);
-               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       ret = dnssd_service_get_ip(service_id, NULL, NULL);
-       assert_eq(ret, DNSSD_ERROR_INVALID_PARAMETER);
-
-       return 0;
-}
diff --git a/unittest/utc-nsd-dnssd-register.c b/unittest/utc-nsd-dnssd-register.c
deleted file mode 100644 (file)
index e40bd55..0000000
+++ /dev/null
@@ -1,1816 +0,0 @@
-//
-// Copyright (c) 2020 Samsung Electronics Co., Ltd.
-//
-// Licensed under the Apache License, Version 2.0 (the License);
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
-#include "assert_local.h"
-#include <glib.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <system_info.h>
-#include <dns-sd.h>
-#include <dns-sd-internal.h>
-
-static GMainLoop* loop = NULL;
-static bool registered_callback = false;
-static bool g_feature = true;
-
-static void __registered_cb(dnssd_error_e result,
-               dnssd_service_h dnssd_service, void *user_data)
-{
-       return;
-}
-
-static gboolean register_timeout(gpointer data)
-{
-       registered_callback= false;
-       g_main_loop_quit(loop);
-       g_main_loop_unref(loop);
-       loop = NULL;
-       return FALSE;
-}
-
-static void dnssd_register_reply(dnssd_error_e result,
-               dnssd_service_h local_service, void *user_data)
-{
-       if (result == DNSSD_ERROR_NONE) {
-               registered_callback = true;
-               g_main_loop_quit(loop);
-               g_main_loop_unref(loop);
-       }
-}
-
-static int wait_for_registered_callback(dnssd_service_h local_service)
-{
-       int timeout_testcase = 0;
-       int ret;
-
-       ret = dnssd_register_local_service(local_service, dnssd_register_reply, NULL);
-
-       if (ret == DNSSD_ERROR_NONE)
-       {
-               registered_callback = false;
-               loop = g_main_loop_new(NULL, FALSE);
-               timeout_testcase = g_timeout_add(20000, register_timeout, loop);
-               g_main_loop_run(loop);
-               g_source_remove(timeout_testcase);
-
-               if (!registered_callback)
-               {
-                               ret = -1;
-               }
-       }
-       return ret;
-}
-
-/**
- * @function           utc_nsd_dnssd_register_startup
- * @since_tizen                3.0
- * @description                Initializes DNSSD. Called before each test
- * @parameter          NA
- * @return                     NA
- */
-void utc_nsd_dnssd_register_startup(void)
-{
-       int ret = DNSSD_ERROR_NONE;
-       ret = system_info_get_platform_bool("http://tizen.org/feature/network.service_discovery.dnssd", &g_feature);
-
-       if (SYSTEM_INFO_ERROR_NONE != ret) {
-               fprintf(stderr, "system_info_get_platform_bool() Fail(%d)\n", ret);
-               return;
-       }
-
-       if (g_feature == true) {
-               ret = dnssd_initialize();
-               if (ret != DNSSD_ERROR_NONE) {
-                       fprintf(stderr, "dnssd_initialize() Fail(%d)", ret);
-                       return;
-               }
-       }
-}
-
-/**
- * @function           utc_nsd_dnssd_register_cleanup
- * @since_tizen                3.0
- * @description                Deinitialize DNSSD. Called after each test
- * @parameter          NA
- * @return                     NA
- */
-void utc_nsd_dnssd_register_cleanup(void)
-{
-       if (g_feature == true) {
-               dnssd_deinitialize();
-       }
-}
-
-/**
- * @testcase           utc_nsd_dnssd_initialize_p
- * @since_tizen                3.0
- * @type                       Positive
- * @description                Initialize DNSSD.
- * @scenario           Initialize DNSSD.
- *                                     Ensure no error
- */
-int utc_nsd_dnssd_initialize_p(void)
-{
-       int ret = DNSSD_ERROR_NONE;
-
-       if (g_feature == false) {
-               ret = dnssd_initialize();
-               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-       dnssd_deinitialize();
-
-       ret = dnssd_initialize();
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       return 0;
-}
-
-/**
- * @testcase           utc_nsd_dnssd_initialize_n
- * @since_tizen                3.0
- * @type                       Negative
- * @description                Verify dnssd_deinitialize after DNSSD is initialized.
- * @scenario           initialize again.
- *                                     Return value should be DNSSD_ERROR_INVALID_OPERATION.
- */
-int utc_nsd_dnssd_initialize_n(void)
-{
-       int ret = DNSSD_ERROR_NONE;
-
-       if (g_feature == false) {
-               ret = dnssd_initialize();
-               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       ret = dnssd_initialize();
-       assert_eq(ret, DNSSD_ERROR_INVALID_OPERATION);
-
-       return 0;
-}
-
-/**
- * @testcase           utc_nsd_dnssd_deinitialize_p
- * @since_tizen                3.0
- * @type                       Positive
- * @description                Deinitialize DNSSD.
- * @scenario           Deinitialize DNSSD.
- *                                     Ensure no error
- */
-int utc_nsd_dnssd_deinitialize_p(void)
-{
-       int ret = DNSSD_ERROR_NONE;
-
-       if (g_feature == false) {
-               ret = dnssd_deinitialize();
-               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-       ret = dnssd_deinitialize();
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       dnssd_initialize();
-
-       return 0;
-}
-
-/**
- * @testcase           utc_nsd_dnssd_deinitialize_n
- * @since_tizen                3.0
- * @type                       Negative
- * @description                Verify dnssd_deinitialize before DNSSD is initialized.
- * @scenario           Deinitialize DNSSD and deinitialize again.
- *                                     Return value should be DNSSD_ERROR_NOT_INITIALIZED.
- */
-int utc_nsd_dnssd_deinitialize_n(void)
-{
-       int ret = DNSSD_ERROR_NONE;
-
-       if (g_feature == false) {
-               ret = dnssd_deinitialize();
-               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-       dnssd_deinitialize();
-
-       ret = dnssd_deinitialize();
-       assert_eq(ret, DNSSD_ERROR_NOT_INITIALIZED);
-
-       dnssd_initialize();
-
-       return 0;
-}
-
-/**
- * @testcase           utc_nsd_dnssd_create_local_service_p
- * @since_tizen                3.0
- * @type                       Positive
- * @description                Create a DNSSD local service handle.
- * @scenario           Create and Destroy a DNSSD local service handle.
- *                                     Ensure no error
- */
-int utc_nsd_dnssd_create_local_service_p(void)
-{
-       int ret = DNSSD_ERROR_NONE;
-       static dnssd_service_h serv_id;
-
-       if (g_feature == false) {
-               ret = dnssd_create_local_service(NULL, 0);
-               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       ret = dnssd_create_local_service("_ftp._tcp", &serv_id);
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       dnssd_destroy_local_service(serv_id);
-
-       return 0;
-}
-
-int utc_nsd_dnssd_create_local_service_n1(void)
-{
-       int ret = DNSSD_ERROR_NONE;
-       static dnssd_service_h serv_id;
-
-       if (g_feature == false) {
-               ret = dnssd_create_local_service(NULL, 0);
-               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       dnssd_deinitialize();
-
-       ret = dnssd_create_local_service("_ftp._tcp", &serv_id);
-       assert_eq(ret, DNSSD_ERROR_NOT_INITIALIZED);
-
-       dnssd_initialize();
-       return 0;
-}
-
-/**
- * @testcase           utc_nsd_dnssd_create_local_service_n2
- * @since_tizen                3.0
- * @type                       Negative
- * @description                Verify dnssd_create_local_service by passing an invalid parameter.
- * @scenario           Pass NULL as a service handle parameter.
- *                                     Return value should be DNSSD_ERROR_INVALID_PARAMETER.
- */
-int utc_nsd_dnssd_create_local_service_n2(void)
-{
-       int ret = DNSSD_ERROR_NONE;
-
-       if (g_feature == false) {
-               ret = dnssd_create_local_service(NULL, 0);
-               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       ret = dnssd_create_local_service("_ftp._tcp", NULL);
-       assert_eq(ret, DNSSD_ERROR_INVALID_PARAMETER);
-
-       return 0;
-}
-
-/**
- * @testcase           utc_nsd_dnssd_destroy_local_service_p
- * @since_tizen                3.0
- * @type                       Positive
- * @description                Destroy a DNSSD local service handle.
- * @scenario           Create and Destroy a DNSSD local service handle.
- *                                     Ensure no error
- */
-int utc_nsd_dnssd_destroy_local_service_p(void)
-{
-       int ret = DNSSD_ERROR_NONE;
-       static dnssd_service_h serv_id;
-
-       if (g_feature == false) {
-               ret = dnssd_destroy_local_service(0);
-               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       ret = dnssd_create_local_service("_ftp._tcp", &serv_id);
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       ret = dnssd_destroy_local_service(serv_id);
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       return 0;
-}
-
-int utc_nsd_dnssd_detroy_local_service_n1(void)
-{
-       int ret = DNSSD_ERROR_NONE;
-       static dnssd_service_h serv_id = 0;
-
-       if (g_feature == false) {
-               ret = dnssd_create_local_service(NULL, 0);
-               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       dnssd_deinitialize();
-
-       ret = dnssd_destroy_local_service(serv_id);
-       assert_eq(ret, DNSSD_ERROR_NOT_INITIALIZED);
-
-       dnssd_initialize();
-       return 0;
-}
-
-/**
- * @testcase           utc_nsd_dnssd_destroy_local_service_n2
- * @since_tizen                3.0
- * @type                       Negative
- * @description                Verify dnssd_destroy_local_service by passing invalid service handle.
- * @scenario           Pass an invalid service handle which has not been created before.
- *                                     Return value should be DNSSD_ERROR_SERVICE_NOT_FOUND.
- */
-int utc_nsd_dnssd_detroy_local_service_n2(void)
-{
-       int ret = DNSSD_ERROR_NONE;
-       static dnssd_service_h serv_id;
-
-       if (g_feature == false) {
-               ret = dnssd_destroy_local_service(0);
-               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       ret = dnssd_create_local_service("_ftp._tcp", &serv_id);
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       ret = dnssd_destroy_local_service(serv_id + 1);
-       assert_eq(ret, DNSSD_ERROR_SERVICE_NOT_FOUND);
-
-       dnssd_destroy_local_service(serv_id);
-
-       return 0;
-
-}
-/**
- * @testcase           utc_nsd_dnssd_set_name_p
- * @since_tizen                3.0
- * @type                       Positive
- * @description                Set the service name of a DNSSD local service.
- * @scenario           Create a DNSSD local service and set the service name of the service.
- *                                     Ensure no error
- */
-int utc_nsd_dnssd_set_name_p(void)
-{
-       int ret = DNSSD_ERROR_NONE;
-       static dnssd_service_h serv_id;
-
-       if (g_feature == false) {
-               ret = dnssd_service_set_name(0, NULL);
-               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       dnssd_create_local_service("_ftp._tcp", &serv_id);
-
-       ret = dnssd_service_set_name(serv_id, "test-ftp");
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       dnssd_destroy_local_service(serv_id);
-
-       return 0;
-}
-
-/**
- * @testcase           utc_nsd_dnssd_set_name_n1
- * @since_tizen                3.0
- * @type                       Negative
- * @description                Verify dnssd_service_set_name by passing invalid service handle.
- * @scenario           Pass an invalid service handle which has not been created before.
- *                                     Return value should be DNSSD_ERROR_SERVICE_NOT_FOUND.
- */
-int utc_nsd_dnssd_set_name_n1(void)
-{
-       int ret = DNSSD_ERROR_NONE;
-       static dnssd_service_h serv_id;
-
-       if (g_feature == false) {
-               ret = dnssd_service_set_name(0, NULL);
-               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       dnssd_create_local_service("_ftp._tcp", &serv_id);
-
-       ret = dnssd_service_set_name(serv_id + 1, "test-ftp");
-       assert_eq(ret, DNSSD_ERROR_SERVICE_NOT_FOUND);
-
-       dnssd_destroy_local_service(serv_id);
-
-       return 0;
-}
-
-/**
- * @testcase           utc_nsd_dnssd_set_name_n2
- * @since_tizen                3.0
- * @type                       Negative
- * @description                Verify dnssd_service_set_name by passing invalid service name.
- * @scenario           Create a DNSSD service and set a service name.
- *                                     Create another DNSSD service and set the same service name as NULL.
- *                                     Return value should be DNSSD_ERROR_INVALID_PARAMETER.
- */
-int utc_nsd_dnssd_set_name_n2(void)
-{
-       int ret = DNSSD_ERROR_NONE;
-       static dnssd_service_h serv_id;
-
-       if (g_feature == false) {
-               ret = dnssd_service_set_name(0, NULL);
-               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       dnssd_create_local_service("_ftp._tcp", &serv_id);
-       ret = dnssd_service_set_name(serv_id, NULL);
-       assert_eq(ret, DNSSD_ERROR_INVALID_PARAMETER);
-
-       dnssd_destroy_local_service(serv_id);
-
-       return 0;
-}
-
-int utc_nsd_dnssd_set_name_n3(void)
-{
-       int ret = DNSSD_ERROR_NONE;
-       static dnssd_service_h serv_id;
-
-       if (g_feature == false) {
-               ret = dnssd_service_set_name(0, NULL);
-               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       dnssd_deinitialize();
-
-       ret = dnssd_service_set_name(serv_id, "test-ftp");
-       assert_eq(ret, DNSSD_ERROR_NOT_INITIALIZED);
-
-       dnssd_initialize();
-       return 0;
-}
-
-/**
- * @testcase           utc_nsd_dnssd_set_port_p
- * @since_tizen                3.0
- * @type                       Positive
- * @description                Set the port number of a DNSSD local service.
- * @scenario           Create a DNSSD local service and set the port number of the service.
- *                                     Ensure no error
- */
-int utc_nsd_dnssd_set_port_p(void)
-{
-       int ret = DNSSD_ERROR_NONE;
-       static dnssd_service_h serv_id;
-
-       if (g_feature == false) {
-               ret = dnssd_service_set_port(0, 0);
-               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       dnssd_create_local_service("_ftp._tcp", &serv_id);
-
-       ret = dnssd_service_set_port(serv_id, 12345);
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       dnssd_destroy_local_service(serv_id);
-
-       return 0;
-}
-
-/**
- * @testcase           utc_nsd_dnssd_set_port_n1
- * @since_tizen                3.0
- * @type                       Negative
- * @description                Verify dnssd_service_set_port by passing invalid service handle.
- * @scenario           Pass an invalid service handle which has not been created before.
- *                                     Return value should be DNSSD_ERROR_SERVICE_NOT_FOUND.
- */
-int utc_nsd_dnssd_set_port_n1(void)
-{
-       int ret = DNSSD_ERROR_NONE;
-       static dnssd_service_h serv_id;
-
-       if (g_feature == false) {
-               ret = dnssd_service_set_port(0, 0);
-               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       dnssd_create_local_service("_ftp._tcp", &serv_id);
-
-       ret = dnssd_service_set_port(serv_id + 1, 1234);
-       assert_eq(ret, DNSSD_ERROR_SERVICE_NOT_FOUND);
-
-       dnssd_destroy_local_service(serv_id);
-
-       return 0;
-}
-
-/**
- * @testcase           utc_nsd_dnssd_set_port_n2
- * @since_tizen                3.0
- * @type                       Negative
- * @description                Verify dnssd_service_set_port by passing an invalid port number
- * @scenario           Create a DNSSD service and set a port number as an invalid value.
- *                                     Return value should be DNSSD_ERROR_INVALID_PARAMETER.
- */
-int utc_nsd_dnssd_set_port_n2(void)
-{
-       int ret = DNSSD_ERROR_NONE;
-       static dnssd_service_h serv_id;
-
-       if (g_feature == false) {
-               ret = dnssd_service_set_port(0, 0);
-               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       dnssd_create_local_service("_ftp._tcp", &serv_id);
-       ret = dnssd_service_set_port(serv_id, -1234);
-       assert_eq(ret, DNSSD_ERROR_INVALID_PARAMETER);
-
-       dnssd_destroy_local_service(serv_id);
-       return 0;
-}
-
-int utc_nsd_dnssd_set_port_n3(void)
-{
-       int ret = DNSSD_ERROR_NONE;
-       static dnssd_service_h serv_id;
-
-       if (g_feature == false) {
-               ret = dnssd_service_set_port(0, 0);
-               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       dnssd_deinitialize();
-
-       ret = dnssd_service_set_port(serv_id, 12345);
-       assert_eq(ret, DNSSD_ERROR_NOT_INITIALIZED);
-
-       dnssd_initialize();
-       return 0;
-}
-
-int utc_nsd_dnssd_set_interface_p(void)
-{
-       int ret = DNSSD_ERROR_NONE;
-       static dnssd_service_h serv_id;
-
-       if (g_feature == false) {
-               ret = dnssd_service_set_interface(0, NULL);
-               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       dnssd_create_local_service("_ftp._tcp", &serv_id);
-
-       ret = dnssd_service_set_interface(serv_id, "wlan0");
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       dnssd_destroy_local_service(serv_id);
-
-       return 0;
-}
-
-int utc_nsd_dnssd_set_interface_n1(void)
-{
-       int ret = DNSSD_ERROR_NONE;
-       static dnssd_service_h serv_id;
-
-       if (g_feature == false) {
-               ret = dnssd_service_set_interface(0, NULL);
-               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       dnssd_create_local_service("_ftp._tcp", &serv_id);
-
-       ret = dnssd_service_set_interface(serv_id + 1, "wlan0");
-       assert_eq(ret, DNSSD_ERROR_SERVICE_NOT_FOUND);
-
-       dnssd_destroy_local_service(serv_id);
-
-       return 0;
-}
-
-int utc_nsd_dnssd_set_interface_n2(void)
-{
-       int ret = DNSSD_ERROR_NONE;
-       static dnssd_service_h serv_id;
-
-       if (g_feature == false) {
-               ret = dnssd_service_set_interface(0, NULL);
-               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       dnssd_create_local_service("_ftp._tcp", &serv_id);
-       ret = dnssd_service_set_interface(serv_id, NULL);
-       assert_eq(ret, DNSSD_ERROR_INVALID_PARAMETER);
-
-       dnssd_destroy_local_service(serv_id);
-       return 0;
-}
-
-int utc_nsd_dnssd_set_interface_n3(void)
-{
-       int ret = DNSSD_ERROR_NONE;
-       static dnssd_service_h serv_id;
-
-       if (g_feature == false) {
-               ret = dnssd_service_set_interface(0, NULL);
-               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       dnssd_deinitialize();
-
-       ret = dnssd_service_set_interface(serv_id, NULL);
-       assert_eq(ret, DNSSD_ERROR_NOT_INITIALIZED);
-
-       dnssd_initialize();
-       return 0;
-}
-
-/**
- * @testcase           utc_nsd_dnssd_set_record_p
- * @since_tizen                3.0
- * @type                       Positive
- * @description                Verify dnssd_service_set_record by setting dns resource record
- * @scenario           Create a DNSSD service and set a dns resource record.
- *                                     Ensure no error.
- */
-int utc_nsd_dnssd_set_record_p(void)
-{
-       int ret = DNSSD_ERROR_NONE;
-       static dnssd_service_h serv_id;
-       char buff[32] = {0,};
-       char *value = "http://www.tizen.org";
-
-       if (g_feature == false) {
-               ret = dnssd_service_set_record(0, 0, 0, NULL);
-               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       dnssd_create_local_service("_ftp._tcp", &serv_id);
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       ret = dnssd_service_set_name(serv_id, "Tizen");
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       ret = dnssd_service_set_port(serv_id, 12345);
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       ret = wait_for_registered_callback(serv_id);
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       g_strlcpy(buff + 1, value, sizeof(buff));
-       buff[0] = strlen(value);
-       ret = dnssd_service_set_record(serv_id, 16, buff[0] + 1, (void *)buff);
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       ret = dnssd_service_set_record(serv_id, 16, buff[0] + 1, (void *)buff);
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       dnssd_service_unset_record(serv_id, 16);
-       dnssd_deregister_local_service(serv_id);
-       dnssd_destroy_local_service(serv_id);
-
-       return 0;
-}
-
-/**
- * @testcase           utc_nsd_dnssd_set_record_n
- * @since_tizen                3.0
- * @type                       Negative
- * @description                Verify dnssd_service_set_record by setting dns resource record
- * @scenario           Create a DNSSD service and pass invalid service ID.
- *                                     Return value should be DNSSD_ERROR_SERVICE_NOT_FOUND.
- */
-int utc_nsd_dnssd_set_record_n1(void)
-{
-       int ret = DNSSD_ERROR_NONE;
-       static dnssd_service_h serv_id;
-       char buff[32] = {0,};
-       char *value = "http://www.tizen.org";
-
-       if (g_feature == false) {
-               ret = dnssd_service_set_record(0, 0, 0, NULL);
-               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       dnssd_create_local_service("_ftp._tcp", &serv_id);
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       ret = dnssd_service_set_name(serv_id, "Tizen");
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       ret = dnssd_service_set_port(serv_id, 12345);
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       ret = wait_for_registered_callback(serv_id);
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       g_strlcpy(buff + 1, value, sizeof(buff));
-       buff[0] = strlen(value);
-
-       ret = dnssd_service_set_record(serv_id + 1, 16, buff[0], (void *)buff);
-       assert_eq(ret, DNSSD_ERROR_SERVICE_NOT_FOUND);
-
-       dnssd_service_unset_record(serv_id, 16);
-       dnssd_deregister_local_service(serv_id);
-       dnssd_destroy_local_service(serv_id);
-
-       return 0;
-}
-
-int utc_nsd_dnssd_set_record_n2(void)
-{
-       int ret = DNSSD_ERROR_NONE;
-       static dnssd_service_h serv_id;
-       char buff[32] = {0,};
-       char *value = "http://www.tizen.org";
-
-       if (g_feature == false) {
-               ret = dnssd_service_set_record(0, 0, 0, NULL);
-               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       dnssd_deinitialize();
-
-       g_strlcpy(buff + 1, value, sizeof(buff));
-       buff[0] = strlen(value);
-
-       ret = dnssd_service_set_record(serv_id, 16, buff[0], (void *)buff);
-       assert_eq(ret, DNSSD_ERROR_NOT_INITIALIZED);
-
-       dnssd_initialize();
-
-       return 0;
-}
-/**
- * @testcase           utc_nsd_dnssd_unset_record_p
- * @since_tizen                3.0
- * @type                       Positive
- * @description                Verify dnssd_service_unset_record by removing dns resource record
- * @scenario           Unset DNS resource record after creating & setting a dns resource record.
- *                                     Ensure no error.
- */
-int utc_nsd_dnssd_unset_record_p(void)
-{
-       int ret = DNSSD_ERROR_NONE;
-       static dnssd_service_h serv_id;
-       char buff[32] = {0,};
-       char *value = "http://www.tizen.org";
-
-       if (g_feature == false) {
-               ret = dnssd_service_unset_record(0, 0);
-               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       dnssd_create_local_service("_ftp._tcp", &serv_id);
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       ret = dnssd_service_set_name(serv_id, "Tizen");
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       ret = dnssd_service_set_port(serv_id, 12345);
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       ret = wait_for_registered_callback(serv_id);
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       g_strlcpy(buff + 1, value, sizeof(buff));
-       buff[0] = strlen(value);
-
-       ret = dnssd_service_set_record(serv_id, 16, buff[0] + 1, (void *)buff);
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       ret = dnssd_service_unset_record(serv_id, 16);
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       dnssd_deregister_local_service(serv_id);
-       dnssd_destroy_local_service(serv_id);
-
-       return 0;
-}
-
-/**
- * @testcase           utc_nsd_dnssd_unset_record_n1
- * @since_tizen                3.0
- * @type                       Negative
- * @description                Verify dnssd_service_set_record by setting dns resource record
- * @scenario           Create a DNSSD service, set resource record and pass invalid service ID.
- *                                     Return value should be DNSSD_ERROR_SERVICE_NOT_FOUND.
- */
-int utc_nsd_dnssd_unset_record_n1(void)
-{
-       int ret = DNSSD_ERROR_NONE;
-       static dnssd_service_h serv_id;
-       char buff[32] = {0,};
-       char *value = "http://www.tizen.org";
-
-       if (g_feature == false) {
-               ret = dnssd_service_unset_record(0, 0);
-               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       dnssd_create_local_service("_ftp._tcp", &serv_id);
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       ret = dnssd_service_set_name(serv_id, "Tizen");
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       ret = dnssd_service_set_port(serv_id, 12345);
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       ret = wait_for_registered_callback(serv_id);
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       g_strlcpy(buff + 1, value, sizeof(buff));
-       buff[0] = strlen(value);
-
-       ret = dnssd_service_set_record(serv_id, 16, buff[0] + 1, (void *)buff);
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       ret = dnssd_service_unset_record(serv_id + 1, 16);
-       assert_eq(ret, DNSSD_ERROR_SERVICE_NOT_FOUND);
-
-       dnssd_service_unset_record(serv_id, 16);
-       dnssd_deregister_local_service(serv_id);
-       dnssd_destroy_local_service(serv_id);
-
-       return 0;
-}
-
-int utc_nsd_dnssd_unset_record_n2(void)
-{
-       int ret = DNSSD_ERROR_NONE;
-       static dnssd_service_h serv_id;
-
-       if (g_feature == false) {
-               ret = dnssd_service_unset_record(0, 0);
-               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       dnssd_create_local_service("_ftp._tcp", &serv_id);
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       ret = dnssd_service_set_name(serv_id, "Tizen");
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       ret = dnssd_service_set_port(serv_id, 12345);
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       ret = wait_for_registered_callback(serv_id);
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       ret = dnssd_service_unset_record(serv_id, 16);
-       assert_eq(ret, DNSSD_ERROR_INVALID_PARAMETER);
-
-       dnssd_service_unset_record(serv_id, 16);
-       dnssd_deregister_local_service(serv_id);
-       dnssd_destroy_local_service(serv_id);
-
-       return 0;
-}
-
-int utc_nsd_dnssd_unset_record_n3(void)
-{
-       int ret = DNSSD_ERROR_NONE;
-       static dnssd_service_h serv_id;
-
-       if (g_feature == false) {
-               ret = dnssd_service_unset_record(0, 0);
-               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       dnssd_deinitialize();
-
-       ret = dnssd_service_unset_record(serv_id, 16);
-       assert_eq(ret, DNSSD_ERROR_NOT_INITIALIZED);
-
-       dnssd_initialize();
-
-       return 0;
-}
-
-/**
- * @testcase           utc_nsd_dnssd_add_txt_record_p
- * @since_tizen                3.0
- * @type                       Positive
- * @description                Verify dnssd_add_txt_record by setting txt record
- * @scenario           Create a DNSSD service and set a dns txt record.
- *                                     Ensure no error.
- */
-int utc_nsd_dnssd_add_txt_record_p(void)
-{
-       int ret = DNSSD_ERROR_NONE;
-       static dnssd_service_h serv_id;
-       char *key = "path";
-       char *value = "http://www.tizen.org";
-
-       if (g_feature == false) {
-               ret = dnssd_service_add_txt_record(0, NULL, 0, NULL);
-               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       dnssd_create_local_service("_ftp._tcp", &serv_id);
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       ret = dnssd_service_set_name(serv_id, "Tizen");
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       ret = dnssd_service_set_port(serv_id, 12345);
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       ret = wait_for_registered_callback(serv_id);
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       ret = dnssd_service_add_txt_record(serv_id, key, strlen(value), value);
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       ret = dnssd_service_remove_txt_record(serv_id, key);
-
-       dnssd_deregister_local_service(serv_id);
-       dnssd_destroy_local_service(serv_id);
-
-       return 0;
-}
-
-/**
- * @testcase           utc_nsd_dnssd_add_txt_record_n1
- * @since_tizen                3.0
- * @type                       Negative
- * @description                Verify dnssd__add_txt_record by setting txt record
- * @scenario           Create a DNSSD service and pass invalid service ID.
- *                                     Return value should be DNSSD_ERROR_SERVICE_NOT_FOUND.
- */
-int utc_nsd_dnssd_add_txt_record_n1(void)
-{
-       int ret = DNSSD_ERROR_NONE;
-       static dnssd_service_h serv_id;
-       char *key = "path";
-       char *value = "http://www.tizen.org";
-
-       if (g_feature == false) {
-               ret = dnssd_service_add_txt_record(0, NULL, 0, NULL);
-               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       dnssd_create_local_service("_ftp._tcp", &serv_id);
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       ret = dnssd_service_set_name(serv_id, "Tizen");
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       ret = dnssd_service_set_port(serv_id, 12345);
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       ret = wait_for_registered_callback(serv_id);
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       ret = dnssd_service_add_txt_record(serv_id + 1, key, strlen(value), value);
-       assert_eq(ret, DNSSD_ERROR_SERVICE_NOT_FOUND);
-
-       dnssd_deregister_local_service(serv_id);
-       dnssd_destroy_local_service(serv_id);
-
-       return 0;
-}
-
-/**
- * @testcase           utc_nsd_dnssd_add_txt_record_n2
- * @since_tizen                3.0
- * @type                       Negative
- * @description                Verify dnssd_add_txt_record by setting txt record
- * @scenario           Create a DNSSD service and pass NULL key and NULL value.
- *                                     Return value should be DNSSD_ERROR_INVALID_PARAMETER.
- */
-int utc_nsd_dnssd_add_txt_record_n2(void)
-{
-       int ret = DNSSD_ERROR_NONE;
-       static dnssd_service_h serv_id;
-
-       if (g_feature == false) {
-               ret = dnssd_service_add_txt_record(0, NULL, 0, NULL);
-               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       dnssd_create_local_service("_ftp._tcp", &serv_id);
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       ret = dnssd_service_set_name(serv_id, "Tizen");
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       ret = dnssd_service_set_port(serv_id, 12345);
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       ret = wait_for_registered_callback(serv_id);
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       ret = dnssd_service_add_txt_record(serv_id, NULL, 0, NULL);
-       assert_eq(ret, DNSSD_ERROR_INVALID_PARAMETER);
-
-       dnssd_deregister_local_service(serv_id);
-       dnssd_destroy_local_service(serv_id);
-
-       return 0;
-}
-
-int utc_nsd_dnssd_add_txt_record_n3(void)
-{
-       int ret = DNSSD_ERROR_NONE;
-       static dnssd_service_h serv_id;
-       char *key = "path";
-       char *value = "http://www.tizen.org";
-
-       if (g_feature == false) {
-               ret = dnssd_service_add_txt_record(0, NULL, 0, NULL);
-               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       dnssd_create_local_service("_ftp._tcp", &serv_id);
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       ret = dnssd_service_set_name(serv_id, "Tizen");
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       ret = dnssd_service_set_port(serv_id, 12345);
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       ret = wait_for_registered_callback(serv_id);
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       ret = dnssd_service_add_txt_record(serv_id, key, 300, value);
-       assert_eq(ret, DNSSD_ERROR_INVALID_PARAMETER);
-
-       dnssd_deregister_local_service(serv_id);
-       dnssd_destroy_local_service(serv_id);
-
-       return 0;
-}
-
-int utc_nsd_dnssd_add_txt_record_n4(void)
-{
-       int ret = DNSSD_ERROR_NONE;
-       static dnssd_service_h serv_id;
-       char *key = "path";
-       char *value = "http://www.tizen.org";
-
-       if (g_feature == false) {
-               ret = dnssd_service_add_txt_record(0, NULL, 0, NULL);
-               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       dnssd_deinitialize();
-
-       ret = dnssd_service_add_txt_record(serv_id, key, 300, value);
-       assert_eq(ret, DNSSD_ERROR_NOT_INITIALIZED);
-
-       dnssd_initialize();
-
-       return 0;
-}
-/**
- * @testcase           utc_nsd_dnssd_get_all_txt_record_p
- * @since_tizen                3.0
- * @type                       Negative
- * @description                Verify dnssd_get_all_txt_record
- * @scenario           Get txt resource record after creating & setting a txt record.
- *                                     Ensure no error.
- */
-int utc_nsd_dnssd_get_all_txt_record_p(void)
-{
-       int ret = DNSSD_ERROR_NONE;
-       static dnssd_service_h serv_id;
-       char *key = "path";
-       char *value = "http://www.tizen.org";
-       void *txt_record = NULL;
-       unsigned short length = 0;
-
-       if (g_feature == false) {
-               ret = dnssd_service_get_all_txt_record(0, NULL, NULL);
-               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       dnssd_create_local_service("_ftp._tcp", &serv_id);
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       ret = dnssd_service_set_name(serv_id, "Tizen");
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       ret = dnssd_service_set_port(serv_id, 12345);
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       ret = wait_for_registered_callback(serv_id);
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       ret = dnssd_service_add_txt_record(serv_id, key, strlen(value), value);
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       ret = dnssd_service_get_all_txt_record(serv_id, &length, &txt_record);
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       ret = dnssd_service_remove_txt_record(serv_id, key);
-
-       dnssd_deregister_local_service(serv_id);
-       dnssd_destroy_local_service(serv_id);
-
-       return 0;
-}
-
-/**
- * @testcase           utc_nsd_dnssd_get_all_txt_record_n1
- * @since_tizen                3.0
- * @type                       Negative
- * @description                Verify dnssd_get_all_txt_record
- * @scenario           Get txt resource record with invalid service ID after creating & setting a txt record.
- *                                     Return value should be DNSSD_ERROR_SERVICE_NOT_FOUND.
- */
-int utc_nsd_dnssd_get_all_txt_record_n1(void)
-{
-       int ret = DNSSD_ERROR_NONE;
-       static dnssd_service_h serv_id;
-       char *key = "path";
-       void *txt_record = NULL;
-       unsigned short length = 0;
-
-       if (g_feature == false) {
-               ret = dnssd_service_get_all_txt_record(0, NULL, NULL);
-               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       dnssd_create_local_service("_ftp._tcp", &serv_id);
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       ret = dnssd_service_get_all_txt_record(serv_id + 1, &length, &txt_record);
-       assert_eq(ret, DNSSD_ERROR_SERVICE_NOT_FOUND);
-
-       ret = dnssd_service_remove_txt_record(serv_id, key);
-
-       dnssd_destroy_local_service(serv_id);
-
-       return 0;
-}
-
-/**
- * @testcase           utc_nsd_dnssd_get_all_txt_record_n2
- * @since_tizen                3.0
- * @type                       Negative
- * @description                Verify dnssd_get_all_txt_record
- * @scenario           Get txt resource record with NULL key after creating & setting a txt record.
- *                                     Return value should be DNSSD_ERROR_INVALID_PARAMETER.
- */
-int utc_nsd_dnssd_get_all_txt_record_n2(void)
-{
-       int ret = DNSSD_ERROR_NONE;
-       static dnssd_service_h serv_id;
-       char *key = "path";
-       char *value = "http://www.tizen.org";
-       unsigned short length = 0;
-
-       if (g_feature == false) {
-               ret = dnssd_service_get_all_txt_record(0, NULL, NULL);
-               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       dnssd_create_local_service("_ftp._tcp", &serv_id);
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       ret = dnssd_service_add_txt_record(serv_id, key, strlen(value), value);
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       ret = dnssd_service_get_all_txt_record(serv_id, &length, NULL);
-       assert_eq(ret, DNSSD_ERROR_INVALID_PARAMETER);
-
-       ret = dnssd_service_remove_txt_record(serv_id, key);
-
-       dnssd_destroy_local_service(serv_id);
-
-       return 0;
-}
-
-int utc_nsd_dnssd_get_all_txt_record_n3(void)
-{
-       int ret = DNSSD_ERROR_NONE;
-       static dnssd_service_h serv_id;
-       unsigned short length = 0;
-
-       if (g_feature == false) {
-               ret = dnssd_service_get_all_txt_record(0, NULL, NULL);
-               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-       dnssd_deinitialize();
-
-       ret = dnssd_service_get_all_txt_record(serv_id, &length, NULL);
-       assert_eq(ret, DNSSD_ERROR_NOT_INITIALIZED);
-
-       dnssd_initialize();
-
-       return 0;
-}
-/**
- * @testcase           utc_nsd_dnssd_remove_txt_record_p
- * @since_tizen                3.0
- * @type                       Positive
- * @description                Verify dnssd_service_remove_txt_record by removing txt record
- * @scenario           Unset DNS txt record after creating & setting a txt record.
- *                                     Ensure no error.
- */
-int utc_nsd_dnssd_remove_txt_record_p(void)
-{
-       int ret = DNSSD_ERROR_NONE;
-       static dnssd_service_h serv_id;
-       char *key = "path";
-       char *value = "http://www.tizen.org";
-
-       if (g_feature == false) {
-               ret = dnssd_service_remove_txt_record(0, NULL);
-               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       dnssd_create_local_service("_ftp._tcp", &serv_id);
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       ret = dnssd_service_set_name(serv_id, "Tizen");
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       ret = dnssd_service_set_port(serv_id, 12345);
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       ret = wait_for_registered_callback(serv_id);
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       ret = dnssd_service_add_txt_record(serv_id, key, strlen(value), value);
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       ret = dnssd_service_remove_txt_record(serv_id, key);
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       dnssd_deregister_local_service(serv_id);
-       dnssd_destroy_local_service(serv_id);
-
-       return 0;
-}
-
-/**
- * @testcase           utc_nsd_dnssd_remove_txt_record_n1
- * @since_tizen                3.0
- * @type                       Negative
- * @description                Verify dnssd_remove_unset_txt_record by removing txt record
- * @scenario           Unset DNS resource record with invalid service ID after creating & setting a txt record.
- *                                     Return value should be DNSSD_ERROR_SERVICE_NOT_FOUND.
- */
-int utc_nsd_dnssd_remove_txt_record_n1(void)
-{
-       int ret = DNSSD_ERROR_NONE;
-       static dnssd_service_h serv_id;
-       char *key = "path";
-       char *value = "http://www.tizen.org";
-
-       if (g_feature == false) {
-               ret = dnssd_service_remove_txt_record(0, NULL);
-               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       dnssd_create_local_service("_ftp._tcp", &serv_id);
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       ret = dnssd_service_set_name(serv_id, "Tizen");
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       ret = dnssd_service_set_port(serv_id, 12345);
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       ret = wait_for_registered_callback(serv_id);
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       ret = dnssd_service_add_txt_record(serv_id, key, strlen(value), value);
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       ret = dnssd_service_remove_txt_record(serv_id + 1, key);
-       assert_eq(ret, DNSSD_ERROR_SERVICE_NOT_FOUND);
-
-       dnssd_service_remove_txt_record(serv_id, NULL);
-       dnssd_deregister_local_service(serv_id);
-       dnssd_destroy_local_service(serv_id);
-
-       return 0;
-}
-
-/**
- * @testcase           utc_nsd_dnssd_remove_txt_record_n2
- * @since_tizen                3.0
- * @type                       Negative
- * @description                Verify dnssd_remove_unset_txt_record by removing txt record
- * @scenario           Unset DNS resource record with NULL key after creating & setting a txt record.
- *                                     Return value should be DNSSD_ERROR_SERVICE_NOT_FOUND.
- */
-int utc_nsd_dnssd_remove_txt_record_n2(void)
-{
-       int ret = DNSSD_ERROR_NONE;
-       static dnssd_service_h serv_id;
-       char *key = "path";
-       char *value = "http://www.tizen.org";
-
-       if (g_feature == false) {
-               ret = dnssd_service_remove_txt_record(0, NULL);
-               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       dnssd_create_local_service("_ftp._tcp", &serv_id);
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       ret = dnssd_service_set_name(serv_id, "Tizen");
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       ret = dnssd_service_set_port(serv_id, 12345);
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       ret = wait_for_registered_callback(serv_id);
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       ret = dnssd_service_add_txt_record(serv_id, key, strlen(value), value);
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       ret = dnssd_service_remove_txt_record(serv_id, NULL);
-       assert_eq(ret, DNSSD_ERROR_INVALID_PARAMETER);
-
-       dnssd_service_remove_txt_record(serv_id, NULL);
-       dnssd_deregister_local_service(serv_id);
-       dnssd_destroy_local_service(serv_id);
-
-       return 0;
-}
-
-/**
- * @testcase           utc_nsd_dnssd_get_type_p
- * @since_tizen                3.0
- * @type                       Positive
- * @description                Get the type of a DNSSD service.
- * @scenario           Create a DNSSD local service and get the type of a DNSSD service.
- *                                     Ensure no error
- */
-int utc_nsd_dnssd_get_type_p(void)
-{
-       int ret = DNSSD_ERROR_NONE;
-       static dnssd_service_h serv_id;
-       char *type = NULL;
-
-       if (g_feature == false) {
-               ret = dnssd_service_get_type(0, NULL);
-               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       dnssd_create_local_service("_ftp._tcp", &serv_id);
-
-       ret = dnssd_service_get_type(serv_id, &type);
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       dnssd_destroy_local_service(serv_id);
-       g_free(type);
-
-       return 0;
-}
-
-/**
- * @testcase           utc_nsd_dnssd_get_type_n1
- * @since_tizen                3.0
- * @type                       Negative
- * @description                Verify dnssd_service_get_type by passing invalid service handle.
- * @scenario           Pass an invalid service handle which has not been created before.
- *                                     Return value should be DNSSD_ERROR_SERVICE_NOT_FOUND.
- */
-int utc_nsd_dnssd_get_type_n1(void)
-{
-       int ret = DNSSD_ERROR_NONE;
-       static dnssd_service_h serv_id;
-       char *type = NULL;
-
-       if (g_feature == false) {
-               ret = dnssd_service_get_type(0, NULL);
-               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       dnssd_create_local_service("_ftp._tcp", &serv_id);
-
-       ret = dnssd_service_get_type(serv_id + 1, &type);
-       assert_eq(ret, DNSSD_ERROR_SERVICE_NOT_FOUND);
-
-       dnssd_destroy_local_service(serv_id);
-
-       return 0;
-}
-
-/**
- * @testcase           utc_nsd_dnssd_get_type_n2
- * @since_tizen                3.0
- * @type                       Negative
- * @description                Verify dnssd_service_get_type by passing an invalid parameter.
- * @scenario           Pass NULL as a service_type parameter for getting the type of a DNSSD service.
- *                                     Return value should be DNSSD_ERROR_INVALID_PARAMETER.
- */
-int utc_nsd_dnssd_get_type_n2(void)
-{
-       int ret = DNSSD_ERROR_NONE;
-       static dnssd_service_h serv_id;
-
-       if (g_feature == false) {
-               ret = dnssd_service_get_type(0, NULL);
-               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       dnssd_create_local_service("_ftp._tcp", &serv_id);
-       ret = dnssd_service_get_type(serv_id, NULL);
-       assert_eq(ret, DNSSD_ERROR_INVALID_PARAMETER);
-
-       dnssd_destroy_local_service(serv_id);
-
-       return 0;
-}
-
-int utc_nsd_dnssd_get_type_n3(void)
-{
-       int ret = DNSSD_ERROR_NONE;
-       static dnssd_service_h serv_id;
-       char *type = NULL;
-
-       if (g_feature == false) {
-               ret = dnssd_service_get_type(0, NULL);
-               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       dnssd_deinitialize();
-
-       ret = dnssd_service_get_type(serv_id, &type);
-       assert_eq(ret, DNSSD_ERROR_NOT_INITIALIZED);
-
-       dnssd_initialize();
-
-       return 0;
-}
-
-/**
- * @testcase           utc_nsd_dnssd_get_name_p
- * @since_tizen                3.0
- * @type                       Positive
- * @description                Get the service name of a DNSSD service.
- * @scenario           Create a DNSSD local service and get the service name of a DNSSD service.
- *                                     Ensure no error
- */
-int utc_nsd_dnssd_get_name_p(void)
-{
-       int ret = DNSSD_ERROR_NONE;
-       static dnssd_service_h serv_id;
-       char *name = NULL;
-
-       if (g_feature == false) {
-               ret = dnssd_service_get_name(0, NULL);
-               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       dnssd_create_local_service("_ftp._tcp", &serv_id);
-
-       ret = dnssd_service_set_name(serv_id, "test-ftp");
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       ret = dnssd_service_get_name(serv_id, &name);
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       dnssd_destroy_local_service(serv_id);
-       g_free(name);
-
-       return 0;
-}
-
-/**
- * @testcase           utc_nsd_dnssd_get_name_n1
- * @since_tizen                3.0
- * @type                       Negative
- * @description                Verify dnssd_service_get_name by passing invalid service handle.
- * @scenario           Pass an invalid service handle which has not been created before.
- *                                     Return value should be DNSSD_ERROR_SERVICE_NOT_FOUND.
- */
-int utc_nsd_dnssd_get_name_n1(void)
-{
-       int ret = DNSSD_ERROR_NONE;
-       static dnssd_service_h serv_id;
-       char *name = NULL;
-
-       if (g_feature == false) {
-               ret = dnssd_service_get_name(0, NULL);
-               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       dnssd_create_local_service("_ftp._tcp", &serv_id);
-
-       ret = dnssd_service_get_name(serv_id + 1, &name);
-       assert_eq(ret, DNSSD_ERROR_SERVICE_NOT_FOUND);
-
-       dnssd_destroy_local_service(serv_id);
-
-       return 0;
-}
-
-/**
- * @testcase           utc_nsd_dnssd_get_name_n2
- * @since_tizen                3.0
- * @type                       Negative
- * @description                Verify dnssd_service_get_name by passing an invalid parameter
- * @scenario           Pass NULL as a target parameter for getting the service name of a DNSSD service.
- *                                     Return value should be DNSSD_ERROR_INVALID_PARAMETER.
- */
-int utc_nsd_dnssd_get_name_n2(void)
-{
-       int ret = DNSSD_ERROR_NONE;
-       static dnssd_service_h serv_id;
-
-       if (g_feature == false) {
-               ret = dnssd_service_get_name(0, NULL);
-               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       dnssd_create_local_service("_ftp._tcp", &serv_id);
-       ret = dnssd_service_get_name(serv_id, NULL);
-       assert_eq(ret, DNSSD_ERROR_INVALID_PARAMETER);
-
-       dnssd_destroy_local_service(serv_id);
-
-       return 0;
-}
-
-/**
- * @testcase           utc_nsd_dnssd_get_port_p
- * @since_tizen                3.0
- * @type                       Positive
- * @description                Get the port number of a DNSSD service.
- * @scenario           Create a DNSSD local service and get the port number of a DNSSD service.
- *                                     Ensure no error
- */
-int utc_nsd_dnssd_get_port_p(void)
-{
-       int ret = DNSSD_ERROR_NONE;
-       static dnssd_service_h serv_id;
-       int port = 0;
-
-       if (g_feature == false) {
-               ret = dnssd_service_get_port(0, NULL);
-               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       dnssd_create_local_service("_ftp._tcp", &serv_id);
-
-       ret = dnssd_service_set_port(serv_id, 12345);
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       ret = dnssd_service_get_port(serv_id, &port);
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       dnssd_destroy_local_service(serv_id);
-
-       return 0;
-}
-
-/**
- * @testcase           utc_nsd_dnssd_get_port_n1
- * @since_tizen                3.0
- * @type                       Negative
- * @description                Verify dnssd_service_get_port by passing invalid service handle.
- * @scenario           Pass an invalid service handle which has not been created before.
- *                                     Return value should be DNSSD_ERROR_SERVICE_NOT_FOUND.
- */
-int utc_nsd_dnssd_get_port_n1(void)
-{
-       int ret = DNSSD_ERROR_NONE;
-       static dnssd_service_h serv_id;
-       int port = 0;
-
-       if (g_feature == false) {
-               ret = dnssd_service_get_port(0, NULL);
-               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       dnssd_create_local_service("_ftp._tcp", &serv_id);
-
-       ret = dnssd_service_get_port(serv_id + 1, &port);
-       assert_eq(ret, DNSSD_ERROR_SERVICE_NOT_FOUND);
-
-       dnssd_destroy_local_service(serv_id);
-
-       return 0;
-}
-
-
-/**
- * @testcase           utc_nsd_dnssd_get_port_n2
- * @since_tizen                3.0
- * @type                       Negative
- * @description                Verify dnssd_service_get_port by passing an invalid parameter
- * @scenario           Pass NULL as a target parameter for getting the port number of a DNSSD service.
- *                                     Return value should be DNSSD_ERROR_INVALID_PARAMETER.
- */
-int utc_nsd_dnssd_get_port_n2(void)
-{
-       int ret = DNSSD_ERROR_NONE;
-       static dnssd_service_h serv_id;
-
-       if (g_feature == false) {
-               ret = dnssd_service_get_port(0, NULL);
-               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       dnssd_create_local_service("_ftp._tcp", &serv_id);
-       ret = dnssd_service_get_port(serv_id, NULL);
-       assert_eq(ret, DNSSD_ERROR_INVALID_PARAMETER);
-
-       dnssd_destroy_local_service(serv_id);
-
-       return 0;
-}
-
-/**
- * @testcase           utc_nsd_dnssd_register_local_service_p
- * @since_tizen                3.0
- * @type                       Positive
- * @description                Register a DNSSD local service handle.
- * @scenario           Create a DNSSD service and set a service name and a port number for the service.
- *                                     Register, Deregister and Destroy the DNSSD service.
- *                                     Ensure no error
- */
-int utc_nsd_dnssd_register_local_service_p(void)
-{
-       int ret = DNSSD_ERROR_NONE;
-       static dnssd_service_h serv_id;
-
-       if (g_feature == false) {
-               ret = dnssd_register_local_service(0, NULL, NULL);
-               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       dnssd_create_local_service("_ftp._tcp", &serv_id);
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       ret = dnssd_service_set_name(serv_id, "Tizen");
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       ret = dnssd_service_set_port(serv_id, 12345);
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       ret = wait_for_registered_callback(serv_id);
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       dnssd_deregister_local_service(serv_id);
-       dnssd_destroy_local_service(serv_id);
-
-       return 0;
-}
-
-/**
- * @testcase           utc_nsd_dnssd_register_local_service_n
- * @since_tizen                3.0
- * @type                       Negative
- * @description                Verify dnssd_register_local_service by passing invalid service handle.
- * @scenario           Pass an invalid service handle which has not been created before.
- *                                     Return value should be DNSSD_ERROR_SERVICE_NOT_FOUND.
- */
-int utc_nsd_dnssd_register_local_service_n(void)
-{
-       int ret = DNSSD_ERROR_NONE;
-       static dnssd_service_h serv_id;
-
-       if (g_feature == false) {
-               ret = dnssd_register_local_service(0, NULL, NULL);
-               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       dnssd_create_local_service("_ftp._tcp", &serv_id);
-
-       ret = dnssd_register_local_service(serv_id + 1, &__registered_cb, NULL);
-       assert_eq(ret, DNSSD_ERROR_SERVICE_NOT_FOUND);
-
-       dnssd_destroy_local_service(serv_id);
-
-       return 0;
-}
-
-/**
- * @testcase           utc_nsd_dnssd_deregister_local_service_p
- * @since_tizen                3.0
- * @type                       Positive
- * @description                Deregister a DNSSD local service handle.
- * @scenario           Create a DNSSD service and Register
- *                                     Deregister and Destroy the DNSSD service.
- *                                     Ensure no error
- */
-int utc_nsd_dnssd_deregister_local_service_p(void)
-{
-       int ret = DNSSD_ERROR_NONE;
-       static dnssd_service_h serv_id;
-
-       if (g_feature == false) {
-               ret = dnssd_deregister_local_service(0);
-               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       dnssd_create_local_service("_ftp._tcp", &serv_id);
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       ret = dnssd_service_set_name(serv_id, "Tizen");
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       ret = dnssd_service_set_port(serv_id, 12345);
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       ret = wait_for_registered_callback(serv_id);
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       ret = dnssd_deregister_local_service(serv_id);
-       assert_eq(ret, DNSSD_ERROR_NONE);
-
-       dnssd_destroy_local_service(serv_id);
-
-       return 0;
-}
-
-/**
- * @testcase           utc_nsd_dnssd_deregister_local_service_n
- * @since_tizen                3.0
- * @type                       Negative
- * @description                Verify dnssd_deregister_local_service by passing invalid service handle.
- * @scenario           Pass an invalid service handle which has not been created before.
- *                                     Return value should be DNSSD_ERROR_SERVICE_NOT_FOUND.
- */
-int utc_nsd_dnssd_deregister_local_service_n(void)
-{
-       int ret = DNSSD_ERROR_NONE;
-
-       if (g_feature == false) {
-               ret = dnssd_deregister_local_service(0);
-               assert_eq(ret, DNSSD_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       ret = dnssd_deregister_local_service(0);
-       assert_eq(ret, DNSSD_ERROR_SERVICE_NOT_FOUND);
-
-       return 0;
-}
diff --git a/unittest/utc-nsd-ssdp-browse.c b/unittest/utc-nsd-ssdp-browse.c
deleted file mode 100644 (file)
index 0cc47be..0000000
+++ /dev/null
@@ -1,215 +0,0 @@
-//
-// Copyright (c) 2014 Samsung Electronics Co., Ltd.
-//
-// Licensed under the Apache License, Version 2.0 (the License);
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-#include "assert_local.h"
-#include <ssdp.h>
-#include <stdlib.h>
-#include <glib.h>
-#include <system_info.h>
-
-//& set: Nsd-ssdp-browse
-
-static GMainLoop* g_loop = NULL;
-static bool g_feature = true;
-
-static void __found_cb(ssdp_service_state_e state, ssdp_service_h ssdp_service, void *user_data)
-{
-       return;
-}
-
-/**
- * @function           utc_nsd_ssdp_browse_startup
- * @since_tizen                3.0
- * @description                Initializes SSDP. Called before each test
- * @parameter          NA
- * @return                     NA
- */
-void utc_nsd_ssdp_browse_startup(void)
-{
-       int ret = SSDP_ERROR_NONE;
-       ret = system_info_get_platform_bool("http://tizen.org/feature/network.service_discovery.ssdp", &g_feature);
-
-       if (SYSTEM_INFO_ERROR_NONE != ret) {
-               fprintf(stderr, "system_info_get_platform_bool() Fail(%d)\n", ret);
-               return;
-       }
-
-       if (g_feature == true) {
-               ret = ssdp_initialize();
-               if (ret != SSDP_ERROR_NONE) {
-                       fprintf(stderr, "dnssd_initialize() Fail(%d)", ret);
-                       return;
-               }
-               g_loop = g_main_loop_new(NULL, FALSE);
-       }
-}
-
-/**
- * @function           utc_nsd_ssdp_browse_cleanup
- * @since_tizen                3.0
- * @description                Deinitialize SSDP. Called after each test
- * @parameter          NA
- * @return                     NA
- */
-void utc_nsd_ssdp_browse_cleanup(void)
-{
-       if (g_feature == true) {
-               ssdp_deinitialize();
-               g_main_loop_unref(g_loop);
-               g_loop = NULL;
-       }
-}
-
-/**
- * @testcase           utc_nsd_ssdp_start_browsing_service_p
- * @since_tizen                3.0
- * @type                       Positive
- * @description                Start browsing SSDP services
- * @scenario           Start browsing SSDP services with a service target
- *                                     Ensure no error
- */
-int utc_nsd_ssdp_start_browsing_service_p(void)
-{
-       int ret = SSDP_ERROR_NONE;
-       ssdp_browser_h browser_id = 0;
-
-       if (g_feature == false) {
-               ret = ssdp_start_browsing_service(NULL, NULL, NULL, NULL);
-               assert_eq(ret, SSDP_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       ret = ssdp_start_browsing_service("upnp:rootdevice", &browser_id, &__found_cb, NULL);
-       assert_eq(ret, SSDP_ERROR_NONE);
-
-       ssdp_stop_browsing_service(browser_id);
-
-       return 0;
-}
-
-/**
- * @testcase           utc_nsd_ssdp_start_browsing_service_n
- * @since_tizen                3.0
- * @type                       Negative
- * @description                Verify ssdp_start_browsing_service by passing invalid browser handle
- * @scenario           Pass NULL as a browser handle
- *                                     Return value should be SSDP_ERROR_INVALID_PARAMETER
- */
-int utc_nsd_ssdp_start_browsing_service_n(void)
-{
-       int ret = SSDP_ERROR_NONE;
-
-       if (g_feature == false) {
-               ret = ssdp_start_browsing_service(NULL, NULL, NULL, NULL);
-               assert_eq(ret, SSDP_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       ret = ssdp_start_browsing_service("upnp:rootdevice", NULL, &__found_cb, NULL);
-       assert_eq(ret, SSDP_ERROR_INVALID_PARAMETER);
-
-       return 0;
-}
-
-/**
- * @testcase           utc_nsd_ssdp_stop_browsing_service_p
- * @since_tizen                3.0
- * @type                       Positive
- * @description                Stop browsing SSDP services
- * @scenario           Start browsing SSDP services with a service target
- *                                     Stop browsing with valid browser handle
- *                                     Ensure no error
- */
-int utc_nsd_ssdp_stop_browsing_service_p(void)
-{
-       int ret = SSDP_ERROR_NONE;
-       ssdp_browser_h browser_id = 0;
-
-       if (g_feature == false) {
-               ret = ssdp_stop_browsing_service(0);
-               assert_eq(ret, SSDP_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       ret = ssdp_start_browsing_service("upnp:rootdevice", &browser_id, &__found_cb, NULL);
-       assert_eq(ret, SSDP_ERROR_NONE);
-
-       ssdp_stop_browsing_service(browser_id);
-       assert_eq(ret, SSDP_ERROR_NONE);
-
-       return 0;
-}
-
-/**
- * @testcase           utc_nsd_ssdp_stop_browsing_service_n1
- * @since_tizen                3.0
- * @type                       Negative
- * @description                Verify ssdp_stop_browsing_service by passing invalid browser handle
- * @scenario           Start browsing SSDP services with a service target
- *                                     Stop browsing by passing an invalid browser handle
- *                                     Return value should be SSDP_ERROR_INVALID_PARAMETER
- */
-int utc_nsd_ssdp_stop_browsing_service_n1(void)
-{
-       int ret = SSDP_ERROR_NONE;
-       ssdp_browser_h browser_id = 0;
-
-       if (g_feature == false) {
-               ret = ssdp_stop_browsing_service(0);
-               assert_eq(ret, SSDP_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       ret = ssdp_start_browsing_service("upnp:rootdevice", &browser_id, &__found_cb, NULL);
-       assert_eq(ret, SSDP_ERROR_NONE);
-
-       ret = ssdp_stop_browsing_service(0);
-       assert_eq(ret, SSDP_ERROR_INVALID_PARAMETER);
-
-       ssdp_stop_browsing_service(browser_id);
-
-       return 0;
-}
-
-/**
- * @testcase           utc_nsd_ssdp_stop_browsing_service_n2
- * @since_tizen                3.0
- * @type                       Negative
- * @description                Verify ssdp_stop_browsing_service by passing invalid browser handle
- * @scenario           Start browsing SSDP services with a service target
- *                                     Stop browsing by passing an invalid browser handle which has not been created before
- *                                     Return value should be SSDP_SERVICE_NOT_FOUND
- */
-int utc_nsd_ssdp_stop_browsing_service_n2(void)
-{
-       int ret = SSDP_ERROR_NONE;
-       ssdp_browser_h browser_id = 0;
-
-       if (g_feature == false) {
-               ret = ssdp_stop_browsing_service(0);
-               assert_eq(ret, SSDP_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       ret = ssdp_start_browsing_service("upnp:rootdevice", &browser_id, &__found_cb, NULL);
-       assert_eq(ret, SSDP_ERROR_NONE);
-
-       ret = ssdp_stop_browsing_service(browser_id + 1);
-       assert_eq(ret, SSDP_ERROR_SERVICE_NOT_FOUND);
-
-       ssdp_stop_browsing_service(browser_id);
-
-       return 0;
-}
diff --git a/unittest/utc-nsd-ssdp-register.c b/unittest/utc-nsd-ssdp-register.c
deleted file mode 100644 (file)
index fbd1f01..0000000
+++ /dev/null
@@ -1,923 +0,0 @@
-//
-// Copyright (c) 2020 Samsung Electronics Co., Ltd.
-//
-// Licensed under the Apache License, Version 2.0 (the License);
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
-#include "assert_local.h"
-#include <ssdp.h>
-#include <glib.h>
-#include <stdlib.h>
-#include <string.h>
-#include <system_info.h>
-
-//& set: Nsd-ssdp-register
-
-static GMainLoop* g_loop = NULL;
-static bool g_feature = true;
-
-static void __registered_cb(ssdp_error_e result, ssdp_service_h ssdp_service, void *user_data)
-{
-       return;
-}
-
-
-/**
- * @function           utc_nsd_ssdp_register_startup
- * @since_tizen                3.0
- * @description                Initializes SSDP. Called before each test
- * @parameter          NA
- * @return                     NA
- */
-void utc_nsd_ssdp_register_startup(void)
-{
-       int ret = SSDP_ERROR_NONE;
-       ret = system_info_get_platform_bool("http://tizen.org/feature/network.service_discovery.ssdp", &g_feature);
-
-       if (SYSTEM_INFO_ERROR_NONE != ret) {
-               fprintf(stderr, "system_info_get_platform_bool() Fail(%d)\n", ret);
-               return;
-       }
-
-       if (g_feature == true) {
-               ret = ssdp_initialize();
-               if (ret != SSDP_ERROR_NONE) {
-                       fprintf(stderr, "dnssd_initialize() Fail(%d)", ret);
-                       return;
-               }
-               g_loop = g_main_loop_new(NULL, FALSE);
-       }
-}
-
-/**
- * @function           utc_nsd_ssdp_register_cleanup
- * @since_tizen                3.0
- * @description                Deinitialize SSDP. Called after each test
- * @parameter          NA
- * @return                     NA
- */
-void utc_nsd_ssdp_register_cleanup(void)
-{
-       if (g_feature == true) {
-               ssdp_deinitialize();
-               g_main_loop_unref(g_loop);
-               g_loop = NULL;
-       }
-}
-
-/**
- * @testcase           utc_nsd_ssdp_initialize_p
- * @since_tizen                3.0
- * @type                       Positive
- * @description                Initialize SSDP.
- * @scenario           Initialize SSDP.
- *                                     Ensure no error
- */
-int utc_nsd_ssdp_initialize_p(void)
-{
-       int ret = SSDP_ERROR_NONE;
-
-       if (g_feature == false) {
-               ret = ssdp_initialize();
-               assert_eq(ret, SSDP_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-       ssdp_deinitialize();
-
-       ret = ssdp_initialize();
-       assert_eq(ret, SSDP_ERROR_NONE);
-
-       return 0;
-}
-
-/**
- * @testcase           utc_nsd_ssdp_deinitialize_p
- * @since_tizen                3.0
- * @type                       Positive
- * @description                Deinitialize SSDP.
- * @scenario           Deinitialize SSDP.
- *                                     Ensure no error
- */
-int utc_nsd_ssdp_deinitialize_p(void)
-{
-       int ret = SSDP_ERROR_NONE;
-
-       if (g_feature == false) {
-               ret = ssdp_deinitialize();
-               assert_eq(ret, SSDP_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-       ret = ssdp_deinitialize();
-       assert_eq(ret, SSDP_ERROR_NONE);
-
-       ssdp_initialize();
-
-       return 0;
-}
-
-/**
- * @testcase           utc_nsd_ssdp_deinitialize_n
- * @since_tizen                3.0
- * @type                       Negative
- * @description                Verify ssdp_deinitialize before SSDP is initialized.
- * @scenario           Deinitialize SSDP and deinitialize again.
- *                                     Return value should be SSDP_ERROR_NOT_INITIALIZED.
- */
-int utc_nsd_ssdp_deinitialize_n(void)
-{
-       int ret = SSDP_ERROR_NONE;
-
-       if (g_feature == false) {
-               ret = ssdp_deinitialize();
-               assert_eq(ret, SSDP_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-       ssdp_deinitialize();
-
-       ret = ssdp_deinitialize();
-       assert_eq(ret, SSDP_ERROR_NOT_INITIALIZED);
-
-       ssdp_initialize();
-
-       return 0;
-}
-
-/**
- * @testcase           utc_nsd_ssdp_create_local_service_p
- * @since_tizen                3.0
- * @type                       Positive
- * @description                Create a SSDP local service handle.
- * @scenario           Create and Destroy a SSDP local service handle.
- *                                     Ensure no error
- */
-int utc_nsd_ssdp_create_local_service_p(void)
-{
-       int ret = SSDP_ERROR_NONE;
-       static ssdp_service_h serv_id;
-
-       if (g_feature == false) {
-               ret = ssdp_create_local_service(NULL, NULL);
-               assert_eq(ret, SSDP_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       ret = ssdp_create_local_service("upnp:rootdevice", &serv_id);
-       assert_eq(ret, SSDP_ERROR_NONE);
-
-       ssdp_destroy_local_service(serv_id);
-
-       return 0;
-}
-
-/**
- * @testcase           utc_nsd_ssdp_create_local_service_n
- * @since_tizen                3.0
- * @type                       Negative
- * @description                Verify ssdp_create_local_service by passing an invalid parameter.
- * @scenario           Pass NULL as a service handle parameter.
- *                                     Return value should be SSDP_ERROR_INVALID_PARAMETER.
- */
-int utc_nsd_ssdp_create_local_service_n(void)
-{
-       int ret = SSDP_ERROR_NONE;
-
-       if (g_feature == false) {
-               ret = ssdp_create_local_service(NULL, NULL);
-               assert_eq(ret, SSDP_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       ret = ssdp_create_local_service("upnp:rootdevice", NULL);
-       assert_eq(ret, SSDP_ERROR_INVALID_PARAMETER);
-
-       return 0;
-}
-
-/**
- * @testcase           utc_nsd_ssdp_destroy_local_service_p
- * @since_tizen                3.0
- * @type                       Positive
- * @description                Destroy a SSDP local service handle.
- * @scenario           Create and Destroy a SSDP local service handle.
- *                                     Ensure no error
- */
-int utc_nsd_ssdp_destroy_local_service_p(void)
-{
-       int ret = SSDP_ERROR_NONE;
-       static ssdp_service_h serv_id;
-
-       if (g_feature == false) {
-               ret = ssdp_destroy_local_service(0);
-               assert_eq(ret, SSDP_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       ret = ssdp_create_local_service("upnp:rootdevice", &serv_id);
-       assert_eq(ret, SSDP_ERROR_NONE);
-
-       ret = ssdp_destroy_local_service(serv_id);
-       assert_eq(ret, SSDP_ERROR_NONE);
-
-       return 0;
-}
-
-/**
- * @testcase           utc_nsd_ssdp_destroy_local_service_n
- * @since_tizen                3.0
- * @type                       Negative
- * @description                Verify ssdp_destroy_local_service by passing invalid service handle.
- * @scenario           Pass an invalid service handle which has not been created before.
- *                                     Return value should be SSDP_ERROR_SERVICE_NOT_FOUND.
- */
-int utc_nsd_ssdp_detroy_local_service_n(void)
-{
-       int ret = SSDP_ERROR_NONE;
-       static ssdp_service_h serv_id;
-
-       if (g_feature == false) {
-               ret = ssdp_destroy_local_service(0);
-               assert_eq(ret, SSDP_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       ret = ssdp_create_local_service("upnp:rootdevice", &serv_id);
-       assert_eq(ret, SSDP_ERROR_NONE);
-
-       ret = ssdp_destroy_local_service(serv_id + 1);
-       assert_eq(ret, SSDP_ERROR_SERVICE_NOT_FOUND);
-
-       ssdp_destroy_local_service(serv_id);
-
-       return 0;
-
-}
-
-/**
- * @testcase           utc_nsd_ssdp_set_usn_p
- * @since_tizen                3.0
- * @type                       Positive
- * @description                Set the USN of a SSDP local service.
- * @scenario           Create a SSDP local service and set the USN of the service.
- *                                     Ensure no error
- */
-int utc_nsd_ssdp_set_usn_p(void)
-{
-       int ret = SSDP_ERROR_NONE;
-       static ssdp_service_h serv_id;
-
-       if (g_feature == false) {
-               ret = ssdp_service_set_usn(0, NULL);
-               assert_eq(ret, SSDP_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       ssdp_create_local_service("upnp:rootdevice", &serv_id);
-
-       ret = ssdp_service_set_usn(serv_id, "uuid:1234abce");
-       assert_eq(ret, SSDP_ERROR_NONE);
-
-       ssdp_destroy_local_service(serv_id);
-
-       return 0;
-}
-
-/**
- * @testcase           utc_nsd_ssdp_set_usn_n1
- * @since_tizen                3.0
- * @type                       Negative
- * @description                Verify ssdp_service_set_usn by passing invalid service handle.
- * @scenario           Pass an invalid service handle which has not been created before.
- *                                     Return value should be SSDP_ERROR_SERVICE_NOT_FOUND.
- */
-int utc_nsd_ssdp_set_usn_n1(void)
-{
-       int ret = SSDP_ERROR_NONE;
-       static ssdp_service_h serv_id;
-       static ssdp_service_h other_serv_id;
-
-       if (g_feature == false) {
-               ret = ssdp_service_set_usn(0, NULL);
-               assert_eq(ret, SSDP_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       ssdp_create_local_service("upnp:rootdevice", &serv_id);
-
-       ret = ssdp_service_set_usn(serv_id + 1, "uuid:1234abce");
-       assert_eq(ret, SSDP_ERROR_SERVICE_NOT_FOUND);
-
-       ssdp_destroy_local_service(other_serv_id);
-       ssdp_destroy_local_service(serv_id);
-
-       return 0;
-}
-
-/**
- * @testcase           utc_nsd_ssdp_set_usn_n2
- * @since_tizen                3.0
- * @type                       Negative
- * @description                Verify ssdp_service_set_usn by passing a duplicate USN.
- * @scenario           Create a SSDP service and set a USN.
- *                                     Create another SSDP service and set the same USN as that of the first SSDP service.
- *                                     Return value should be SSDP_ERROR_INVALID_PARAMETER.
- */
-int utc_nsd_ssdp_set_usn_n2(void)
-{
-       int ret = SSDP_ERROR_NONE;
-       static ssdp_service_h serv_id;
-       static ssdp_service_h other_serv_id;
-
-       if (g_feature == false) {
-               ret = ssdp_service_set_usn(0, NULL);
-               assert_eq(ret, SSDP_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       ssdp_create_local_service("upnp:rootdevice", &serv_id);
-       ssdp_service_set_usn(serv_id, "uuid:1234abce");
-
-       ssdp_create_local_service("upnp:rootdevice", &other_serv_id);
-       ret = ssdp_service_set_usn(serv_id, "uuid:1234abce");
-       assert_eq(ret, SSDP_ERROR_INVALID_PARAMETER);
-
-       ssdp_destroy_local_service(other_serv_id);
-       ssdp_destroy_local_service(serv_id);
-
-       return 0;
-}
-
-/**
- * @testcase           utc_nsd_ssdp_set_url_p
- * @since_tizen                3.0
- * @type                       Positive
- * @description                Set the URL of a SSDP local service.
- * @scenario           Create a SSDP local service and set the URL of the service.
- *                                     Ensure no error
- */
-int utc_nsd_ssdp_set_url_p(void)
-{
-       int ret = SSDP_ERROR_NONE;
-       static ssdp_service_h serv_id;
-
-       if (g_feature == false) {
-               ret = ssdp_service_set_url(0, NULL);
-               assert_eq(ret, SSDP_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       ssdp_create_local_service("upnp:rootdevice", &serv_id);
-
-       ret = ssdp_service_set_url(serv_id, "192.168.0.1");
-       assert_eq(ret, SSDP_ERROR_NONE);
-
-       ssdp_destroy_local_service(serv_id);
-
-       return 0;
-}
-
-/**
- * @testcase           utc_nsd_ssdp_set_url_n1
- * @since_tizen                3.0
- * @type                       Negative
- * @description                Verify ssdp_service_set_url by passing invalid service handle.
- * @scenario           Pass an invalid service handle which has not been created before.
- *                                     Return value should be SSDP_ERROR_SERVICE_NOT_FOUND.
- */
-int utc_nsd_ssdp_set_url_n1(void)
-{
-       int ret = SSDP_ERROR_NONE;
-       static ssdp_service_h serv_id;
-       static ssdp_service_h other_serv_id;
-
-       if (g_feature == false) {
-               ret = ssdp_service_set_url(0, NULL);
-               assert_eq(ret, SSDP_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       ssdp_create_local_service("upnp:rootdevice", &serv_id);
-
-       ret = ssdp_service_set_url(serv_id + 1, "192.168.0.1");
-       assert_eq(ret, SSDP_ERROR_SERVICE_NOT_FOUND);
-
-       ssdp_destroy_local_service(other_serv_id);
-       ssdp_destroy_local_service(serv_id);
-
-       return 0;
-}
-
-/**
- * @testcase           utc_nsd_ssdp_set_url_n2
- * @since_tizen                3.0
- * @type                       Negative
- * @description                Verify ssdp_service_set_usn by passing a duplicate URL.
- * @scenario           Create a SSDP service and set a URL.
- *                                     Create another SSDP service and set the same URL as that of the first SSDP service.
- *                                     Return value should be SSDP_ERROR_INVALID_PARAMETER.
- */
-int utc_nsd_ssdp_set_url_n2(void)
-{
-       int ret = SSDP_ERROR_NONE;
-       static ssdp_service_h serv_id;
-       static ssdp_service_h other_serv_id;
-
-       if (g_feature == false) {
-               ret = ssdp_service_set_url(0, NULL);
-               assert_eq(ret, SSDP_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       ssdp_create_local_service("upnp:rootdevice", &serv_id);
-       ssdp_service_set_url(serv_id, "192.168.0.1");
-
-       ssdp_create_local_service("upnp:rootdevice", &other_serv_id);
-       ret = ssdp_service_set_url(serv_id, "192.168.0.1");
-       assert_eq(ret, SSDP_ERROR_INVALID_PARAMETER);
-
-       ssdp_destroy_local_service(other_serv_id);
-       ssdp_destroy_local_service(serv_id);
-
-       return 0;
-}
-
-/**
- * @testcase           utc_nsd_ssdp_get_target_p
- * @since_tizen                3.0
- * @type                       Positive
- * @description                Get the target of a SSDP service.
- * @scenario           Create a SSDP local service and get the target of a SSDP service.
- *                                     Ensure no error
- */
-int utc_nsd_ssdp_get_target_p(void)
-{
-       int ret = SSDP_ERROR_NONE;
-       static ssdp_service_h serv_id;
-       char *target = NULL;
-
-       if (g_feature == false) {
-               ret = ssdp_service_get_target(0, NULL);
-               assert_eq(ret, SSDP_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       ssdp_create_local_service("upnp:rootdevice", &serv_id);
-
-       ret = ssdp_service_get_target(serv_id, &target);
-       assert_eq(ret, SSDP_ERROR_NONE);
-
-       ssdp_destroy_local_service(serv_id);
-       g_free(target);
-
-       return 0;
-}
-
-/**
- * @testcase           utc_nsd_ssdp_get_target_n1
- * @since_tizen                3.0
- * @type                       Negative
- * @description                Verify ssdp_service_get_target by passing invalid service handle.
- * @scenario           Pass an invalid service handle which has not been created before.
- *                                     Return value should be SSDP_ERROR_SERVICE_NOT_FOUND.
- */
-int utc_nsd_ssdp_get_target_n1(void)
-{
-       int ret = SSDP_ERROR_NONE;
-       static ssdp_service_h serv_id;
-       char *target = NULL;
-
-       if (g_feature == false) {
-               ret = ssdp_service_get_target(0, NULL);
-               assert_eq(ret, SSDP_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       ssdp_create_local_service("upnp:rootdevice", &serv_id);
-
-       ret = ssdp_service_get_target(serv_id + 1, &target);
-       assert_eq(ret, SSDP_ERROR_SERVICE_NOT_FOUND);
-
-       ssdp_destroy_local_service(serv_id);
-
-       return 0;
-}
-
-/**
- * @testcase           utc_nsd_ssdp_get_target_n2
- * @since_tizen                3.0
- * @type                       Negative
- * @description                Verify ssdp_service_get_target by passing an invalid parameter.
- * @scenario           Pass NULL as a target parameter for getting the target of a SSDP service.
- *                                     Return value should be SSDP_ERROR_INVALID_PARAMETER.
- */
-int utc_nsd_ssdp_get_target_n2(void)
-{
-       int ret = SSDP_ERROR_NONE;
-       static ssdp_service_h serv_id;
-
-       if (g_feature == false) {
-               ret = ssdp_service_get_target(0, NULL);
-               assert_eq(ret, SSDP_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       ssdp_create_local_service("upnp:rootdevice", &serv_id);
-
-       ret = ssdp_service_get_target(serv_id, NULL);
-       assert_eq(ret, SSDP_ERROR_INVALID_PARAMETER);
-
-       ssdp_destroy_local_service(serv_id);
-
-       return 0;
-}
-
-/**
- * @testcase           utc_nsd_ssdp_get_usn_p
- * @since_tizen                3.0
- * @type                       Positive
- * @description                Get the USN of a SSDP service.
- * @scenario           Create a SSDP local service and get the USN of a SSDP service.
- *                                     Ensure no error
- */
-int utc_nsd_ssdp_get_usn_p(void)
-{
-       int ret = SSDP_ERROR_NONE;
-       static ssdp_service_h serv_id;
-       char *usn = NULL;
-
-       if (g_feature == false) {
-               ret = ssdp_service_get_usn(0, NULL);
-               assert_eq(ret, SSDP_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       ssdp_create_local_service("upnp:rootdevice", &serv_id);
-
-       ret = ssdp_service_set_usn(serv_id, "uuid:1234abce");
-       assert_eq(ret, SSDP_ERROR_NONE);
-
-       ret = ssdp_service_get_usn(serv_id, &usn);
-       assert_eq(ret, SSDP_ERROR_NONE);
-
-       ssdp_destroy_local_service(serv_id);
-       g_free(usn);
-
-       return 0;
-}
-
-/**
- * @testcase           utc_nsd_ssdp_get_usn_n1
- * @since_tizen                3.0
- * @type                       Negative
- * @description                Verify ssdp_service_get_usn by passing invalid service handle.
- * @scenario           Pass an invalid service handle which has not been created before.
- *                                     Return value should be SSDP_ERROR_SERVICE_NOT_FOUND.
- */
-int utc_nsd_ssdp_get_usn_n1(void)
-{
-       int ret = SSDP_ERROR_NONE;
-       static ssdp_service_h serv_id;
-       char *usn = NULL;
-
-       if (g_feature == false) {
-               ret = ssdp_service_get_usn(0, NULL);
-               assert_eq(ret, SSDP_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       ssdp_create_local_service("upnp:rootdevice", &serv_id);
-
-       ret = ssdp_service_get_usn(serv_id + 1, &usn);
-       assert_eq(ret, SSDP_ERROR_SERVICE_NOT_FOUND);
-
-       ssdp_destroy_local_service(serv_id);
-
-       return 0;
-}
-
-/**
- * @testcase           utc_nsd_ssdp_get_usn_n2
- * @since_tizen                3.0
- * @type                       Negative
- * @description                Verify ssdp_service_get_usn by passing an invalid parameter
- * @scenario           Pass NULL as a target parameter for getting the USN of a SSDP service.
- *                                     Return value should be SSDP_ERROR_INVALID_PARAMETER.
- */
-int utc_nsd_ssdp_get_usn_n2(void)
-{
-       int ret = SSDP_ERROR_NONE;
-       static ssdp_service_h serv_id;
-
-       if (g_feature == false) {
-               ret = ssdp_service_get_usn(0, NULL);
-               assert_eq(ret, SSDP_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       ssdp_create_local_service("upnp:rootdevice", &serv_id);
-
-       ret = ssdp_service_get_usn(serv_id, NULL);
-       assert_eq(ret, SSDP_ERROR_INVALID_PARAMETER);
-
-       ssdp_destroy_local_service(serv_id);
-
-       return 0;
-}
-
-/**
- * @testcase           utc_nsd_ssdp_get_url_p
- * @since_tizen                3.0
- * @type                       Positive
- * @description                Get the URL of a SSDP service.
- * @scenario           Create a SSDP local service and get the URL of a SSDP service.
- *                                     Ensure no error
- */
-int utc_nsd_ssdp_get_url_p(void)
-{
-       int ret = SSDP_ERROR_NONE;
-       static ssdp_service_h serv_id;
-       char *url = NULL;
-
-       if (g_feature == false) {
-               ret = ssdp_service_get_url(0, NULL);
-               assert_eq(ret, SSDP_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       ssdp_create_local_service("upnp:rootdevice", &serv_id);
-
-       ret = ssdp_service_set_url(serv_id, "192.168.0.1");
-       assert_eq(ret, SSDP_ERROR_NONE);
-
-       ret = ssdp_service_get_url(serv_id, &url);
-       assert_eq(ret, SSDP_ERROR_NONE);
-
-       ssdp_destroy_local_service(serv_id);
-       g_free(url);
-
-       return 0;
-}
-
-/**
- * @testcase           utc_nsd_ssdp_get_url_n1
- * @since_tizen                3.0
- * @type                       Negative
- * @description                Verify ssdp_service_get_url by passing invalid service handle.
- * @scenario           Pass an invalid service handle which has not been created before.
- *                                     Return value should be SSDP_ERROR_SERVICE_NOT_FOUND.
- */
-int utc_nsd_ssdp_get_url_n1(void)
-{
-       int ret = SSDP_ERROR_NONE;
-       static ssdp_service_h serv_id;
-       char *url = NULL;
-
-       if (g_feature == false) {
-               ret = ssdp_service_get_url(0, NULL);
-               assert_eq(ret, SSDP_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       ssdp_create_local_service("upnp:rootdevice", &serv_id);
-
-       ret = ssdp_service_get_url(serv_id + 1, &url);
-       assert_eq(ret, SSDP_ERROR_SERVICE_NOT_FOUND);
-
-       ssdp_destroy_local_service(serv_id);
-
-       return 0;
-}
-
-/**
- * @testcase           utc_nsd_ssdp_get_url_n2
- * @since_tizen                3.0
- * @type                       Negative
- * @description                Verify ssdp_service_get_url by passing an invalid parameter
- * @scenario           Pass NULL as a target parameter for getting the URL of a SSDP service.
- *                                     Return value should be SSDP_ERROR_INVALID_PARAMETER.
- */
-int utc_nsd_ssdp_get_url_n2(void)
-{
-       int ret = SSDP_ERROR_NONE;
-       static ssdp_service_h serv_id;
-
-       if (g_feature == false) {
-               ret = ssdp_service_get_url(0, NULL);
-               assert_eq(ret, SSDP_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       ssdp_create_local_service("upnp:rootdevice", &serv_id);
-
-       ret = ssdp_service_get_url(serv_id, NULL);
-       assert_eq(ret, SSDP_ERROR_INVALID_PARAMETER);
-
-       ssdp_destroy_local_service(serv_id);
-
-       return 0;
-}
-
-/**
- * @testcase           utc_nsd_ssdp_register_local_service_p
- * @since_tizen                3.0
- * @type                       Positive
- * @description                Register a SSDP local service handle.
- * @scenario           Create a SSDP service and set a USN and a URL for the service.
- *                                     Register, Deregister and Destroy the SSDP service.
- *                                     Ensure no error
- */
-int utc_nsd_ssdp_register_local_service_p(void)
-{
-       int ret = SSDP_ERROR_NONE;
-       static ssdp_service_h serv_id;
-
-       if (g_feature == false) {
-               ret = ssdp_register_local_service(0, NULL, NULL);
-               assert_eq(ret, SSDP_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       ret = ssdp_create_local_service("upnp:rootdevice", &serv_id);
-       assert_eq(ret, SSDP_ERROR_NONE);
-
-       ret = ssdp_service_set_usn(serv_id, "uuid:1234abce");
-       assert_eq(ret, SSDP_ERROR_NONE);
-
-       ret = ssdp_service_set_url(serv_id, "192.168.0.1");
-       assert_eq(ret, SSDP_ERROR_NONE);
-
-       ret = ssdp_register_local_service(serv_id, &__registered_cb, NULL);
-       assert_eq(ret, SSDP_ERROR_NONE);
-
-       ssdp_deregister_local_service(serv_id);
-       ssdp_destroy_local_service(serv_id);
-
-       return 0;
-}
-
-/**
- * @testcase           utc_nsd_ssdp_register_local_service_n1
- * @since_tizen                3.0
- * @type                       Negative
- * @description                Verify ssdp_register_local_service by passing invalid service handle.
- * @scenario           Pass an invalid service handle which has not been created before.
- *                                     Return value should be SSDP_ERROR_SERVICE_NOT_FOUND.
- */
-int utc_nsd_ssdp_register_local_service_n1(void)
-{
-       int ret = SSDP_ERROR_NONE;
-       static ssdp_service_h serv_id;
-
-       if (g_feature == false) {
-               ret = ssdp_register_local_service(0, NULL, NULL);
-               assert_eq(ret, SSDP_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       ret = ssdp_create_local_service("upnp:rootdevice", &serv_id);
-       assert_eq(ret, SSDP_ERROR_NONE);
-
-       ret = ssdp_service_set_usn(serv_id, "uuid:1234abce");
-       assert_eq(ret, SSDP_ERROR_NONE);
-
-       ret = ssdp_service_set_url(serv_id, "192.168.0.1");
-       assert_eq(ret, SSDP_ERROR_NONE);
-
-       ret = ssdp_register_local_service(serv_id + 1, &__registered_cb, NULL);
-       assert_eq(ret, SSDP_ERROR_SERVICE_NOT_FOUND);
-
-       ssdp_destroy_local_service(serv_id);
-
-       return 0;
-}
-
-/**
- * @testcase           utc_nsd_ssdp_register_local_service_n2
- * @since_tizen                3.0
- * @type                       Negative
- * @description                Verify ssdp_register_local_service by registering the duplcate service
- * @scenario           Create and Register a SSDP service.
- *                                     Register the service already registered again.
- *                                     Return value should be SSDP_ERROR_INVALID_PARAMETER.
- */
-int utc_nsd_ssdp_register_local_service_n2(void)
-{
-       int ret = SSDP_ERROR_NONE;
-       static ssdp_service_h serv_id;
-
-       if (g_feature == false) {
-               ret = ssdp_register_local_service(0, NULL, NULL);
-               assert_eq(ret, SSDP_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       ssdp_create_local_service("upnp:rootdevice", &serv_id);
-       assert_eq(ret, SSDP_ERROR_NONE);
-
-       ret = ssdp_service_set_usn(serv_id, "uuid:1234abce");
-       assert_eq(ret, SSDP_ERROR_NONE);
-
-       ret = ssdp_service_set_url(serv_id, "192.168.0.1");
-       assert_eq(ret, SSDP_ERROR_NONE);
-
-       ret = ssdp_register_local_service(serv_id, &__registered_cb, NULL);
-       assert_eq(ret, SSDP_ERROR_NONE);
-
-       ret = ssdp_register_local_service(serv_id, &__registered_cb, NULL);
-       assert_eq(ret, SSDP_ERROR_INVALID_PARAMETER);
-
-       ssdp_deregister_local_service(serv_id);
-       ssdp_destroy_local_service(serv_id);
-
-       return 0;
-}
-
-/**
- * @testcase           utc_nsd_ssdp_deregister_local_service_p
- * @since_tizen                3.0
- * @type                       Positive
- * @description                Deregister a SSDP local service handle.
- * @scenario           Create a SSDP service and Register
- *                                     Deregister and Destroy the SSDP service.
- *                                     Ensure no error
- */
-int utc_nsd_ssdp_deregister_local_service_p(void)
-{
-       int ret = SSDP_ERROR_NONE;
-       static ssdp_service_h serv_id;
-
-       if (g_feature == false) {
-               ret = ssdp_deregister_local_service(0);
-               assert_eq(ret, SSDP_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       ret = ssdp_create_local_service("upnp:rootdevice", &serv_id);
-       assert_eq(ret, SSDP_ERROR_NONE);
-
-       ret = ssdp_service_set_usn(serv_id, "uuid:1234abce");
-       assert_eq(ret, SSDP_ERROR_NONE);
-
-       ret = ssdp_service_set_url(serv_id, "192.168.0.1");
-       assert_eq(ret, SSDP_ERROR_NONE);
-
-       ret = ssdp_register_local_service(serv_id, &__registered_cb, NULL);
-       assert_eq(ret, SSDP_ERROR_NONE);
-
-       ret = ssdp_deregister_local_service(serv_id);
-       assert_eq(ret, SSDP_ERROR_NONE);
-
-       ssdp_destroy_local_service(serv_id);
-
-       return 0;
-}
-
-/**
- * @testcase           utc_nsd_ssdp_deregister_local_service_n
- * @since_tizen                3.0
- * @type                       Negative
- * @description                Verify ssdp_deregister_local_service by passing invalid service handle.
- * @scenario           Pass an invalid service handle which has not been created before.
- *                                     Return value should be SSDP_ERROR_SERVICE_NOT_FOUND.
- */
-int utc_nsd_ssdp_deregister_local_service_n(void)
-{
-       int ret = SSDP_ERROR_NONE;
-       static ssdp_service_h serv_id;
-
-       if (g_feature == false) {
-               ret = ssdp_deregister_local_service(0);
-               assert_eq(ret, SSDP_ERROR_NOT_SUPPORTED);
-               return 0;
-       }
-
-       ret = ssdp_create_local_service("upnp:rootdevice", &serv_id);
-       assert_eq(ret, SSDP_ERROR_NONE);
-
-       ret = ssdp_service_set_usn(serv_id, "uuid:1234abce");
-       assert_eq(ret, SSDP_ERROR_NONE);
-
-       ret = ssdp_service_set_url(serv_id, "192.168.0.1");
-       assert_eq(ret, SSDP_ERROR_NONE);
-
-       ret = ssdp_register_local_service(serv_id, &__registered_cb, NULL);
-       assert_eq(ret, SSDP_ERROR_NONE);
-
-       ret = ssdp_deregister_local_service(serv_id + 1);
-       assert_eq(ret, SSDP_ERROR_SERVICE_NOT_FOUND);
-
-       ssdp_deregister_local_service(serv_id);
-       ssdp_destroy_local_service(serv_id);
-
-       return 0;
-}
-