You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by sc...@apache.org on 2014/04/04 15:54:02 UTC
svn commit: r1584694 -
/uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/cas/impl/CasPoolTest.java
Author: schor
Date: Fri Apr 4 13:54:02 2014
New Revision: 1584694
URL: http://svn.apache.org/r1584694
Log:
[UIMA-3694] add multi-threaded test
Modified:
uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/cas/impl/CasPoolTest.java
Modified: uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/cas/impl/CasPoolTest.java
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/cas/impl/CasPoolTest.java?rev=1584694&r1=1584693&r2=1584694&view=diff
==============================================================================
--- uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/cas/impl/CasPoolTest.java (original)
+++ uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/cas/impl/CasPoolTest.java Fri Apr 4 13:54:02 2014
@@ -36,6 +36,7 @@ import org.apache.uima.cas.TypeSystem;
import org.apache.uima.impl.ChildUimaContext_impl;
import org.apache.uima.impl.RootUimaContext_impl;
import org.apache.uima.impl.UimaContext_ImplBase;
+import org.apache.uima.internal.util.MultiThreadUtils;
import org.apache.uima.resource.CasManager;
import org.apache.uima.resource.ResourceInitializationException;
import org.apache.uima.test.junit_extension.JUnitExtension;
@@ -75,58 +76,26 @@ public class CasPoolTest extends TestCas
}
- public void testMultiThread() throws ResourceInitializationException {
+ public void testMultiThread() throws Exception {
Properties p = new Properties();
p.put(UIMAFramework.CAS_INITIAL_HEAP_SIZE, 200);
- int numberOfThreads = Runtime.getRuntime().availableProcessors() * 10;
+ int numberOfThreads = MultiThreadUtils.PROCESSORS * 10;
int casPoolSize = numberOfThreads / 3 ;
System.out.format("test multicore iterator with %d threads and %d CASes",
numberOfThreads, casPoolSize);
- Thread[] threads = new Thread[numberOfThreads];
-
- final Throwable[] thrown = new Throwable[1];
- thrown[0] = null;
casManager.defineCasPool("id", casPoolSize, p);
- for (int r = 0; r < 10; r++) {
- for (int i = 0; i < numberOfThreads; i++) {
- final int finalI = i;
- threads[i] = new Thread(new Runnable() {
- public void run() {
- Random r = new Random();
- StringBuilder sb = new StringBuilder(80);
- try {
- sb.append("CasPoolTest, thread ").append(finalI).append(' ');
- for (int k = 0; k < 5; k++) {
- getAndRelease(sb, r);
- }
-// System.out.println(sb);
- } catch (Throwable e) {
- System.err.format("CasPoolTest: Runnable threw exception%n");
- e.printStackTrace(System.err);
- thrown[0] = e;
- throw new RuntimeException(e);
- }
- }} );
- threads[i].setName("CasPoolTest Thread " + i);
- threads[i].setPriority(Thread.NORM_PRIORITY - 1);
- threads[i].start();
- }
+
+ MultiThreadUtils.Run2isb run2isb = new MultiThreadUtils.Run2isb() {
- for (int i = 0; i < numberOfThreads; i++) {
- try {
- if (thrown[0] != null) {
- assertTrue(false);
- }
- threads[i].join();
- if (thrown[0] != null) {
- assertTrue(false);
- }
- } catch (InterruptedException e) {
- e.printStackTrace();
- assertTrue(false);
+ public void call(int i, int r, StringBuilder sb) {
+ Random random = new Random();
+ for (int k = 0; k < 5; k++) {
+ getAndRelease(sb, random);
}
+// System.out.println(sb.toString());
}
- }
+ };
+ MultiThreadUtils.tstMultiThread("CasPoolTest", numberOfThreads, 10, run2isb);
}
private void getAndRelease(StringBuilder sb, Random r) {