CELIX-263: add test for discovery_configured/rsa_http
Project: http://git-wip-us.apache.org/repos/asf/celix/repo Commit: http://git-wip-us.apache.org/repos/asf/celix/commit/b15ffbac Tree: http://git-wip-us.apache.org/repos/asf/celix/tree/b15ffbac Diff: http://git-wip-us.apache.org/repos/asf/celix/diff/b15ffbac Branch: refs/heads/feature/CELIX-269_depman Commit: b15ffbac1a9f6c167396606679b0f07702e6acfa Parents: c97fc5b Author: Bjoern Petri <bpe...@apache.org> Authored: Thu Oct 29 08:27:23 2015 +0100 Committer: Bjoern Petri <bpe...@apache.org> Committed: Thu Oct 29 08:27:23 2015 +0100 ---------------------------------------------------------------------- .../remote_service_admin_http/CMakeLists.txt | 6 + .../private/test/CMakeLists.txt | 46 ++++++++ .../private/test/client.properties.in | 9 ++ .../private/test/rsa_client_server_tests.cpp | 112 +++++++++++++++++++ .../private/test/run_tests.cpp | 9 ++ .../private/test/server.properties.in | 8 ++ 6 files changed, 190 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/celix/blob/b15ffbac/remote_services/remote_service_admin_http/CMakeLists.txt ---------------------------------------------------------------------- diff --git a/remote_services/remote_service_admin_http/CMakeLists.txt b/remote_services/remote_service_admin_http/CMakeLists.txt index a147a37..58a8fd6 100644 --- a/remote_services/remote_service_admin_http/CMakeLists.txt +++ b/remote_services/remote_service_admin_http/CMakeLists.txt @@ -46,4 +46,10 @@ if (RSA_REMOTE_SERVICE_ADMIN_HTTP) install_bundle(remote_service_admin_http) target_link_libraries(remote_service_admin_http celix_framework ${CURL_LIBRARIES} ${UUID}) + + if (ENABLE_TESTING) + find_package(CppUTest REQUIRED) + include_directories(${CPPUTEST_INCLUDE_DIR}) + add_subdirectory(private/test) + endif() endif (RSA_REMOTE_SERVICE_ADMIN_HTTP) http://git-wip-us.apache.org/repos/asf/celix/blob/b15ffbac/remote_services/remote_service_admin_http/private/test/CMakeLists.txt ---------------------------------------------------------------------- diff --git a/remote_services/remote_service_admin_http/private/test/CMakeLists.txt b/remote_services/remote_service_admin_http/private/test/CMakeLists.txt new file mode 100644 index 0000000..479ac62 --- /dev/null +++ b/remote_services/remote_service_admin_http/private/test/CMakeLists.txt @@ -0,0 +1,46 @@ +# +# Licensed under Apache License v2. See LICENSE for more information. +# + + +include_directories( + ${PROJECT_SOURCE_DIR}/framework/public/include + ${PROJECT_SOURCE_DIR}/utils/public/include + ${PROJECT_SOURCE_DIR}/utils/public/include + ${PROJECT_SOURCE_DIR}/remote_services/remote_service_admin/public/include + ${PROJECT_SOURCE_DIR}/remote_services/examples/calculator_service/public/include + bundle +) + + +SET(CMAKE_SKIP_BUILD_RPATH FALSE) #TODO needed? +SET(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE) #TODO needed? +SET(CMAKE_INSTALL_RPATH "${PROJECT_BINARY_DIR}/framework" "${PROJECT_BINARY_DIR}/utils") + +add_executable(test_rsa_http + run_tests.cpp + rsa_client_server_tests.cpp + + ${PROJECT_SOURCE_DIR}/remote_services/remote_service_admin/private/src/endpoint_description.c +) +target_link_libraries(test_rsa_http celix_framework celix_utils ${CURL_LIBRARIES} ${CPPUTEST_LIBRARY}) + +get_property(rsa_bundle_file TARGET remote_service_admin_http PROPERTY BUNDLE) +get_property(calc_bundle_file TARGET calculator PROPERTY BUNDLE) +get_property(calculator_shell_bundle_file TARGET calculator_shell PROPERTY BUNDLE) +get_property(discovery_configured_bundle_file TARGET discovery_configured PROPERTY BUNDLE) +get_property(topology_manager_bundle_file TARGET topology_manager PROPERTY BUNDLE) +get_property(calc_proxy_bundle_file TARGET org.apache.celix.calc.api.Calculator_proxy PROPERTY BUNDLE) +get_property(calc_endpoint_bundle_file TARGET org.apache.celix.calc.api.Calculator_endpoint PROPERTY BUNDLE) + +get_filename_component(client_endpoints @calc_proxy_bundle_file@ DIRECTORY) +get_filename_component(server_endpoints @calc_endpoint_bundle_file@ DIRECTORY) + +configure_file(client.properties.in client.properties @ONLY) +configure_file(server.properties.in server.properties @ONLY) + +add_dependencies(test_rsa_http remote_service_admin_http calculator org.apache.celix.calc.api.Calculator_proxy org.apache.celix.calc.api.Calculator_endpoint) + +add_test(NAME run_test_rsa_http COMMAND test_rsa_http) +SETUP_TARGET_FOR_COVERAGE(test_rsa_http_cov test_rsa_http ${CMAKE_BINARY_DIR}/coverage/test_rsa_http/test_rsa_http) + http://git-wip-us.apache.org/repos/asf/celix/blob/b15ffbac/remote_services/remote_service_admin_http/private/test/client.properties.in ---------------------------------------------------------------------- diff --git a/remote_services/remote_service_admin_http/private/test/client.properties.in b/remote_services/remote_service_admin_http/private/test/client.properties.in new file mode 100644 index 0000000..9a734f8 --- /dev/null +++ b/remote_services/remote_service_admin_http/private/test/client.properties.in @@ -0,0 +1,9 @@ +cosgi.auto.start.1=@rsa_bundle_file@ @calculator_shell_bundle_file@ @discovery_configured_bundle_file@ @topology_manager_bundle_file@ @tst_bundle_file@ +LOGHELPER_ENABLE_STDOUT_FALLBACK=true +ENDPOINTS=@client_endpoints@ +RSA_PORT=50881 +DISCOVERY_CFG_SERVER_PORT=50991 +DISCOVERY_CFG_POLL_ENDPOINTS=http://127.0.0.1:50992/org.apache.celix.discovery.configured +org.osgi.framework.storage.clean=onFirstInit +org.osgi.framework.storage=.cacheClient +DISCOVERY_CFG_POLL_INTERVAL=1 \ No newline at end of file http://git-wip-us.apache.org/repos/asf/celix/blob/b15ffbac/remote_services/remote_service_admin_http/private/test/rsa_client_server_tests.cpp ---------------------------------------------------------------------- diff --git a/remote_services/remote_service_admin_http/private/test/rsa_client_server_tests.cpp b/remote_services/remote_service_admin_http/private/test/rsa_client_server_tests.cpp new file mode 100644 index 0000000..7cf2afd --- /dev/null +++ b/remote_services/remote_service_admin_http/private/test/rsa_client_server_tests.cpp @@ -0,0 +1,112 @@ +/* + * Licensed under Apache License v2. See LICENSE for more information. + */ +#include <CppUTest/TestHarness.h> +#include <remote_constants.h> +#include <constants.h> +#include "CppUTest/CommandLineTestRunner.h" +#include "../../../examples/calculator_service/public/include/calculator_service.h" + +extern "C" { + +#include <stdio.h> +#include <stdint.h> +#include <stdlib.h> +#include <string.h> +#include <ctype.h> +#include <unistd.h> + +#include "celix_launcher.h" +#include "framework.h" +#include "remote_service_admin.h" +#include "calculator_service.h" + + static framework_pt serverFramework = NULL; + static bundle_context_pt serverContext = NULL; + + static framework_pt clientFramework = NULL; + static bundle_context_pt clientContext = NULL; + + static void setupFm(void) { + int rc = 0; + bundle_pt bundle = NULL; + + //server + rc = celixLauncher_launch("server.properties", &serverFramework); + CHECK_EQUAL(CELIX_SUCCESS, rc); + + bundle = NULL; + rc = framework_getFrameworkBundle(serverFramework, &bundle); + CHECK_EQUAL(CELIX_SUCCESS, rc); + + rc = bundle_getContext(bundle, &serverContext); + CHECK_EQUAL(CELIX_SUCCESS, rc); + + + //client + rc = celixLauncher_launch("client.properties", &clientFramework); + CHECK_EQUAL(CELIX_SUCCESS, rc); + + bundle = NULL; + rc = framework_getFrameworkBundle(clientFramework, &bundle); + CHECK_EQUAL(CELIX_SUCCESS, rc); + + rc = bundle_getContext(bundle, &clientContext); + CHECK_EQUAL(CELIX_SUCCESS, rc); + } + + static void teardownFm(void) { + celixLauncher_stop(serverFramework); + celixLauncher_waitForShutdown(serverFramework); + celixLauncher_destroy(serverFramework); + + celixLauncher_stop(clientFramework); + celixLauncher_waitForShutdown(clientFramework); + celixLauncher_destroy(clientFramework); + + serverContext = NULL; + serverFramework = NULL; + clientContext = NULL; + clientFramework = NULL; + } + + static void test1(void) { + celix_status_t status; + service_reference_pt ref = NULL; + calculator_service_pt calcService = NULL; + usleep(2000000); //TODO use tracker + + status = bundleContext_getServiceReference(clientContext, (char *)CALCULATOR_SERVICE, &ref); + CHECK_EQUAL(CELIX_SUCCESS, status); + CHECK(ref != NULL); + + status = bundleContext_getService(clientContext, ref, (void **)&calcService); + CHECK_EQUAL(CELIX_SUCCESS, status); + CHECK(calcService != NULL); + + double result = 0; + status = calcService->add(calcService->calculator, 2.0, 5.0, &result); + CHECK_EQUAL(CELIX_SUCCESS, status); + CHECK_EQUAL(7.0, result); + + bool ungetResult = false; + bundleContext_ungetService(clientContext, ref, NULL); + bundleContext_ungetServiceReference(clientContext, ref); + } + +} + + +TEST_GROUP(RsaHttpClientServerTests) { + void setup() { + setupFm(); + } + + void teardown() { + teardownFm(); + } +}; + +TEST(RsaHttpClientServerTests, Test1) { + test1(); +} http://git-wip-us.apache.org/repos/asf/celix/blob/b15ffbac/remote_services/remote_service_admin_http/private/test/run_tests.cpp ---------------------------------------------------------------------- diff --git a/remote_services/remote_service_admin_http/private/test/run_tests.cpp b/remote_services/remote_service_admin_http/private/test/run_tests.cpp new file mode 100644 index 0000000..c5e960c --- /dev/null +++ b/remote_services/remote_service_admin_http/private/test/run_tests.cpp @@ -0,0 +1,9 @@ +/* + * Licensed under Apache License v2. See LICENSE for more information. + */ +#include <CppUTest/TestHarness.h> +#include "CppUTest/CommandLineTestRunner.h" + +int main(int argc, char** argv) { + return RUN_ALL_TESTS(argc, argv); +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/celix/blob/b15ffbac/remote_services/remote_service_admin_http/private/test/server.properties.in ---------------------------------------------------------------------- diff --git a/remote_services/remote_service_admin_http/private/test/server.properties.in b/remote_services/remote_service_admin_http/private/test/server.properties.in new file mode 100644 index 0000000..a6b736e --- /dev/null +++ b/remote_services/remote_service_admin_http/private/test/server.properties.in @@ -0,0 +1,8 @@ +cosgi.auto.start.1=@rsa_bundle_file@ @calc_bundle_file@ @discovery_configured_bundle_file@ @topology_manager_bundle_file@ +LOGHELPER_ENABLE_STDOUT_FALLBACK=true +ENDPOINTS=@server_endpoints@ +RSA_PORT=50882 +DISCOVERY_CFG_SERVER_PORT=50992 +org.osgi.framework.storage.clean=onFirstInit +org.osgi.framework.storage=.cacheServer +DISCOVERY_CFG_POLL_INTERVAL=1 \ No newline at end of file