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/11/25 18:43:36 UTC

[aries-cdi] 17/27: test fixes

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

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

commit 1e0219d2496f8ccc9bf603526bc778fcdeae2f01
Author: Raymond Augé <ro...@apache.org>
AuthorDate: Fri Nov 22 16:51:58 2019 -0500

    test fixes
    
    Signed-off-by: Raymond Augé <ro...@apache.org>
---
 .../aries/cdi/test/cases/AbstractTestCase.java     |  4 +-
 .../apache/aries/cdi/test/cases/CdiBeanTests.java  | 23 +++---
 .../aries/cdi/test/cases/ConfigurationTests.java   | 86 ++++++++++++++++------
 .../cdi/test/cases/OSGiBeanDescriptorTests.java    |  3 +-
 4 files changed, 80 insertions(+), 36 deletions(-)

diff --git a/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/AbstractTestCase.java b/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/AbstractTestCase.java
index 7ba6581..4c2fcda 100644
--- a/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/AbstractTestCase.java
+++ b/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/AbstractTestCase.java
@@ -91,7 +91,7 @@ public abstract class AbstractTestCase {
 		runtimeTracker = new ServiceTracker<>(
 				bundleContext, CDIComponentRuntime.class, null);
 		runtimeTracker.open();
-		servicesBundle = installBundle("services-one.jar");
+		servicesBundle = installBundle("services-one.jar", false);
 		servicesBundle.start();
 	}
 
