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 <[email protected]>
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 <[email protected]>
---
.../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;
+ }
+}