You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by re...@apache.org on 2021/08/11 13:54:28 UTC

[uima-uimaj] branch refactoring/UIMA-6372-Upgrade-from-JUnit-3-to-JUnit-4-to-JUnit-5 created (now 0bff3cc)

This is an automated email from the ASF dual-hosted git repository.

rec pushed a change to branch refactoring/UIMA-6372-Upgrade-from-JUnit-3-to-JUnit-4-to-JUnit-5
in repository https://gitbox.apache.org/repos/asf/uima-uimaj.git.


      at 0bff3cc  [UIMA-6372] Upgrade from JUnit 3 to JUnit 4 to JUnit 5

This branch includes the following new commits:

     new 0bff3cc  [UIMA-6372] Upgrade from JUnit 3 to JUnit 4 to JUnit 5

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


[uima-uimaj] 01/01: [UIMA-6372] Upgrade from JUnit 3 to JUnit 4 to JUnit 5

Posted by re...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

rec pushed a commit to branch refactoring/UIMA-6372-Upgrade-from-JUnit-3-to-JUnit-4-to-JUnit-5
in repository https://gitbox.apache.org/repos/asf/uima-uimaj.git

commit 0bff3cca11c44713ea3b8a63d3873ea664649851
Author: Richard Eckart de Castilho <re...@apache.org>
AuthorDate: Wed Aug 11 15:54:04 2021 +0200

    [UIMA-6372] Upgrade from JUnit 3 to JUnit 4 to JUnit 5
    
    - Upgrade two additional test classes which had slipped through in the last refactoring iteration
---
 .../uima/cas/impl/BinaryCasSerDesPerformance.java  |  9 ++-
 .../uima/internal/util/MultiThreadUtils.java       | 78 +++---------------
 .../uima/internal/util/MultiThreadUtilsTest.java   | 94 ++++++++++++++++++++++
 3 files changed, 109 insertions(+), 72 deletions(-)

diff --git a/uimaj-core/src/test/java/org/apache/uima/cas/impl/BinaryCasSerDesPerformance.java b/uimaj-core/src/test/java/org/apache/uima/cas/impl/BinaryCasSerDesPerformance.java
index b52e1e0..689b3a3 100644
--- a/uimaj-core/src/test/java/org/apache/uima/cas/impl/BinaryCasSerDesPerformance.java
+++ b/uimaj-core/src/test/java/org/apache/uima/cas/impl/BinaryCasSerDesPerformance.java
@@ -30,21 +30,22 @@ import org.apache.uima.cas.CAS;
 import org.apache.uima.resource.metadata.TypeSystemDescription;
 import org.apache.uima.util.CasCreationUtils;
 import org.apache.uima.util.XMLInputSource;
+import org.junit.jupiter.api.Test;
 
