Extended the test.
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@883001 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/dependencymanager/test/src/test/java/org/apache/felix/dependencymanager/test/ConfigurationDependencyTest.java b/dependencymanager/test/src/test/java/org/apache/felix/dependencymanager/test/ConfigurationDependencyTest.java
index 8246a81..aaae382 100644
--- a/dependencymanager/test/src/test/java/org/apache/felix/dependencymanager/test/ConfigurationDependencyTest.java
+++ b/dependencymanager/test/src/test/java/org/apache/felix/dependencymanager/test/ConfigurationDependencyTest.java
@@ -55,20 +55,23 @@
}
@Test
- public void testComponentWithRequiredConfiguration(BundleContext context) {
+ public void testComponentWithRequiredConfigurationAndServicePropertyPropagation(BundleContext context) {
DependencyManager m = new DependencyManager(context, new Logger(context));
// helper class that ensures certain steps get executed in sequence
Ensure e = new Ensure();
// create a service provider and consumer
- Service s1 = m.createService().setImplementation(new ConfigurationConsumer(e)).add(m.createConfigurationDependency().setPid("test"));
+ Service s1 = m.createService().setImplementation(new ConfigurationConsumer(e)).setInterface(Runnable.class.getName(), null).add(m.createConfigurationDependency().setPid("test").setPropagate(true));
Service s2 = m.createService().setImplementation(new ConfigurationCreator(e)).add(m.createServiceDependency().setService(ConfigurationAdmin.class).setRequired(true));
+ Service s3 = m.createService().setImplementation(new ConfiguredServiceConsumer(e)).add(m.createServiceDependency().setService(Runnable.class, ("(testkey=testvalue)")).setRequired(true));
m.add(s1);
m.add(s2);
- e.waitForStep(2, 2000);
+ m.add(s3);
+ e.waitForStep(4, 2000);
m.remove(s1);
m.remove(s2);
+ m.remove(s3);
// ensure we executed all steps inside the component instance
- e.step(3);
+ e.step(5);
}
}
@@ -94,7 +97,7 @@
}
}
-class ConfigurationConsumer implements ManagedService {
+class ConfigurationConsumer implements ManagedService, Runnable {
private final Ensure m_ensure;
public ConfigurationConsumer(Ensure e) {
@@ -109,4 +112,22 @@
}
}
}
-}
\ No newline at end of file
+
+ public void run() {
+ m_ensure.step(4);
+ }
+}
+
+class ConfiguredServiceConsumer {
+ private final Ensure m_ensure;
+ private volatile Runnable m_runnable;
+
+ public ConfiguredServiceConsumer(Ensure e) {
+ m_ensure = e;
+ }
+
+ public void start() {
+ m_ensure.step(3);
+ m_runnable.run();
+ }
+}