########################## 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
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
%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
%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
#
# @file CMakeLists.txt
#
-
-SET(NSD_PATH ${PROJECT_SOURCE_DIR}/src)
-
-INCLUDE_DIRECTORIES(
- ${CMAKE_SOURCE_DIR}/include
- )
-
ADD_SUBDIRECTORY(dns-sd)
ADD_SUBDIRECTORY(ssdp)
#
# @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})
#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)\
*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;
return DNSSD_ERROR_NONE;
}
-int dnssd_deinitialize(void)
+EXPORT_API int dnssd_deinitialize(void)
{
__DNSSD_LOG_FUNC_ENTER__;
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__;
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;
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__;
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;
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;
}
-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__;
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__;
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__;
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__;
}
}
-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__;
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;
return DNSSD_ERROR_NONE;
}
+//LCOV_EXCL_START
static gboolean __remove_service_getaddrinfo_socket(gpointer user_data)
{
DNSSD_LOGD("Remove DNSServiceGetAddrInfo socket");
__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)
{
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)
{
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;
__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)
{
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;
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;
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__;
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;
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__;
#
# @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})
#ifndef __ssdp_util_h__
#define __ssdp_util_h__
-#define USE_DLOG
#ifdef USE_DLOG
#include <dlog.h>
#include <system_info.h>
}
//LCOV_EXCL_STOP
-int ssdp_initialize()
+EXPORT_API int ssdp_initialize()
{
__SSDP_LOG_FUNC_ENTER__;
int status = SSDP_ERROR_NONE;
return status;
}
-int ssdp_deinitialize()
+EXPORT_API int ssdp_deinitialize()
{
__SSDP_LOG_FUNC_ENTER__;
int status = SSDP_ERROR_NONE;
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;
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;
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;
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;
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;
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;
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;
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__;
}
-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;
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__;
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;
+++ /dev/null
-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})
+++ /dev/null
-/*
-* 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;
-}
+++ /dev/null
-/*
-* 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;
-}
+++ /dev/null
-/*
-* 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;
-}
+++ /dev/null
-/*
-* 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;
-}
--- /dev/null
+# 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
--- /dev/null
+/*
+* 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;
+}
--- /dev/null
+//
+// 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_
--- /dev/null
+//
+// 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_
--- /dev/null
+//
+// 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_
--- /dev/null
+//
+// 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_
--- /dev/null
+//
+// 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;
+}
--- /dev/null
+//
+// 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;
+}
--- /dev/null
+//
+// 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");
+}
--- /dev/null
+//
+// 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);
+}
--- /dev/null
+//
+// 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;
+}
--- /dev/null
+//
+// 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;
+}
--- /dev/null
+/*
+* 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;
+}
--- /dev/null
+/*
+* 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;
+}
--- /dev/null
+/*
+* 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;
+}
--- /dev/null
+//
+// 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();
+}
--- /dev/null
+//
+// 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__
--- /dev/null
+//
+// 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;
+}
--- /dev/null
+//
+// 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;
+}
--- /dev/null
+//
+// 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;
+}
--- /dev/null
+//
+// 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;
+}
+
+++ /dev/null
-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}
-)
+++ /dev/null
-//
-// 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_
+++ /dev/null
-//
-// 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_
+++ /dev/null
-//
-// 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_
+++ /dev/null
-//
-// 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_
+++ /dev/null
-//
-// 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;
-}
+++ /dev/null
-//
-// 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;
-}
+++ /dev/null
-//
-// 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");
-}
+++ /dev/null
-//
-// 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);
-}
+++ /dev/null
-//
-// 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;
-}
+++ /dev/null
-//
-// 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;
-}
+++ /dev/null
-//
-// 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();
-}
+++ /dev/null
-//
-// 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__
+++ /dev/null
-//
-// 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;
-}
+++ /dev/null
-//
-// 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;
-}
+++ /dev/null
-//
-// 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;
-}
+++ /dev/null
-//
-// 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;
-}
-