This is an automated email from the ASF dual-hosted git repository.
pengzheng pushed a commit to branch hotfix/framework-startup-optimization
in repository https://gitbox.apache.org/repos/asf/celix.git
The following commit(s) were added to
refs/heads/hotfix/framework-startup-optimization by this push:
new 096db1ee Add test case for updating bundle from a different location.
096db1ee is described below
commit 096db1ee4914e3cca786a7323c7cb51968586093
Author: PengZheng <[email protected]>
AuthorDate: Wed Aug 2 20:03:56 2023 +0800
Add test case for updating bundle from a different location.
---
.../gtest/src/CelixBundleContextBundlesTestSuite.cc | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
diff --git a/libs/framework/gtest/src/CelixBundleContextBundlesTestSuite.cc
b/libs/framework/gtest/src/CelixBundleContextBundlesTestSuite.cc
index f0c1b0a4..6b673a56 100644
--- a/libs/framework/gtest/src/CelixBundleContextBundlesTestSuite.cc
+++ b/libs/framework/gtest/src/CelixBundleContextBundlesTestSuite.cc
@@ -29,6 +29,9 @@
#include "bundle_context_private.h"
#include "celix_api.h"
+#include "celix_bundle.h"
+#include "celix_bundle_context.h"
+#include "celix_stdlib_cleanup.h"
#include "celix_file_utils.h"
class CelixBundleContextBundlesTestSuite : public ::testing::Test {
@@ -313,6 +316,24 @@ TEST_F(CelixBundleContextBundlesTestSuite,
UpdateBundlesTest) {
ASSERT_FALSE(celix_bundleContext_updateBundle(ctx, bndId1, NULL));
}
+TEST_F(CelixBundleContextBundlesTestSuite,
ForceUpdateUsingBundleFromDifferentLocation) {
+ long bndId1 = celix_bundleContext_installBundle(ctx, TEST_BND1_LOC, true);
+ ASSERT_TRUE(bndId1 >= 0L);
+ ASSERT_TRUE(celix_bundleContext_isBundleInstalled(ctx, bndId1));
+ ASSERT_TRUE(celix_bundleContext_isBundleActive(ctx, bndId1));
+ celix_autofree char* name1 =
celix_bundleContext_getBundleSymbolicName(ctx, bndId1);
+ EXPECT_TRUE(celix_bundleContext_useBundle(ctx, bndId1, nullptr, [] (void
*, const bundle_t *bundle) {
+ // make bundle cache root newer than the bundle at location
TEST_BND2_LOC
+ celix_autofree char* root = celix_bundle_getEntry(bundle, "/");
+ celix_utils_touch(root);
+ }));
+ ASSERT_TRUE(celix_bundleContext_updateBundle(ctx, bndId1, TEST_BND2_LOC));
+ ASSERT_TRUE(celix_bundleContext_isBundleInstalled(ctx, bndId1));
+ celix_autofree char* name2 =
celix_bundleContext_getBundleSymbolicName(ctx, bndId1);
+ // bundle cache contains the bundle at location TEST_BND2_LOC
+ ASSERT_STRNE(name1, name2);
+}
+
TEST_F(CelixBundleContextBundlesTestSuite,
UpdateCorruptUncompressedBundlesTest) {
const char* testExtractDir1 = "extractBundleTestDir1";
const char* testExtractDir2 = "extractBundleTestDir2";