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 2021/01/11 15:18:03 UTC

[celix] 04/08: Merge branch 'master' into feature/refactor_c_dep_man_service_trackers

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

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

commit af00195123d94e4e0d068d568c7386663806ff0b
Merge: 58ccb25 0870cd9
Author: Pepijn Noltes <pe...@gmail.com>
AuthorDate: Mon Jan 4 18:44:37 2021 +0100

    Merge branch 'master' into feature/refactor_c_dep_man_service_trackers
    
    # Conflicts:
    #	bundles/pubsub/test/CMakeLists.txt
    #	libs/framework/gtest/src/single_framework_test.cpp
    #	libs/utils/gtest/CMakeLists.txt

 CMakeLists.txt                                     |   4 +-
 bundles/http_admin/http_admin/src/http_admin.c     |   7 +-
 .../log_admin/gtest/src/LogAdminTestSuite.cc       |  46 +-
 bundles/logging/log_admin/src/celix_log_admin.c    |  82 +-
 bundles/pubsub/pubsub_admin_tcp/CMakeLists.txt     |   1 +
 .../pubsub/pubsub_admin_tcp/src/psa_activator.c    |   4 +-
 .../src/pubsub_psa_tcp_constants.h                 |  37 +-
 .../pubsub/pubsub_admin_tcp/src/pubsub_tcp_admin.c |  58 +-
 .../pubsub_admin_tcp/src/pubsub_tcp_common.c}      |  24 +-
 .../pubsub_admin_tcp/src/pubsub_tcp_common.h       |   2 +
 .../pubsub_admin_tcp/src/pubsub_tcp_handler.c      | 860 ++++++++++---------
 .../pubsub_admin_tcp/src/pubsub_tcp_handler.h      |   8 +-
 .../src/pubsub_tcp_topic_receiver.c                | 205 +++--
 .../src/pubsub_tcp_topic_receiver.h                |   3 +-
 .../pubsub_admin_tcp/src/pubsub_tcp_topic_sender.c | 184 ++--
 .../pubsub_admin_tcp/src/pubsub_tcp_topic_sender.h |  13 +-
 .../pubsub_admin_zmq/v2/src/pubsub_zmq_admin.c     |  30 +-
 .../src/pubsub_wire_protocol_impl.c                |   1 +
 bundles/pubsub/pubsub_spi/src/pubsub_endpoint.c    |   6 +-
 .../pubsub/pubsub_spi/src/pubsub_endpoint_match.c  |  39 +-
 .../src/pubsub_topology_manager.c                  |  23 +-
 .../src/pubsub_topology_manager.h                  |   3 +-
 bundles/pubsub/pubsub_utils/include/pubsub_utils.h |   3 +-
 .../pubsub/pubsub_utils/include/pubsub_utils_url.h |   8 +-
 bundles/pubsub/pubsub_utils/src/pubsub_matching.c  |  76 +-
 bundles/pubsub/pubsub_utils/src/pubsub_utils_url.c |  22 +-
 bundles/pubsub/test/CMakeLists.txt                 |  68 +-
 bundles/pubsub/test/meta_data/ping2.properties     |   2 +-
 .../{ping2.properties => ping3.properties}         |   5 +-
 bundles/pubsub/test/meta_data/pong2.properties     |   4 +-
 .../{ping2.properties => pong3.properties}         |   5 +-
 bundles/pubsub/test/test/loopback_activator.c      |   3 +-
 bundles/pubsub/test/test/tst_endpoint_activator.c  |   2 +-
 .../gtest/src/tst_activator.c                      |   1 +
 .../tms_tst/disc_mock/disc_mock_activator.c        |   1 +
 bundles/shell/shell/src/help_command.c             |   1 +
 bundles/shell/shell/src/shell.c                    |  43 +-
 bundles/shell/shell/src/shell_private.h            |   2 +-
 bundles/shell/shell/test/CMakeLists.txt            |   6 +-
 .../src/{shell_tests.cpp => ShellTestSuite.cpp}    | 104 ++-
 libs/framework/CMakeLists.txt                      |   4 -
 libs/framework/gtest/CMakeLists.txt                |   3 +-
 .../gtest/src/bundle_context_bundles_tests.cpp     | 117 ++-
 .../gtest/src/bundle_context_services_test.cpp     | 449 +++++++++-
 libs/framework/gtest/src/run_tests.cpp             |  26 -
 libs/framework/gtest/src/single_framework_test.cpp |  25 +
 libs/framework/include/celix_bundle_context.h      | 360 +++++++-
 libs/framework/include/celix_framework.h           |  38 +
 libs/framework/include/service_registry.h          |  45 +-
 libs/framework/include/service_tracker.h           |  11 -
 libs/framework/src/bundle.c                        |  32 +-
 libs/framework/src/bundle_context.c                | 938 +++++++++++++++++----
 libs/framework/src/bundle_context_private.h        |  29 +-
 libs/framework/src/celix_framework_factory.c       |   1 -
 libs/framework/src/framework.c                     | 862 ++++++++++++-------
 libs/framework/src/framework_private.h             | 124 ++-
 libs/framework/src/resolver.c                      |   3 +
 libs/framework/src/service_registry.c              | 476 ++++++-----
 libs/framework/src/service_registry_private.h      |  30 +-
 libs/framework/src/service_tracker.c               | 854 +++++++------------
 libs/framework/src/service_tracker_private.h       |  59 +-
 libs/utils/gtest/CMakeLists.txt                    |   1 +
 libs/utils/gtest/src/TimeUtilsTestSuite.cc         |  57 ++
 libs/utils/include/celix_log_utils.h               |   5 -
 libs/utils/include/celix_utils.h                   |  11 +
 libs/utils/private/test/utils_test.cpp             |  16 +-
 libs/utils/src/celix_log_utils.c                   |  14 +-
 libs/utils/src/utils.c                             |  19 +-
 68 files changed, 4182 insertions(+), 2423 deletions(-)

