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 2016/03/09 07:37:28 UTC
svn commit: r1734190 - in
/sling/trunk/bundles/extensions/event/src/test/java/org/apache/sling/event/it:
ClassloadingTest.java Conditions.java
Author: cziegeler
Date: Wed Mar 9 06:37:27 2016
New Revision: 1734190
URL: http://svn.apache.org/viewvc?rev=1734190&view=rev
Log:
Use latch instead of polling
Removed:
sling/trunk/bundles/extensions/event/src/test/java/org/apache/sling/event/it/Conditions.java
Modified:
sling/trunk/bundles/extensions/event/src/test/java/org/apache/sling/event/it/ClassloadingTest.java
Modified: sling/trunk/bundles/extensions/event/src/test/java/org/apache/sling/event/it/ClassloadingTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/event/src/test/java/org/apache/sling/event/it/ClassloadingTest.java?rev=1734190&r1=1734189&r2=1734190&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/event/src/test/java/org/apache/sling/event/it/ClassloadingTest.java (original)
+++ sling/trunk/bundles/extensions/event/src/test/java/org/apache/sling/event/it/ClassloadingTest.java Wed Mar 9 06:37:27 2016
@@ -19,6 +19,7 @@
package org.apache.sling.event.it;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import java.io.IOException;
@@ -30,6 +31,8 @@ import java.util.HashMap;
import java.util.Hashtable;
import java.util.List;
import java.util.Map;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
import org.apache.sling.event.impl.jobs.config.ConfigurationConstants;
@@ -82,6 +85,7 @@ public class ClassloadingTest extends Ab
public void testSimpleClassloading() throws Exception {
final AtomicInteger processedJobsCount = new AtomicInteger(0);
final List<Event> finishedEvents = Collections.synchronizedList(new ArrayList<Event>());
+ final CountDownLatch latch = new CountDownLatch(1);
this.registerJobConsumer(TOPIC,
new JobConsumer() {
@Override
@@ -96,6 +100,7 @@ public class ClassloadingTest extends Ab
@Override
public void handleEvent(Event event) {
finishedEvents.add(event);
+ latch.countDown();
}
});
final JobManager jobManager = this.getJobManager();
@@ -117,39 +122,21 @@ public class ClassloadingTest extends Ab
props.put("map", map);
final String jobId = jobManager.addJob(TOPIC, props).getId();
-
- new RetryLoop(Conditions.collectionIsNotEmptyCondition(finishedEvents,
- "Waiting for finishedEvents to have at least one element"), 5, 50);
-
- // no jobs queued, none processed and no available
- new RetryLoop(new RetryLoop.Condition() {
-
- @Override
- public String getDescription() {
- return "Waiting for job to be processed. Conditions: queuedJobs=" + jobManager.getStatistics().getNumberOfQueuedJobs() +
- ", jobsCount=" + processedJobsCount + ", findJobs=" +
- jobManager.findJobs(JobManager.QueryType.ALL, TOPIC, -1, (Map<String, Object>[]) null)
- .size();
- }
-
- @Override
- public boolean isTrue() throws Exception {
- return jobManager.getStatistics().getNumberOfQueuedJobs() == 0
- && processedJobsCount.get() == 1
- && jobManager.findJobs(JobManager.QueryType.ALL, TOPIC, -1, (Map<String, Object>[]) null)
- .size() == 0;
- }
- }, CONDITION_TIMEOUT_SECONDS, CONDITION_INTERVAL_MILLIS);
-
- final String jobTopic = (String)finishedEvents.get(0).getProperty(NotificationConstants.NOTIFICATION_PROPERTY_JOB_TOPIC);
- assertNotNull(jobTopic);
- assertEquals("Hello", finishedEvents.get(0).getProperty("string"));
- assertEquals(new Integer(5), Integer.valueOf(finishedEvents.get(0).getProperty("int").toString()));
- assertEquals(new Long(7), Long.valueOf(finishedEvents.get(0).getProperty("long").toString()));
- assertEquals(list, finishedEvents.get(0).getProperty("list"));
- assertEquals(map, finishedEvents.get(0).getProperty("map"));
-
- jobManager.removeJobById(jobId);
+ try {
+ latch.await(5, TimeUnit.SECONDS);
+ assertFalse("At least one finished job", finishedEvents.isEmpty());
+ assertEquals(1, processedJobsCount.get());
+
+ final String jobTopic = (String)finishedEvents.get(0).getProperty(NotificationConstants.NOTIFICATION_PROPERTY_JOB_TOPIC);
+ assertNotNull(jobTopic);
+ assertEquals("Hello", finishedEvents.get(0).getProperty("string"));
+ assertEquals(new Integer(5), Integer.valueOf(finishedEvents.get(0).getProperty("int").toString()));
+ assertEquals(new Long(7), Long.valueOf(finishedEvents.get(0).getProperty("long").toString()));
+ assertEquals(list, finishedEvents.get(0).getProperty("list"));
+ assertEquals(map, finishedEvents.get(0).getProperty("map"));
+ } finally {
+ jobManager.removeJobById(jobId);
+ }
}
@Test(timeout = DEFAULT_TEST_TIMEOUT)
@@ -185,35 +172,37 @@ public class ClassloadingTest extends Ab
final String id = jobManager.addJob(TOPIC + "/failed", props).getId();
- // wait until the conditions are met
- new RetryLoop(new RetryLoop.Condition() {
-
- @Override
- public boolean isTrue() throws Exception {
- return failedJobsCount.get() == 0
- && finishedEvents.size() == 0
- && jobManager.findJobs(JobManager.QueryType.ALL, TOPIC + "/failed", -1,
- (Map<String, Object>[]) null).size() == 1
- && jobManager.getStatistics().getNumberOfQueuedJobs() == 0
- && jobManager.getStatistics().getNumberOfActiveJobs() == 0;
- }
-
- @Override
- public String getDescription() {
- return "Waiting for job failure to be recorded. Conditions " +
- "faildJobsCount=" + failedJobsCount.get() +
- ", finishedEvents=" + finishedEvents.size() +
- ", findJobs= " + jobManager.findJobs(JobManager.QueryType.ALL, TOPIC + "/failed", -1,
- (Map<String, Object>[]) null).size()
- +", queuedJobs=" + jobManager.getStatistics().getNumberOfQueuedJobs()
- +", activeJobs=" + jobManager.getStatistics().getNumberOfActiveJobs();
- }
- }, CONDITION_TIMEOUT_SECONDS, CONDITION_INTERVAL_MILLIS);
-
- jobManager.removeJobById(id); // moves the job to the history section
- assertEquals(0, jobManager.findJobs(JobManager.QueryType.ALL, TOPIC + "/failed", -1, (Map<String, Object>[])null).size());
-
- jobManager.removeJobById(id); // removes the job permanently
+ try {
+ // wait until the conditions are met
+ new RetryLoop(new RetryLoop.Condition() {
+
+ @Override
+ public boolean isTrue() throws Exception {
+ return failedJobsCount.get() == 0
+ && finishedEvents.size() == 0
+ && jobManager.findJobs(JobManager.QueryType.ALL, TOPIC + "/failed", -1,
+ (Map<String, Object>[]) null).size() == 1
+ && jobManager.getStatistics().getNumberOfQueuedJobs() == 0
+ && jobManager.getStatistics().getNumberOfActiveJobs() == 0;
+ }
+
+ @Override
+ public String getDescription() {
+ return "Waiting for job failure to be recorded. Conditions " +
+ "faildJobsCount=" + failedJobsCount.get() +
+ ", finishedEvents=" + finishedEvents.size() +
+ ", findJobs= " + jobManager.findJobs(JobManager.QueryType.ALL, TOPIC + "/failed", -1,
+ (Map<String, Object>[]) null).size()
+ +", queuedJobs=" + jobManager.getStatistics().getNumberOfQueuedJobs()
+ +", activeJobs=" + jobManager.getStatistics().getNumberOfActiveJobs();
+ }
+ }, CONDITION_TIMEOUT_SECONDS, CONDITION_INTERVAL_MILLIS);
+
+ jobManager.removeJobById(id); // moves the job to the history section
+ assertEquals(0, jobManager.findJobs(JobManager.QueryType.ALL, TOPIC + "/failed", -1, (Map<String, Object>[])null).size());
+ } finally {
+ jobManager.removeJobById(id); // removes the job permanently
+ }
}
private static final class DataObject implements Serializable {