Skip to content

Commit

Permalink
Fix flaky race test condition
Browse files Browse the repository at this point in the history
Fix test, update race start delay.
  • Loading branch information
MishaDemianenko committed Sep 21, 2016
1 parent 291b83b commit 1bc4fcc
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 12 deletions.
8 changes: 3 additions & 5 deletions community/kernel/src/test/java/org/neo4j/test/Race.java
Expand Up @@ -25,6 +25,7 @@
import java.util.concurrent.ThreadLocalRandom; import java.util.concurrent.ThreadLocalRandom;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException; import java.util.concurrent.TimeoutException;
import java.util.concurrent.locks.LockSupport;
import java.util.function.BooleanSupplier; import java.util.function.BooleanSupplier;


import org.neo4j.helpers.Exceptions; import org.neo4j.helpers.Exceptions;
Expand Down Expand Up @@ -265,11 +266,8 @@ public void run()


private void randomlyDelaySlightly() private void randomlyDelaySlightly()
{ {
int target = ThreadLocalRandom.current().nextInt( 1_000_000_000 ); int millis = ThreadLocalRandom.current().nextInt( 100 );
for ( int i = 0; i < target; i++ ) LockSupport.parkNanos( TimeUnit.MILLISECONDS.toNanos( 10 + millis ) );
{
i = i;
}
} }
} }
} }
12 changes: 5 additions & 7 deletions community/kernel/src/test/java/org/neo4j/test/RaceTest.java
Expand Up @@ -24,16 +24,14 @@
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.BooleanSupplier; import java.util.function.BooleanSupplier;


import static java.lang.Thread.sleep;
import static java.util.concurrent.ThreadLocalRandom.current;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail; import static org.junit.Assert.fail;
import static org.mockito.Mockito.atLeast;
import static org.mockito.Mockito.spy; import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify;

import static java.lang.Thread.sleep;
import static java.util.concurrent.ThreadLocalRandom.current;

import static org.neo4j.test.Race.throwing; import static org.neo4j.test.Race.throwing;


/** /**
Expand Down Expand Up @@ -91,8 +89,8 @@ public void shouldHaveMultipleEndConditions() throws Throwable
race.go(); race.go();


// THEN // THEN
verify( endCondition1, times( 4 ) ).getAsBoolean(); verify( endCondition1, atLeast( 4 ) ).getAsBoolean();
verify( endCondition2, times( 4 ) ).getAsBoolean(); verify( endCondition2, atLeast( 4 ) ).getAsBoolean();
} }


@Test @Test
Expand Down

0 comments on commit 1bc4fcc

Please sign in to comment.