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;
+ }
+}