make BeanPropertyTypeTest more stable and useful
Signed-off-by: Raymond Augé <rotty3000@apache.org>
diff --git a/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/BeanPropertyTypeTest.java b/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/BeanPropertyTypeTest.java
index 537c445..f729adc 100644
--- a/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/BeanPropertyTypeTest.java
+++ b/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/BeanPropertyTypeTest.java
@@ -15,14 +15,17 @@
package org.apache.aries.cdi.test.cases;
import static org.assertj.core.api.Assertions.assertThat;
-
-import javax.servlet.ServletContextListener;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
import org.junit.After;
import org.junit.AfterClass;
+import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.osgi.framework.Bundle;
+import org.osgi.service.http.runtime.HttpServiceRuntime;
+import org.osgi.service.http.runtime.dto.ServletContextDTO;
import org.osgi.util.tracker.ServiceTracker;
public class BeanPropertyTypeTest extends AbstractTestCase {
@@ -35,31 +38,61 @@
public static void afterClass() throws Exception {
}
- @Override
- public void setUp() throws Exception {
- }
-
- @After
- @Override
- public void tearDown() throws Exception {
- }
-
@Test
- public void usesMarkerAnnotation() throws Exception {
+ public void beanPropertyAnnotationsWereUsed() throws Exception {
Bundle tbBundle = installBundle("tb13.jar");
try {
getBeanManager(tbBundle);
- ServiceTracker<ServletContextListener, ServletContextListener> oneTracker = track("(objectClass=%s)", ServletContextListener.class.getName());
- oneTracker.open();
- Object service = oneTracker.waitForService(timeout);
+ ServletContextDTO contextDTO = waitFor("customContext");
- assertThat(service).isNotNull();
+ assertThat(contextDTO).isNotNull();
}
finally {
tbBundle.uninstall();
}
}
+ @Before
+ @Override
+ public void setUp() throws Exception {
+ hsrTracker = new ServiceTracker<>(bundleContext, HttpServiceRuntime.class, null);
+
+ hsrTracker.open();
+
+ hsr = hsrTracker.waitForService(timeout);
+
+ assertNotNull(hsr);
+ }
+
+ @After
+ @Override
+ public void tearDown() throws Exception {
+ hsrTracker.close();
+ }
+
+ private ServletContextDTO waitFor(String context) throws InterruptedException {
+ return waitFor(context, 20);
+ }
+
+ private ServletContextDTO waitFor(String context, int intervals) throws InterruptedException {
+ for (int j = intervals; j > 0; j--) {
+ for (ServletContextDTO scDTO : hsr.getRuntimeDTO().servletContextDTOs) {
+ if (scDTO.name.equals(context)) {
+ return scDTO;
+ }
+ }
+
+ Thread.sleep(50);
+ }
+
+ assertTrue(String.format("%s not found in time", context), false);
+
+ return null;
+ }
+
+ private HttpServiceRuntime hsr;
+ private ServiceTracker<HttpServiceRuntime, HttpServiceRuntime> hsrTracker;
+
}