You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by gu...@apache.org on 2013/10/07 09:56:31 UTC

svn commit: r1529782 - /felix/trunk/ipojo/runtime/core/src/test/java/org/apache/felix/ipojo/extender/internal/queue/ExecutorQueueServiceTestCase.java

Author: guillaume
Date: Mon Oct  7 07:56:31 2013
New Revision: 1529782

URL: http://svn.apache.org/r1529782
Log:
Try to stabilize concurrent TestCase
Lower assertions level (this is to dependent on the thread pool behavior and the OS).

Modified:
    felix/trunk/ipojo/runtime/core/src/test/java/org/apache/felix/ipojo/extender/internal/queue/ExecutorQueueServiceTestCase.java

Modified: felix/trunk/ipojo/runtime/core/src/test/java/org/apache/felix/ipojo/extender/internal/queue/ExecutorQueueServiceTestCase.java
URL: http://svn.apache.org/viewvc/felix/trunk/ipojo/runtime/core/src/test/java/org/apache/felix/ipojo/extender/internal/queue/ExecutorQueueServiceTestCase.java?rev=1529782&r1=1529781&r2=1529782&view=diff
==============================================================================
--- felix/trunk/ipojo/runtime/core/src/test/java/org/apache/felix/ipojo/extender/internal/queue/ExecutorQueueServiceTestCase.java (original)
+++ felix/trunk/ipojo/runtime/core/src/test/java/org/apache/felix/ipojo/extender/internal/queue/ExecutorQueueServiceTestCase.java Mon Oct  7 07:56:31 2013
@@ -100,7 +100,12 @@ public class ExecutorQueueServiceTestCas
         ExecutorQueueService queueService = new ExecutorQueueService(m_bundleContext, 2);
         queueService.start();
 
-        // We create 4 job, so that we have the 2 first execution while the 2 others are waiting
+        // Ensure we start at 0
+        assertEquals(0, queueService.getWaiters());
+        assertEquals(0, queueService.getCurrents());
+        assertEquals(0, queueService.getFinished());
+
+        // We create 4 job, so that we have the 2 first executed while the 2 others are waiting
         Future<String> one = queueService.submit(new SleepingCallable(50, "1"), m_callback, "First");
         Future<String> two = queueService.submit(new SleepingCallable(50, "2"), m_callback, "Second");
         Future<String> three = queueService.submit(new SleepingCallable(50, "3"), m_callback, "Third");
@@ -109,12 +114,18 @@ public class ExecutorQueueServiceTestCas
         // Wait for callable to finish
         one.get();
         two.get();
-        assertEquals(2, queueService.getFinished());
-        assertEquals(2, queueService.getCurrents());
+
+        // Minimal assertion (do not test exact values)
+        assertTrue(queueService.getCurrents() > 0);
+        assertTrue(queueService.getFinished() > 0);
 
         three.get();
         four.get();
 
+        // Note: we cannot assert statistics reliably during the jobs execution: since when one
+        // is finished, another queued one will be executed in a row...
+        // So we have to wait until the end of all executions and hope for the best.
+
         assertEquals(4, queueService.getFinished());
         assertEquals(0, queueService.getCurrents());
         assertEquals(0, queueService.getWaiters());