From 7973264e277d7ddffe69a4e5ac611c11b0693595 Mon Sep 17 00:00:00 2001 From: gjoranv Date: Thu, 1 Sep 2022 08:44:33 +0200 Subject: Reapply "Make it possible to test the Container with synthetic bundles" This reverts commit cbed8a40c2a72ca09b7b8e97f83c3acde3479ab3. --- .../core/config/ApplicationBundleLoaderTest.java | 37 ++++---------------- .../container/core/config/BundleTestUtil.java | 39 ++++++++++++++++++++++ .../yahoo/container/core/config/TestBundle.java | 4 +-- .../com/yahoo/container/core/config/TestOsgi.java | 26 +++++++++++++-- 4 files changed, 71 insertions(+), 35 deletions(-) create mode 100644 container-core/src/test/java/com/yahoo/container/core/config/BundleTestUtil.java (limited to 'container-core/src/test/java/com/yahoo/container/core') diff --git a/container-core/src/test/java/com/yahoo/container/core/config/ApplicationBundleLoaderTest.java b/container-core/src/test/java/com/yahoo/container/core/config/ApplicationBundleLoaderTest.java index 04ed52db53b..bc5b6d6069b 100644 --- a/container-core/src/test/java/com/yahoo/container/core/config/ApplicationBundleLoaderTest.java +++ b/container-core/src/test/java/com/yahoo/container/core/config/ApplicationBundleLoaderTest.java @@ -1,19 +1,19 @@ // Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.container.core.config; -import com.yahoo.config.FileReference; -import com.yahoo.filedistribution.fileacquirer.FileAcquirer; -import com.yahoo.filedistribution.fileacquirer.MockFileAcquirer; -import com.yahoo.osgi.Osgi; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.osgi.framework.Bundle; import java.util.Collection; import java.util.List; -import java.util.Map; import java.util.Set; +import static com.yahoo.container.core.config.BundleTestUtil.BUNDLE_1; +import static com.yahoo.container.core.config.BundleTestUtil.BUNDLE_1_REF; +import static com.yahoo.container.core.config.BundleTestUtil.BUNDLE_2; +import static com.yahoo.container.core.config.BundleTestUtil.BUNDLE_2_REF; +import static com.yahoo.container.core.config.BundleTestUtil.testBundles; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -22,20 +22,13 @@ import static org.junit.jupiter.api.Assertions.assertTrue; */ public class ApplicationBundleLoaderTest { - private static final FileReference BUNDLE_1_REF = new FileReference("bundle-1"); - private static final Bundle BUNDLE_1 = new TestBundle(BUNDLE_1_REF.value()); - private static final FileReference BUNDLE_2_REF = new FileReference("bundle-2"); - private static final Bundle BUNDLE_2 = new TestBundle(BUNDLE_2_REF.value()); - private ApplicationBundleLoader bundleLoader; private TestOsgi osgi; @BeforeEach public void setup() { osgi = new TestOsgi(testBundles()); - var bundleInstaller = new TestBundleInstaller(MockFileAcquirer.returnFile(null)); - - bundleLoader = new ApplicationBundleLoader(osgi, bundleInstaller); + bundleLoader = osgi.bundleLoader(); } @Test @@ -122,22 +115,4 @@ public class ApplicationBundleLoaderTest { assertEquals(BUNDLE_1_REF, bundleLoader.getActiveFileReferences().get(0)); } - private static Map testBundles() { - return Map.of(BUNDLE_1_REF.value(), BUNDLE_1, - BUNDLE_2_REF.value(), BUNDLE_2); - } - - static class TestBundleInstaller extends FileAcquirerBundleInstaller { - - TestBundleInstaller(FileAcquirer fileAcquirer) { - super(fileAcquirer); - } - - @Override - public List installBundles(FileReference reference, Osgi osgi) { - return osgi.install(reference.value()); - } - - } - } diff --git a/container-core/src/test/java/com/yahoo/container/core/config/BundleTestUtil.java b/container-core/src/test/java/com/yahoo/container/core/config/BundleTestUtil.java new file mode 100644 index 00000000000..fddbeaf42be --- /dev/null +++ b/container-core/src/test/java/com/yahoo/container/core/config/BundleTestUtil.java @@ -0,0 +1,39 @@ +package com.yahoo.container.core.config; + +import com.yahoo.config.FileReference; +import com.yahoo.filedistribution.fileacquirer.FileAcquirer; +import com.yahoo.osgi.Osgi; +import org.osgi.framework.Bundle; + +import java.util.List; +import java.util.Map; + +/** + * @author gjoranv + */ +public class BundleTestUtil { + + public static final FileReference BUNDLE_1_REF = new FileReference("bundle-1"); + public static final Bundle BUNDLE_1 = new TestBundle(BUNDLE_1_REF.value()); + public static final FileReference BUNDLE_2_REF = new FileReference("bundle-2"); + public static final Bundle BUNDLE_2 = new TestBundle(BUNDLE_2_REF.value()); + + public static Map testBundles() { + return Map.of(BUNDLE_1_REF.value(), BUNDLE_1, + BUNDLE_2_REF.value(), BUNDLE_2); + } + + public static class TestBundleInstaller extends FileAcquirerBundleInstaller { + + TestBundleInstaller(FileAcquirer fileAcquirer) { + super(fileAcquirer); + } + + @Override + public List installBundles(FileReference reference, Osgi osgi) { + return osgi.install(reference.value()); + } + + } + +} diff --git a/container-core/src/test/java/com/yahoo/container/core/config/TestBundle.java b/container-core/src/test/java/com/yahoo/container/core/config/TestBundle.java index 4a607520b2a..17709844f99 100644 --- a/container-core/src/test/java/com/yahoo/container/core/config/TestBundle.java +++ b/container-core/src/test/java/com/yahoo/container/core/config/TestBundle.java @@ -16,7 +16,7 @@ import java.util.List; /** * @author gjoranv */ -class TestBundle extends MockBundle { +public class TestBundle extends MockBundle { private static final BundleRevision revision = new TestBundleRevision(); @@ -24,7 +24,7 @@ class TestBundle extends MockBundle { boolean started = false; - TestBundle(String symbolicName) { + public TestBundle(String symbolicName) { this.symbolicName = symbolicName; } diff --git a/container-core/src/test/java/com/yahoo/container/core/config/TestOsgi.java b/container-core/src/test/java/com/yahoo/container/core/config/TestOsgi.java index cf3d1cef5f8..0df338c2144 100644 --- a/container-core/src/test/java/com/yahoo/container/core/config/TestOsgi.java +++ b/container-core/src/test/java/com/yahoo/container/core/config/TestOsgi.java @@ -1,6 +1,8 @@ // Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.container.core.config; +import com.yahoo.config.FileReference; +import com.yahoo.filedistribution.fileacquirer.MockFileAcquirer; import com.yahoo.osgi.MockOsgi; import org.osgi.framework.Bundle; @@ -8,21 +10,28 @@ import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Map; +import java.util.Set; /** * @author gjoranv */ -class TestOsgi extends MockOsgi { +public class TestOsgi extends MockOsgi implements com.yahoo.container.di.Osgi { + private final ApplicationBundleLoader bundleLoader; private final Map availableBundles; private final List installedBundles = new ArrayList<>(); private final List allowedDuplicates = new ArrayList<>(); - TestOsgi(Map availableBundles) { + public TestOsgi(Map availableBundles) { this.availableBundles = availableBundles; + + var bundleInstaller = new BundleTestUtil.TestBundleInstaller(MockFileAcquirer.returnFile(null)); + bundleLoader = new ApplicationBundleLoader(this, bundleInstaller); } + public ApplicationBundleLoader bundleLoader() { return bundleLoader; } + @Override public List install(String fileReferenceValue) { if (! availableBundles.containsKey(fileReferenceValue)) @@ -55,4 +64,17 @@ class TestOsgi extends MockOsgi { allowedDuplicates.addAll(bundles); } + @Override + public Set useApplicationBundles(Collection bundles) { + return bundleLoader.useBundles(new ArrayList<>(bundles)); + } + + @Override + public Collection revertApplicationBundles() { + return bundleLoader.revertToPreviousGeneration(); + } + + public void removeBundle(Bundle bundle) { + installedBundles.remove(bundle); + } } -- cgit v1.2.3