Author: cziegeler
Date: Thu Jan  7 10:17:44 2016
New Revision: 1723505

URL: http://svn.apache.org/viewvc?rev=1723505&view=rev
Log:
Potential fix for sometimes failing on java 8

Modified:
    
sling/trunk/bundles/extensions/event/src/test/java/org/apache/sling/event/it/ChaosTest.java

Modified: 
sling/trunk/bundles/extensions/event/src/test/java/org/apache/sling/event/it/ChaosTest.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/event/src/test/java/org/apache/sling/event/it/ChaosTest.java?rev=1723505&r1=1723504&r2=1723505&view=diff
==============================================================================
--- 
sling/trunk/bundles/extensions/event/src/test/java/org/apache/sling/event/it/ChaosTest.java
 (original)
+++ 
sling/trunk/bundles/extensions/event/src/test/java/org/apache/sling/event/it/ChaosTest.java
 Thu Jan  7 10:17:44 2016
@@ -18,11 +18,12 @@
  */
 package org.apache.sling.event.it;
 
+import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
 
 import java.io.IOException;
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.Dictionary;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -140,7 +141,7 @@ public class ChaosTest extends AbstractJ
     /**
      * Setup consumers
      */
-    private void setupJobConsumers(final List<ServiceRegistration> 
registrations) {
+    private void setupJobConsumers(final List<ServiceRegistration<?>> 
registrations) {
         for(int i=0; i<NUM_ORDERED_TOPICS; i++) {
             registrations.add(this.registerJobConsumer(ORDERED_TOPICS[i],
 
@@ -205,14 +206,14 @@ public class ChaosTest extends AbstractJ
             final long endTime = startTime + DURATION * 1000;
             while ( System.currentTimeMillis() < endTime ) {
                 final String topic = topics[index];
-                jobManager.addJob(topic, null);
-                created.get(topic).incrementAndGet();
+                if ( jobManager.addJob(topic, null) != null ) {
+                    created.get(topic).incrementAndGet();
 
-                index++;
-                if ( index == topics.length ) {
-                    index = 0;
+                    index++;
+                    if ( index == topics.length ) {
+                        index = 0;
+                    }
                 }
-
                 final int sleepTime = random.nextInt(200);
                 try {
                     Thread.sleep(sleepTime);
@@ -252,7 +253,7 @@ public class ChaosTest extends AbstractJ
             final AtomicLong finishedThreads) {
         final List<TopologyView> views = new ArrayList<TopologyView>();
         // register topology listener
-        final ServiceRegistration reg = 
this.bc.registerService(TopologyEventListener.class.getName(), new 
TopologyEventListener() {
+        final ServiceRegistration<TopologyEventListener> reg = 
this.bc.registerService(TopologyEventListener.class, new 
TopologyEventListener() {
 
             @Override
             public void handleTopologyEvent(final TopologyEvent event) {
@@ -268,19 +269,17 @@ public class ChaosTest extends AbstractJ
         final TopologyView view = views.get(0);
 
         try {
-            final ServiceReference[] refs = 
this.bc.getServiceReferences(TopologyEventListener.class.getName(), null);
+            final Collection<ServiceReference<TopologyEventListener>> refs = 
this.bc.getServiceReferences(TopologyEventListener.class, null);
             assertNotNull(refs);
-            assertTrue(refs.length > 1);
-            int index = 0;
+            assertFalse(refs.isEmpty());
             TopologyEventListener found = null;
-            while ( index < refs.length ) {
-                final TopologyEventListener listener = (TopologyEventListener) 
this.bc.getService(refs[index]);
-                if ( 
listener.getClass().getName().equals("org.apache.sling.event.impl.jobs.config.TopologyHandler")
 ) {
+            for(final ServiceReference<TopologyEventListener> ref : refs) {
+                final TopologyEventListener listener = this.bc.getService(ref);
+                if ( listener != null && 
listener.getClass().getName().equals("org.apache.sling.event.impl.jobs.config.TopologyHandler")
 ) {
                     found = listener;
                     break;
                 }
-                bc.ungetService(refs[index]);
-                index++;
+                bc.ungetService(ref);
             }
             assertNotNull(found);
             final TopologyEventListener tel = found;
@@ -349,11 +348,11 @@ public class ChaosTest extends AbstractJ
             topics.add(ROUND_TOPICS[i]);
         }
 
-        final List<ServiceRegistration> registrations = new 
ArrayList<ServiceRegistration>();
+        final List<ServiceRegistration<?>> registrations = new 
ArrayList<ServiceRegistration<?>>();
         final List<Thread> threads = new ArrayList<Thread>();
         final AtomicLong finishedThreads = new AtomicLong();
 
-        final ServiceRegistration eventHandler = 
this.registerEventHandler("org/apache/sling/event/notification/job/*",
+        final ServiceRegistration<EventHandler> eventHandler = 
this.registerEventHandler("org/apache/sling/event/notification/job/*",
                 new EventHandler() {
 
                     @Override
@@ -398,7 +397,7 @@ public class ChaosTest extends AbstractJ
                 final Iterator<String> iter = allTopics.iterator();
                 while ( iter.hasNext() ) {
                     final String topic = iter.next();
-                    if ( finished.get(topic).get() >= created.get(topic).get() 
) {
+                    if ( finished.get(topic).get() == created.get(topic).get() 
) {
                         iter.remove();
                     }
                 }
@@ -414,7 +413,7 @@ public class ChaosTest extends AbstractJ
 
         } finally {
             eventHandler.unregister();
-            for(final ServiceRegistration reg : registrations) {
+            for(final ServiceRegistration<?> reg : registrations) {
                 reg.unregister();
             }
         }


Reply via email to