コード例 #1
0
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void shouldBatchNewEntriesAndHandleOtherMessagesFirst()
        public virtual void ShouldBatchNewEntriesAndHandleOtherMessagesFirst()
        {
            // given
            BatchingMessageHandler batchHandler = new BatchingMessageHandler(_downstreamHandler, _inQueueConfig, _batchConfig, _jobSchedulerFactory, NullLogProvider.Instance);

            ReplicatedString contentA = new ReplicatedString("A");
            ReplicatedString contentC = new ReplicatedString("C");

            NewEntry.Request newEntryA  = new NewEntry.Request(null, contentA);
            Heartbeat        heartbeatA = new Heartbeat(null, 0, 0, 0);

            NewEntry.Request newEntryB  = new NewEntry.Request(null, contentC);
            Heartbeat        heartbeatB = new Heartbeat(null, 1, 1, 1);

            batchHandler.Handle(Wrap(newEntryA));
            batchHandler.Handle(Wrap(heartbeatA));
            batchHandler.Handle(Wrap(newEntryB));
            batchHandler.Handle(Wrap(heartbeatB));
            verifyZeroInteractions(_downstreamHandler);

            // when
            batchHandler.Run();               // heartbeatA
            batchHandler.Run();               // heartbeatB
            batchHandler.Run();               // batchRequest

            // then
            NewEntry.BatchRequest batchRequest = new NewEntry.BatchRequest(asList(contentA, contentC));

            verify(_downstreamHandler).handle(Wrap(heartbeatA));
            verify(_downstreamHandler).handle(Wrap(heartbeatB));
            verify(_downstreamHandler).handle(Wrap(batchRequest));
        }
コード例 #2
0
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void shouldInvokeHandlerOnQueuedMessage() throws Throwable
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#:
        public virtual void ShouldInvokeHandlerOnQueuedMessage()
        {
            // given
            BatchingMessageHandler batchHandler = new BatchingMessageHandler(_downstreamHandler, _inQueueConfig, _batchConfig, _jobSchedulerFactory, NullLogProvider.Instance);
            ReplicatedString       content      = new ReplicatedString("dummy");

            NewEntry.Request message = new NewEntry.Request(null, content);

//JAVA TO C# CONVERTER WARNING: Java wildcard generics have no direct equivalent in .NET:
//ORIGINAL LINE: java.util.concurrent.Future<?> future = executor.submit(batchHandler);
            Future <object> future = _executor.submit(batchHandler);

            // Some time for letting the batch handler block on its internal queue.
            //
            // It is fine if it sometimes doesn't get that far in time, just that we
            // usually want to test the wake up from blocking state.
            Thread.Sleep(50);

            // when
            batchHandler.Handle(Wrap(message));

            // then
            future.get();
            NewEntry.BatchRequest expected = new NewEntry.BatchRequest(singletonList(content));
            verify(_downstreamHandler).handle(Wrap(expected));
        }
コード例 #3
0
        private ReplicatedString String(int numberOfCharacters)
        {
            StringBuilder builder = new StringBuilder();

            for (int i = 0; i < numberOfCharacters; i++)
            {
                builder.Append(i.ToString());
            }
            return(ReplicatedString.valueOf(builder.ToString()));
        }
コード例 #4
0
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void shouldLogDifferentContentTypes() throws Exception
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#:
        public virtual void ShouldLogDifferentContentTypes()
        {
            RaftLog log = CreateRaftLog();

            RaftLogEntry logEntryA = new RaftLogEntry(1, valueOf(1));
            RaftLogEntry logEntryB = new RaftLogEntry(1, ReplicatedString.valueOf("hejzxcjkzhxcjkxz"));

            log.Append(logEntryA, logEntryB);

            assertThat(log.AppendIndex(), @is(1L));

            assertThat(readLogEntry(log, 0), equalTo(logEntryA));
            assertThat(readLogEntry(log, 1), equalTo(logEntryB));
        }
