use of org.apache.felix.framework.ServiceRegistrationImpl.ServiceReferenceImpl in project felix by apache.
the class ServiceRegistryTest method testUngetService5.
@SuppressWarnings("unchecked")
public void testUngetService5() throws Exception {
ServiceRegistry sr = new ServiceRegistry(null, null);
Bundle b = Mockito.mock(Bundle.class);
ServiceRegistrationImpl reg = Mockito.mock(ServiceRegistrationImpl.class);
Mockito.doThrow(new RuntimeException("Test!")).when(reg).ungetService(Mockito.isA(Bundle.class), Mockito.any());
ServiceReferenceImpl ref = Mockito.mock(ServiceReferenceImpl.class);
Mockito.when(ref.getRegistration()).thenReturn(reg);
final ConcurrentMap<Bundle, UsageCount[]> inUseMap = (ConcurrentMap<Bundle, UsageCount[]>) getPrivateField(sr, "m_inUseMap");
String svc = "myService";
UsageCount uc = new UsageCount(ref, false);
ServiceHolder sh = new ServiceHolder();
sh.m_service = svc;
sh.m_latch.countDown();
uc.m_svcHolderRef.set(sh);
uc.m_count.set(1);
inUseMap.put(b, new UsageCount[] { uc });
try {
assertTrue(sr.ungetService(b, ref, null));
fail("Should have propagated the runtime exception");
} catch (RuntimeException re) {
assertEquals("Test!", re.getMessage());
}
assertNull(uc.m_svcHolderRef.get());
Mockito.verify(reg, Mockito.times(1)).ungetService(b, svc);
}
use of org.apache.felix.framework.ServiceRegistrationImpl.ServiceReferenceImpl in project felix by apache.
the class ServiceRegistryTest method testUngetServiceThreadMarking2.
public void testUngetServiceThreadMarking2() {
ServiceRegistry sr = new ServiceRegistry(null, null);
Bundle b = Mockito.mock(Bundle.class);
ServiceRegistrationImpl reg = Mockito.mock(ServiceRegistrationImpl.class);
Mockito.when(reg.currentThreadMarked()).thenReturn(true);
ServiceReferenceImpl ref = Mockito.mock(ServiceReferenceImpl.class);
Mockito.when(ref.getRegistration()).thenReturn(reg);
try {
sr.ungetService(b, ref, null);
fail("The thread should be observed as marked and hence throw an exception");
} catch (IllegalStateException ise) {
// good
}
}
use of org.apache.felix.framework.ServiceRegistrationImpl.ServiceReferenceImpl in project felix by apache.
the class ServiceRegistryTest method testUngetService2.
@SuppressWarnings("unchecked")
public void testUngetService2() throws Exception {
ServiceRegistry sr = new ServiceRegistry(null, null);
Bundle b = Mockito.mock(Bundle.class);
ServiceRegistrationImpl reg = Mockito.mock(ServiceRegistrationImpl.class);
ServiceReferenceImpl ref = Mockito.mock(ServiceReferenceImpl.class);
Mockito.when(ref.getRegistration()).thenReturn(reg);
final ConcurrentMap<Bundle, UsageCount[]> inUseMap = (ConcurrentMap<Bundle, UsageCount[]>) getPrivateField(sr, "m_inUseMap");
UsageCount uc = new UsageCount(ref, false);
ServiceHolder sh = new ServiceHolder();
Object svc = new Object();
sh.m_service = svc;
uc.m_svcHolderRef.set(sh);
uc.m_count.incrementAndGet();
Mockito.verify(reg, Mockito.never()).ungetService(Mockito.isA(Bundle.class), Mockito.any());
inUseMap.put(b, new UsageCount[] { uc });
assertTrue(sr.ungetService(b, ref, null));
assertNull(uc.m_svcHolderRef.get());
Mockito.verify(reg, Mockito.times(1)).ungetService(Mockito.isA(Bundle.class), Mockito.eq(svc));
}
use of org.apache.felix.framework.ServiceRegistrationImpl.ServiceReferenceImpl in project felix by apache.
the class ServiceRegistryTest method testUngetService3.
@SuppressWarnings("unchecked")
public void testUngetService3() throws Exception {
ServiceRegistry sr = new ServiceRegistry(null, null);
Bundle b = Mockito.mock(Bundle.class);
ServiceRegistrationImpl reg = Mockito.mock(ServiceRegistrationImpl.class);
Mockito.when(reg.isValid()).thenReturn(true);
ServiceReferenceImpl ref = Mockito.mock(ServiceReferenceImpl.class);
Mockito.when(ref.getRegistration()).thenReturn(reg);
final ConcurrentMap<Bundle, UsageCount[]> inUseMap = (ConcurrentMap<Bundle, UsageCount[]>) getPrivateField(sr, "m_inUseMap");
UsageCount uc = new UsageCount(ref, false);
uc.m_svcHolderRef.set(new ServiceHolder());
uc.m_count.set(2);
inUseMap.put(b, new UsageCount[] { uc });
assertTrue(sr.ungetService(b, ref, null));
assertNotNull(uc.m_svcHolderRef.get());
assertNotNull(inUseMap.get(b));
Mockito.verify(reg, Mockito.never()).ungetService(Mockito.isA(Bundle.class), Mockito.any());
}
use of org.apache.felix.framework.ServiceRegistrationImpl.ServiceReferenceImpl in project felix by apache.
the class ServiceRegistryTest method testGetServiceThreadMarking.
@SuppressWarnings("unchecked")
public void testGetServiceThreadMarking() throws Exception {
ServiceRegistry sr = new ServiceRegistry(null, null);
Bundle b = Mockito.mock(Bundle.class);
ServiceRegistrationImpl reg = Mockito.mock(ServiceRegistrationImpl.class);
ServiceReferenceImpl ref = Mockito.mock(ServiceReferenceImpl.class);
Mockito.when(ref.getRegistration()).thenReturn(reg);
sr.getService(b, ref, false);
InOrder inOrder = Mockito.inOrder(reg);
inOrder.verify(reg, Mockito.times(1)).currentThreadMarked();
inOrder.verify(reg, Mockito.times(1)).markCurrentThread();
inOrder.verify(reg, Mockito.times(1)).unmarkCurrentThread();
}
Aggregations