You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@celix.apache.org by pn...@apache.org on 2020/03/09 12:40:56 UTC

[celix] branch feature/#91_rsa_enum_issue created (now 410d959)

This is an automated email from the ASF dual-hosted git repository.

pnoltes pushed a change to branch feature/#91_rsa_enum_issue
in repository https://gitbox.apache.org/repos/asf/celix.git.


      at 410d959  #91 Refactors rsa tests, so that the individual test can be run separately and fixes an issue with recursive calls and double frees in libdfi.

This branch includes the following new commits:

     new 19d952d  #91 Refactors remote service dfi cpputests to google tests
     new 410d959  #91 Refactors rsa tests, so that the individual test can be run separately and fixes an issue with recursive calls and double frees in libdfi.

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[celix] 02/02: #91 Refactors rsa tests, so that the individual test can be run separately and fixes an issue with recursive calls and double frees in libdfi.

Posted by pn...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

pnoltes pushed a commit to branch feature/#91_rsa_enum_issue
in repository https://gitbox.apache.org/repos/asf/celix.git

commit 410d959abf76d7a1649ebc7a3ded6427958a382d
Author: Pepijn Noltes <pe...@gmail.com>
AuthorDate: Mon Mar 9 13:37:15 2020 +0100

    #91 Refactors rsa tests, so that the individual test can be run separately and fixes an issue with recursive calls and double frees in libdfi.
---
 .../gtest/src/rsa_client_server_tests.cc           | 113 ++++++++++++++++-----
 libs/dfi/src/dyn_type.c                            |   3 +-
 2 files changed, 90 insertions(+), 26 deletions(-)

diff --git a/bundles/remote_services/remote_service_admin_dfi/gtest/src/rsa_client_server_tests.cc b/bundles/remote_services/remote_service_admin_dfi/gtest/src/rsa_client_server_tests.cc
index 9c99504..9c42951 100644
--- a/bundles/remote_services/remote_service_admin_dfi/gtest/src/rsa_client_server_tests.cc
+++ b/bundles/remote_services/remote_service_admin_dfi/gtest/src/rsa_client_server_tests.cc
@@ -64,50 +64,89 @@ extern "C" {
         celix_frameworkFactory_destroyFramework(clientFramework);
     }
 
-    static void testCallback(void *handle __attribute__((unused)), void *svc) {
+    static void testComplex(void *handle __attribute__((unused)), void *svc) {
         auto *tst = static_cast<tst_service_t *>(svc);
 
-        bool ok;
-
-        bool discovered = tst->isCalcDiscovered(tst->handle);
+        bool discovered = tst->isRemoteExampleDiscovered(tst->handle);
         ASSERT_TRUE(discovered);
 
-        ok = tst->testCalculator(tst->handle);
+        bool ok = tst->testRemoteComplex(tst->handle);
         ASSERT_TRUE(ok);
+    };
+
+    static void testAction(void *handle __attribute__((unused)), void *svc) {
+        auto *tst = static_cast<tst_service_t *>(svc);
 
-        discovered = tst->isRemoteExampleDiscovered(tst->handle);
+        bool discovered = tst->isRemoteExampleDiscovered(tst->handle);
         ASSERT_TRUE(discovered);
 
-        ok = tst->testRemoteComplex(tst->handle);
+        bool ok = tst->testRemoteAction(tst->handle);
         ASSERT_TRUE(ok);
+    };
+
+    static void testNumbers(void *handle __attribute__((unused)), void *svc) {
+        auto *tst = static_cast<tst_service_t *>(svc);
 
-        ok = tst->testRemoteAction(tst->handle);
+        bool discovered = tst->isRemoteExampleDiscovered(tst->handle);
+        ASSERT_TRUE(discovered);
+
+        bool ok = tst->testRemoteNumbers(tst->handle);
         ASSERT_TRUE(ok);
+    };
 
-        ok = tst->testRemoteNumbers(tst->handle);
+    static void testString(void *handle __attribute__((unused)), void *svc) {
+        auto *tst = static_cast<tst_service_t *>(svc);
+
+        bool discovered = tst->isRemoteExampleDiscovered(tst->handle);
+        ASSERT_TRUE(discovered);
+
+        bool ok = tst->testRemoteString(tst->handle);
         ASSERT_TRUE(ok);
+    };
+
+    static void testEnum(void *handle __attribute__((unused)), void *svc) {
+        auto *tst = static_cast<tst_service_t *>(svc);
 
-        ok = tst->testRemoteString(tst->handle);
+        bool discovered = tst->isRemoteExampleDiscovered(tst->handle);
+        ASSERT_TRUE(discovered);
+
+        bool ok = tst->testRemoteEnum(tst->handle);
         ASSERT_TRUE(ok);
+    };
 
-        ok = tst->testRemoteConstString(tst->handle);
+    static void testConstString(void *handle __attribute__((unused)), void *svc) {
+        auto *tst = static_cast<tst_service_t *>(svc);
+
+        bool discovered = tst->isRemoteExampleDiscovered(tst->handle);
+        ASSERT_TRUE(discovered);
+
+        bool ok = tst->testRemoteConstString(tst->handle);
         ASSERT_TRUE(ok);
+    };
+
+    static void testCalculator(void *handle __attribute__((unused)), void *svc) {
+        auto *tst = static_cast<tst_service_t *>(svc);
 
-        //TODO fix for apple dfi handling, see issue #91
-//        ok = tst->testRemoteEnum(tst->handle);
-//        ASSERT_TRUE(ok);
+        bool ok;
+
+        bool discovered = tst->isCalcDiscovered(tst->handle);
+        ASSERT_TRUE(discovered);
+
+        ok = tst->testCalculator(tst->handle);
+        ASSERT_TRUE(ok);
     };
 
-    static void test(void) {
-        celix_service_use_options_t opts{};
-        opts.filter.serviceName = TST_SERVICE_NAME;
-        opts.use = testCallback;
-        opts.filter.ignoreServiceLanguage = true;
-        opts.waitTimeoutInSeconds = 2;
-        bool called = celix_bundleContext_useServiceWithOptions(clientContext, &opts);
-        ASSERT_TRUE(called);
-    }
+}
 
