//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes: //ORIGINAL LINE: @Test @Resources.Life(STARTED) public void shouldSupportTransactionsAppliedOutOfOrderOnRotation() throws Exception //JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#: public virtual void ShouldSupportTransactionsAppliedOutOfOrderOnRotation() { // given //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final': //ORIGINAL LINE: final CountsTracker tracker = resourceManager.managed(newTracker()); CountsTracker tracker = ResourceManager.managed(NewTracker()); using (Org.Neo4j.Kernel.Impl.Api.CountsAccessor_Updater tx = tracker.Apply(2).get()) { tx.IncrementNodeCount(1, 1); } using (Org.Neo4j.Kernel.Impl.Api.CountsAccessor_Updater tx = tracker.Apply(4).get()) { tx.IncrementNodeCount(1, 1); } // when Future <long> rotated = Threading.executeAndAwait(new Rotation(2), tracker, thread => { switch (thread.State) { case BLOCKED: case WAITING: case TIMED_WAITING: case TERMINATED: return(true); default: return(false); } }, 10, SECONDS); using (Org.Neo4j.Kernel.Impl.Api.CountsAccessor_Updater tx = tracker.Apply(5).get()) { tx.IncrementNodeCount(1, 1); } using (Org.Neo4j.Kernel.Impl.Api.CountsAccessor_Updater tx = tracker.Apply(3).get()) { tx.IncrementNodeCount(1, 1); } // then assertEquals("rotated transaction", 4, rotated.get().longValue()); assertEquals("stored transaction", 4, tracker.TxId()); // the value in memory assertEquals("count", 4, tracker.NodeCount(1, Registers.newDoubleLongRegister()).readSecond()); // the value in the store CountsVisitor visitor = mock(typeof(CountsVisitor)); tracker.VisitFile(tracker.CurrentFile(), visitor); verify(visitor).visitNodeCount(1, 3); verifyNoMoreInteractions(visitor); assertEquals("final rotation", 5, tracker.Rotate(5)); }