diff --cc libs/framework/gtest/src/single_framework_test.cpp
index 9244c8b,28d1a8a..3070ac4
--- a/libs/framework/gtest/src/single_framework_test.cpp
+++ b/libs/framework/gtest/src/single_framework_test.cpp
@@@ -18,34 -18,83 +18,54 @@@
   */
  
  #include <gtest/gtest.h>
+ #include <atomic>
  
 -extern "C" {
 -
  #include "celix_launcher.h"
  #include "celix_framework_factory.h"
+ #include "celix_framework.h"
  
  
 -    static celix_framework_t *framework = nullptr;
 -    static celix_bundle_context_t *context = nullptr;
 -
 -    static void setupFm(void) {
 -        int rc = 0;
 -
 -        rc = celixLauncher_launch("config.properties", &framework);
 -        ASSERT_EQ(CELIX_SUCCESS, rc);
 -
 -        bundle_pt bundle = nullptr;
 -        rc = framework_getFrameworkBundle(framework, &bundle);
 -        ASSERT_EQ(CELIX_SUCCESS, rc);
 -
 -        rc = bundle_getContext(bundle, &context);
 -        ASSERT_EQ(CELIX_SUCCESS, rc);
 -    }
 -
 -    static void teardownFm(void) {
 -
 -        celixLauncher_stop(framework);
 -        celixLauncher_waitForShutdown(framework);
 -        celixLauncher_destroy(framework);
 -
 -        context = nullptr;
 -        framework = nullptr;
 -    }
 -
 -    static void testFramework(void) {
 -        //intentional empty. start/shutdown test
 -        printf("testing startup/shutdown single framework\n");
 -    }
 +class CelixFramework : public ::testing::Test {
 +};
  
 -}
 +TEST_F(CelixFramework, testFramework) {
 +    int rc;
 +    celix_framework_t *framework = nullptr;
 +    celix_bundle_context_t *context = nullptr;
  
 +    rc = celixLauncher_launch("config.properties", &framework);
 +    EXPECT_EQ(CELIX_SUCCESS, rc);
  
 -class CelixFramework : public ::testing::Test {
 -public:
 -    CelixFramework() {
 -        setupFm();
 -    }
 +    bundle_pt bundle = nullptr;
 +    rc = framework_getFrameworkBundle(framework, &bundle);
 +    EXPECT_EQ(CELIX_SUCCESS, rc);
  
 -    ~CelixFramework() override {
 -        teardownFm();
 -    }
 -};
 +    rc = bundle_getContext(bundle, &context);
 +    EXPECT_EQ(CELIX_SUCCESS, rc);
  
 -TEST_F(CelixFramework, testFramework) {
 -    testFramework();
 +    celixLauncher_stop(framework);
 +    celixLauncher_waitForShutdown(framework);
 +    celixLauncher_destroy(framework);
  }
  
+ TEST_F(CelixFramework, testEventQueue) {
+     long eid = celix_framework_nextEventId(framework);
+     EXPECT_GE(eid, 0);
+     celix_framework_waitForGenericEvent(framework, eid); //event never issued so should return directly
+ 
+     std::atomic<int> count{0};
+     celix_framework_fireGenericEvent(framework, eid, -1L, "test", static_cast<void*>(&count), [](void* data) {
+        auto *c = static_cast<std::atomic<int>*>(data);
+        *c += 1;
+     }, static_cast<void*>(&count), [](void* data) {
+         auto *c = static_cast<std::atomic<int>*>(data);
+         *c += 3;
+     });
+ 
+     celix_framework_waitForGenericEvent(framework, eid);
+     EXPECT_EQ(4, count);
+ }
+ 
  class FrameworkFactory : public ::testing::Test {
  public:
      FrameworkFactory() = default;
diff --cc libs/utils/gtest/CMakeLists.txt
index b791c42,d00b14b..566ce56
--- a/libs/utils/gtest/CMakeLists.txt
+++ b/libs/utils/gtest/CMakeLists.txt
@@@ -18,7 -18,7 +18,8 @@@
  
  add_executable(test_utils
          src/LogUtilsTestSuite.cc
 +        src/VersionRangeTestSuite.cc
+         src/TimeUtilsTestSuite.cc
  )
  
  target_link_libraries(test_utils PRIVATE Celix::utils GTest::gtest GTest::gtest_main)