+template<typename F>
+static void test(F&& f) {
+    celix_service_use_options_t opts{};
+    opts.filter.serviceName = TST_SERVICE_NAME;
+    opts.use = f;
+    opts.filter.ignoreServiceLanguage = true;
+    opts.waitTimeoutInSeconds = 2;
+    bool called = celix_bundleContext_useServiceWithOptions(clientContext, &opts);
+    ASSERT_TRUE(called);
 }
 
 class RsaDfiClientServerTests : public ::testing::Test {
@@ -122,6 +161,30 @@ public:
 };
 
 
-TEST_F(RsaDfiClientServerTests, Test1) {
-    test();
+TEST_F(RsaDfiClientServerTests, TestRemoteCalculator) {
+    test(testCalculator);
+}
+
+TEST_F(RsaDfiClientServerTests, TestRemoteComplex) {
+    test(testComplex);
+}
+
+TEST_F(RsaDfiClientServerTests, TestRemoteNumbers) {
+    test(testNumbers);
+}
+
+TEST_F(RsaDfiClientServerTests, TestRemoteString) {
+    test(testString);
+}
+
+TEST_F(RsaDfiClientServerTests, TestRemoteConstString) {
+    test(testConstString);
+}
+
+TEST_F(RsaDfiClientServerTests, TestRemoteEnum) {
+    test(testEnum);
+}
+
+TEST_F(RsaDfiClientServerTests, TestRemoteAction) {
+    test(testAction);
 }
diff --git a/libs/dfi/src/dyn_type.c b/libs/dfi/src/dyn_type.c
index 09cca39..4f93fb9 100644
--- a/libs/dfi/src/dyn_type.c
+++ b/libs/dfi/src/dyn_type.c
@@ -679,7 +679,8 @@ void dynType_deepFree(dyn_type *type, void *loc, bool alsoDeleteSelf) {
         char *text = NULL;
         switch (type->type) {
             case DYN_TYPE_REF:
-                dynType_deepFree(type->ref.ref, loc, alsoDeleteSelf);
+                //NOTE: do not recursively forward asloDeleteSelf, because this is already handled in this function)
+                dynType_deepFree(type->ref.ref, loc, false);
                 break;
             case DYN_TYPE_COMPLEX :
                 dynType_freeComplexType(type, loc);


[celix] 01/02: #91 Refactors remote service dfi cpputests to google tests

Posted by pn...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

pnoltes pushed a commit to branch feature/#91_rsa_enum_issue
in repository https://gitbox.apache.org/repos/asf/celix.git

commit 19d952d877b5d13b57680942d4857abaf00eeffc
Author: Pepijn Noltes <pe...@gmail.com>
AuthorDate: Mon Mar 9 13:20:52 2020 +0100

    #91 Refactors remote service dfi cpputests to google tests
---
 .../remote_service_admin_dfi/CMakeLists.txt        |  2 +-
 .../{test => gtest}/CMakeLists.txt                 | 10 +--
 .../{test => gtest}/client.properties.in           |  0
 .../{test => gtest}/config.properties.in           |  0
 .../{test => gtest}/server.properties.in           |  0
 .../remote_service_admin_dfi/gtest/src/main.cc     | 26 ++++++++
 .../src/rsa_client_server_tests.cc}                | 52 ++++++++-------
 .../src/rsa_tests.cpp => gtest/src/rsa_tests.cc}   | 74 +++++++++++-----------
 .../{test => gtest}/src/tst_activator.c            |  0
 .../{test => gtest}/src/tst_service.h              |  0
 .../test/src/run_tests.cpp                         | 26 --------
 .../gtest/src/bundle_context_services_test.cpp     |  2 +-
 12 files changed, 96 insertions(+), 96 deletions(-)

diff --git a/bundles/remote_services/remote_service_admin_dfi/CMakeLists.txt b/bundles/remote_services/remote_service_admin_dfi/CMakeLists.txt
index 3aa1936..d15ca97 100644
--- a/bundles/remote_services/remote_service_admin_dfi/CMakeLists.txt
+++ b/bundles/remote_services/remote_service_admin_dfi/CMakeLists.txt
@@ -48,7 +48,7 @@ if (RSA_REMOTE_SERVICE_ADMIN_DFI)
     )
 
     if (ENABLE_TESTING)
