Search in sources :

Example 6 with Logger

use of org.apache.felix.resolver.Logger in project felix by apache.

the class ResolverTest method testScenario9.

@Test
public void testScenario9() throws Exception {
    Resolver resolver = new ResolverImpl(new Logger(Logger.LOG_DEBUG), 1);
    Map<Resource, Wiring> wirings = new HashMap<Resource, Wiring>();
    Map<Requirement, List<Capability>> candMap = new HashMap<Requirement, List<Capability>>();
    List<Resource> mandatory = populateScenario9(wirings, candMap);
    ResolveContextImpl rci = new ResolveContextImpl(wirings, candMap, mandatory, Collections.<Resource>emptyList());
    Map<Resource, List<Wire>> wireMap = resolver.resolve(rci);
    Resource resB = findResource("B", wireMap.keySet());
    Resource resA = findResource("A", wirings.keySet());
    Resource resC1 = findResource("C1", wirings.keySet());
    assertNotNull(resB);
    assertNotNull(resC1);
    assertEquals(1, wireMap.size());
    List<Wire> wiresB = wireMap.get(resB);
    assertEquals(2, wiresB.size());
    // should be wired to A and C1
    assertEquals(resA, wiresB.get(0).getProvider());
    assertEquals(resC1, wiresB.get(1).getProvider());
}
Also used : Resolver(org.osgi.service.resolver.Resolver) GenericCapability(org.apache.felix.resolver.test.util.GenericCapability) PackageCapability(org.apache.felix.resolver.test.util.PackageCapability) Capability(org.osgi.resource.Capability) BundleCapability(org.apache.felix.resolver.test.util.BundleCapability) HashMap(java.util.HashMap) Resource(org.osgi.resource.Resource) ResolverImpl(org.apache.felix.resolver.ResolverImpl) Logger(org.apache.felix.resolver.Logger) Wire(org.osgi.resource.Wire) Wiring(org.osgi.resource.Wiring) Requirement(org.osgi.resource.Requirement) BundleRequirement(org.apache.felix.resolver.test.util.BundleRequirement) GenericRequirement(org.apache.felix.resolver.test.util.GenericRequirement) PackageRequirement(org.apache.felix.resolver.test.util.PackageRequirement) ArrayList(java.util.ArrayList) List(java.util.List) ResolveContextImpl(org.apache.felix.resolver.test.util.ResolveContextImpl) Test(org.junit.Test)

Example 7 with Logger

use of org.apache.felix.resolver.Logger in project felix by apache.

the class ResolverTest method testScenario7.

@Test
public void testScenario7() throws Exception {
    Resolver resolver = new ResolverImpl(new Logger(Logger.LOG_DEBUG));
    Map<Resource, Wiring> wirings = new HashMap<Resource, Wiring>();
    Map<Requirement, List<Capability>> candMap = new HashMap<Requirement, List<Capability>>();
    List<Resource> mandatory = populateScenario7(wirings, candMap);
    ResolveContextImpl rci = new ResolveContextImpl(wirings, candMap, mandatory, Collections.<Resource>emptyList());
    Map<Resource, List<Wire>> wireMap = resolver.resolve(rci);
    assertEquals(4, wireMap.size());
    Resource aRes = findResource("A", wireMap.keySet());
    List<Wire> aWires = wireMap.get(aRes);
    assertEquals(0, aWires.size());
    Resource f1Res = findResource("F1", wireMap.keySet());
    List<Wire> f1Wires = wireMap.get(f1Res);
    assertEquals(1, f1Wires.size());
    Wire f1Wire = f1Wires.get(0);
    assertEquals(f1Res, f1Wire.getRequirer());
    assertEquals(aRes, f1Wire.getProvider());
    Requirement req = f1Wire.getRequirement();
    assertEquals(HostNamespace.HOST_NAMESPACE, req.getNamespace());
    assertEquals(0, req.getAttributes().size());
    assertEquals(f1Res, req.getResource());
    assertEquals(1, req.getDirectives().size());
    assertEquals("(osgi.wiring.host=A)", req.getDirectives().get("filter"));
    Capability cap = f1Wire.getCapability();
    assertEquals(aRes, cap.getResource());
    assertEquals(HostNamespace.HOST_NAMESPACE, cap.getNamespace());
    assertEquals(0, cap.getDirectives().size());
    assertEquals(1, cap.getAttributes().size());
    assertEquals("A", cap.getAttributes().get(HostNamespace.HOST_NAMESPACE));
    Resource f2Res = findResource("F2", wireMap.keySet());
    List<Wire> f2Wires = wireMap.get(f2Res);
    assertEquals(1, f2Wires.size());
    Wire f2Wire = f2Wires.get(0);
    assertEquals(f2Res, f2Wire.getRequirer());
    assertEquals(aRes, f2Wire.getProvider());
    Requirement req2 = f2Wire.getRequirement();
    assertEquals(HostNamespace.HOST_NAMESPACE, req2.getNamespace());
    assertEquals(0, req2.getAttributes().size());
    assertEquals(f2Res, req2.getResource());
    assertEquals(1, req2.getDirectives().size());
    assertEquals("(osgi.wiring.host=A)", req2.getDirectives().get("filter"));
    Capability cap2 = f1Wire.getCapability();
    assertEquals(aRes, cap2.getResource());
    assertEquals(HostNamespace.HOST_NAMESPACE, cap2.getNamespace());
    assertEquals(0, cap2.getDirectives().size());
    assertEquals(1, cap2.getAttributes().size());
    assertEquals("A", cap2.getAttributes().get(HostNamespace.HOST_NAMESPACE));
    Resource bRes = findResource("B", wireMap.keySet());
    List<Wire> bWires = wireMap.get(bRes);
    assertEquals(1, bWires.size());
    Wire bWire = bWires.get(0);
    assertEquals(bRes, bWire.getRequirer());
    assertEquals(f2Res, bWire.getProvider());
    Requirement bReq = bWire.getRequirement();
    assertEquals(IdentityNamespace.IDENTITY_NAMESPACE, bReq.getNamespace());
    assertEquals(0, bReq.getAttributes().size());
    assertEquals(bRes, bReq.getResource());
    assertEquals(1, bReq.getDirectives().size());
    assertEquals("(osgi.identity=F2)", bReq.getDirectives().get("filter"));
}
Also used : Resolver(org.osgi.service.resolver.Resolver) GenericCapability(org.apache.felix.resolver.test.util.GenericCapability) PackageCapability(org.apache.felix.resolver.test.util.PackageCapability) Capability(org.osgi.resource.Capability) BundleCapability(org.apache.felix.resolver.test.util.BundleCapability) HashMap(java.util.HashMap) Resource(org.osgi.resource.Resource) ResolverImpl(org.apache.felix.resolver.ResolverImpl) Logger(org.apache.felix.resolver.Logger) Wire(org.osgi.resource.Wire) Wiring(org.osgi.resource.Wiring) Requirement(org.osgi.resource.Requirement) BundleRequirement(org.apache.felix.resolver.test.util.BundleRequirement) GenericRequirement(org.apache.felix.resolver.test.util.GenericRequirement) PackageRequirement(org.apache.felix.resolver.test.util.PackageRequirement) ArrayList(java.util.ArrayList) List(java.util.List) ResolveContextImpl(org.apache.felix.resolver.test.util.ResolveContextImpl) Test(org.junit.Test)

