//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes: //ORIGINAL LINE: @Test public void highestEverSeenTest() public virtual void HighestEverSeenTest() { //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final': //ORIGINAL LINE: final org.neo4j.kernel.impl.util.OutOfOrderSequence sequence = new org.neo4j.kernel.impl.util.ArrayQueueOutOfOrderSequence(0, 5, EMPTY_META); OutOfOrderSequence sequence = new ArrayQueueOutOfOrderSequence(0, 5, _emptyMeta); assertEquals(0L, sequence.HighestEverSeen()); sequence.Offer(1L, _emptyMeta); assertEquals(1L, sequence.HighestEverSeen()); sequence.Offer(42L, _emptyMeta); assertEquals(42L, sequence.HighestEverSeen()); }
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes: //ORIGINAL LINE: @Test public void shouldExtendArrayIfNeedBe() public virtual void ShouldExtendArrayIfNeedBe() { // GIVEN OutOfOrderSequence sequence = new ArrayQueueOutOfOrderSequence(0L, 5, new long[1]); sequence.Offer(3L, new long[] { 0 }); sequence.Offer(2L, new long[] { 1 }); sequence.Offer(5L, new long[] { 2 }); sequence.Offer(4L, new long[] { 3 }); // WHEN offering a number that should result in extending the array sequence.Offer(6L, new long[] { 4 }); // and WHEN offering the missing number to fill the gap sequence.Offer(1L, new long[] { 5 }); // THEN the high number should be visible AssertGet(sequence, 6L, new long[] { 4 }); }
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes: //ORIGINAL LINE: @Test public void shouldKeepItsCoolWhenMultipleThreadsAreHammeringIt() throws Throwable //JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#: public virtual void ShouldKeepItsCoolWhenMultipleThreadsAreHammeringIt() { // An interesting note is that during tests the call to sequence#offer made no difference // in performance, so there seems to be no visible penalty in using ArrayQueueOutOfOrderSequence. // GIVEN a sequence with intentionally low starting queue size System.Func <long, long[]> metaFunction = number => new long[] { number + 2, number * 2 }; //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final': //ORIGINAL LINE: final java.util.concurrent.atomic.AtomicLong numberSource = new java.util.concurrent.atomic.AtomicLong(); AtomicLong numberSource = new AtomicLong(); //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final': //ORIGINAL LINE: final org.neo4j.kernel.impl.util.OutOfOrderSequence sequence = new org.neo4j.kernel.impl.util.ArrayQueueOutOfOrderSequence(numberSource.get(), 5, metaFunction.apply(numberSource.get())); OutOfOrderSequence sequence = new ArrayQueueOutOfOrderSequence(numberSource.get(), 5, metaFunction(numberSource.get())); //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final': //ORIGINAL LINE: final org.neo4j.test.Race race = new org.neo4j.test.Race().withEndCondition(() -> numberSource.get() > 10_000_000); Race race = (new Race()).withEndCondition(() => numberSource.get() > 10_000_000); int offerThreads = max(2, Runtime.Runtime.availableProcessors() - 1); race.AddContestants(offerThreads, () => { long number = numberSource.incrementAndGet(); sequence.Offer(number, metaFunction(number)); }); ThreadStart verifier = () => { long[] highest = sequence.Get(); long[] expectedMeta = metaFunction(highest[0]); assertArrayEquals(expectedMeta, copyOfRange(highest, 1, highest.Length)); }; race.AddContestant(verifier); race.Go(); // THEN verifier.run(); }