-import junit.framework.TestCase;
-
-public class BinaryCasSerDesPerformance extends TestCase {
+public class BinaryCasSerDesPerformance {
 
   // Note: This test case requires an input directory that has
   // 1) a file typesystem.xml which has the type system for the serialized files
   // 2) a bunch of files having compressed serialized CASes
   // Set the directory in the 2nd line below
+  @Test
   public void testBinaryCasDeserialization6Performance() throws Exception {
 
     File dir = new File("" /* "/au/t/data/bin-compr-6/shakespeare.txt_40_processed" */);
 
-    if (!dir.exists())
+    if (!dir.exists()) {
       return;
+    }
 
     File typeSystemFile = new File(dir, "typesystem.xml");
     XMLInputSource in = new XMLInputSource(typeSystemFile);
diff --git a/uimaj-core/src/test/java/org/apache/uima/internal/util/MultiThreadUtils.java b/uimaj-core/src/test/java/org/apache/uima/internal/util/MultiThreadUtils.java
index cdae914..ee6d5ab 100644
--- a/uimaj-core/src/test/java/org/apache/uima/internal/util/MultiThreadUtils.java
+++ b/uimaj-core/src/test/java/org/apache/uima/internal/util/MultiThreadUtils.java
@@ -18,17 +18,11 @@
  */
 package org.apache.uima.internal.util;
 
-import java.util.Timer;
-import java.util.TimerTask;
-import java.util.concurrent.Executors;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.ScheduledFuture;
-import java.util.concurrent.TimeUnit;
+import static org.assertj.core.api.Assertions.assertThat;
+
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.concurrent.atomic.AtomicInteger;
 
-import junit.framework.TestCase;
-
 /**
  * Helper class for running multi-core tests.
  * 
@@ -37,7 +31,7 @@ import junit.framework.TestCase;
  * are reflected back.
  *
  */
-public class MultiThreadUtils extends TestCase {
+public class MultiThreadUtils {
 
   public final static boolean debug = false;
 
@@ -53,7 +47,7 @@ public class MultiThreadUtils extends TestCase {
 
   // also serves as a lock
 
-  private enum ThreadControl {
+  enum ThreadControl {
     WAIT, // causes test thread to wait, is the initial state
     RUN, // causes test thread to run; when run is done, thread goes back to waiting and sets global
          // entry in thread array to WAIT
@@ -64,58 +58,6 @@ public class MultiThreadUtils extends TestCase {
 
   private static final AtomicInteger numberOfExceptions = new AtomicInteger(0);
 
-  public void testMultiThreadTimers() {
-
-    final int numberOfTimers = 50;
-    final Timer[] timers = new Timer[numberOfTimers];
-
-    final ThreadControl[][] threadState = new ThreadControl[50][1];
-
-    final int[] repeatNumber = { 0 };
-
-    long startTime = System.nanoTime();
-    for (int i = 0; i < numberOfTimers; i++) {
-      final int finalI = i;
-      threadState[i][0] = ThreadControl.WAIT;
-
-      final Timer timer = new Timer();
-      timers[i] = timer;
-      timer.schedule(new TimerTask() {
-        @Override
-        public void run() {
-          // System.out.format("%nTimer %d Popped%n", finalI);
-        }
-      }, 1);
-    }
-    System.out.format(
-            "Time to create and start %d timers with separate Timer instances: %,d microsec%n",
-            numberOfTimers, (System.nanoTime() - startTime) / 1000);
-  }
-
-  public static void testMultiThreadExecutors() {
-
-    final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
-    final int numberOfTimers = 50;
-    final ScheduledFuture<?>[] timers = new ScheduledFuture<?>[numberOfTimers];
-
-    long startTime = System.nanoTime();
-    for (int i = 0; i < numberOfTimers; i++) {
-      final int finalI = i;
-
-      final ScheduledFuture<?> timer = scheduler.schedule(new Runnable() {
-
-        @Override
-        public void run() {
-          // System.out.format("%nScheduled Timer %d Popped%n", finalI);
-        }
-      }, 1, TimeUnit.MILLISECONDS);
-      timers[i] = timer;
-    }
-    System.out.format(
-            "Time to create and start %d timers using a single, reused thread and ScheduledExecutorService: %,d microsec%n",
-            numberOfTimers, (System.nanoTime() - startTime) / 1000);
-  }
-
 //@formatter:off
   /**
    * On a 2 GHz i7 running Windows, it seems to take about 1 millisecond to create and start up a thread.
@@ -195,11 +137,11 @@ public class MultiThreadUtils extends TestCase {
                   return;
                 }
               }
-              assertEquals(ThreadControl.RUN, threadState[finalI][0]);
+              assertThat(threadState[finalI][0]).isEqualTo(ThreadControl.RUN);
             }
 
             try {
-              assertTrue(numberRunning.get() > 0);
+              assertThat(numberRunning.get()).isGreaterThan(0);
               sb.append(name).append(", thread ").append(finalI).append(' ');
               // System.out.println(sb.toString());
               run2isb.call(finalI, repeatNumber[0], sb);
@@ -239,18 +181,18 @@ public class MultiThreadUtils extends TestCase {
       beforeRepeat.run();
 
       repeatNumber[0] = r;
-      assertTrue(numberRunning.get() == 0);
+      assertThat(numberRunning.get()).isEqualTo(0);
       if (numberOfExceptions.get() != 0) {
         System.out.println("debug");
       }
-      assertTrue(numberOfExceptions.get() == 0);
+      assertThat(numberOfExceptions.get()).isEqualTo(0);
 
       startTime = System.nanoTime();
 
       // release all threads from wait point
       for (int i = 0; i < numberOfThreads; i++) {
         synchronized (threadState[i]) {
-          assertEquals(ThreadControl.WAIT, threadState[i][0]);
+          assertThat(threadState[i][0]).isEqualTo(ThreadControl.WAIT);
           threadState[i][0] = ThreadControl.RUN;
           numberRunning.incrementAndGet();
           threadState[i].notify();
@@ -270,7 +212,7 @@ public class MultiThreadUtils extends TestCase {
       }
       for (int i = 0; i < numberOfThreads; i++) {
         synchronized (threadState[i]) {
-          assertEquals(ThreadControl.WAIT, threadState[i][0]);
+          assertThat(threadState[i][0]).isEqualTo(ThreadControl.WAIT);
         }
       }
     } // end of repeat loop
diff --git a/uimaj-core/src/test/java/org/apache/uima/internal/util/MultiThreadUtilsTest.java b/uimaj-core/src/test/java/org/apache/uima/internal/util/MultiThreadUtilsTest.java
new file mode 100644
index 0000000..7b0ba24
--- /dev/null
+++ b/uimaj-core/src/test/java/org/apache/uima/internal/util/MultiThreadUtilsTest.java
@@ -0,0 +1,94 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.uima.internal.util;
+
+import java.util.Timer;
+import java.util.TimerTask;
+import java.util.concurrent.Executors;
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.ScheduledFuture;
+import java.util.concurrent.TimeUnit;
+
+import org.apache.uima.internal.util.MultiThreadUtils.ThreadControl;
+import org.junit.jupiter.api.Test;
+
+/**
+ * Helper class for running multi-core tests.
+ * 
+ * Runs a passed-in "runnable" inside loops for repetition and for multi-threads The threads run at
+ * the same time, and there's a "join" style wait at the end. Any exceptions thrown by the threads
+ * are reflected back.
+ *
+ */
+public class MultiThreadUtilsTest {
+
+  @Test
+  public void testMultiThreadTimers() {
+
+    final int numberOfTimers = 50;
+    final Timer[] timers = new Timer[numberOfTimers];
+
+    final ThreadControl[][] threadState = new ThreadControl[50][1];
+
+    final int[] repeatNumber = { 0 };
+
+    long startTime = System.nanoTime();
+    for (int i = 0; i < numberOfTimers; i++) {
+      final int finalI = i;
+      threadState[i][0] = ThreadControl.WAIT;
+
+      final Timer timer = new Timer();
+      timers[i] = timer;
+      timer.schedule(new TimerTask() {
+        @Override
+        public void run() {
+          // System.out.format("%nTimer %d Popped%n", finalI);
+        }
+      }, 1);
+    }
+    System.out.format(
+            "Time to create and start %d timers with separate Timer instances: %,d microsec%n",
+            numberOfTimers, (System.nanoTime() - startTime) / 1000);
+  }
+
+  @Test
+  public void testMultiThreadExecutors() {
+
+    final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
+    final int numberOfTimers = 50;
+    final ScheduledFuture<?>[] timers = new ScheduledFuture<?>[numberOfTimers];
+
+    long startTime = System.nanoTime();
+    for (int i = 0; i < numberOfTimers; i++) {
+      final int finalI = i;
+
+      final ScheduledFuture<?> timer = scheduler.schedule(new Runnable() {
+
+        @Override
+        public void run() {
+          // System.out.format("%nScheduled Timer %d Popped%n", finalI);
+        }
+      }, 1, TimeUnit.MILLISECONDS);
+      timers[i] = timer;
+    }
+    System.out.format(
+            "Time to create and start %d timers using a single, reused thread and ScheduledExecutorService: %,d microsec%n",
+            numberOfTimers, (System.nanoTime() - startTime) / 1000);
+  }
+}