@@ -104,7 +104,7 @@ public abstract class AbstractTestCase {
 	@Before
 	public void setUp() throws Exception {
 		cdiRuntime = runtimeTracker.waitForService(timeout);
-		cdiBundle = installBundle("basic-beans.jar");
+		cdiBundle = installBundle("basic-beans.jar", false);
 		cdiBundle.start();
 	}
 
diff --git a/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/CdiBeanTests.java b/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/CdiBeanTests.java
index debd60a..29e613a 100644
--- a/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/CdiBeanTests.java
+++ b/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/CdiBeanTests.java
@@ -14,7 +14,10 @@
 
 package org.apache.aries.cdi.test.cases;
 
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
 
 import java.util.Map;
 import java.util.Set;
@@ -43,7 +46,7 @@ public class CdiBeanTests extends AbstractTestCase {
 		try (CloseableTracker<BeanService, BeanService> tracker = track(
 			"(&(objectClass=%s)(objectClass=*.%s))",
 			BeanService.class.getName(),
-			"ConstructorInjectedService");) {
+			"ConstructorInjectedService")) {
 
 			BeanService beanService = tracker.waitForService(timeout);
 
@@ -57,7 +60,7 @@ public class CdiBeanTests extends AbstractTestCase {
 		try (CloseableTracker<FieldInjectedReference, FieldInjectedReference> tracker = track(
 			"(&(objectClass=%s)(objectClass=*.%s))",
 			FieldInjectedReference.class.getName(),
-			"FieldInjectedBundleScopedImpl");) {
+			"FieldInjectedBundleScopedImpl")) {
 
 			FieldInjectedReference fieldInjectedReference = tracker.waitForService(timeout);
 
@@ -77,7 +80,7 @@ public class CdiBeanTests extends AbstractTestCase {
 		try (CloseableTracker<FieldInjectedReference, FieldInjectedReference> tracker = track(
 			"(&(objectClass=%s)(objectClass=*.%s))",
 			FieldInjectedReference.class.getName(),
-			"FieldInjectedPrototypeScopedImpl");) {
+			"FieldInjectedPrototypeScopedImpl")) {
 
 			FieldInjectedReference fieldInjectedReference = tracker.waitForService(timeout);
 
@@ -97,7 +100,7 @@ public class CdiBeanTests extends AbstractTestCase {
 		try (CloseableTracker<BeanService, BeanService> tracker = track(
 			"(&(objectClass=%s)(objectClass=*.%s))",
 			BeanService.class.getName(),
-			"FieldInjectedService");) {
+			"FieldInjectedService")) {
 
 			BeanService beanService = tracker.waitForService(timeout);
 
@@ -111,7 +114,7 @@ public class CdiBeanTests extends AbstractTestCase {
 		try (CloseableTracker<BeanService, BeanService> tracker = track(
 			"(&(objectClass=%s)(objectClass=*.%s))",
 			BeanService.class.getName(),
-			"MethodInjectedService");) {
+			"MethodInjectedService")) {
 
 			BeanService beanService = tracker.waitForService(timeout);
 
@@ -140,7 +143,7 @@ public class CdiBeanTests extends AbstractTestCase {
 		try (CloseableTracker<BeanService, BeanService> tracker = track(
 			"(&(objectClass=%s)(objectClass=*.%s))",
 			BeanService.class.getName(),
-			"ServiceWithProperties");) {
+			"ServiceWithProperties")) {
 
 			BeanService beanService = tracker.waitForService(timeout);
 
@@ -217,7 +220,7 @@ public class CdiBeanTests extends AbstractTestCase {
 		try (CloseableTracker<BeanService, BeanService> tracker = track(
 			"(&(objectClass=%s)(objectClass=*.%s))",
 			BeanService.class.getName(),
-			"Instance_ServiceProperties");) {
+			"Instance_ServiceProperties")) {
 
 			BeanService beanService = tracker.waitForService(timeout);
 
@@ -235,7 +238,7 @@ public class CdiBeanTests extends AbstractTestCase {
 		try (CloseableTracker<BeanService, BeanService> tracker = track(
 			"(&(objectClass=%s)(objectClass=*.%s))",
 			BeanService.class.getName(),
-			"Instance_ServiceReference");) {
+			"Instance_ServiceReference")) {
 
 			BeanService beanService = tracker.waitForService(timeout);
 
@@ -252,7 +255,7 @@ public class CdiBeanTests extends AbstractTestCase {
 		try (CloseableTracker<BeanService, BeanService> tracker = track(
 			"(&(objectClass=%s)(objectClass=*.%s))",
 			BeanService.class.getName(),
-			"Instance_Optional");) {
+			"Instance_Optional")) {
 
 			BeanService beanService = tracker.waitForService(timeout);
 
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 93272e0..c72a161 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
@@ -14,6 +14,7 @@
 
 package org.apache.aries.cdi.test.cases;
 
+import static java.lang.Thread.sleep;
 import static org.junit.Assert.*;
 
 import java.util.Dictionary;
@@ -112,29 +113,40 @@ public class ConfigurationTests extends AbstractTestCase {
 			p2.put("ports", new int[] {80});
 			configurationB.update(p2);
 
-			Thread.sleep(200); // give it a few cycles to make sure the configuration update has gone through
-
-			stA = new ServiceTracker<BeanService, BeanService>(
-				bundleContext, bundleContext.createFilter(
+			stA = new ServiceTracker<>(
+					bundleContext, bundleContext.createFilter(
 					"(&(objectClass=org.apache.aries.cdi.test.interfaces.BeanService)(bean=A))"), null);
 			stA.open(true);
 
 			BeanService<Callable<int[]>> beanService = stA.waitForService(timeout);
 
 			assertNotNull(beanService);
-			assertEquals("blue", beanService.doSomething());
-			assertArrayEquals(new int[] {12, 4567}, beanService.get().call());
 
-			stB = new ServiceTracker<BeanService, BeanService>(
-				bundleContext, bundleContext.createFilter(
+			assertWithRetries(() -> {
+				assertEquals("blue", beanService.doSomething());
+				try {
+					assertArrayEquals(new int[]{12, 4567}, beanService.get().call());
+				} catch (final Exception e) {
+					fail(e.getMessage());
+				}
+			});
+
+			stB = new ServiceTracker<>(
+					bundleContext, bundleContext.createFilter(
 					"(&(objectClass=org.apache.aries.cdi.test.interfaces.BeanService)(bean=B))"), null);
 			stB.open(true);
 
-			beanService = stB.waitForService(timeout);
+			final BeanService<Callable<int[]>> beanServiceB = stB.waitForService(timeout);
+			assertNotNull(beanServiceB);
 
-			assertNotNull(beanService);
-			assertEquals("green", beanService.doSomething());
-			assertArrayEquals(new int[] {80}, beanService.get().call());
+			assertWithRetries(() -> {
+				assertEquals("green", beanServiceB.doSomething());
+				try {
+					assertArrayEquals(new int[]{80}, beanServiceB.get().call());
+				} catch (final Exception e) {
+					fail(e.getMessage());
+				}
+			});
 		}
 		finally {
 			if (configurationA != null) {
@@ -163,6 +175,22 @@ public class ConfigurationTests extends AbstractTestCase {
 		}
 	}
 
+	private void assertWithRetries(final Runnable runnable) throws Exception {
+		int retries = 50;
+		for (int i = 0; i < retries; i++) { // can take some time to let configuration listener get the event and update the bean
+			try {
+				runnable.run();
+				break;
+			} catch (final AssertionError ae) {
+				retries--;
+				if (retries == 0) {
+					throw ae;
+				}
+				sleep(200);
+			}
+		}
+	}
+
 	@Test
 	@SuppressWarnings({ "rawtypes", "unchecked" })
 	public void testOptionalConfiguration() throws Exception {
@@ -192,29 +220,41 @@ public class ConfigurationTests extends AbstractTestCase {
 			configurationC.update(properties);
 
 			stC.close();
-			stC = new ServiceTracker<BeanService, BeanService>(
-				bundleContext, bundleContext.createFilter(
+			stC = new ServiceTracker<>(
+					bundleContext, bundleContext.createFilter(
 					"(&(objectClass=org.apache.aries.cdi.test.interfaces.BeanService)(bean=C)(ports=12))"), null);
 			stC.open(true);
 
-			beanService = stC.waitForService(timeout);
+			final BeanService<Callable<int[]>> beanServiceC = stC.waitForService(timeout);
 
-			assertNotNull(beanService);
-			assertEquals("blue", beanService.doSomething());
-			assertArrayEquals(new int[] {12, 4567}, beanService.get().call());
+			assertNotNull(beanServiceC);
+			assertWithRetries(() -> {
+				assertEquals("blue", beanServiceC.doSomething());
+				try {
+					assertArrayEquals(new int[]{12, 4567}, beanServiceC.get().call());
+				} catch (final Exception e) {
+					fail(e.getMessage());
+				}
+			});
 
 			configurationC.delete();
 
 			stC.close();
-			stC = new ServiceTracker<BeanService, BeanService>(
-				bundleContext, bundleContext.createFilter(
+			stC = new ServiceTracker<>(
+					bundleContext, bundleContext.createFilter(
 					"(&(objectClass=org.apache.aries.cdi.test.interfaces.BeanService)(bean=C)(!(ports=*)))"), null);
 			stC.open(true);
-			beanService = stC.waitForService(timeout);
+			final BeanService<Callable<int[]>> beanServiceC2 = stC.waitForService(timeout);
 
 			assertNotNull(beanService);
-			assertEquals("blue", beanService.doSomething());
-			assertArrayEquals(new int[] {35777}, beanService.get().call());
+			assertWithRetries(() -> {
+				assertEquals("blue", beanServiceC2.doSomething());
+				try {
+					assertArrayEquals(new int[] {35777}, beanServiceC2.get().call());
+				} catch (final Exception e) {
+					fail(e.getMessage());
+				}
+			});
 		}
 		finally {
 			if (configurationC != null) {
diff --git a/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/OSGiBeanDescriptorTests.java b/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/OSGiBeanDescriptorTests.java
index 9446b0e..c8d8233 100644
--- a/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/OSGiBeanDescriptorTests.java
+++ b/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/OSGiBeanDescriptorTests.java
@@ -14,7 +14,8 @@
 
 package org.apache.aries.cdi.test.cases;
 
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
 
 import java.util.Set;