Esempio n. 1
0
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void incompleteEntriesAtTheEndShouldNotCauseFailures() throws Throwable
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#:
        public virtual void IncompleteEntriesAtTheEndShouldNotCauseFailures()
        {
            // Given
            // we use a RaftLog to create a raft log file and then we will start chopping bits off from the end
            SegmentedRaftLog raftLog = CreateRaftLog(100_000);

            raftLog.Start();

            // Add a bunch of entries, preferably one of each available kind.
            raftLog.Append(new RaftLogEntry(4, new NewLeaderBarrier()));
            raftLog.Append(new RaftLogEntry(4, new ReplicatedIdAllocationRequest(new MemberId(System.Guid.randomUUID()), IdType.RELATIONSHIP, 1, 1024)));
            raftLog.Append(new RaftLogEntry(4, new ReplicatedIdAllocationRequest(new MemberId(System.Guid.randomUUID()), IdType.RELATIONSHIP, 1025, 1024)));
            raftLog.Append(new RaftLogEntry(4, new ReplicatedLockTokenRequest(new MemberId(System.Guid.randomUUID()), 1)));
            raftLog.Append(new RaftLogEntry(4, new NewLeaderBarrier()));
            raftLog.Append(new RaftLogEntry(5, new ReplicatedTokenRequest(TokenType.LABEL, "labelToken", new sbyte[] { 1, 2, 3 })));
            raftLog.Append(new RaftLogEntry(5, ReplicatedTransaction.from(new sbyte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 })));

            raftLog.Stop();

            // We use a temporary RecoveryProtocol to get the file to chop
            RecoveryProtocol recovery      = CreateRecoveryProtocol();
            State            recoveryState = Recovery.run();
            string           logFilename   = recoveryState.Segments.last().Filename;

            recoveryState.Segments.close();
            File logFile = new File(_logDirectory, logFilename);

            // When
            // We remove any number of bytes from the end (up to but not including the header) and try to recover
            // Then
            // No exceptions should be thrown
            TruncateAndRecover(logFile, SegmentHeader.Size);
        }
Esempio n. 2
0
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Parameterized.Parameters(name = "Raft v{1} with message {0}") public static Object[] data()
        public static object[] Data()
        {
            return(setUpParams(new Org.Neo4j.causalclustering.core.consensus.RaftMessages_RaftMessage[]
            {
                new Org.Neo4j.causalclustering.core.consensus.RaftMessages_Heartbeat(_memberId, 1, 2, 3),
                new Org.Neo4j.causalclustering.core.consensus.RaftMessages_HeartbeatResponse(_memberId),
                new Org.Neo4j.causalclustering.core.consensus.RaftMessages_NewEntry_Request(_memberId, new DummyRequest(new sbyte[] { 1, 2, 3, 4, 5, 6, 7, 8 })),
                new Org.Neo4j.causalclustering.core.consensus.RaftMessages_NewEntry_Request(_memberId, ReplicatedTransaction.from(new sbyte[] { 1, 2, 3, 4, 5, 6, 7, 8 })),
                new Org.Neo4j.causalclustering.core.consensus.RaftMessages_NewEntry_Request(_memberId, ReplicatedTransaction.from(new PhysicalTransactionRepresentation(Collections.emptyList()))),
                new Org.Neo4j.causalclustering.core.consensus.RaftMessages_NewEntry_Request(_memberId, new DistributedOperation(new DistributedOperation(ReplicatedTransaction.from(new sbyte[] { 1, 2, 3, 4, 5 }), new GlobalSession(System.Guid.randomUUID(), _memberId), new LocalOperationId(1, 2)), new GlobalSession(System.Guid.randomUUID(), _memberId), new LocalOperationId(3, 4))),
                new Org.Neo4j.causalclustering.core.consensus.RaftMessages_AppendEntries_Request(_memberId, 1, 2, 3, new RaftLogEntry[]
                {
                    new RaftLogEntry(0, new ReplicatedTokenRequest(TokenType.LABEL, "name", new sbyte[] { 2, 3, 4 })),
                    new RaftLogEntry(1, new ReplicatedLockTokenRequest(_memberId, 2))
                }, 5),
                new Org.Neo4j.causalclustering.core.consensus.RaftMessages_AppendEntries_Response(_memberId, 1, true, 2, 3),
                new Org.Neo4j.causalclustering.core.consensus.RaftMessages_Vote_Request(_memberId, long.MaxValue, _memberId, long.MinValue, 1),
                new Org.Neo4j.causalclustering.core.consensus.RaftMessages_Vote_Response(_memberId, 1, true),
                new Org.Neo4j.causalclustering.core.consensus.RaftMessages_PreVote_Request(_memberId, long.MaxValue, _memberId, long.MinValue, 1),
                new Org.Neo4j.causalclustering.core.consensus.RaftMessages_PreVote_Response(_memberId, 1, true),
                new Org.Neo4j.causalclustering.core.consensus.RaftMessages_LogCompactionInfo(_memberId, long.MaxValue, long.MinValue)
            }));
        }