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());
}
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"));
}
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());
}
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();
}
}
}
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);
}
Aggregations