FELIX-4350: additional failing use cases
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@1549890 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/scr/src/test/java/org/apache/felix/scr/integration/Felix4350Test.java b/scr/src/test/java/org/apache/felix/scr/integration/Felix4350Test.java
index 569310c..a223105 100644
--- a/scr/src/test/java/org/apache/felix/scr/integration/Felix4350Test.java
+++ b/scr/src/test/java/org/apache/felix/scr/integration/Felix4350Test.java
@@ -84,30 +84,8 @@
final Component main = findComponentByName(componentName);
TestCase.assertNotNull(main);
- ServiceRegistration dep1Reg = bundleContext.registerService(SimpleComponent.class.getName(),
- new ServiceFactory()
- {
- public Object getService(Bundle bundle, ServiceRegistration registration)
- {
- return new SimpleComponent();
- }
- public void ungetService(Bundle bundle, ServiceRegistration registration, Object service)
- {
- }
- }, null);
- ServiceRegistration dep2Reg = bundleContext.registerService(SimpleComponent2.class.getName(),
- new ServiceFactory()
- {
- public Object getService(Bundle bundle, ServiceRegistration registration)
- {
- delay(1000);
- return new SimpleComponent2();
- }
- public void ungetService(Bundle bundle, ServiceRegistration registration, Object service)
- {
- }
- }, null);
-
+ ServiceRegistration dep1Reg = register(new SimpleComponent(), 0);
+ ServiceRegistration dep2Reg = register(new SimpleComponent2(), 1000);
main.enable();
delay(300);
dep1Reg.unregister();
@@ -115,6 +93,41 @@
ComponentInstance mainCompInst = main.getComponentInstance();
TestCase.assertNull(mainCompInst);
+
+ dep1Reg = register(new SimpleComponent(), 0);
+ delay(300);
+
+ mainCompInst = main.getComponentInstance();
+ TestCase.assertNotNull(mainCompInst);
+
+ main.disable();
+ dep1Reg.unregister();
+ dep2Reg.unregister();
+
+ dep1Reg = register(new SimpleComponent(), 0);
+ dep2Reg = register(new SimpleComponent2(), 1000);
+ main.enable();
+ delay(300);
+ dep1Reg.unregister();
+ delay(100);
+ dep1Reg = register(new SimpleComponent(), 0);
+ delay(2000);
+
+ mainCompInst = main.getComponentInstance();
+ TestCase.assertNotNull(mainCompInst);
+ }
+
+ protected ServiceRegistration register(final Object service, final int delay) {
+ return bundleContext.registerService(service.getClass().getName(), new ServiceFactory() {
+ public Object getService(Bundle bundle, ServiceRegistration registration)
+ {
+ delay(delay);
+ return service;
+ }
+ public void ungetService(Bundle bundle, ServiceRegistration registration, Object service)
+ {
+ }
+ }, null);
}
}