You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by cs...@apache.org on 2017/02/28 14:48:57 UTC
svn commit: r1784748 -
/aries/trunk/component-dsl/itests/src/main/java/org/apache/aries/osgi/functional/test/DSLTest.java
Author: csierra
Date: Tue Feb 28 14:48:57 2017
New Revision: 1784748
URL: http://svn.apache.org/viewvc?rev=1784748&view=rev
Log:
Add test to show programmatic dependencies
Modified:
aries/trunk/component-dsl/itests/src/main/java/org/apache/aries/osgi/functional/test/DSLTest.java
Modified: aries/trunk/component-dsl/itests/src/main/java/org/apache/aries/osgi/functional/test/DSLTest.java
URL: http://svn.apache.org/viewvc/aries/trunk/component-dsl/itests/src/main/java/org/apache/aries/osgi/functional/test/DSLTest.java?rev=1784748&r1=1784747&r2=1784748&view=diff
==============================================================================
--- aries/trunk/component-dsl/itests/src/main/java/org/apache/aries/osgi/functional/test/DSLTest.java (original)
+++ aries/trunk/component-dsl/itests/src/main/java/org/apache/aries/osgi/functional/test/DSLTest.java Tue Feb 28 14:48:57 2017
@@ -31,11 +31,13 @@ import org.osgi.service.cm.Configuration
import org.osgi.service.cm.ManagedServiceFactory;
import java.io.IOException;
+import java.util.Arrays;
import java.util.Dictionary;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicReference;
@@ -45,7 +47,9 @@ import static org.apache.aries.osgi.func
import static org.apache.aries.osgi.functional.OSGi.onClose;
import static org.apache.aries.osgi.functional.OSGi.register;
import static org.apache.aries.osgi.functional.OSGi.serviceReferences;
+import static org.apache.aries.osgi.functional.OSGi.services;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
@@ -425,6 +429,75 @@ public class DSLTest {
bundleContext.ungetService(serviceReference);
}
+ @Test
+ public void testProgrammaticDependencies() {
+ AtomicBoolean executed = new AtomicBoolean(false);
+ AtomicBoolean closed = new AtomicBoolean(false);
+
+ String[] filters = {
+ "(key=service one)",
+ "(key=service two)",
+ "(key=service three)"
+ };
+
+ OSGi<?> program =
+ onClose(() -> closed.set(true)).foreach(
+ ign -> executed.set(true)
+ );
+
+ for (String filter : filters) {
+ program = services(filter).then(program);
+ }
+
+ OSGiResult<?> result = program.run(bundleContext);
+
+ try {
+ assertFalse(closed.get());
+ assertFalse(executed.get());
+
+ ServiceRegistration<Service> serviceRegistrationOne =
+ bundleContext.registerService(
+ Service.class, new Service(),
+ new Hashtable<String, Object>() {{
+ put("key", "service one");
+ }});
+
+ assertFalse(closed.get());
+ assertFalse(executed.get());
+
+ ServiceRegistration<Service> serviceRegistrationTwo =
+ bundleContext.registerService(
+ Service.class, new Service(),
+ new Hashtable<String, Object>() {{
+ put("key", "service two");
+ }});
+
+ assertFalse(closed.get());
+ assertFalse(executed.get());
+
+ ServiceRegistration<Service> serviceRegistrationThree =
+ bundleContext.registerService(
+ Service.class, new Service(),
+ new Hashtable<String, Object>() {{
+ put("key", "service three");
+ }});
+
+ assertFalse(closed.get());
+ assertTrue(executed.get());
+
+ serviceRegistrationOne.unregister();
+
+ assertTrue(closed.get());
+
+ serviceRegistrationTwo.unregister();
+ serviceRegistrationThree.unregister();
+ }
+ finally {
+ result.close();
+ }
+
+ }
+
private class Service {}
}