예제 #1
0
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test @Resources.Life(STARTED) public void shouldNotRotateIfNoDataChanges() throws Exception
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#:
        public virtual void ShouldNotRotateIfNoDataChanges()
        {
            // given
            CountsTracker tracker = ResourceManager.managed(NewTracker());
            File          before  = tracker.CurrentFile();

            // when
            tracker.Rotate(tracker.TxId());

            // then
            assertSame("not rotated", before, tracker.CurrentFile());
        }
예제 #2
0
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test @Resources.Life(STARTED) public void shouldRotateOnDataChangesEvenIfTransactionIsUnchanged() throws Exception
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#:
        public virtual void ShouldRotateOnDataChangesEvenIfTransactionIsUnchanged()
        {
            // given
            CountsTracker tracker = ResourceManager.managed(NewTracker());
            File          before  = tracker.CurrentFile();

            using (Org.Neo4j.Kernel.Impl.Api.CountsAccessor_IndexStatsUpdater updater = tracker.UpdateIndexCounts())
            {
                updater.IncrementIndexUpdates(7, 100);
            }

            // when
            tracker.Rotate(tracker.TxId());

            // then
            assertNotEquals("rotated", before, tracker.CurrentFile());
        }
예제 #3
0
//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));
        }