You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by cz...@apache.org on 2015/12/29 12:45:31 UTC
svn commit: r1722110 - in /sling/trunk/bundles/extensions/event: ./
src/main/java/org/apache/sling/event/impl/support/
src/test/java/org/apache/sling/event/impl/
src/test/java/org/apache/sling/event/impl/jobs/config/
src/test/java/org/apache/sling/even...
Author: cziegeler
Date: Tue Dec 29 11:45:31 2015
New Revision: 1722110
URL: http://svn.apache.org/viewvc?rev=1722110&view=rev
Log:
Clean up test dependencies and wait for service registrations to propagate
Added:
sling/trunk/bundles/extensions/event/src/test/java/org/apache/sling/event/impl/TestUtil.java (with props)
Modified:
sling/trunk/bundles/extensions/event/pom.xml
sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/support/TopicMatcherHelper.java
sling/trunk/bundles/extensions/event/src/test/java/org/apache/sling/event/impl/jobs/config/JobManagerConfigurationTest.java
sling/trunk/bundles/extensions/event/src/test/java/org/apache/sling/event/impl/jobs/jmx/AllJobStatisticsMBeanTest.java
sling/trunk/bundles/extensions/event/src/test/java/org/apache/sling/event/it/AbstractJobHandlingTest.java
sling/trunk/bundles/extensions/event/src/test/java/org/apache/sling/event/it/TopicMatchingTest.java
Modified: sling/trunk/bundles/extensions/event/pom.xml
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/event/pom.xml?rev=1722110&r1=1722109&r2=1722110&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/event/pom.xml (original)
+++ sling/trunk/bundles/extensions/event/pom.xml Tue Dec 29 11:45:31 2015
@@ -46,7 +46,7 @@
<site.jira.version.id>12315369</site.jira.version.id>
<sling.java.version>7</sling.java.version>
<exam.version>4.4.0</exam.version>
- <url.version>2.4.3</url.version>
+ <url.version>2.4.5</url.version>
<bundle.build.dir>${basedir}/target</bundle.build.dir>
<bundle.file.name>${bundle.build.dir}/${project.build.finalName}.jar</bundle.file.name>
<min.port>37000</min.port>
@@ -229,8 +229,9 @@
</dependency>
<dependency>
<groupId>org.osgi</groupId>
- <artifactId>org.osgi.core</artifactId>
- <version>4.2.0</version>
+ <artifactId>osgi.core</artifactId>
+ <version>6.0.0</version>
+ <scope>provided</scope>
</dependency>
<dependency>
<groupId>org.osgi</groupId>
@@ -286,32 +287,15 @@
</dependency>
<!-- Testing -->
<dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>4.12</version>
- </dependency>
- <dependency>
- <groupId>junit-addons</groupId>
- <artifactId>junit-addons</artifactId>
- <version>1.4</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.jmock</groupId>
- <artifactId>jmock-junit4</artifactId>
- <version>2.6.0</version>
- </dependency>
- <dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-all</artifactId>
- <version>1.9.5</version>
+ <version>1.10.19</version>
<scope>test</scope>
</dependency>
-
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.testing.tools</artifactId>
@@ -321,7 +305,7 @@
<dependency>
<groupId>org.ops4j.pax.exam</groupId>
- <artifactId>pax-exam-container-forked</artifactId>
+ <artifactId>pax-exam-container-native</artifactId>
<version>${exam.version}</version>
<scope>test</scope>
</dependency>
@@ -353,20 +337,6 @@
<version>5.4.0</version>
<scope>test</scope>
</dependency>
-
- <dependency>
- <groupId>ch.qos.logback</groupId>
- <artifactId>logback-core</artifactId>
- <version>0.9.20</version>
- <scope>test</scope>
- </dependency>
-
- <dependency>
- <groupId>ch.qos.logback</groupId>
- <artifactId>logback-classic</artifactId>
- <version>0.9.20</version>
- <scope>test</scope>
- </dependency>
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.launchpad.api</artifactId>
@@ -374,17 +344,10 @@
<scope>test</scope>
</dependency>
<dependency>
- <groupId>org.apache.sling</groupId>
- <artifactId>org.apache.sling.testing.resourceresolver-mock</artifactId>
- <version>0.1.0</version>
- <scope>test</scope>
- </dependency>
- <dependency>
<groupId>javax.inject</groupId>
<artifactId>javax.inject</artifactId>
<version>1</version>
<scope>test</scope>
</dependency>
-
</dependencies>
</project>
Modified: sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/support/TopicMatcherHelper.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/support/TopicMatcherHelper.java?rev=1722110&r1=1722109&r2=1722110&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/support/TopicMatcherHelper.java (original)
+++ sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/support/TopicMatcherHelper.java Tue Dec 29 11:45:31 2015
@@ -62,7 +62,7 @@ public abstract class TopicMatcherHelper
}
}
matchers = newMatchers;
- }
+ }
return matchers;
}
Added: sling/trunk/bundles/extensions/event/src/test/java/org/apache/sling/event/impl/TestUtil.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/event/src/test/java/org/apache/sling/event/impl/TestUtil.java?rev=1722110&view=auto
==============================================================================
--- sling/trunk/bundles/extensions/event/src/test/java/org/apache/sling/event/impl/TestUtil.java (added)
+++ sling/trunk/bundles/extensions/event/src/test/java/org/apache/sling/event/impl/TestUtil.java Tue Dec 29 11:45:31 2015
@@ -0,0 +1,53 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.sling.event.impl;
+
+import java.lang.reflect.Field;
+
+public class TestUtil {
+
+ private static Object getSetField(final Object obj, final String fieldName, final boolean isGet, final Object value) {
+ Class<?> clazz = obj.getClass();
+ while ( clazz != null ) {
+ try {
+ final Field field = clazz.getDeclaredField(fieldName);
+ field.setAccessible(true);
+
+ if ( isGet ) {
+ return field.get(obj);
+ } else {
+ field.set(obj, value);
+ return null;
+ }
+ } catch ( final Exception ignore ) {
+ // ignore
+ }
+ clazz = clazz.getSuperclass();
+ }
+ throw new RuntimeException("Field " + fieldName + " not found on object " + obj);
+ }
+
+ public static void setFieldValue(final Object obj, final String fieldName, final Object value) {
+ getSetField(obj, fieldName, false, value);
+ }
+
+ public static Object getFieldValue(final Object obj, final String fieldName) {
+ return getSetField(obj, fieldName, true, null);
+ }
+}
Propchange: sling/trunk/bundles/extensions/event/src/test/java/org/apache/sling/event/impl/TestUtil.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: sling/trunk/bundles/extensions/event/src/test/java/org/apache/sling/event/impl/TestUtil.java
------------------------------------------------------------------------------
svn:keywords = author date id revision rev url
Modified: sling/trunk/bundles/extensions/event/src/test/java/org/apache/sling/event/impl/jobs/config/JobManagerConfigurationTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/event/src/test/java/org/apache/sling/event/impl/jobs/config/JobManagerConfigurationTest.java?rev=1722110&r1=1722109&r2=1722110&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/event/src/test/java/org/apache/sling/event/impl/jobs/config/JobManagerConfigurationTest.java (original)
+++ sling/trunk/bundles/extensions/event/src/test/java/org/apache/sling/event/impl/jobs/config/JobManagerConfigurationTest.java Tue Dec 29 11:45:31 2015
@@ -41,11 +41,10 @@ import org.apache.sling.discovery.Cluste
import org.apache.sling.discovery.InstanceDescription;
import org.apache.sling.discovery.TopologyEvent;
import org.apache.sling.discovery.TopologyView;
+import org.apache.sling.event.impl.TestUtil;
import org.junit.Test;
import org.mockito.Mockito;
-import junitx.util.PrivateAccessor;
-
public class JobManagerConfigurationTest {
private TopologyView createView() {
@@ -205,8 +204,8 @@ public class JobManagerConfigurationTest
// add change listener and verify
ccl.init(1);
final JobManagerConfiguration config = new JobManagerConfiguration();
- PrivateAccessor.setField(config, "scheduler", scheduler);
- ((AtomicBoolean)PrivateAccessor.getField(config, "active")).set(true);
+ TestUtil.setFieldValue(config, "scheduler", scheduler);
+ ((AtomicBoolean)TestUtil.getFieldValue(config, "active")).set(true);
config.addListener(ccl);
ccl.await();
Modified: sling/trunk/bundles/extensions/event/src/test/java/org/apache/sling/event/impl/jobs/jmx/AllJobStatisticsMBeanTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/event/src/test/java/org/apache/sling/event/impl/jobs/jmx/AllJobStatisticsMBeanTest.java?rev=1722110&r1=1722109&r2=1722110&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/event/src/test/java/org/apache/sling/event/impl/jobs/jmx/AllJobStatisticsMBeanTest.java (original)
+++ sling/trunk/bundles/extensions/event/src/test/java/org/apache/sling/event/impl/jobs/jmx/AllJobStatisticsMBeanTest.java Tue Dec 29 11:45:31 2015
@@ -19,8 +19,7 @@ package org.apache.sling.event.impl.jobs
import java.util.Date;
-import junitx.util.PrivateAccessor;
-
+import org.apache.sling.event.impl.TestUtil;
import org.apache.sling.event.jobs.JobManager;
import org.junit.Assert;
import org.junit.Before;
@@ -43,7 +42,7 @@ public class AllJobStatisticsMBeanTest {
@Before
public void setup() throws NoSuchFieldException {
mbean = new AllJobStatisticsMBean();
- PrivateAccessor.setField(mbean, "jobManager", jobManager);
+ TestUtil.setFieldValue(mbean, "jobManager", jobManager);
seed = System.currentTimeMillis();
Mockito.when(jobManager.getStatistics()).thenReturn(
new DummyStatistics(seed));
Modified: sling/trunk/bundles/extensions/event/src/test/java/org/apache/sling/event/it/AbstractJobHandlingTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/event/src/test/java/org/apache/sling/event/it/AbstractJobHandlingTest.java?rev=1722110&r1=1722109&r2=1722110&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/event/src/test/java/org/apache/sling/event/it/AbstractJobHandlingTest.java (original)
+++ sling/trunk/bundles/extensions/event/src/test/java/org/apache/sling/event/it/AbstractJobHandlingTest.java Tue Dec 29 11:45:31 2015
@@ -38,6 +38,7 @@ import org.apache.sling.api.resource.Per
import org.apache.sling.api.resource.Resource;
import org.apache.sling.api.resource.ResourceResolver;
import org.apache.sling.api.resource.ResourceResolverFactory;
+import org.apache.sling.discovery.PropertyProvider;
import org.apache.sling.event.impl.jobs.config.JobManagerConfiguration;
import org.apache.sling.event.jobs.JobManager;
import org.apache.sling.event.jobs.consumer.JobConsumer;
@@ -48,6 +49,7 @@ import org.ops4j.pax.exam.Configuration;
import org.ops4j.pax.exam.CoreOptions;
import org.ops4j.pax.exam.Option;
import org.osgi.framework.BundleContext;
+import org.osgi.framework.InvalidSyntaxException;
import org.osgi.framework.ServiceReference;
import org.osgi.framework.ServiceRegistration;
import org.osgi.service.cm.ConfigurationAdmin;
@@ -96,22 +98,24 @@ public abstract class AbstractJobHandlin
),
when( System.getProperty(PORT_CONFIG) != null ).useOptions(
systemProperty(PORT_CONFIG).value(System.getProperty(PORT_CONFIG))),
- mavenBundle("org.apache.sling", "org.apache.sling.fragment.xml", "1.0.2"),
- mavenBundle("org.apache.sling", "org.apache.sling.fragment.transaction", "1.0.0"),
- mavenBundle("org.apache.sling", "org.apache.sling.fragment.activation", "1.0.2"),
- mavenBundle("org.apache.sling", "org.apache.sling.fragment.ws", "1.0.2"),
-
- mavenBundle("org.apache.sling", "org.apache.sling.commons.log", "4.0.0"),
- mavenBundle("org.apache.sling", "org.apache.sling.commons.logservice", "1.0.2"),
-
- mavenBundle("org.slf4j", "slf4j-api", "1.6.4"),
- mavenBundle("org.slf4j", "jcl-over-slf4j", "1.6.4"),
- mavenBundle("org.slf4j", "log4j-over-slf4j", "1.6.4"),
+ systemProperty("pax.exam.osgi.unresolved.fail").value("true"),
- mavenBundle("commons-io", "commons-io", "1.4"),
+ // logging
+ systemProperty("pax.exam.logging").value("none"),
+ mavenBundle("org.apache.sling", "org.apache.sling.commons.log", "4.0.6"),
+ mavenBundle("org.apache.sling", "org.apache.sling.commons.logservice", "1.0.6"),
+ mavenBundle("org.slf4j", "slf4j-api", "1.7.13"),
+ mavenBundle("org.slf4j", "jcl-over-slf4j", "1.7.13"),
+ mavenBundle("org.slf4j", "log4j-over-slf4j", "1.7.13"),
+
+ // launchpad api and settings
+ mavenBundle("org.apache.sling", "org.apache.sling.launchpad.api", "1.1.0"),
+ mavenBundle("org.apache.sling", "org.apache.sling.settings", "1.3.4"),
+
+ mavenBundle("commons-io", "commons-io", "2.4"),
mavenBundle("commons-fileupload", "commons-fileupload", "1.3.1"),
- mavenBundle("commons-collections", "commons-collections", "3.2.1"),
- mavenBundle("commons-codec", "commons-codec", "1.9"),
+ mavenBundle("commons-collections", "commons-collections", "3.2.2"),
+ mavenBundle("commons-codec", "commons-codec", "1.10"),
mavenBundle("commons-lang", "commons-lang", "2.6"),
mavenBundle("commons-pool", "commons-pool", "1.6"),
@@ -121,29 +125,27 @@ public abstract class AbstractJobHandlin
mavenBundle("org.apache.tika", "tika-core", "1.9"),
mavenBundle("org.apache.tika", "tika-bundle", "1.9"),
- mavenBundle("org.apache.felix", "org.apache.felix.http.servlet-api", "1.0.0"),
- mavenBundle("org.apache.felix", "org.apache.felix.http.api", "2.3.0"),
- //mavenBundle("org.apache.felix", "org.apache.felix.http.jetty", "2.3.0"),
- mavenBundle("org.apache.felix", "org.apache.felix.eventadmin", "1.4.2"),
- mavenBundle("org.apache.felix", "org.apache.felix.scr", "1.8.2"),
- mavenBundle("org.apache.felix", "org.apache.felix.configadmin", "1.8.0"),
+ // infrastructure
+ mavenBundle("org.apache.felix", "org.apache.felix.http.servlet-api", "1.1.2"),
+ mavenBundle("org.apache.felix", "org.apache.felix.eventadmin", "1.4.4"),
+ mavenBundle("org.apache.felix", "org.apache.felix.scr", "2.0.2"),
+ mavenBundle("org.apache.felix", "org.apache.felix.configadmin", "1.8.8"),
mavenBundle("org.apache.felix", "org.apache.felix.inventory", "1.0.4"),
-// mavenBundle("org.apache.felix", "org.apache.felix.metatype", "1.0.6"),
+ mavenBundle("org.apache.felix", "org.apache.felix.metatype", "1.1.2"),
- mavenBundle("org.apache.sling", "org.apache.sling.commons.osgi", "2.2.0"),
- mavenBundle("org.apache.sling", "org.apache.sling.commons.json", "2.0.6"),
- mavenBundle("org.apache.sling", "org.apache.sling.commons.mime", "2.1.4"),
+ // sling
+ mavenBundle("org.apache.sling", "org.apache.sling.commons.osgi", "2.3.0"),
+ mavenBundle("org.apache.sling", "org.apache.sling.commons.json", "2.0.16"),
+ mavenBundle("org.apache.sling", "org.apache.sling.commons.mime", "2.1.8"),
mavenBundle("org.apache.sling", "org.apache.sling.commons.classloader", "1.3.2"),
- mavenBundle("org.apache.sling", "org.apache.sling.commons.scheduler", "2.4.4"),
- mavenBundle("org.apache.sling", "org.apache.sling.commons.threads", "3.2.0"),
+ mavenBundle("org.apache.sling", "org.apache.sling.commons.scheduler", "2.4.14"),
+ mavenBundle("org.apache.sling", "org.apache.sling.commons.threads", "3.2.2"),
- mavenBundle("org.apache.sling", "org.apache.sling.launchpad.api", "1.1.0"),
- mavenBundle("org.apache.sling", "org.apache.sling.auth.core", "1.3.0"),
+ mavenBundle("org.apache.sling", "org.apache.sling.auth.core", "1.3.12"),
mavenBundle("org.apache.sling", "org.apache.sling.discovery.api", "1.0.2"),
mavenBundle("org.apache.sling", "org.apache.sling.discovery.standalone", "1.0.0"),
mavenBundle("org.apache.sling", "org.apache.sling.api", "2.8.0"),
- mavenBundle("org.apache.sling", "org.apache.sling.settings", "1.3.4"),
mavenBundle("org.apache.sling", "org.apache.sling.resourceresolver", "1.1.6"),
mavenBundle("org.apache.sling", "org.apache.sling.adapter", "2.1.2"),
mavenBundle("org.apache.sling", "org.apache.sling.jcr.resource", "2.3.12"),
@@ -174,8 +176,22 @@ public abstract class AbstractJobHandlin
}
protected JobManager getJobManager() {
- final ServiceReference sr = this.bc.getServiceReference(JobManager.class.getName());
- return (JobManager)this.bc.getService(sr);
+ JobManager result = null;
+ int count = 0;
+ do {
+ final ServiceReference sr = this.bc.getServiceReference(JobManager.class.getName());
+ if ( sr != null ) {
+ result = (JobManager)this.bc.getService(sr);
+ } else {
+ count++;
+ if ( count == 10 ) {
+ break;
+ }
+ sleep(500);
+ }
+
+ } while ( result == null );
+ return result;
}
protected void sleep(final long time) {
@@ -264,15 +280,42 @@ public abstract class AbstractJobHandlin
return reg;
}
+ protected long getConsumerChangeCount() {
+ long result = -1;
+ try {
+ final ServiceReference[] refs = this.bc.getServiceReferences(PropertyProvider.class.getName(), "(changeCount=*)");
+ if ( refs != null && refs.length > 0 ) {
+ result = (Long)refs[0].getProperty("changeCount");
+ }
+ } catch ( final InvalidSyntaxException ignore ) {
+ // ignore
+ }
+ return result;
+ }
+
+ protected void waitConsumerChangeCount(final long minimum) {
+ do {
+ final long cc = getConsumerChangeCount();
+ if ( cc >= minimum ) {
+ // we need to wait for the topology events (TODO)
+ sleep(200);
+ return;
+ }
+ sleep(50);
+ } while ( true );
+ }
+
/**
* Helper method to register a job consumer
*/
protected ServiceRegistration registerJobConsumer(final String topic,
final JobConsumer handler) {
+ long cc = this.getConsumerChangeCount();
final Dictionary<String, Object> props = new Hashtable<String, Object>();
props.put(JobConsumer.PROPERTY_TOPICS, topic);
final ServiceRegistration reg = this.bc.registerService(JobConsumer.class.getName(),
handler, props);
+ this.waitConsumerChangeCount(cc + 1);
return reg;
}
@@ -281,10 +324,12 @@ public abstract class AbstractJobHandlin
*/
protected ServiceRegistration registerJobExecutor(final String topic,
final JobExecutor handler) {
+ long cc = this.getConsumerChangeCount();
final Dictionary<String, Object> props = new Hashtable<String, Object>();
props.put(JobConsumer.PROPERTY_TOPICS, topic);
final ServiceRegistration reg = this.bc.registerService(JobExecutor.class.getName(),
handler, props);
+ this.waitConsumerChangeCount(cc + 1);
return reg;
}
Modified: sling/trunk/bundles/extensions/event/src/test/java/org/apache/sling/event/it/TopicMatchingTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/event/src/test/java/org/apache/sling/event/it/TopicMatchingTest.java?rev=1722110&r1=1722109&r2=1722110&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/event/src/test/java/org/apache/sling/event/it/TopicMatchingTest.java (original)
+++ sling/trunk/bundles/extensions/event/src/test/java/org/apache/sling/event/it/TopicMatchingTest.java Tue Dec 29 11:45:31 2015
@@ -19,8 +19,8 @@
package org.apache.sling.event.it;
import java.io.IOException;
-import java.util.concurrent.atomic.AtomicInteger;
+import org.apache.sling.event.impl.Barrier;
import org.apache.sling.event.jobs.Job;
import org.apache.sling.event.jobs.NotificationConstants;
import org.apache.sling.event.jobs.consumer.JobExecutionContext;
@@ -56,11 +56,11 @@ public class TopicMatchingTest extends A
}
/**
- * Test simple pattern matching
+ * Test simple pattern matching /*
*/
@Test(timeout = DEFAULT_TEST_TIMEOUT)
public void testSimpleMatching() throws Exception {
- final AtomicInteger finishedCount = new AtomicInteger();
+ final Barrier barrier = new Barrier(2);
final ServiceRegistration reg = this.registerJobExecutor("sling/test/*",
new JobExecutor() {
@@ -75,15 +75,13 @@ public class TopicMatchingTest extends A
@Override
public void handleEvent(final Event event) {
- finishedCount.incrementAndGet();
+ barrier.block();
}
});
try {
this.getJobManager().addJob(TOPIC, null);
- while ( finishedCount.get() == 0 ) {
- this.sleep(10);
- }
+ barrier.block();
} finally {
reg.unregister();
eventHandler.unregister();
@@ -91,11 +89,11 @@ public class TopicMatchingTest extends A
}
/**
- * Test deep pattern matching
+ * Test deep pattern matching /**
*/
@Test(timeout = DEFAULT_TEST_TIMEOUT)
public void testDeepMatching() throws Exception {
- final AtomicInteger finishedCount = new AtomicInteger();
+ final Barrier barrier = new Barrier(2);
final ServiceRegistration reg = this.registerJobExecutor("sling/**",
new JobExecutor() {
@@ -110,15 +108,13 @@ public class TopicMatchingTest extends A
@Override
public void handleEvent(final Event event) {
- finishedCount.incrementAndGet();
+ barrier.block();
}
});
try {
this.getJobManager().addJob(TOPIC, null);
- while ( finishedCount.get() == 0 ) {
- this.sleep(10);
- }
+ barrier.block();
} finally {
reg.unregister();
eventHandler.unregister();
@@ -130,16 +126,16 @@ public class TopicMatchingTest extends A
*/
@Test(timeout = DEFAULT_TEST_TIMEOUT)
public void testOrdering() throws Exception {
- final AtomicInteger count1 = new AtomicInteger();
- final AtomicInteger count2 = new AtomicInteger();
- final AtomicInteger count3 = new AtomicInteger();
+ final Barrier barrier1 = new Barrier(2);
+ final Barrier barrier2 = new Barrier(2);
+ final Barrier barrier3 = new Barrier(2);
final ServiceRegistration reg1 = this.registerJobExecutor("sling/**",
new JobExecutor() {
@Override
public JobExecutionResult process(final Job job, final JobExecutionContext context) {
- count1.incrementAndGet();
+ barrier1.block();
return context.result().succeeded();
}
});
@@ -148,7 +144,7 @@ public class TopicMatchingTest extends A
@Override
public JobExecutionResult process(final Job job, final JobExecutionContext context) {
- count2.incrementAndGet();
+ barrier2.block();
return context.result().succeeded();
}
});
@@ -157,30 +153,28 @@ public class TopicMatchingTest extends A
@Override
public JobExecutionResult process(final Job job, final JobExecutionContext context) {
- count3.incrementAndGet();
+ barrier3.block();
return context.result().succeeded();
}
});
// first test, all three registered, reg3 should get the precedence
this.getJobManager().addJob(TOPIC, null);
- while ( count3.get() != 1 ) {
- this.sleep(10);
- }
+ barrier3.block();
// second test, unregister reg3, now it should be reg2
+ long cc = this.getConsumerChangeCount();
reg3.unregister();
+ this.waitConsumerChangeCount(cc + 1);
this.getJobManager().addJob(TOPIC, null);
- while ( count2.get() != 1 ) {
- this.sleep(10);
- }
+ barrier2.block();
// third test, unregister reg2, reg1 is now the only one
+ cc = this.getConsumerChangeCount();
reg2.unregister();
+ this.waitConsumerChangeCount(cc + 1);
this.getJobManager().addJob(TOPIC, null);
- while ( count1.get() != 1 ) {
- this.sleep(10);
- }
+ barrier1.block();
reg1.unregister();
}
}