Example 8 with Logger

use of org.apache.felix.resolver.Logger in project felix by apache.

the class ResolverTest method testScenario13.

@Test
public void testScenario13() throws Exception {
    ResolverImpl resolver = new ResolverImpl(new Logger(Logger.LOG_DEBUG), 1);
    Map<Resource, Wiring> wirings = new HashMap<Resource, Wiring>();
    Map<Requirement, List<Capability>> candMap = new HashMap<Requirement, List<Capability>>();
    ResourceImpl a1 = new ResourceImpl("A");
    Capability a1_hostCap = addCap(a1, HostNamespace.HOST_NAMESPACE, "A");
    ResourceImpl f1 = new ResourceImpl("F1", IdentityNamespace.TYPE_FRAGMENT, Version.emptyVersion);
    Requirement f1_hostReq = addReq(f1, HostNamespace.HOST_NAMESPACE, "A");
    Capability f1_pkgCap = addCap(f1, PackageNamespace.PACKAGE_NAMESPACE, "org.foo.a");
    ResourceImpl b1 = new ResourceImpl("B");
    Requirement b_pkgReq1 = addReq(b1, PackageNamespace.PACKAGE_NAMESPACE, "org.foo.a");
    candMap.put(b_pkgReq1, Collections.singletonList(f1_pkgCap));
    candMap.put(f1_hostReq, Collections.singletonList(a1_hostCap));
    ResolveContextImpl rci = new ResolveContextImpl(wirings, candMap, Collections.<Resource>singletonList(b1), Collections.<Resource>emptyList());
    Map<Resource, List<Wire>> wireMap = resolver.resolve(rci);
    assertEquals(3, wireMap.size());
    List<Wire> wiresB = wireMap.get(b1);
    assertNotNull(wiresB);
    assertEquals(1, wiresB.size());
    // should be wired to A through the fragment capability
    assertEquals(a1, wiresB.get(0).getProvider());
    assertEquals(f1_pkgCap, wiresB.get(0).getCapability());
}
Also used : GenericCapability(org.apache.felix.resolver.test.util.GenericCapability) PackageCapability(org.apache.felix.resolver.test.util.PackageCapability) Capability(org.osgi.resource.Capability) BundleCapability(org.apache.felix.resolver.test.util.BundleCapability) HashMap(java.util.HashMap) Resource(org.osgi.resource.Resource) ResolverImpl(org.apache.felix.resolver.ResolverImpl) Logger(org.apache.felix.resolver.Logger) Wire(org.osgi.resource.Wire) Wiring(org.osgi.resource.Wiring) Requirement(org.osgi.resource.Requirement) BundleRequirement(org.apache.felix.resolver.test.util.BundleRequirement) GenericRequirement(org.apache.felix.resolver.test.util.GenericRequirement) PackageRequirement(org.apache.felix.resolver.test.util.PackageRequirement) ResourceImpl(org.apache.felix.resolver.test.util.ResourceImpl) ArrayList(java.util.ArrayList) List(java.util.List) ResolveContextImpl(org.apache.felix.resolver.test.util.ResolveContextImpl) Test(org.junit.Test)