コード例 #5
0
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#:
//ORIGINAL LINE: protected org.neo4j.causalclustering.core.replication.ReplicatedContent unmarshal0(org.neo4j.storageengine.api.ReadableChannel channel) throws java.io.IOException
        protected internal override ReplicatedContent Unmarshal0(ReadableChannel channel)
        {
            sbyte type = channel.Get();

            switch (type)
            {
            case REPLICATED_INTEGER_TYPE:
                return(ReplicatedInteger.valueOf(channel.Int));

            case REPLICATED_STRING_TYPE:
                int     length = channel.Int;
                sbyte[] bytes  = new sbyte[length];
                channel.Get(bytes, length);
                return(ReplicatedString.valueOf(StringHelper.NewString(bytes)));

            default:
                throw new System.ArgumentException("Unknown content type: " + type);
            }
        }
コード例 #6
0
 private void Read(RaftLog raftLog)
 {
     try
     {
         using (RaftLogCursor cursor = raftLog.GetEntryCursor(0))
         {
             while (cursor.Next())
             {
                 RaftLogEntry     entry   = cursor.get();
                 ReplicatedString content = ( ReplicatedString )entry.Content();
                 assertEquals(StringForIndex(cursor.Index()), content.Value());
             }
         }
     }
     catch (IOException e)
     {
         throw new Exception(e);
     }
 }
コード例 #7
0
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void shouldLogDifferentContentTypes() throws Exception
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#:
        public virtual void ShouldLogDifferentContentTypes()
        {
            RaftLog log = _logFactory.createBasedOn(FsRule.get());

//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final RaftLogEntry logEntryA = new RaftLogEntry(1, org.neo4j.causalclustering.core.consensus.ReplicatedInteger.valueOf(1));
            RaftLogEntry logEntryA = new RaftLogEntry(1, ReplicatedInteger.valueOf(1));
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final RaftLogEntry logEntryB = new RaftLogEntry(1, org.neo4j.causalclustering.core.consensus.ReplicatedString.valueOf("hejzxcjkzhxcjkxz"));
            RaftLogEntry logEntryB = new RaftLogEntry(1, ReplicatedString.valueOf("hejzxcjkzhxcjkxz"));

            log.Append(logEntryA);
            log.Append(logEntryB);

            VerifyCurrentLogAndNewLogLoadedFromFileSystem(log, FsRule.get(), myLog =>
            {
                assertThat(myLog.appendIndex(), @is(1L));
                assertThat(readLogEntry(myLog, 0), equalTo(logEntryA));
                assertThat(readLogEntry(myLog, 1), equalTo(logEntryB));
            });
        }
コード例 #8
0
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void shouldBatchUsingReceivedInstantOfFirstReceivedMessage()
        public virtual void ShouldBatchUsingReceivedInstantOfFirstReceivedMessage()
        {
            // given
            BatchingMessageHandler batchHandler = new BatchingMessageHandler(_downstreamHandler, _inQueueConfig, _batchConfig, _jobSchedulerFactory, NullLogProvider.Instance);
            ReplicatedString       content      = new ReplicatedString("A");

            NewEntry.Request messageA = new NewEntry.Request(null, content);

            Instant firstReceived  = Instant.ofEpochMilli(1L);
            Instant secondReceived = firstReceived.plusMillis(1L);

            batchHandler.Handle(Wrap(firstReceived, messageA));
            batchHandler.Handle(Wrap(secondReceived, messageA));

            // when
            batchHandler.Run();

            // then
            NewEntry.BatchRequest batchRequest = new NewEntry.BatchRequest(asList(content, content));
            verify(_downstreamHandler).handle(Wrap(firstReceived, batchRequest));
        }
コード例 #9
0
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void shouldBatchRequests()
        public virtual void ShouldBatchRequests()
        {
            // given
            BatchingMessageHandler batchHandler = new BatchingMessageHandler(_downstreamHandler, _inQueueConfig, _batchConfig, _jobSchedulerFactory, NullLogProvider.Instance);
            ReplicatedString       contentA     = new ReplicatedString("A");
            ReplicatedString       contentB     = new ReplicatedString("B");

            NewEntry.Request messageA = new NewEntry.Request(null, contentA);
            NewEntry.Request messageB = new NewEntry.Request(null, contentB);

            batchHandler.Handle(Wrap(messageA));
            batchHandler.Handle(Wrap(messageB));
            verifyZeroInteractions(_downstreamHandler);

            // when
            batchHandler.Run();

            // then
            NewEntry.BatchRequest expected = new NewEntry.BatchRequest(asList(contentA, contentB));
            verify(_downstreamHandler).handle(Wrap(expected));
        }