You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by ro...@apache.org on 2019/12/05 19:20:34 UTC

[aries-cdi] branch master updated: solve continuously failing test

This is an automated email from the ASF dual-hosted git repository.

rotty3000 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/aries-cdi.git


The following commit(s) were added to refs/heads/master by this push:
     new 74ec21e  solve continuously failing test
     new de780ca  Merge pull request #21 from rotty3000/disable.test
74ec21e is described below

commit 74ec21eee61fc81cb2a3bdd531ecb89c4f6061dc
Author: Raymond Augé <ro...@apache.org>
AuthorDate: Wed Dec 4 17:56:42 2019 -0500

    solve continuously failing test
    
    Signed-off-by: Raymond Augé <ro...@apache.org>
---
 .../aries/cdi/extension/jndi/JndiExtension.java    |   6 +-
 .../cdi/extension/jndi/JndiExtensionFactory.java   |   4 +-
 cdi-itests/base-itest.bndrun                       |   6 +
 cdi-itests/owb-itest.bndrun                        |   5 +-
 .../aries/cdi/test/cases/CloseableTracker.java     |   5 +
 .../aries/cdi/test/cases/ConfigurationTests.java   |  13 +-
 .../aries/cdi/test/cases/JndiExtensionTests.java   |   3 +-
 .../apache/aries/cdi/test/cases/SlimTestCase.java  |   2 +-
 .../org/apache/aries/cdi/test/cases/Test152_3.java |   6 +-
 .../apache/aries/cdi/test/cases/Test152_3_1.java   |   9 +-
 .../apache/aries/cdi/test/cases/Test152_3_1_1.java | 153 ++++++++++-----------
 .../cdi/test/cases/Test_discoverByBeansXml.java    |   7 +-
 cdi-itests/weld-itest.bndrun                       |   5 +-
 13 files changed, 109 insertions(+), 115 deletions(-)

diff --git a/cdi-extension-jndi/src/main/java/org/apache/aries/cdi/extension/jndi/JndiExtension.java b/cdi-extension-jndi/src/main/java/org/apache/aries/cdi/extension/jndi/JndiExtension.java
index 68ce71c..a4409a5 100644
--- a/cdi-extension-jndi/src/main/java/org/apache/aries/cdi/extension/jndi/JndiExtension.java
+++ b/cdi-extension-jndi/src/main/java/org/apache/aries/cdi/extension/jndi/JndiExtension.java
@@ -14,12 +14,9 @@
 
 package org.apache.aries.cdi.extension.jndi;
 
-import static javax.interceptor.Interceptor.Priority.LIBRARY_AFTER;
-
 import java.util.Hashtable;
 import java.util.concurrent.atomic.AtomicReference;
 
-import javax.annotation.Priority;
 import javax.enterprise.event.Observes;
 import javax.enterprise.inject.spi.AfterDeploymentValidation;
 import javax.enterprise.inject.spi.BeanManager;
@@ -46,8 +43,7 @@ public class JndiExtension implements Extension, ObjectFactory {
 	}
 
 	void applicationScopedInitialized(
-		@Observes @Priority(LIBRARY_AFTER + 800)
-		AfterDeploymentValidation adv, BeanManager beanManager) {
+		@Observes AfterDeploymentValidation adv, BeanManager beanManager) {
 
 		_beanManager.set(beanManager);
 	}
diff --git a/cdi-extension-jndi/src/main/java/org/apache/aries/cdi/extension/jndi/JndiExtensionFactory.java b/cdi-extension-jndi/src/main/java/org/apache/aries/cdi/extension/jndi/JndiExtensionFactory.java
index 4f513ee..2c892c1 100644
--- a/cdi-extension-jndi/src/main/java/org/apache/aries/cdi/extension/jndi/JndiExtensionFactory.java
+++ b/cdi-extension-jndi/src/main/java/org/apache/aries/cdi/extension/jndi/JndiExtensionFactory.java
@@ -15,10 +15,10 @@
 package org.apache.aries.cdi.extension.jndi;
 
 import org.osgi.framework.Bundle;
