You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hop.apache.org by ha...@apache.org on 2020/11/11 17:19:08 UTC

[incubator-hop] branch master updated: HOP-2156 : unit test fix (#369)

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

hansva pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-hop.git


The following commit(s) were added to refs/heads/master by this push:
     new 67b6f4c  HOP-2156 : unit test fix (#369)
67b6f4c is described below

commit 67b6f4c69a6cdaa3fc291266d1c1513d807789d9
Author: Matt Casters <ma...@gmail.com>
AuthorDate: Wed Nov 11 18:12:57 2020 +0100

    HOP-2156 : unit test fix (#369)
    
    * HOP-2134 : Add support for ordered categories for context actions, expose in context dialog (+ a bit of code cleanup)
    
    * Add header to file
    
    * HOP-2156 : faulty unit test fix
    
    * HOP-2156 : faulty unit test fix
    
    Co-authored-by: Hans Van Akelyen <ha...@gmail.com>
---
 .../java/org/apache/hop/base/AbstractMetaTest.java | 28 +++++++++----
 .../hop/base/MockFilenameChangeListener.java       | 49 ++++++++++++++++++++++
 2 files changed, 68 insertions(+), 9 deletions(-)

diff --git a/engine/src/test/java/org/apache/hop/base/AbstractMetaTest.java b/engine/src/test/java/org/apache/hop/base/AbstractMetaTest.java
index 480d290..3d43dfc 100644
--- a/engine/src/test/java/org/apache/hop/base/AbstractMetaTest.java
+++ b/engine/src/test/java/org/apache/hop/base/AbstractMetaTest.java
@@ -50,8 +50,8 @@ import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Random;
 import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.ThreadLocalRandom;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
@@ -545,14 +545,13 @@ public class AbstractMetaTest {
     assertTrue( meta.hasChanged() );
   }
 
-  @Ignore
   @Test
   public void testMultithreadHammeringOfListener() throws Exception {
 
     CountDownLatch latch = new CountDownLatch( 3 );
-    AbstractMetaListenerThread th1 = new AbstractMetaListenerThread( meta, 2000, latch ); // do 2k random add/delete/fire
-    AbstractMetaListenerThread th2 = new AbstractMetaListenerThread( meta, 2000, latch ); // do 2k random add/delete/fire
-    AbstractMetaListenerThread th3 = new AbstractMetaListenerThread( meta, 2000, latch ); // do 2k random add/delete/fire
+    AbstractMetaListenerThread th1 = new AbstractMetaListenerThread( meta, 1000000, latch, 50 ); // do 1M random add/delete/fire
+    AbstractMetaListenerThread th2 = new AbstractMetaListenerThread( meta, 1000000, latch, 50 ); // do 1M random add/delete/fire
+    AbstractMetaListenerThread th3 = new AbstractMetaListenerThread( meta, 1000000, latch, 50 ); // do 1M random add/delete/fire
 
     Thread t1 = new Thread( th1 );
     Thread t2 = new Thread( th2 );
@@ -637,20 +636,31 @@ public class AbstractMetaTest {
     int times;
     CountDownLatch whenDone;
     String message;
+    int maxListeners;
+    private Random random;
 
-    AbstractMetaListenerThread( AbstractMeta aMeta, int times, CountDownLatch latch ) {
+    AbstractMetaListenerThread( AbstractMeta aMeta, int times, CountDownLatch latch, int maxListeners ) {
       this.metaToWork = aMeta;
       this.times = times;
       this.whenDone = latch;
+      this.maxListeners = maxListeners;
+      this.random = new Random( System.currentTimeMillis() );
     }
 
     @Override public void run() {
+
+      // Add a bunch of listeners to start with
+      //
+      for ( int i = 0; i < random.nextInt( maxListeners ) / 2; i++ ) {
+        metaToWork.addFilenameChangedListener( new MockFilenameChangeListener( random.nextInt( maxListeners ) ) );
+      }
+
       for ( int i = 0; i < times; i++ ) {
-        int randomNum = ThreadLocalRandom.current().nextInt( 0, 3 );
+        int randomNum = random.nextInt( 3 );
         switch ( randomNum ) {
           case 0: {
             try {
-              metaToWork.addFilenameChangedListener( mock( IFilenameChangedListener.class ) );
+              metaToWork.addFilenameChangedListener( new MockFilenameChangeListener( random.nextInt( maxListeners ) ) );
             } catch ( Throwable ex ) {
               message = "Exception adding listener.";
             }
@@ -658,7 +668,7 @@ public class AbstractMetaTest {
           }
           case 1: {
             try {
-              metaToWork.removeFilenameChangedListener( mock( IFilenameChangedListener.class ) );
+              metaToWork.removeFilenameChangedListener( new MockFilenameChangeListener( random.nextInt( maxListeners ) ) );
             } catch ( Throwable ex ) {
               message = "Exception removing listener.";
             }
diff --git a/engine/src/test/java/org/apache/hop/base/MockFilenameChangeListener.java b/engine/src/test/java/org/apache/hop/base/MockFilenameChangeListener.java
new file mode 100644
index 0000000..4f02fc3
--- /dev/null
+++ b/engine/src/test/java/org/apache/hop/base/MockFilenameChangeListener.java
@@ -0,0 +1,49 @@
+package org.apache.hop.base;
+
+import org.apache.hop.core.listeners.IFilenameChangedListener;
+
+import java.util.Objects;
+
+public class MockFilenameChangeListener implements IFilenameChangedListener {
+
+  private int id;
+
+  public MockFilenameChangeListener( int id ) {
+    this.id = id;
+  }
+
+  @Override public void filenameChanged( Object object, String oldFilename, String newFilename ) {
+    // Nothing
+  }
+
+  @Override public boolean equals( Object o ) {
+    if ( this == o ) {
+      return true;
+    }
+    if ( o == null || getClass() != o.getClass() ) {
+      return false;
+    }
+    MockFilenameChangeListener that = (MockFilenameChangeListener) o;
+    return id == that.id;
+  }
+
+  @Override public int hashCode() {
+    return Objects.hash( id );
+  }
+
+  /**
+   * Gets id
+   *
+   * @return value of id
+   */
+  public int getId() {
+    return id;
+  }
+
+  /**
+   * @param id The id to set
+   */
+  public void setId( int id ) {
+    this.id = id;
+  }
+}