use of org.agrona.collections.MutableInteger in project aeron by real-logic.
the class ClusterNodeTest method shouldSendResponseAfterServiceMessage.
@Test
@InterruptAfter(10)
public void shouldSendResponseAfterServiceMessage() {
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) -> {
assertEquals(msg, buffer.getStringWithoutLengthAscii(offset, length));
messageCount.value += 1;
};
container = launchServiceMessageIngressService();
aeronCluster = connectToCluster(listener);
offerMessage(msgBuffer, msg);
awaitResponse(messageCount);
ClusterTests.failOnClusterError();
}
use of org.agrona.collections.MutableInteger in project aeron by real-logic.
the class ArchiveMigration_2_3Test method migrateRemovesGapsBetweenRecordings.
@Test
@SuppressWarnings("methodLength")
void migrateRemovesGapsBetweenRecordings() throws IOException {
final Path catalogFile = archiveDir.toPath().resolve(Archive.Configuration.CATALOG_FILE_NAME);
final List<RecordingDescriptorV2> recordings = asList(new RecordingDescriptorV2(VALID, 42, 21, 0, 123, 456, 0, 1024, 3, 500, 1024, 1408, 8, 55, "strCh", "aeron:udp?endpoint=localhost:9090", "sourceA"), new RecordingDescriptorV2(VALID, 41, 14, 4, 400, 4000, 44, 444, 4, 44, 44444, 4000, 44, 4040, "ch1024", "aeron:udp?endpoint=localhost:44444", generateStringWithSuffix("source", "B", 854)), new RecordingDescriptorV2(INVALID, 333, 333, 56, 100, 200, 999, 100999, 8, 2048, 4096, 9000, -10, 1, "ch", "channel", "sourceC"));
try (ArchiveMarkFile markFile = createArchiveMarkFileInVersion2(archiveDir, clock);
Catalog catalog = createCatalogInVersion2(archiveDir, clock, recordings)) {
assertEquals(RECORDING_FRAME_LENGTH_V2 * 4, size(catalogFile));
migration.migrate(System.out, markFile, catalog, archiveDir);
assertEquals(migration.minimumVersion(), markFile.decoder().version());
assertEquals(1440, size(catalogFile));
assertTrue(catalog.isClosed());
verifyCatalogHeader(catalogFile, 57);
}
final String migrationTimestampFileName = migrationTimestampFileName(VERSION_2_1_0, migration.minimumVersion());
assertTrue(exists(archiveDir.toPath().resolve(migrationTimestampFileName)));
try (Catalog catalog = new Catalog(archiveDir, null, 0, 1024, clock, null, null)) {
final MutableInteger index = new MutableInteger();
catalog.forEach((recordingDescriptorOffset, headerEncoder, headerDecoder, descriptorEncoder, descriptorDecoder) -> {
final RecordingDescriptorV2 recording = recordings.get(index.getAndIncrement());
assertNotEquals(RECORDING_FRAME_LENGTH_V2, headerDecoder.length());
assertEquals(recording.valid, headerDecoder.state().value());
assertEquals(recording.controlSessionId, descriptorDecoder.controlSessionId());
assertEquals(recording.correlationId, descriptorDecoder.correlationId());
assertEquals(recording.recordingId, descriptorDecoder.recordingId());
assertEquals(recording.startTimestamp, descriptorDecoder.startTimestamp());
assertEquals(recording.stopTimestamp, descriptorDecoder.stopTimestamp());
assertEquals(recording.startPosition, descriptorDecoder.startPosition());
assertEquals(recording.stopPosition, descriptorDecoder.stopPosition());
assertEquals(recording.initialTermId, descriptorDecoder.initialTermId());
assertEquals(recording.segmentFileLength, descriptorDecoder.segmentFileLength());
assertEquals(recording.termBufferLength, descriptorDecoder.termBufferLength());
assertEquals(recording.mtuLength, descriptorDecoder.mtuLength());
assertEquals(recording.sessionId, descriptorDecoder.sessionId());
assertEquals(recording.streamId, descriptorDecoder.streamId());
assertEquals(recording.strippedChannel, descriptorDecoder.strippedChannel());
assertEquals(recording.originalChannel, descriptorDecoder.originalChannel());
assertEquals(recording.sourceIdentity, descriptorDecoder.sourceIdentity());
});
assertEquals(recordings.size(), index.get());
}
}
use of org.agrona.collections.MutableInteger in project aeron by real-logic.
the class SystemTestWatcher method countErrors.
private int countErrors(final List<Path> paths, final Predicate<String> filter, final Function<MappedByteBuffer, AtomicBuffer> toErrorBuffer) {
final MutableInteger errorCount = new MutableInteger();
for (final Path path : paths) {
final File file = path.toFile();
final MappedByteBuffer mmap = SamplesUtil.mapExistingFileReadOnly(file);
try {
final AtomicBuffer buffer = toErrorBuffer.apply(mmap);
ErrorLogReader.read(buffer, (observationCount, firstObservationTimestamp, lastObservationTimestamp, encodedException) -> {
if (filter.test(encodedException)) {
errorCount.set(errorCount.get() + observationCount);
}
});
} finally {
IoUtil.unmap(mmap);
}
}
return errorCount.get();
}
use of org.agrona.collections.MutableInteger in project aeron by real-logic.
the class SystemTestWatcher method countArchiveMarkFileErrors.
private int countArchiveMarkFileErrors(final List<Path> paths, final Predicate<String> filter) {
final MutableInteger errorCount = new MutableInteger();
for (final Path path : paths) {
try (ArchiveMarkFile archive = openArchiveMarkFile(path)) {
final AtomicBuffer buffer = archive.errorBuffer();
ErrorLogReader.read(buffer, (observationCount, firstObservationTimestamp, lastObservationTimestamp, encodedException) -> {
if (filter.test(encodedException)) {
errorCount.set(errorCount.get() + observationCount);
}
});
}
}
return errorCount.get();
}
use of org.agrona.collections.MutableInteger in project aeron by real-logic.
the class CatalogWithJumboRecordingsAndGapsTest method listRecordings.
@ParameterizedTest
@InterruptAfter(10)
@MethodSource("listRecordingsArguments")
void listRecordings(final long fromRecordingId, final int recordCount, final int expectedRecordCount) {
final MutableInteger callCount = new MutableInteger();
final int count = aeronArchive.listRecordings(fromRecordingId, recordCount, (controlSessionId, correlationId, recordingId, startTimestamp, stopTimestamp, startPosition, stopPosition, initialTermId, segmentFileLength, termBufferLength, mtuLength, sessionId, streamId, strippedChannel, originalChannel, sourceIdentity) -> callCount.increment());
assertEquals(expectedRecordCount, count);
assertEquals(expectedRecordCount, callCount.get());
}
Aggregations