This is an automated email from the ASF dual-hosted git repository. davidb pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-feature-apiregions.git
commit 9f8a91e69c3c7d64be267b5db72d452bc03aabad Author: David Bosschaert <[email protected]> AuthorDate: Sun Nov 4 20:43:45 2018 +0000 Unit tests for the apiregions runtime component. Removed old variant of the unit tests now that they are all converted. --- .../apiregions/impl/ResolverHookImplTest.java | 163 +++------------------ 1 file changed, 21 insertions(+), 142 deletions(-) diff --git a/src/test/java/org/apache/sling/feature/apiregions/impl/ResolverHookImplTest.java b/src/test/java/org/apache/sling/feature/apiregions/impl/ResolverHookImplTest.java index a80404e..2127804 100644 --- a/src/test/java/org/apache/sling/feature/apiregions/impl/ResolverHookImplTest.java +++ b/src/test/java/org/apache/sling/feature/apiregions/impl/ResolverHookImplTest.java @@ -18,7 +18,6 @@ */ package org.apache.sling.feature.apiregions.impl; -import org.junit.Ignore; import org.junit.Test; import org.mockito.Mockito; import org.osgi.framework.Bundle; @@ -37,154 +36,17 @@ import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; -import java.util.Set; import java.util.Map.Entry; +import java.util.Set; -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; public class ResolverHookImplTest { - @Test @Ignore - public void xxtestFilterMatches() throws Exception { - /* - String f = "gid:aid:0.0.9"; - String f2 = "gid2:aid2:1.0.0-SNAPSHOT"; - String f3 = "gid3:aid3:1.2.3"; - String f4 = "gid4:aid4:1.2.3"; - String f5 = "gid5:aid5:1.2.3"; - - Features fs = Mockito.mock(Features.class); - Mockito.when(fs.getFeaturesForBundle("a.b.c", new Version(0,0,0))) - .thenReturn(Collections.singleton(f)); // b7 - Mockito.when(fs.getFeaturesForBundle("some.other.bundle", new Version(9,9,9,"suffix"))) - .thenReturn(Collections.singleton(f2)); // b9 - Mockito.when(fs.getFeaturesForBundle("a-bundle", new Version(1,0,0,"SNAPSHOT"))) - .thenReturn(Collections.singleton(f2)); // b10 - Mockito.when(fs.getFeaturesForBundle("a.b.c", new Version(1,2,3))) - .thenReturn(Collections.singleton(f3)); // b17 - Mockito.when(fs.getFeaturesForBundle("z.z.z", new Version(3,2,1))) - .thenReturn(new HashSet<>(Arrays.asList(f, f3))); // b18 - Mockito.when(fs.getFeaturesForBundle("x.y.z", new Version(9,9,9))) - .thenReturn(Collections.singleton(f3)); // b19 - Mockito.when(fs.getFeaturesForBundle("zzz", new Version(1,0,0))) - .thenReturn(Collections.singleton(f4)); // b20 - Mockito.when(fs.getFeaturesForBundle("www", new Version(1,0,0))) - .thenReturn(Collections.singleton(f5)); // b20 - - ServiceTracker st = Mockito.mock(ServiceTracker.class); - Mockito.when(st.waitForService(Mockito.anyLong())).thenReturn(fs); - - Map<String, Set<String>> rpm = new HashMap<>(); - rpm.put("r0", Collections.singleton("org.bar")); - rpm.put("r1", new HashSet<>(Arrays.asList("org.blah", "org.foo"))); - rpm.put(WhitelistService.GLOBAL_REGION, Collections.singleton("org.bar.tar")); - rpm.put("r3", Collections.singleton("xyz")); - - Map<String, Set<String>> frm = new HashMap<>(); - frm.put("gid:aid:0.0.9", - new HashSet<>(Arrays.asList("r1", "r2", WhitelistService.GLOBAL_REGION))); - frm.put("gid2:aid2:1.0.0-SNAPSHOT", Collections.singleton("r2")); - frm.put("gid3:aid3:1.2.3", Collections.singleton("r3")); - frm.put("gid4:aid4:1.2.3", Collections.singleton("r3")); - frm.put("gid5:aid5:1.2.3", Collections.emptySet()); - - WhitelistService wls = new WhitelistServiceImpl(rpm, frm); - ResolverHookImpl rh = new ResolverHookImpl(st, wls); - - // Check that we can get the capability from another bundle in the same region - // Bundle 7 is in feature f with regions r1, r2. Bundle 9 is in feature f2 with regions r2 - BundleRequirement req = mockRequirement(7, "a.b.c", new Version(0,0,0)); - BundleCapability bc1 = mockCapability("org.foo", 9, "some.other.bundle", new Version(9,9,9,"suffix")); - List<BundleCapability> candidates = new ArrayList<>(Arrays.asList(bc1)); - rh.filterMatches(req, candidates); - assertEquals(Collections.singletonList(bc1), candidates); - - // Check that we cannot get the capability from another bundle in a different region - // Bundle 9 is in feature f2 with region r2 - BundleRequirement req2 = mockRequirement(9, "some.other.bundle", new Version(9,9,9,"suffix")); - BundleCapability bc2 = mockCapability("org.bar", 17, "a.b.c", new Version(1,2,3)); - Collection<BundleCapability> c2 = new ArrayList<>(Arrays.asList(bc2)); - rh.filterMatches(req2, c2); - assertEquals(0, c2.size()); - - // Check that we can get the capability from the same bundle - BundleRequirement req3 = mockRequirement(9, "some.other.bundle", new Version(9,9,9,"suffix")); - BundleCapability bc3 = mockCapability("org.bar", 9, "some.other.bundle", new Version(9,9,9,"suffix")); - Collection<BundleCapability> c3 = new ArrayList<>(Arrays.asList(bc3)); - rh.filterMatches(req3, c3); - assertEquals(Collections.singletonList(bc3), c3); - - // Check that we can get the capability from the another bundle in the same feature - BundleRequirement req4 = mockRequirement(9, "some.other.bundle", new Version(9,9,9,"suffix")); - BundleCapability bc4 = mockCapability("org.bar", 10, "a-bundle", new Version(1,0,0,"SNAPSHOT")); - Collection<BundleCapability> c4 = new ArrayList<>(Arrays.asList(bc4)); - rh.filterMatches(req4, c4); - assertEquals(Collections.singletonList(bc4), c4); - - // Check that we can get the capability from another bundle where the capability - // is globally visible (from bundle 9, f2) - BundleRequirement req5 = mockRequirement(17, "a.b.c", new Version(1,2,3)); - BundleCapability bc5 = mockCapability("org.bar.tar", 9, "some.other.bundle", new Version(9,9,9,"suffix")); - Collection<BundleCapability> c5 = new ArrayList<>(Arrays.asList(bc5)); - rh.filterMatches(req5, c5); - assertEquals(Collections.singletonList(bc5), c5); - - // Check that we can get the capability from another bundle where the capability - // is globally visible (from bundle 7, f) - BundleRequirement req6 = mockRequirement(7, "a.b.c", new Version(0,0,0)); - BundleCapability bc6 = mockCapability("org.bar.tar", 17, "a.b.c", new Version(1,2,3)); - Collection<BundleCapability> c6 = new ArrayList<>(Arrays.asList(bc6)); - rh.filterMatches(req6, c6); - assertEquals(Collections.singletonList(bc6), c6); - - // Check that capabilities in non-package namespaces are ignored - BundleRequirement req7 = Mockito.mock(BundleRequirement.class); - Mockito.when(req7.getNamespace()).thenReturn("some.other.namespace"); - BundleCapability bc7 = mockCapability("org.bar", 17, "a.b.c", new Version(1,2,3)); - Collection<BundleCapability> c7 = new ArrayList<>(Arrays.asList(bc7)); - rh.filterMatches(req7, c7); - assertEquals(Collections.singletonList(bc7), c7); - - // Check that we can get the capability from another provider in the same region - BundleRequirement req8 = mockRequirement(20, "zzz", new Version(1,0,0)); - BundleCapability bc8 = mockCapability("xyz", 19, "x.y.z", new Version(9,9,9)); - Collection<BundleCapability> c8 = new ArrayList<>(Arrays.asList(bc8)); - rh.filterMatches(req8, c8); - assertEquals(Collections.singletonList(bc8), c8); - - // A requirement from a bundle that has no feature cannot access one in a region - BundleRequirement req9 = mockRequirement(11, "qqq", new Version(6,6,6)); - BundleCapability bc9 = mockCapability("org.bar", 17, "a.b.c", new Version(1,2,3)); - ArrayList c9 = new ArrayList<>(Arrays.asList(bc9)); - rh.filterMatches(req9, c9); - assertEquals(0, c9.size()); - - // A requirement from a bundle that has no feature can still access on in the global region - BundleRequirement req10 = mockRequirement(11, "qqq", new Version(6,6,6)); - BundleCapability bc10 = mockCapability("org.bar.tar", 18, "z.z.z", new Version(3,2,1)); - ArrayList c10 = new ArrayList<>(Arrays.asList(bc10)); - rh.filterMatches(req10, c10); - assertEquals(Collections.singletonList(bc10), c10); - - // A requirement from a bundle that has no feature can be satisfied by a capability - // from a bundle that has no feature - BundleRequirement req11 = mockRequirement(11, "qqq", new Version(6,6,6)); - BundleCapability bc11 = mockCapability("org.bar.tar", 20, "www", new Version(1,0,0)); - ArrayList c11 = new ArrayList<>(Arrays.asList(bc11)); - rh.filterMatches(req11, c11); - assertEquals(Collections.singletonList(bc11), c11); - - // A capability from the system bundle is always accessible - BundleRequirement req12 = mockRequirement(11, "qqq", new Version(6,6,6)); - BundleCapability bc12 = mockCapability("ping.pong", 0, "system.bundle", new Version(3,2,1)); - ArrayList c12 = new ArrayList<>(Arrays.asList(bc12)); - rh.filterMatches(req12, c12); - assertEquals(Collections.singletonList(bc12), c12); - */ - } - @Test public void testFilterMatches() { Map<Entry<String, Version>, List<String>> bsnvermap = new HashMap<>(); + bsnvermap.put(new AbstractMap.SimpleEntry<String,Version>("system.bundle", new Version(3,2,1)), + Collections.singletonList("b0")); bsnvermap.put(new AbstractMap.SimpleEntry<String,Version>("a.b.c", new Version(0,0,0)), Collections.singletonList("b7")); bsnvermap.put(new AbstractMap.SimpleEntry<String,Version>("a.bundle", new Version(1,0,0)), @@ -195,6 +57,8 @@ public class ResolverHookImplTest { Collections.singletonList("b10")); bsnvermap.put(new AbstractMap.SimpleEntry<String,Version>("not.in.a.feature", new Version(0,0,1)), Collections.singletonList("b11")); + bsnvermap.put(new AbstractMap.SimpleEntry<String,Version>("also.not.in.a.feature", new Version(0,0,1)), + Collections.singletonList("b12")); bsnvermap.put(new AbstractMap.SimpleEntry<String,Version>("a.b.c", new Version(1,2,3)), Collections.singletonList("b17")); bsnvermap.put(new AbstractMap.SimpleEntry<String,Version>("x.y.z", new Version(9,9,9)), @@ -307,6 +171,21 @@ public class ResolverHookImplTest { Collection<BundleCapability> c10 = new ArrayList<>(Arrays.asList(bc10)); rh.filterMatches(req10, c10); assertEquals(Collections.singletonList(bc10), c10); + + // A requirement from a bundle that has no feature can be satisfied by a capability + // from a bundle that has no feature + BundleRequirement req11 = mockRequirement("b11", bsnvermap); + BundleCapability bc11 = mockCapability("ding.dong", "b12", bsnvermap); + Collection<BundleCapability> c11 = new ArrayList<>(Arrays.asList(bc11)); + rh.filterMatches(req11, c11); + assertEquals(Collections.singletonList(bc11), c11); + + // A capability from the system bundle is always accessible + BundleRequirement req12 = mockRequirement("b11", bsnvermap); + BundleCapability bc12 = mockCapability("ping.pong", "b0", bsnvermap); + Collection<BundleCapability> c12 = new ArrayList<>(Arrays.asList(bc12)); + rh.filterMatches(req12, c12); + assertEquals(Collections.singletonList(bc12), c12); } private BundleCapability mockCapability(String pkgName, String bid, Map<Entry<String, Version>, List<String>> bsnvermap) {
