st.close();
}
@Test
public void testAspectServiceTracker() {
ServiceTracker st = new ServiceTracker(context, ServiceInterface.class.getName(), null);
st.open();
ServiceRegistration sr = context.registerService(ServiceInterface.class.getName(), new ServiceProvider(), null);
Assert.assertEquals("There should be one service that matches the tracker", 1, st.getServices().length);
final long sid = ServiceUtil.getServiceId(sr.getReference());
ServiceRegistration asr = context.registerService(ServiceInterface.class.getName(), new ServiceProvider(),
new Hashtable() {{ put(DependencyManager.ASPECT, sid); put(Constants.SERVICE_RANKING, 10); }});
Assert.assertEquals("There should be one service that matches the tracker", 1, st.getServices().length);
Assert.assertEquals("Service ranking should be 10", Integer.valueOf(10), (Integer) st.getServiceReference().getProperty(Constants.SERVICE_RANKING));
ServiceRegistration asr2 = context.registerService(ServiceInterface.class.getName(), new ServiceProvider(),
new Hashtable() {{ put(DependencyManager.ASPECT, sid); put(Constants.SERVICE_RANKING, 20); }});
Assert.assertEquals("There should be one service that matches the tracker", 1, st.getServices().length);
Assert.assertEquals("Service ranking should be 20", Integer.valueOf(20), (Integer) st.getServiceReference().getProperty(Constants.SERVICE_RANKING));
asr.unregister();
Assert.assertEquals("There should be one service that matches the tracker", 1, st.getServices().length);
Assert.assertEquals("Service ranking should be 20", Integer.valueOf(20), (Integer) st.getServiceReference().getProperty(Constants.SERVICE_RANKING));
asr2.unregister();
Assert.assertEquals("There should be one service that matches the tracker", 1, st.getServices().length);
Assert.assertNull("Service should not have a ranking", st.getServiceReference().getProperty(Constants.SERVICE_RANKING));
sr.unregister();
Assert.assertNull("There should be no service that matches the tracker", st.getServices());
st.close();
}