Example 9 with Logger

use of org.apache.felix.resolver.Logger in project felix by apache.

the class BigResolutionTest method testResolutionSpeed.

@Test
@Ignore
public void testResolutionSpeed() throws Exception {
    ResolverImpl resolver = new ResolverImpl(new Logger(Logger.LOG_INFO));
    ResolveContext rc = buildResolutionContext();
    System.out.println("Warming up...");
    Map<Resource, List<Wire>> wires = resolver.resolve(rc);
    resolver.resolve(rc);
    System.out.println("Running...");
    RunningStat stats = new RunningStat();
    for (int i = 1; i <= 100; i++) {
        System.gc();
        Thread.sleep(100);
        System.gc();
        Thread.sleep(100);
        long t0 = System.nanoTime();
        Map<Resource, List<Wire>> newWires = resolver.resolve(rc);
        long t1 = System.nanoTime();
        double dt = (t1 - t0) * 1E-6;
        System.out.println("Resolver took " + String.format("%7.2f", dt) + " ms");
        stats.put(dt);
        assertEquals(wires, newWires);
        if (i % 10 == 0) {
            System.out.println();
            System.out.println("Summary");
            System.out.println("    Min:    " + String.format("%7.2f", stats.getMin()) + " ms");
            System.out.println("    Max:    " + String.format("%7.2f", stats.getMax()) + " ms");
            System.out.println("    Avg:    " + String.format("%7.2f", stats.getAverage()) + " ms");
            System.out.println("    StdDev: " + String.format("%7" + ".2f", stats.getStdDev() / stats.getAverage() * 100.0) + " %");
            System.out.println();
            stats = new RunningStat();
        }
    }
}
Also used : ResolveContext(org.osgi.service.resolver.ResolveContext) Resource(org.osgi.resource.Resource) ResolverImpl(org.apache.felix.resolver.ResolverImpl) ArrayList(java.util.ArrayList) List(java.util.List) Logger(org.apache.felix.resolver.Logger) Ignore(org.junit.Ignore) Test(org.junit.Test)

Example 10 with Logger

use of org.apache.felix.resolver.Logger in project felix by apache.

the class BigResolutionTest method testIterativeResolution.

@Test
@Ignore
public void testIterativeResolution() throws Exception {
    ResolveContext rc = buildResolutionContext();
    ResolverImpl resolver = new ResolverImpl(new Logger(Logger.LOG_INFO));
    long t0 = System.currentTimeMillis();
    Map<Resource, List<Wire>> wiring1 = resolver.resolve(rc);
    long t1 = System.currentTimeMillis();
    System.out.println("Resolver took " + (t1 - t0) + " ms");
    long t2 = System.currentTimeMillis();
    Map<Resource, List<Wire>> wiring2 = new IterativeResolver(resolver).resolve(rc);
    long t3 = System.currentTimeMillis();
    System.out.println("Iterative resolver took " + (t3 - t2) + " ms");
    checkResolutions(wiring1, wiring2);
}
Also used : ResolveContext(org.osgi.service.resolver.ResolveContext) Resource(org.osgi.resource.Resource) IterativeResolver(org.apache.felix.resolver.test.util.IterativeResolver) ResolverImpl(org.apache.felix.resolver.ResolverImpl) ArrayList(java.util.ArrayList) List(java.util.List) Logger(org.apache.felix.resolver.Logger) Ignore(org.junit.Ignore) Test(org.junit.Test)

Aggregations

Logger (org.apache.felix.resolver.Logger)29 ResolverImpl (org.apache.felix.resolver.ResolverImpl)29 Test (org.junit.Test)26 ArrayList (java.util.ArrayList)21 List (java.util.List)21 Resource (org.osgi.resource.Resource)21 Capability (org.osgi.resource.Capability)19 Requirement (org.osgi.resource.Requirement)19 HashMap (java.util.HashMap)18 ResolveContextImpl (org.apache.felix.resolver.test.util.ResolveContextImpl)18 BundleCapability (org.apache.felix.resolver.test.util.BundleCapability)17 BundleRequirement (org.apache.felix.resolver.test.util.BundleRequirement)17 GenericCapability (org.apache.felix.resolver.test.util.GenericCapability)17 GenericRequirement (org.apache.felix.resolver.test.util.GenericRequirement)17 PackageCapability (org.apache.felix.resolver.test.util.PackageCapability)17 PackageRequirement (org.apache.felix.resolver.test.util.PackageRequirement)17 Wiring (org.osgi.resource.Wiring)15 Wire (org.osgi.resource.Wire)13 Resolver (org.osgi.service.resolver.Resolver)12 ResolveContext (org.osgi.service.resolver.ResolveContext)10