Allow seshat registration to be configurable at compile time

This commit is contained in:
Gayathri
2017-07-13 15:25:49 +05:30
parent 3e91b55197
commit d4bf5dc099
9 changed files with 275 additions and 122 deletions

View File

@@ -36,7 +36,6 @@ include_directories(${INCLUDE_DIR}
${INCLUDE_DIR}/wrp-c
${INCLUDE_DIR}/libparodus
${INCLUDE_DIR}/cimplog
${INCLUDE_DIR}/libseshat
${INCLUDE_DIR}/cjwt
)
@@ -189,6 +188,7 @@ ExternalProject_Add(libparodus
add_library(liblibparodus STATIC SHARED IMPORTED)
add_dependencies(liblibparodus libparodus)
if (ENABLE_SESHAT)
# libseshat external dependency
#-------------------------------------------------------------------------------
ExternalProject_Add(libseshat
@@ -204,6 +204,8 @@ ExternalProject_Add(libseshat
)
add_library(liblibseshat STATIC SHARED IMPORTED)
add_dependencies(liblibseshat libseshat)
include_directories(${INCLUDE_DIR}/libseshat)
endif (ENABLE_SESHAT)
# libcjwt external dependency
#-------------------------------------------------------------------------------

View File

@@ -16,6 +16,12 @@ set(SOURCES main.c mutex.c networking.c nopoll_helpers.c nopoll_handlers.c
connection.c spin_thread.c client_list.c service_alive.c
upstream.c downstream.c thread_tasks.c partners_check.c token.c)
if (ENABLE_SESHAT)
set(SOURCES ${SOURCES} seshat_interface.c)
else()
set(SOURCES ${SOURCES} seshat_interface_stub.c)
endif (ENABLE_SESHAT)
add_executable(parodus ${SOURCES})
target_link_libraries (parodus
@@ -24,7 +30,6 @@ target_link_libraries (parodus
-lmsgpackc
-ltrower-base64
-lnopoll
-llibseshat
-luuid
-lm
-lcimplog
@@ -37,4 +42,9 @@ target_link_libraries (parodus
-lresolv
-lcjwt
)
if (ENABLE_SESHAT)
target_link_libraries (parodus -llibseshat)
endif (ENABLE_SESHAT)
install (TARGETS parodus DESTINATION bin)

View File

@@ -17,14 +17,13 @@
#include "mutex.h"
#include "spin_thread.h"
#include "service_alive.h"
#include <libseshat.h>
#include "seshat_interface.h"
/*----------------------------------------------------------------------------*/
/* Macros */
/*----------------------------------------------------------------------------*/
#define HEARTBEAT_RETRY_SEC 30 /* Heartbeat (ping/pong) timeout in seconds */
#define SESHAT_SERVICE_NAME "Parodus"
/*----------------------------------------------------------------------------*/
/* File Scoped Variables */
@@ -39,12 +38,6 @@ pthread_mutex_t close_mut=PTHREAD_MUTEX_INITIALIZER;
/* Function Prototypes */
/*----------------------------------------------------------------------------*/
#if BUILD_YOCTO
static bool __registerWithSeshat(void);
#else
bool __registerWithSeshat(void);
#endif
/*----------------------------------------------------------------------------*/
/* External Functions */
/*----------------------------------------------------------------------------*/
@@ -134,48 +127,3 @@ void createSocketConnection(void *config_in, void (* initKeypress)())
nopoll_cleanup_library();
}
/*----------------------------------------------------------------------------*/
/* Internal functions */
/*----------------------------------------------------------------------------*/
/**
* @brief Helper function to register with seshat.
*
* @note return whether successfully registered.
*
* @return true when registered, false otherwise.
*/
#if BUILD_YOCTO
static bool __registerWithSeshat()
#else
bool __registerWithSeshat()
#endif
{
char *seshat_url = get_parodus_cfg()->seshat_url;
char *parodus_url = get_parodus_cfg()->local_url;
char *discover_url = NULL;
bool rv = false;
if( 0 == init_lib_seshat(seshat_url) ) {
ParodusInfo("seshatlib initialized! (url %s)\n", seshat_url);
if( 0 == seshat_register(SESHAT_SERVICE_NAME, parodus_url) ) {
ParodusInfo("seshatlib registered! (url %s)\n", parodus_url);
discover_url = seshat_discover(SESHAT_SERVICE_NAME);
if( (NULL != discover_url) && (0 == strcmp(parodus_url, discover_url)) ) {
ParodusInfo("seshatlib discovered url = %s\n", discover_url);
rv = true;
} else {
ParodusError("seshatlib registration error (url %s)!", discover_url);
}
free(discover_url);
} else {
ParodusError("seshatlib not registered! (url %s)\n", parodus_url);
}
} else {
ParodusPrint("seshatlib not initialized! (url %s)\n", seshat_url);
}
shutdown_seshat_lib();
return rv;
}

66
src/seshat_interface.c Normal file
View File

@@ -0,0 +1,66 @@
/**
* @file seshat_interface.c
*
* @description This decribes interface to register seshat service.
*
* Copyright (c) 2015 Comcast
*/
#include "seshat_interface.h"
#include "ParodusInternal.h"
#include "config.h"
#include <libseshat.h>
/*----------------------------------------------------------------------------*/
/* Macros */
/*----------------------------------------------------------------------------*/
#define SESHAT_SERVICE_NAME "Parodus"
/*----------------------------------------------------------------------------*/
/* File Scoped Variables */
/*----------------------------------------------------------------------------*/
/*----------------------------------------------------------------------------*/
/* Function Prototypes */
/*----------------------------------------------------------------------------*/
/*----------------------------------------------------------------------------*/
/* Internal Functions */
/*----------------------------------------------------------------------------*/
/*----------------------------------------------------------------------------*/
/* External functions */
/*----------------------------------------------------------------------------*/
bool __registerWithSeshat()
{
char *seshat_url = get_parodus_cfg()->seshat_url;
char *parodus_url = get_parodus_cfg()->local_url;
char *discover_url = NULL;
bool rv = false;
if( 0 == init_lib_seshat(seshat_url) ) {
ParodusInfo("seshatlib initialized! (url %s)\n", seshat_url);
if( 0 == seshat_register(SESHAT_SERVICE_NAME, parodus_url) ) {
ParodusInfo("seshatlib registered! (url %s)\n", parodus_url);
discover_url = seshat_discover(SESHAT_SERVICE_NAME);
if( (NULL != discover_url) && (0 == strcmp(parodus_url, discover_url)) ) {
ParodusInfo("seshatlib discovered url = %s\n", discover_url);
rv = true;
} else {
ParodusError("seshatlib registration error (url %s)!", discover_url);
}
free(discover_url);
} else {
ParodusError("seshatlib not registered! (url %s)\n", parodus_url);
}
} else {
ParodusPrint("seshatlib not initialized! (url %s)\n", seshat_url);
}
shutdown_seshat_lib();
return rv;
}

39
src/seshat_interface.h Normal file
View File

@@ -0,0 +1,39 @@
/**
* @file seshat_interface.h
*
* @description This header defines interface to register seshat service.
*
* Copyright (c) 2015 Comcast
*/
#ifndef _SESHAT_INTERFACE_H_
#define _SESHAT_INTERFACE_H_
#include <stdbool.h>
#ifdef __cplusplus
extern "C" {
#endif
/*----------------------------------------------------------------------------*/
/* File Scoped Variables */
/*----------------------------------------------------------------------------*/
/*----------------------------------------------------------------------------*/
/* Function Prototypes */
/*----------------------------------------------------------------------------*/
/**
* @brief Helper function to register with seshat.
*
* @note return whether successfully registered.
*
* @return true when registered, false otherwise.
*/
bool __registerWithSeshat();
#ifdef __cplusplus
}
#endif
#endif

View File

@@ -0,0 +1,38 @@
/**
* @file seshat_interface_stub.c
*
* @description This decribes interface to register seshat service
*
* Copyright (c) 2015 Comcast
*/
#include "seshat_interface.h"
#include "ParodusInternal.h"
/*----------------------------------------------------------------------------*/
/* Macros */
/*----------------------------------------------------------------------------*/
/*----------------------------------------------------------------------------*/
/* File Scoped Variables */
/*----------------------------------------------------------------------------*/
/*----------------------------------------------------------------------------*/
/* Function Prototypes */
/*----------------------------------------------------------------------------*/
/*----------------------------------------------------------------------------*/
/* Internal Functions */
/*----------------------------------------------------------------------------*/
/*----------------------------------------------------------------------------*/
/* External functions */
/*----------------------------------------------------------------------------*/
bool __registerWithSeshat()
{
ParodusInfo("libseshat disabled, Hence proceeding without registration\n");
return true;
}

View File

@@ -17,11 +17,11 @@ set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DTEST ")
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -W -g -fprofile-arcs -ftest-coverage -O0")
set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fprofile-arcs -ftest-coverage -O0")
set (PARODUS_COMMON_SRC ../src/string_helpers.c ../src/mutex.c ../src/time.c ../src/config.c ../src/spin_thread.c)
set (PARODUS_COMMON_LIBS gcov -lcunit -lcimplog -llibseshat -lwrp-c
-luuid -lpthread -lmsgpackc
-lnopoll -lnanomsg -Wl,--no-as-needed
-lcjwt -lcjson -ltrower-base64 -lssl -lcrypto -lrt -lm
)
set (PARODUS_COMMON_LIBS gcov -lcunit -lcimplog -lwrp-c -luuid -lpthread -lmsgpackc -lnopoll -lnanomsg -Wl,--no-as-needed -lcjwt -lcjson -ltrower-base64 -lssl -lcrypto -lrt -lm)
if (ENABLE_SESHAT)
set (PARODUS_COMMON_LIBS -llibseshat ${PARODUS_COMMON_LIBS})
endif (ENABLE_SESHAT)
set (PARODUS_CONN_LIBS -lresolv)
if(NOT DISABLE_VALGRIND)
set (MEMORY_CHECK valgrind --leak-check=full --show-reachable=yes -v)
@@ -59,7 +59,6 @@ target_link_libraries (libpd_test
cunit
-llibparodus
-lwrp-c
-llibseshat
-luuid
-lmsgpackc
-ltrower-base64
@@ -68,7 +67,9 @@ target_link_libraries (libpd_test
-lm
-lpthread
-lrt)
if (ENABLE_SESHAT)
target_link_libraries (libpd_test -llibseshat)
endif (ENABLE_SESHAT)
#-------------------------------------------------------------------------------
# test_time
#-------------------------------------------------------------------------------
@@ -128,11 +129,17 @@ target_link_libraries (test_createConnection ${PARODUS_CONN_LIBS} ${PARODUS_COMM
add_test(NAME test_client_list COMMAND ${MEMORY_CHECK} ./test_client_list)
#add_executable(test_client_list test_client_list.c ../src/client_list.c ../src/service_alive.c ../src/upstream.c ../src/networking.c ../src/nopoll_helpers.c ../src/downstream.c ../src/connection.c ../src/nopoll_handlers.c ../src/ParodusInternal.c ../src/thread_tasks.c ../src/conn_interface.c ../src/partners_check.c ${PARODUS_COMMON_SRC})
#target_link_libraries (test_client_list ${PARODUS_COMMON_LIBS})
add_executable(test_client_list test_client_list.c ../src/client_list.c
set(SOURCES test_client_list.c ../src/client_list.c
../src/service_alive.c ../src/upstream.c ../src/networking.c ../src/nopoll_helpers.c
../src/downstream.c ../src/connection.c ../src/nopoll_handlers.c
../src/ParodusInternal.c ../src/thread_tasks.c ../src/conn_interface.c
../src/partners_check.c ../src/token.c ${PARODUS_COMMON_SRC})
if (ENABLE_SESHAT)
set(SOURCES ${SOURCES} ../src/seshat_interface.c)
else()
set(SOURCES ${SOURCES} ../src/seshat_interface_stub.c)
endif (ENABLE_SESHAT)
add_executable(test_client_list ${SOURCES})
target_link_libraries (test_client_list ${PARODUS_CONN_LIBS} ${PARODUS_COMMON_LIBS})
#-------------------------------------------------------------------------------
@@ -141,7 +148,13 @@ target_link_libraries (test_client_list ${PARODUS_CONN_LIBS} ${PARODUS_COMMON_LI
add_test(NAME test_service_alive COMMAND ${MEMORY_CHECK} ./test_service_alive)
#add_executable(test_service_alive test_service_alive.c ../src/client_list.c ../src/service_alive.c ../src/upstream.c ../src/networking.c ../src/nopoll_helpers.c ../src/nopoll_handlers.c ../src/config.c ../src/connection.c ../src/ParodusInternal.c ../src/downstream.c ../src/thread_tasks.c ../src/conn_interface.c ../src/partners_check.c ${PARODUS_COMMON_SRC})
#target_link_libraries (test_service_alive ${PARODUS_COMMON_LIBS})
add_executable(test_service_alive test_service_alive.c ../src/client_list.c ../src/service_alive.c ../src/upstream.c ../src/networking.c ../src/nopoll_helpers.c ../src/nopoll_handlers.c ../src/config.c ../src/connection.c ../src/token.c ../src/ParodusInternal.c ../src/downstream.c ../src/thread_tasks.c ../src/conn_interface.c ../src/partners_check.c ${PARODUS_COMMON_SRC})
set(SOURCES test_service_alive.c ../src/client_list.c ../src/service_alive.c ../src/upstream.c ../src/networking.c ../src/nopoll_helpers.c ../src/nopoll_handlers.c ../src/config.c ../src/connection.c ../src/token.c ../src/ParodusInternal.c ../src/downstream.c ../src/thread_tasks.c ../src/conn_interface.c ../src/partners_check.c ${PARODUS_COMMON_SRC})
if (ENABLE_SESHAT)
set(SOURCES ${SOURCES} ../src/seshat_interface.c)
else()
set(SOURCES ${SOURCES} ../src/seshat_interface_stub.c)
endif (ENABLE_SESHAT)
add_executable(test_service_alive ${SOURCES})
target_link_libraries (test_service_alive ${PARODUS_CONN_LIBS} ${PARODUS_COMMON_LIBS})
#-------------------------------------------------------------------------------
@@ -179,7 +192,13 @@ target_link_libraries (test_thread_tasks -lcmocka ${PARODUS_COMMON_LIBS} )
# test_conn_interface
#-------------------------------------------------------------------------------
add_test(NAME test_conn_interface COMMAND ${MEMORY_CHECK} ./test_conn_interface)
add_executable(test_conn_interface test_conn_interface.c ../src/conn_interface.c ../src/config.c ../src/string_helpers.c ../src/mutex.c)
set(SOURCES test_conn_interface.c ../src/conn_interface.c ../src/config.c ../src/string_helpers.c ../src/mutex.c)
if (ENABLE_SESHAT)
set(SOURCES ${SOURCES} ../src/seshat_interface.c)
else()
set(SOURCES ${SOURCES} ../src/seshat_interface_stub.c)
endif (ENABLE_SESHAT)
add_executable(test_conn_interface ${SOURCES})
target_link_libraries (test_conn_interface -lcmocka ${PARODUS_COMMON_LIBS} )
#-------------------------------------------------------------------------------
@@ -194,7 +213,7 @@ target_link_libraries (test_ParodusInternal -lcmocka ${PARODUS_COMMON_LIBS} )
#-------------------------------------------------------------------------------
add_test(NAME test_partners_check COMMAND ${MEMORY_CHECK} ./test_partners_check)
add_executable(test_partners_check test_partners_check.c ../src/partners_check.c)
target_link_libraries (test_partners_check -lcmocka -lwrp-c -llibseshat ${PARODUS_COMMON_LIBS})
target_link_libraries (test_partners_check -lcmocka ${PARODUS_COMMON_LIBS} -lwrp-c)
#-------------------------------------------------------------------------------
# test_token - token.c tests
@@ -204,72 +223,44 @@ add_executable(test_token test_token.c ../src/token.c ../src/string_helpers.c ..
target_link_libraries (test_token ${PARODUS_COMMON_LIBS} ${PARODUS_JWT_LIBS} -lcmocka )
#-------------------------------------------------------------------------------
# test_conn_interface - registerWithSeshat
# test_seshat_interface - registerWithSeshat
#-------------------------------------------------------------------------------
add_test(NAME test_conn_interface-rws COMMAND ${MEMORY_CHECK} ./test_conn_interface-rws)
add_executable(test_conn_interface-rws test_conn_interface-rws.c
../src/string_helpers.c
../src/mutex.c
../src/time.c
../src/spin_thread.c
../src/upstream.c
../src/conn_interface.c
../src/thread_tasks.c
../src/downstream.c
../src/networking.c
../src/nopoll_helpers.c
../src/nopoll_handlers.c
../src/connection.c
../src/ParodusInternal.c
../src/client_list.c
../src/partners_check.c
../src/service_alive.c)
target_link_libraries (test_conn_interface-rws -lcmocka -lwrp-c ${PARODUS_COMMON_LIBS})
add_test(NAME test_seshat_interface COMMAND ${MEMORY_CHECK} ./test_seshat_interface)
if (ENABLE_SESHAT)
set(SOURCES test_seshat_interface.c ../src/seshat_interface.c)
else()
set(SOURCES test_seshat_interface_stub.c ../src/seshat_interface_stub.c)
endif (ENABLE_SESHAT)
add_executable(test_seshat_interface ${SOURCES})
target_link_libraries (test_seshat_interface -lcmocka ${PARODUS_COMMON_LIBS} -lwrp-c)
if (INTEGRATION_TESTING)
#-------------------------------------------------------------------------------
# simple_connection test
#-------------------------------------------------------------------------------
add_test(NAME simple_connection COMMAND ${MEMORY_CHECK} ./simple_connection)
add_executable(simple_connection simple_connection.c ${PARODUS_COMMON_SRC}
../src/upstream.c
../src/conn_interface.c
../src/thread_tasks.c
../src/downstream.c
../src/networking.c
../src/nopoll_helpers.c
../src/nopoll_handlers.c
../src/connection.c
#../src/token.c
../src/ParodusInternal.c
../src/client_list.c
../src/partners_check.c
../src/service_alive.c)
set(SOURCES simple_connection.c ${PARODUS_COMMON_SRC} ../src/upstream.c ../src/conn_interface.c
../src/thread_tasks.c ../src/downstream.c ../src/networking.c ../src/nopoll_helpers.c ../src/nopoll_handlers.c ../src/connection.c ../src/ParodusInternal.c ../src/client_list.c ../src/partners_check.c ../src/service_alive.c)
if (ENABLE_SESHAT)
set(SOURCES ${SOURCES} ../src/seshat_interface.c)
else()
set(SOURCES ${SOURCES} ../src/seshat_interface_stub.c)
endif (ENABLE_SESHAT)
add_executable(simple_connection ${SOURCES})
target_link_libraries (simple_connection ${PARODUS_CONN_LIBS} ${PARODUS_COMMON_LIBS} )
#-------------------------------------------------------------------------------
# simple test
#-------------------------------------------------------------------------------
add_test(NAME simple COMMAND ${MEMORY_CHECK} ./simple)
add_executable(simple simple.c
../src/upstream.c
../src/conn_interface.c
../src/downstream.c
../src/thread_tasks.c
../src/networking.c
../src/nopoll_helpers.c
../src/nopoll_handlers.c
../src/string_helpers.c
../src/mutex.c
../src/time.c
../src/config.c
../src/connection.c
#../src/token.c
../src/ParodusInternal.c
../src/spin_thread.c
../src/client_list.c
../src/partners_check.c
../src/service_alive.c)
set(SOURCES simple.c ../src/upstream.c ../src/conn_interface.c ../src/downstream.c ../src/thread_tasks.c ../src/networking.c ../src/nopoll_helpers.c ../src/nopoll_handlers.c ../src/string_helpers.c ../src/mutex.c ../src/time.c
../src/config.c ../src/connection.c ../src/ParodusInternal.c ../src/spin_thread.c ../src/client_list.c ../src/partners_check.c ../src/service_alive.c)
if (ENABLE_SESHAT)
set(SOURCES ${SOURCES} ../src/seshat_interface.c)
else()
set(SOURCES ${SOURCES} ../src/seshat_interface_stub.c)
endif (ENABLE_SESHAT)
add_executable(simple ${SOURCES})
target_link_libraries (simple ${PARODUS_CONN_LIBS} ${PARODUS_COMMON_LIBS} gcov -lnopoll -lnanomsg )
endif (INTEGRATION_TESTING)

View File

@@ -24,8 +24,7 @@
#include <nopoll.h>
#include "../src/ParodusInternal.h"
#include "../src/conn_interface.h"
#include "../src/connection.h"
#include "../src/seshat_interface.h"
#include "../src/config.h"
/*----------------------------------------------------------------------------*/
@@ -37,7 +36,6 @@
/*----------------------------------------------------------------------------*/
/* Function Prototypes */
/*----------------------------------------------------------------------------*/
extern bool __registerWithSeshat(void);
/*----------------------------------------------------------------------------*/
/* File Scoped Variables */

View File

@@ -0,0 +1,61 @@
/**
* Copyright 2010-2016 Comcast Cable Communications Management, LLC
*
* 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 <stdarg.h>
#include <stdbool.h>
#include <stdarg.h>
#include <stddef.h>
#include <setjmp.h>
#include <cmocka.h>
#include <assert.h>
#include "../src/seshat_interface.h"
/*----------------------------------------------------------------------------*/
/* Macros */
/*----------------------------------------------------------------------------*/
/*----------------------------------------------------------------------------*/
/* Function Prototypes */
/*----------------------------------------------------------------------------*/
/*----------------------------------------------------------------------------*/
/* File Scoped Variables */
/*----------------------------------------------------------------------------*/
/*----------------------------------------------------------------------------*/
/* Mocks */
/*----------------------------------------------------------------------------*/
/*----------------------------------------------------------------------------*/
/* Tests */
/*----------------------------------------------------------------------------*/
void test_registration()
{
assert_true(__registerWithSeshat());
}
/*----------------------------------------------------------------------------*/
/* External Functions */
/*----------------------------------------------------------------------------*/
int main(void)
{
const struct CMUnitTest tests[] = {
cmocka_unit_test(test_registration),
};
return cmocka_run_group_tests(tests, NULL, NULL);
}