You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by er...@apache.org on 2012/07/21 20:14:26 UTC

svn commit: r1364137 - /commons/proper/math/trunk/src/test/java/org/apache/commons/math3/analysis/integration/gauss/BaseRuleFactoryTest.java

Author: erans
Date: Sat Jul 21 18:14:26 2012
New Revision: 1364137

URL: http://svn.apache.org/viewvc?rev=1364137&view=rev
Log:
MATH-797
Modified test to be Java5 compatible.
Corrected a bug in the (dummy) rule computation.

Modified:
    commons/proper/math/trunk/src/test/java/org/apache/commons/math3/analysis/integration/gauss/BaseRuleFactoryTest.java

Modified: commons/proper/math/trunk/src/test/java/org/apache/commons/math3/analysis/integration/gauss/BaseRuleFactoryTest.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/test/java/org/apache/commons/math3/analysis/integration/gauss/BaseRuleFactoryTest.java?rev=1364137&r1=1364136&r2=1364137&view=diff
==============================================================================
--- commons/proper/math/trunk/src/test/java/org/apache/commons/math3/analysis/integration/gauss/BaseRuleFactoryTest.java (original)
+++ commons/proper/math/trunk/src/test/java/org/apache/commons/math3/analysis/integration/gauss/BaseRuleFactoryTest.java Sat Jul 21 18:14:26 2012
@@ -23,6 +23,7 @@ import java.util.concurrent.ArrayBlockin
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.Callable;
 import java.util.concurrent.Future;
+import java.util.concurrent.ExecutionException;
 import java.util.concurrent.atomic.AtomicInteger;
 import org.apache.commons.math3.util.Pair;
 import org.junit.Test;
@@ -39,7 +40,8 @@ public class BaseRuleFactoryTest {
      * whatever the number of times this rule is called concurrently.
      */
     @Test
-    public void testConcurrentCreation() throws InterruptedException {
+        public void testConcurrentCreation() throws InterruptedException,
+                                                    ExecutionException {
         // Number of times the same rule will be called.
         final int numTasks = 20;
 
@@ -47,12 +49,16 @@ public class BaseRuleFactoryTest {
             = new ThreadPoolExecutor(3, numTasks, 1, TimeUnit.SECONDS,
                                      new ArrayBlockingQueue<Runnable>(2));
 
-        final List<RuleBuilder> tasks = new ArrayList<RuleBuilder>();
+        final List<Future<Pair<double[], double[]>>> results
+            = new ArrayList<Future<Pair<double[], double[]>>>();
         for (int i = 0; i < numTasks; i++) {
-            tasks.add(new RuleBuilder());
+            results.add(exec.submit(new RuleBuilder()));
         }
 
-        List<Future<Pair<double[], double[]>>> results = exec.invokeAll(tasks);
+        // Ensure that all computations have completed.
+        for (Future<Pair<double[], double[]>> f : results) {
+            f.get();
+        }
 
         // Assertion would fail if "getRuleInternal" were not "synchronized".
         final int n = RuleBuilder.getNumberOfCalls();
@@ -90,8 +96,13 @@ class DummyRuleFactory extends BaseRuleF
         }
 
          // Dummy rule (but contents must exist).
-        return new Pair<Double[], Double[]>(new Double[order],
-                                            new Double[order]);
+        final Double[] p = new Double[order];
+        final Double[] w = new Double[order];
+        for (int i = 0; i < order; i++) {
+            p[i] = new Double(i);
+            w[i] = new Double(i);
+        }
+        return new Pair<Double[], Double[]>(p, w);
     }
 
     public int getNumberOfCalls() {