private static void offer(final Publication publication, final int count, final String prefix) { final ExpandableArrayBuffer buffer = new ExpandableArrayBuffer(); for (int i = 0; i < count; i++) { final int length = buffer.putStringWithoutLengthAscii(0, prefix + i); while (publication.offer(buffer, 0, length) <= 0) { SystemTest.checkInterruptedStatus(); Thread.yield(); } } }
public void onTimerEvent(final long correlationId, final long timestampMs) { final String responseMsg = msg + "-scheduled"; buffer.putStringWithoutLengthAscii(0, responseMsg); final ClientSession clientSession = cluster.getClientSession(clusterSessionId); while (clientSession.offer(buffer, 0, responseMsg.length()) < 0) { cluster.idle(); } } };
private static void offer( final Publication publication, final int startIndex, final int count, final String prefix) { final ExpandableArrayBuffer buffer = new ExpandableArrayBuffer(); for (int i = startIndex; i < (startIndex + count); i++) { final int length = buffer.putStringWithoutLengthAscii(0, prefix + i); while (publication.offer(buffer, 0, length) <= 0) { SystemTest.checkInterruptedStatus(); Thread.yield(); } } }
private void startMessageThread(final TestCluster cluster, final long intervalNs) { executor.submit(() -> { //final IdleStrategy idleStrategy = new YieldingIdleStrategy(); cluster.msgBuffer().putStringWithoutLengthAscii(0, MSG); while (true) { while (cluster.client().offer(cluster.msgBuffer(), 0, MSG.length()) < 0) { if (Thread.interrupted()) { return; } cluster.client().pollEgress(); LockSupport.parkNanos(intervalNs); } cluster.client().pollEgress(); //idleStrategy.idle(); } }); } }
private void assertClusterIsFunctioningCorrectly() throws InterruptedException { int leaderMemberId; while (NULL_VALUE == (leaderMemberId = findLeaderId(NULL_VALUE))) { TestUtil.checkInterruptedStatus(); Thread.sleep(1000); } final int followerMemberIdA = (leaderMemberId + 1) >= MEMBER_COUNT ? 0 : (leaderMemberId + 1); final int followerMemberIdB = (leaderMemberId + 1) >= MEMBER_COUNT ? 0 : (leaderMemberId + 1); Thread.sleep(1000); assertThat(roleOf(followerMemberIdA), is(Cluster.Role.FOLLOWER)); assertThat(roleOf(followerMemberIdB), is(Cluster.Role.FOLLOWER)); startClient(); final ExpandableArrayBuffer msgBuffer = new ExpandableArrayBuffer(); msgBuffer.putStringWithoutLengthAscii(0, MSG); final int initialCount = responseCount.get(); sendMessages(msgBuffer); awaitResponses(MESSAGE_COUNT + initialCount); }
@Test(timeout = 10_000) public void shouldScheduleEventInService() { final ExpandableArrayBuffer msgBuffer = new ExpandableArrayBuffer(); final String msg = "Hello World!"; msgBuffer.putStringWithoutLengthAscii(0, msg); final MutableInteger messageCount = new MutableInteger(); final EgressListener listener = (clusterSessionId, timestamp, buffer, offset, length, header) -> { assertThat(buffer.getStringWithoutLengthAscii(offset, length), is(msg + "-scheduled")); messageCount.value += 1; }; container = launchTimedService(); aeronCluster = connectToCluster(listener); while (aeronCluster.offer(msgBuffer, 0, msg.length()) < 0) { TestUtil.checkInterruptedStatus(); Thread.yield(); } while (messageCount.get() == 0) { if (aeronCluster.pollEgress() <= 0) { TestUtil.checkInterruptedStatus(); Thread.yield(); } } }
@Test(timeout = 10_000) public void shouldEchoMessageViaService() { final ExpandableArrayBuffer msgBuffer = new ExpandableArrayBuffer(); final String msg = "Hello World!"; msgBuffer.putStringWithoutLengthAscii(0, msg); final MutableInteger messageCount = new MutableInteger(); final EgressListener listener = (clusterSessionId, timestamp, buffer, offset, length, header) -> { assertThat(buffer.getStringWithoutLengthAscii(offset, length), is(msg)); messageCount.value += 1; }; container = launchEchoService(); aeronCluster = connectToCluster(listener); while (aeronCluster.offer(msgBuffer, 0, msg.length()) < 0) { TestUtil.checkInterruptedStatus(); Thread.yield(); } while (messageCount.get() == 0) { if (aeronCluster.pollEgress() <= 0) { TestUtil.checkInterruptedStatus(); Thread.yield(); } } }