-import org.osgi.framework.PrototypeServiceFactory;
+import org.osgi.framework.ServiceFactory;
 import org.osgi.framework.ServiceRegistration;
 
-public class JndiExtensionFactory implements PrototypeServiceFactory<Object> {
+public class JndiExtensionFactory implements ServiceFactory<Object> {
 
 	@Override
 	public Object getService(Bundle bundle, ServiceRegistration<Object> registration) {
diff --git a/cdi-itests/base-itest.bndrun b/cdi-itests/base-itest.bndrun
index a82ea48..78a73c8 100644
--- a/cdi-itests/base-itest.bndrun
+++ b/cdi-itests/base-itest.bndrun
@@ -38,3 +38,9 @@
 	org.slf4j.helpers;version=1.7.25,\
 	org.slf4j.spi;version=1.7.25,\
 	sun.misc
+
+-runrequires.base: \
+	osgi.identity;filter:='(osgi.identity=org.apache.aries.cdi.extra)',\
+	osgi.identity;filter:='(osgi.identity=org.apache.aries.cdi.itests)',\
+	osgi.identity;filter:='(osgi.identity=org.apache.aries.jndi.core)',\
+	osgi.identity;filter:='(osgi.identity=org.apache.felix.gogo.command)'
diff --git a/cdi-itests/owb-itest.bndrun b/cdi-itests/owb-itest.bndrun
index ce498f4..36f751d 100644
--- a/cdi-itests/owb-itest.bndrun
+++ b/cdi-itests/owb-itest.bndrun
@@ -14,10 +14,7 @@
 #-runjdb: 8000
 
 -runrequires: \
-	osgi.identity;filter:='(osgi.identity=org.apache.aries.cdi.owb)',\
-	osgi.identity;filter:='(osgi.identity=org.apache.aries.cdi.itests)',\
-	osgi.identity;filter:='(osgi.identity=org.apache.aries.jndi.core)',\
-	osgi.identity;filter:='(osgi.identity=org.apache.felix.gogo.command)'
+	osgi.identity;filter:='(osgi.identity=org.apache.aries.cdi.owb)'
 
 -runblacklist: \
 	osgi.identity;filter:='(osgi.identity=org.apache.aries.cdi.weld)'
diff --git a/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/CloseableTracker.java b/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/CloseableTracker.java
index da86ada..7ec6eea 100644
--- a/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/CloseableTracker.java
+++ b/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/CloseableTracker.java
@@ -29,4 +29,9 @@ public class CloseableTracker<S, T> extends ServiceTracker<S, T> implements Auto
 		super(context, filter, customizer);
 	}
 
+	@Override
+	public void close() {
+		super.close();
+	}
+
 }
diff --git a/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/ConfigurationTests.java b/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/ConfigurationTests.java
index c72a161..065b0f4 100644
--- a/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/ConfigurationTests.java
+++ b/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/ConfigurationTests.java
@@ -15,7 +15,11 @@
 package org.apache.aries.cdi.test.cases;
 
 import static java.lang.Thread.sleep;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
 
 import java.util.Dictionary;
 import java.util.Hashtable;
@@ -197,14 +201,13 @@ public class ConfigurationTests extends AbstractTestCase {
 		Bundle tb5Bundle = installBundle("tb5.jar");
 
 		Configuration configurationC = null;
-		ServiceTracker<BeanService, BeanService> stC = null;
+		ServiceTracker<BeanService, BeanService> stC = new ServiceTracker<BeanService, BeanService>(
+			bundleContext, bundleContext.createFilter(
+				"(&(objectClass=org.apache.aries.cdi.test.interfaces.BeanService)(bean=C))"), null);
 
 		try {
 			Thread.sleep(1000); // <---- TODO fix this
 
-			stC = new ServiceTracker<BeanService, BeanService>(
-				bundleContext, bundleContext.createFilter(
-					"(&(objectClass=org.apache.aries.cdi.test.interfaces.BeanService)(bean=C))"), null);
 			stC.open(true);
 
 			BeanService<Callable<int[]>> beanService = stC.waitForService(timeout);
diff --git a/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/JndiExtensionTests.java b/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/JndiExtensionTests.java
index c0445c7..0dbc60c 100644
--- a/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/JndiExtensionTests.java
+++ b/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/JndiExtensionTests.java
@@ -22,7 +22,6 @@ import javax.enterprise.inject.spi.BeanManager;
 import javax.naming.InitialContext;
 
 import org.apache.aries.cdi.test.interfaces.Pojo;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleEvent;
@@ -32,7 +31,6 @@ import org.osgi.util.tracker.ServiceTracker;
 
 public class JndiExtensionTests extends SlimTestCase {
 
-	@Ignore("I think there's an issue with Aries JNDI. It doesn't work well with service objects")
 	@Test
 	public void testGetBeanManagerThroughJNDI() throws Exception {
 		Bundle testBundle = installBundle("tb21.jar", false);
@@ -106,6 +104,7 @@ public class JndiExtensionTests extends SlimTestCase {
 		finally {
 			testBundle.uninstall();
 			bundleTracker.close();
+			st.close();
 		}
 	}
 
diff --git a/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/SlimTestCase.java b/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/SlimTestCase.java
index c750e25..1c929a6 100644
--- a/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/SlimTestCase.java
+++ b/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/SlimTestCase.java
@@ -18,7 +18,7 @@ import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
 
-public class SlimTestCase extends AbstractTestCase {
+public abstract class SlimTestCase extends AbstractTestCase {
 
 	@BeforeClass
 	public static void beforeClass() throws Exception {
diff --git a/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/Test152_3.java b/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/Test152_3.java
index bd5f805..e0aec15 100644
--- a/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/Test152_3.java
+++ b/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/Test152_3.java
@@ -30,14 +30,14 @@ public class Test152_3 extends SlimTestCase {
 	public void componentScopeContext() throws Exception {
 		Bundle tbBundle = installBundle("tb152_3.jar");
 
+		ServiceTracker<Object, Object> oneTracker = track("(&(objectClass=%s)(%s=%s))", BeanService.class.getName(), Constants.SERVICE_DESCRIPTION, "one");
+		ServiceTracker<Object, Object> twoTracker = track("(&(objectClass=%s)(%s=%s))", BeanService.class.getName(), Constants.SERVICE_DESCRIPTION, "two");
 		try {
 			getBeanManager(tbBundle);
 
-			ServiceTracker<Object, Object> oneTracker = track("(&(objectClass=%s)(%s=%s))", BeanService.class.getName(), Constants.SERVICE_DESCRIPTION, "one");
 			oneTracker.open();
 			Object service = oneTracker.waitForService(timeout);
 
-			ServiceTracker<Object, Object> twoTracker = track("(&(objectClass=%s)(%s=%s))", BeanService.class.getName(), Constants.SERVICE_DESCRIPTION, "two");
 			twoTracker.open();
 			twoTracker.waitForService(timeout);
 
@@ -48,6 +48,8 @@ public class Test152_3 extends SlimTestCase {
 			assertThat(context).isNotNull();
 		}
 		finally {
+			oneTracker.close();
+			twoTracker.close();
 			tbBundle.uninstall();
 		}
 	}
diff --git a/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/Test152_3_1.java b/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/Test152_3_1.java
index 2f6efca..44ec642 100644
--- a/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/Test152_3_1.java
+++ b/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/Test152_3_1.java
@@ -14,7 +14,7 @@
 
 package org.apache.aries.cdi.test.cases;
 
-import static org.assertj.core.api.Assertions.*;
+import static org.assertj.core.api.Assertions.assertThat;
 
 import java.util.Hashtable;
 import java.util.concurrent.atomic.AtomicReference;
@@ -90,6 +90,8 @@ public class Test152_3_1 extends SlimTestCase {
 			Function.class, onDestroyed,
 			new Hashtable() {{put(Constants.SERVICE_DESCRIPTION, "onDestroyed");}});
 
+		ServiceTracker<Object, Object> twoTracker = track("(&(objectClass=%s)(%s=%s))", BeanService.class.getName(), Constants.SERVICE_DESCRIPTION, "two");
+
 		try {
 			getBeanManager(tb152_3_1Bundle);
 
@@ -97,7 +99,6 @@ public class Test152_3_1 extends SlimTestCase {
 			assertThat(b.get()).isNull();
 			assertThat(c.get()).isNull();
 
-			ServiceTracker<Object, Object> twoTracker = track("(&(objectClass=%s)(%s=%s))", BeanService.class.getName(), Constants.SERVICE_DESCRIPTION, "two");
 			twoTracker.open();
 			int trackingCount = twoTracker.getTrackingCount();
 
@@ -146,6 +147,7 @@ public class Test152_3_1 extends SlimTestCase {
 			assertThat(eventMetadata.getQualifiers()).contains(Service.Literal.of(new Class<?>[0]));
 		}
 		finally {
+			twoTracker.close();
 			onInitializedReg.unregister();
 			onBeforeDestroyedReg.unregister();
 			onDestroyedReg.unregister();
@@ -194,6 +196,7 @@ public class Test152_3_1 extends SlimTestCase {
 			new Hashtable() {{put(Constants.SERVICE_DESCRIPTION, "onDestroyed");}});
 
 		Configuration configuration = null;
+		ServiceTracker<Object, Object> threeTracker = track("(&(objectClass=%s)(%s=%s))", BeanService.class.getName(), Constants.SERVICE_DESCRIPTION, "three");
 
 		try {
 			getBeanManager(tb152_3_1Bundle);
@@ -202,7 +205,6 @@ public class Test152_3_1 extends SlimTestCase {
 			assertThat(b.get()).isNull();
 			assertThat(c.get()).isNull();
 
-			ServiceTracker<Object, Object> threeTracker = track("(&(objectClass=%s)(%s=%s))", BeanService.class.getName(), Constants.SERVICE_DESCRIPTION, "three");
 			threeTracker.open();
 			int trackingCount = threeTracker.getTrackingCount();
 
@@ -263,6 +265,7 @@ public class Test152_3_1 extends SlimTestCase {
 			assertThat(eventMetadata.getQualifiers()).contains(Service.Literal.of(new Class<?>[0]));
 		}
 		finally {
+			threeTracker.close();
 			configuration.delete();
 			onInitializedReg.unregister();
 			onBeforeDestroyedReg.unregister();
diff --git a/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/Test152_3_1_1.java b/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/Test152_3_1_1.java
index 92618ff..4331c71 100644
--- a/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/Test152_3_1_1.java
+++ b/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/Test152_3_1_1.java
@@ -45,6 +45,7 @@ public class Test152_3_1_1 extends SlimTestCase {
 		adminTracker = new ServiceTracker<>(bundleContext, ConfigurationAdmin.class, null);
 		adminTracker.open();
 		configurationAdmin = adminTracker.getService();
+		assertThat(bundleContext.getBundle().getRegisteredServices()).isNull();
 	}
 
 	@After
@@ -277,11 +278,9 @@ public class Test152_3_1_1 extends SlimTestCase {
 		AtomicReference<Deferred<Object[]>> b = new AtomicReference<>(new Deferred<>());
 		AtomicReference<Deferred<Object[]>> c = new AtomicReference<>(new Deferred<>());
 
-		Consumer<Object[]> onInitialized = (o) -> {
-			try {
-				a.get().resolve(o);} catch (Exception e) {}};
-		Consumer<Object[]> onBeforeDestroyed = (o) -> {try {b.get().resolve(o);} catch (Exception e) {}};
-		Consumer<Object[]> onDestroyed = (o) -> {try {c.get().resolve(o);} catch (Exception e) {}};
+		Consumer<Object[]> onInitialized = (o) -> a.get().resolve(o);
+		Consumer<Object[]> onBeforeDestroyed = (o) -> b.get().resolve(o);
+		Consumer<Object[]> onDestroyed = (o) -> c.get().resolve(o);
 
 		ServiceRegistration<Consumer> onInitializedReg = bundleContext.registerService(
 			Consumer.class, onInitialized,
@@ -316,28 +315,12 @@ public class Test152_3_1_1 extends SlimTestCase {
 
 				configuration = configurationAdmin.getConfiguration("prototypeSingle_C", "?");
 
-				// this will trigger the onInitialized because of the tracker
 				configuration.update(new Hashtable() {{put("foo", "bar");}});
 
-				a.get().getPromise().timeout(timeout).then(
-					s -> {
-						Object[] values = s.getValue();
-
-						assertThat((Map<String, Object>)values[1]).contains(
-							entry("component.name", "prototypeSingle_C")
-						).contains(
-							entry("foo", "bar")
-						);
-
-						return s;
-					},
-					f -> fail(f.toString())
-				).getValue();
+				a.get().getPromise().timeout(timeout).then(assertFailed).getFailure();
 				b.get().getPromise().timeout(timeout).then(assertFailed).getFailure();
 				c.get().getPromise().timeout(timeout).then(assertFailed).getFailure();
 
-				a.set(new Deferred<>());
-
 				ServiceObjects<Object> serviceObjects = bundleContext.getServiceObjects(tracker.getService());
 
 				Object instance1 = serviceObjects.getService();
@@ -361,7 +344,7 @@ public class Test152_3_1_1 extends SlimTestCase {
 				b.get().getPromise().timeout(timeout).then(assertFailed).getFailure();
 				c.get().getPromise().timeout(timeout).then(assertFailed).getFailure();
 
-				a.set(new Deferred<>());
+				reset(a, b, c);
 
 				Object instance2 = serviceObjects.getService();
 				assertThat(instance2).isNotNull();
@@ -384,6 +367,8 @@ public class Test152_3_1_1 extends SlimTestCase {
 				b.get().getPromise().timeout(timeout).then(assertFailed).getFailure();
 				c.get().getPromise().timeout(timeout).then(assertFailed).getFailure();
 
+				reset(a, b, c);
+
 				assertThat(instance1).isNotEqualTo(instance2);
 
 				serviceObjects.ungetService(instance1);
@@ -416,8 +401,7 @@ public class Test152_3_1_1 extends SlimTestCase {
 					f -> fail(f.toString())
 				).getValue();
 
-				b.set(new Deferred<>());
-				c.set(new Deferred<>());
+				reset(a, b, c);
 
 				configuration.delete();
 
@@ -777,13 +761,15 @@ public class Test152_3_1_1 extends SlimTestCase {
 	@SuppressWarnings({ "rawtypes", "serial", "unchecked" })
 	@Test
 	public void bundleSingle_C() throws Exception {
-		Deferred<Object[]> a = new Deferred<>();
-		Deferred<Object[]> b = new Deferred<>();
-		Deferred<Object[]> c = new Deferred<>();
+		AtomicReference<Deferred<Object[]>> a = new AtomicReference<>(new Deferred<>());
+		AtomicReference<Deferred<Object[]>> b = new AtomicReference<>(new Deferred<>());
+		AtomicReference<Deferred<Object[]>> c = new AtomicReference<>(new Deferred<>());
 
-		Consumer<Object[]> onInitialized = (o) -> {try {a.resolve(o);} catch (Exception e) {}};
-		Consumer<Object[]> onBeforeDestroyed = (o) -> {try {b.resolve(o);} catch (Exception e) {}};
-		Consumer<Object[]> onDestroyed = (o) -> {try {c.resolve(o);} catch (Exception e) {}};
+		Consumer<Object[]> onInitialized = (o) -> {
+			a.get().resolve(o);
+		};
+		Consumer<Object[]> onBeforeDestroyed = (o) -> b.get().resolve(o);
+		Consumer<Object[]> onDestroyed = (o) -> c.get().resolve(o);
 
 		ServiceRegistration<Consumer> onInitializedReg = bundleContext.registerService(
 			Consumer.class, onInitialized,
@@ -803,47 +789,35 @@ public class Test152_3_1_1 extends SlimTestCase {
 		try {
 			getBeanManager(tbBundle);
 
-			Success<Object[], Object[]> assertFailed = s -> {
-				fail("shouldn't have have succeeded");
-				return s;
-			};
-
-			a.getPromise().timeout(timeout).then(assertFailed).getFailure();
+			assertPromiseIsNotResolved(a);
 
 			configuration = configurationAdmin.getConfiguration("bundleSingle_C", "?");
 			configuration.update(new Hashtable() {{put("foo", "bar");}});
 
-			a.getPromise().timeout(timeout).then(assertFailed).getFailure();
+			assertPromiseIsNotResolved(a);
 
 			try (CloseableTracker<Object, Object> tracker = track("(objectClass=%s)", Pojo.class.getName())) {
 				assertThat(tracker.waitForService(50)).isNotNull();
 			}
 
-			Success<Object[], Object[]> assertSucceeded = s -> {
-				Object[] values = s.getValue();
-
-				assertThat((Map<String, Object>)values[1]).contains(
-					entry("component.name", "bundleSingle_C")
-				).contains(
-					entry(Constants.SERVICE_PID, Arrays.asList("bundleSingle_C"))
-				).contains(
-					entry("foo", "bar")
-				);
+			a.get().getPromise().timeout(timeout).then(
+				s -> {
+					Object[] values = s.getValue();
 
-				return s;
-			};
+					assertThat((Map<String, Object>)values[1]).contains(
+						entry("component.name", "bundleSingle_C")
+					).contains(
+						entry(Constants.SERVICE_PID, Arrays.asList("bundleSingle_C"))
+					).contains(
+						entry("foo", "bar")
+					);
 
-			a.getPromise().timeout(timeout).then(
-				assertSucceeded,
+					return s;
+				},
 				f -> fail(f.toString())
 			).getValue();
 
-			b.getPromise().timeout(timeout).then(assertFailed).getFailure();
-			c.getPromise().timeout(timeout).then(assertFailed).getFailure();
-
-			configuration.delete();
-
-			b.getPromise().timeout(timeout).then(
+			b.get().getPromise().timeout(timeout).then(
 				s -> {
 					Object[] values = s.getValue();
 
@@ -855,30 +829,33 @@ public class Test152_3_1_1 extends SlimTestCase {
 						entry("foo", "bar")
 					);
 
-					try (CloseableTracker<Object, Object> tracker = track("(objectClass=%s)", Pojo.class.getName())) {
-						assertThat(tracker.waitForService(50)).isNull();
-					}
-
 					return s;
 				},
 				f -> fail(f.toString())
 			).getValue();
-			c.getPromise().timeout(timeout).then(
-					s -> {
-						Object[] values = s.getValue();
+			c.get().getPromise().timeout(timeout).then(
+				s -> {
+					Object[] values = s.getValue();
 
-						assertThat((Map<String, Object>)values[1]).contains(
-							entry("component.name", "bundleSingle_C")
-						).contains(
-							entry(Constants.SERVICE_PID, Arrays.asList("bundleSingle_C"))
-						).contains(
-							entry("foo", "bar")
-						);
+					assertThat((Map<String, Object>)values[1]).contains(
+						entry("component.name", "bundleSingle_C")
+					).contains(
+						entry(Constants.SERVICE_PID, Arrays.asList("bundleSingle_C"))
+					).contains(
+						entry("foo", "bar")
+					);
 
-						return s;
-					},
+					return s;
+				},
 				f -> fail(f.toString())
 			).getValue();
+
+			reset(a, b, c);
+
+			configuration.delete();
+
+			assertPromiseIsNotResolved(b);
+			assertPromiseIsNotResolved(c);
 		}
 		finally {
 			if (configuration != null) {
@@ -900,6 +877,15 @@ public class Test152_3_1_1 extends SlimTestCase {
 		}
 	}
 
+	private void assertPromiseIsNotResolved(AtomicReference<Deferred<Object[]>> a) throws Exception {
+		Throwable throwable = a.get().getPromise().timeout(timeout).getFailure();
+
+		if (throwable == null) {
+			Object[] value = a.get().getPromise().getValue();
+			throw new AssertionError("Didn't fail! " + value[1]);
+		}
+	}
+
 	@SuppressWarnings({ "rawtypes", "serial", "unchecked" })
 	@Test
 	public void bundleSingle() throws Exception {
@@ -1536,15 +1522,10 @@ public class Test152_3_1_1 extends SlimTestCase {
 					// ignore
 				}
 			}
-			try {
-				tbBundle.uninstall();
-
-			}
-			finally {
-				onInitializedReg.unregister();
-				onBeforeDestroyedReg.unregister();
-				onDestroyedReg.unregister();
-			}
+			onInitializedReg.unregister();
+			onBeforeDestroyedReg.unregister();
+			onDestroyedReg.unregister();
+			tbBundle.uninstall();
 		}
 	}
 
@@ -1631,6 +1612,12 @@ public class Test152_3_1_1 extends SlimTestCase {
 		}
 	}
 
+	private void reset(@SuppressWarnings("unchecked") AtomicReference<Deferred<Object[]>> ... refs) {
+		for (AtomicReference<Deferred<Object[]>> ref : refs) {
+			ref.set(new Deferred<Object[]>());
+		}
+	}
+
 	private ServiceTracker<ConfigurationAdmin, ConfigurationAdmin> adminTracker;
 	private ConfigurationAdmin configurationAdmin;
 
diff --git a/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/Test_discoverByBeansXml.java b/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/Test_discoverByBeansXml.java
index 24026be..1296396 100644
--- a/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/Test_discoverByBeansXml.java
+++ b/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/Test_discoverByBeansXml.java
@@ -14,20 +14,19 @@
 
 package org.apache.aries.cdi.test.cases;
 
-import static org.assertj.core.api.Assertions.*;
+import static org.assertj.core.api.Assertions.assertThat;
 
 import java.util.List;
 import java.util.stream.Collectors;
 
-import org.junit.Ignore;
+import org.junit.Test;
 import org.osgi.framework.Bundle;
 import org.osgi.service.cdi.runtime.CDIComponentRuntime;
 import org.osgi.service.cdi.runtime.dto.template.ContainerTemplateDTO;
 
 public class Test_discoverByBeansXml extends SlimTestCase {
 
-	@Ignore("Until we get bnd 4.3.0")
-	//@Test
+	@Test
 	public void componentScopeContext() throws Exception {
 		Bundle tbBundle = installBundle("tb14.jar");
 
diff --git a/cdi-itests/weld-itest.bndrun b/cdi-itests/weld-itest.bndrun
index 45ee863..dd36c60 100644
--- a/cdi-itests/weld-itest.bndrun
+++ b/cdi-itests/weld-itest.bndrun
@@ -16,10 +16,7 @@
 -runrequires: \
 	osgi.identity;filter:='(osgi.identity=javax.ejb-api)',\
 	osgi.identity;filter:='(osgi.identity=javax.transaction-api)',\
-	osgi.identity;filter:='(osgi.identity=org.apache.aries.cdi.weld)',\
-	osgi.identity;filter:='(osgi.identity=org.apache.aries.cdi.itests)',\
-	osgi.identity;filter:='(osgi.identity=org.apache.aries.jndi.core)',\
-	osgi.identity;filter:='(osgi.identity=org.apache.felix.gogo.command)'
+	osgi.identity;filter:='(osgi.identity=org.apache.aries.cdi.weld)'
 
 -runblacklist: \
 	osgi.identity;filter:='(osgi.identity=org.apache.aries.cdi.owb)'