-        add_subdirectory(test)
+        add_subdirectory(gtest)
     endif()
 
 
diff --git a/bundles/remote_services/remote_service_admin_dfi/test/CMakeLists.txt b/bundles/remote_services/remote_service_admin_dfi/gtest/CMakeLists.txt
similarity index 94%
rename from bundles/remote_services/remote_service_admin_dfi/test/CMakeLists.txt
rename to bundles/remote_services/remote_service_admin_dfi/gtest/CMakeLists.txt
index 6355e95..793d167 100644
--- a/bundles/remote_services/remote_service_admin_dfi/test/CMakeLists.txt
+++ b/bundles/remote_services/remote_service_admin_dfi/gtest/CMakeLists.txt
@@ -36,15 +36,17 @@ target_link_libraries(rsa_dfi_tst_bundle PRIVATE ${CPPUTEST_LIBRARY} calculator_
 target_include_directories(rsa_dfi_tst_bundle PRIVATE src)
 
 add_executable(test_rsa_dfi
-    src/run_tests.cpp
-    src/rsa_tests.cpp
-    src/rsa_client_server_tests.cpp
+    src/main.cc
+    src/rsa_tests.cc
+    src/rsa_client_server_tests.cc
 )
 target_include_directories(test_rsa_dfi PRIVATE src)
-target_link_libraries(test_rsa_dfi PRIVATE CURL::libcurl ${CPPUTEST_LIBRARY}
+target_link_libraries(test_rsa_dfi PRIVATE
+        CURL::libcurl
         Celix::framework
         Celix::rsa_common
         calculator_api
+        GTest::GTest
 )
 
 get_property(rsa_bundle_file TARGET rsa_dfi PROPERTY BUNDLE_FILE)
diff --git a/bundles/remote_services/remote_service_admin_dfi/test/client.properties.in b/bundles/remote_services/remote_service_admin_dfi/gtest/client.properties.in
similarity index 100%
rename from bundles/remote_services/remote_service_admin_dfi/test/client.properties.in
rename to bundles/remote_services/remote_service_admin_dfi/gtest/client.properties.in
diff --git a/bundles/remote_services/remote_service_admin_dfi/test/config.properties.in b/bundles/remote_services/remote_service_admin_dfi/gtest/config.properties.in
similarity index 100%
rename from bundles/remote_services/remote_service_admin_dfi/test/config.properties.in
rename to bundles/remote_services/remote_service_admin_dfi/gtest/config.properties.in
diff --git a/bundles/remote_services/remote_service_admin_dfi/test/server.properties.in b/bundles/remote_services/remote_service_admin_dfi/gtest/server.properties.in
similarity index 100%
rename from bundles/remote_services/remote_service_admin_dfi/test/server.properties.in
rename to bundles/remote_services/remote_service_admin_dfi/gtest/server.properties.in
diff --git a/bundles/remote_services/remote_service_admin_dfi/gtest/src/main.cc b/bundles/remote_services/remote_service_admin_dfi/gtest/src/main.cc
new file mode 100644
index 0000000..09731c4
--- /dev/null
+++ b/bundles/remote_services/remote_service_admin_dfi/gtest/src/main.cc
@@ -0,0 +1,26 @@
+/**
+ *Licensed to the Apache Software Foundation (ASF) under one
+ *or more contributor license agreements.  See the NOTICE file
+ *distributed with this work for additional information
+ *regarding copyright ownership.  The ASF licenses this file
+ *to you 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 <gtest/gtest.h>
+
+int main(int argc, char **argv) {
+    ::testing::InitGoogleTest(&argc, argv);
+    int rc = RUN_ALL_TESTS();
+    return rc;
+}
\ No newline at end of file
diff --git a/bundles/remote_services/remote_service_admin_dfi/test/src/rsa_client_server_tests.cpp b/bundles/remote_services/remote_service_admin_dfi/gtest/src/rsa_client_server_tests.cc
similarity index 79%
rename from bundles/remote_services/remote_service_admin_dfi/test/src/rsa_client_server_tests.cpp
rename to bundles/remote_services/remote_service_admin_dfi/gtest/src/rsa_client_server_tests.cc
index 74f7ef4..9c99504 100644
--- a/bundles/remote_services/remote_service_admin_dfi/test/src/rsa_client_server_tests.cpp
+++ b/bundles/remote_services/remote_service_admin_dfi/gtest/src/rsa_client_server_tests.cc
@@ -17,14 +17,11 @@
  * under the License.
  */
 
-
+#include "gtest/gtest.h"
 #include <remote_constants.h>
 #include <tst_service.h>
 #include "celix_api.h"
 
-#include <CppUTest/CommandLineTestRunner.h>
-#include <CppUTest/TestHarness.h>
-
 extern "C" {
 
 #include <stdio.h>
@@ -47,19 +44,19 @@ extern "C" {
     static void setupFm(void) {
         //server
         celix_properties_t *serverProps = celix_properties_load("server.properties");
-        CHECK_TRUE(serverProps != NULL);
+        ASSERT_TRUE(serverProps != NULL);
         serverFramework = celix_frameworkFactory_createFramework(serverProps);
-        CHECK_TRUE(serverFramework != NULL);
+        ASSERT_TRUE(serverFramework != NULL);
         serverContext = celix_framework_getFrameworkContext(serverFramework);
-        CHECK_TRUE(serverContext != NULL);
+        ASSERT_TRUE(serverContext != NULL);
 
         //client
         celix_properties_t *clientProperties = celix_properties_load("client.properties");
-        CHECK_TRUE(clientProperties != NULL);
+        ASSERT_TRUE(clientProperties != NULL);
         clientFramework = celix_frameworkFactory_createFramework(clientProperties);
-        CHECK_TRUE(clientFramework != NULL);
+        ASSERT_TRUE(clientFramework != NULL);
         clientContext = celix_framework_getFrameworkContext(clientFramework);
-        CHECK_TRUE(clientContext != NULL);
+        ASSERT_TRUE(clientContext != NULL);
     }
 
     static void teardownFm(void) {
@@ -73,32 +70,32 @@ extern "C" {
         bool ok;
 
         bool discovered = tst->isCalcDiscovered(tst->handle);
-        CHECK_TRUE(discovered);
+        ASSERT_TRUE(discovered);
 
         ok = tst->testCalculator(tst->handle);
-        CHECK_TRUE(ok);
+        ASSERT_TRUE(ok);
 
         discovered = tst->isRemoteExampleDiscovered(tst->handle);
-        CHECK_TRUE(discovered);
+        ASSERT_TRUE(discovered);
 
         ok = tst->testRemoteComplex(tst->handle);
-        CHECK_TRUE(ok);
+        ASSERT_TRUE(ok);
 
         ok = tst->testRemoteAction(tst->handle);
-        CHECK_TRUE(ok);
+        ASSERT_TRUE(ok);
 
         ok = tst->testRemoteNumbers(tst->handle);
-        CHECK_TRUE(ok);
+        ASSERT_TRUE(ok);
 
         ok = tst->testRemoteString(tst->handle);
-        CHECK_TRUE(ok);
+        ASSERT_TRUE(ok);
 
         ok = tst->testRemoteConstString(tst->handle);
-        CHECK_TRUE(ok);
+        ASSERT_TRUE(ok);
 
         //TODO fix for apple dfi handling, see issue #91
-        //ok = tst->testRemoteEnum(tst->handle);
-        //CHECK_TRUE(ok);
+//        ok = tst->testRemoteEnum(tst->handle);
+//        ASSERT_TRUE(ok);
     };
 
     static void test(void) {
@@ -108,22 +105,23 @@ extern "C" {
         opts.filter.ignoreServiceLanguage = true;
         opts.waitTimeoutInSeconds = 2;
         bool called = celix_bundleContext_useServiceWithOptions(clientContext, &opts);
-        CHECK_TRUE(called);
+        ASSERT_TRUE(called);
     }
 
 }
 
-
-TEST_GROUP(RsaDfiClientServerTests) {
-    void setup() {
+class RsaDfiClientServerTests : public ::testing::Test {
+public:
+    RsaDfiClientServerTests() {
         setupFm();
     }
-
-    void teardown() {
+    ~RsaDfiClientServerTests() override {
         teardownFm();
     }
+
 };
 
-TEST(RsaDfiClientServerTests, Test1) {
+
+TEST_F(RsaDfiClientServerTests, Test1) {
     test();
 }
diff --git a/bundles/remote_services/remote_service_admin_dfi/test/src/rsa_tests.cpp b/bundles/remote_services/remote_service_admin_dfi/gtest/src/rsa_tests.cc
similarity index 82%
rename from bundles/remote_services/remote_service_admin_dfi/test/src/rsa_tests.cpp
rename to bundles/remote_services/remote_service_admin_dfi/gtest/src/rsa_tests.cc
index 334575a..b2fee66 100644
--- a/bundles/remote_services/remote_service_admin_dfi/test/src/rsa_tests.cpp
+++ b/bundles/remote_services/remote_service_admin_dfi/gtest/src/rsa_tests.cc
@@ -17,13 +17,12 @@
  * under the License.
  */
 
+#include "gtest/gtest.h"
+
 #include <remote_constants.h>
 #include "celix_api.h"
 #include "calculator_service.h"
 
-#include <CppUTest/TestHarness.h>
-#include <CppUTest/CommandLineTestRunner.h>
-
 extern "C" {
 
 #include "remote_service_admin.h"
@@ -38,15 +37,15 @@ extern "C" {
 
     static void setupFm(void) {
         celix_properties_t *fwProperties = celix_properties_load("config.properties");
-        CHECK_TRUE(fwProperties != NULL);
+        ASSERT_TRUE(fwProperties != NULL);
         framework = celix_frameworkFactory_createFramework(fwProperties);
-        CHECK_TRUE(framework != NULL);
+        ASSERT_TRUE(framework != NULL);
         context = celix_framework_getFrameworkContext(framework);
-        CHECK_TRUE(context != NULL);
+        ASSERT_TRUE(context != NULL);
 
 
         calcSvcId = celix_bundleContext_findService(context, CALCULATOR_SERVICE);
-        CHECK_TRUE(calcSvcId >= 0L);
+        ASSERT_TRUE(calcSvcId >= 0L);
     }
 
     static void teardownFm(void) {
@@ -59,12 +58,12 @@ extern "C" {
         celix_array_list_t *imported = celix_arrayList_create();
 
         int rc = rsa->getExportedServices(rsa->admin, &exported);
-        CHECK_EQUAL(CELIX_SUCCESS, rc);
-        CHECK_EQUAL(0, celix_arrayList_size(exported));
+        ASSERT_EQ(CELIX_SUCCESS, rc);
+        ASSERT_EQ(0, celix_arrayList_size(exported));
 
         rc = rsa->getImportedEndpoints(rsa->admin, &imported);
-        CHECK_EQUAL(CELIX_SUCCESS, rc);
-        CHECK_EQUAL(0, celix_arrayList_size(imported));
+        ASSERT_EQ(CELIX_SUCCESS, rc);
+        ASSERT_EQ(0, celix_arrayList_size(imported));
 
         celix_arrayList_destroy(imported);
         celix_arrayList_destroy(exported);
@@ -77,7 +76,7 @@ extern "C" {
         opts.filter.ignoreServiceLanguage = true;
         opts.waitTimeoutInSeconds = 0.25;
         bool called = celix_bundleContext_useServiceWithOptions(context, &opts);
-        CHECK_TRUE(called);
+        ASSERT_TRUE(called);
     }
 
     static void testExportServiceCallback(void *handle __attribute__((unused)), void *svc) {
@@ -88,12 +87,12 @@ extern "C" {
 
         celix_array_list_t *svcRegistration = NULL;
         int rc = rsa->exportService(rsa->admin, strSvcId, NULL, &svcRegistration);
-        CHECK_EQUAL(CELIX_SUCCESS, rc);
+        ASSERT_EQ(CELIX_SUCCESS, rc);
 
-        CHECK_EQUAL(1, celix_arrayList_size(svcRegistration));
+        ASSERT_EQ(1, celix_arrayList_size(svcRegistration));
 
         rc = rsa->exportRegistration_close(rsa->admin,(export_registration_t *)(arrayList_get(svcRegistration,0)));
-        CHECK_EQUAL(CELIX_SUCCESS, rc);
+        ASSERT_EQ(CELIX_SUCCESS, rc);
     }
 
 
@@ -104,7 +103,7 @@ extern "C" {
         opts.filter.ignoreServiceLanguage = true;
         opts.waitTimeoutInSeconds = 0.25;
         bool called = celix_bundleContext_useServiceWithOptions(context, &opts);
-        CHECK_TRUE(called);
+        ASSERT_TRUE(called);
     }
 
     static void testImportServiceCallback(void *handle __attribute__((unused)), void *svc) {
@@ -122,28 +121,28 @@ extern "C" {
         celix_properties_set(props, OSGI_FRAMEWORK_OBJECTCLASS, "org.apache.celix.Example");
 
         rc = endpointDescription_create(props, &endpoint);
-        CHECK_EQUAL(CELIX_SUCCESS, rc);
+        ASSERT_EQ(CELIX_SUCCESS, rc);
 
         rc = rsa->importService(rsa->admin, endpoint, &reg);
-        CHECK_EQUAL(CELIX_SUCCESS, rc);
-        CHECK(reg != NULL);
+        ASSERT_EQ(CELIX_SUCCESS, rc);
+        ASSERT_TRUE(reg != NULL);
 
         service_reference_pt ref = NULL;
         rc = bundleContext_getServiceReference(context, (char *)"org.apache.celix.Example", &ref);
-        CHECK_EQUAL(CELIX_SUCCESS, rc);
-        CHECK(ref != NULL);
+        ASSERT_EQ(CELIX_SUCCESS, rc);
+        ASSERT_TRUE(ref != NULL);
 
         rc = bundleContext_ungetServiceReference(context, ref);
-        CHECK_EQUAL(CELIX_SUCCESS, rc);
+        ASSERT_EQ(CELIX_SUCCESS, rc);
 
         rc = endpointDescription_destroy(endpoint);
-        CHECK_EQUAL(CELIX_SUCCESS, rc);
+        ASSERT_EQ(CELIX_SUCCESS, rc);
 
         /* Cannot test. uses requesting bundles descriptor
         void *service = NULL;
         rc = bundleContext_getService(context, ref, &service);
-        CHECK_EQUAL(CELIX_SUCCESS, rc);
-        CHECK(service != NULL);
+        ASSERT_EQ(CELIX_SUCCESS, rc);
+        ASSERT_TRUE(service != NULL);
          */
     }
 
@@ -154,15 +153,15 @@ extern "C" {
         opts.filter.ignoreServiceLanguage = true;
         opts.waitTimeoutInSeconds = 0.25;
         bool called = celix_bundleContext_useServiceWithOptions(context, &opts);
-        CHECK_TRUE(called);
+        ASSERT_TRUE(called);
     }
 
     static void testBundles(void) {
         array_list_pt bundles = NULL;
 
         int rc = bundleContext_getBundles(context, &bundles);
-        CHECK_EQUAL(0, rc);
-        CHECK_EQUAL(3, arrayList_size(bundles)); //framework, rsa_dfi & calc
+        ASSERT_EQ(0, rc);
+        ASSERT_EQ(3, arrayList_size(bundles)); //framework, rsa_dfi & calc
 
         /*
         int size = arrayList_size(bundles);
@@ -183,29 +182,30 @@ extern "C" {
 
 }
 
-
-TEST_GROUP(RsaDfiTests) {
-    void setup() {
+class RsaDfiTests : public ::testing::Test {
+public:
+    RsaDfiTests() {
         setupFm();
     }
-
-    void teardown() {
+    ~RsaDfiTests() override {
         teardownFm();
     }
+
 };
 
-TEST(RsaDfiTests, InfoTest) {
+
+TEST_F(RsaDfiTests, InfoTest) {
     testServices();
 }
 
-TEST(RsaDfiTests, ExportService) {
+TEST_F(RsaDfiTests, ExportService) {
     testExportService();
 }
 
-TEST(RsaDfiTests, ImportService) {
+TEST_F(RsaDfiTests, ImportService) {
     testImportService();
 }
 
-TEST(RsaDfiTests, TestBundles) {
+TEST_F(RsaDfiTests, TestBundles) {
     testBundles();
 }
diff --git a/bundles/remote_services/remote_service_admin_dfi/test/src/tst_activator.c b/bundles/remote_services/remote_service_admin_dfi/gtest/src/tst_activator.c
similarity index 100%
rename from bundles/remote_services/remote_service_admin_dfi/test/src/tst_activator.c
rename to bundles/remote_services/remote_service_admin_dfi/gtest/src/tst_activator.c
diff --git a/bundles/remote_services/remote_service_admin_dfi/test/src/tst_service.h b/bundles/remote_services/remote_service_admin_dfi/gtest/src/tst_service.h
similarity index 100%
rename from bundles/remote_services/remote_service_admin_dfi/test/src/tst_service.h
rename to bundles/remote_services/remote_service_admin_dfi/gtest/src/tst_service.h
diff --git a/bundles/remote_services/remote_service_admin_dfi/test/src/run_tests.cpp b/bundles/remote_services/remote_service_admin_dfi/test/src/run_tests.cpp
deleted file mode 100644
index efaee82..0000000
--- a/bundles/remote_services/remote_service_admin_dfi/test/src/run_tests.cpp
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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 <CppUTest/TestHarness.h>
-#include "CppUTest/CommandLineTestRunner.h"
-
-int main(int argc, char** argv) {
-    MemoryLeakWarningPlugin::turnOffNewDeleteOverloads();
-    return RUN_ALL_TESTS(argc, argv);
-}
\ No newline at end of file
diff --git a/libs/framework/gtest/src/bundle_context_services_test.cpp b/libs/framework/gtest/src/bundle_context_services_test.cpp
index 17e0d89..0006266 100644
--- a/libs/framework/gtest/src/bundle_context_services_test.cpp
+++ b/libs/framework/gtest/src/bundle_context_services_test.cpp
@@ -175,7 +175,7 @@ TEST_F(CelixBundleContextServicesTests, registerAndUseService) {
 };
 
 TEST_F(CelixBundleContextServicesTests, registerAndUseServiceWithTimeout) {
-    const int NR_ITERATIONS = 5; //NOTE this test is sensitive for triggering race condition in the celix framework, therefore is used a few times.
+    const int NR_ITERATIONS = 1000; //NOTE this test is sensitive for triggering race condition in the celix framework, therefore is used a few times.
     for (int i = 0; i < NR_ITERATIONS; ++i) {
         printf("Iter %i\n", i);
         struct calc {