Skip to content

Commit 44692e9

Browse files
committed
tests: adjust event sizes for DLQ boundaries with CBOR stringref extension
With the CBOR stringref extension enabled, we add a 3-byte overhead to each event to activate the extension, and eliminate 24 bytes of overhead for each event's secondary instances of `org.logstash.ConvertedMap`. Since the events under test have exactly two instances of `org.logstash.ConvertedMap`, this is a net reduction of 21 bytes of overhead. This changes the specifically-constructed events to have the intended lengths to test their specific edge-cases.
1 parent 680fd4d commit 44692e9

File tree

3 files changed

+11
-11
lines changed

3 files changed

+11
-11
lines changed

logstash-core/src/test/java/org/logstash/common/io/DeadLetterQueueReaderTest.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ public class DeadLetterQueueReaderTest {
7272
private Path dir;
7373
private int defaultDlqSize = 100_000_000; // 100mb
7474

75-
private static final int PAD_FOR_BLOCK_SIZE_EVENT = 32490;
75+
private static final int PAD_FOR_BLOCK_SIZE_EVENT = 32511;
7676

7777
@Rule
7878
public TemporaryFolder temporaryFolder = new TemporaryFolder();
@@ -240,7 +240,7 @@ private void validateEntries(Path firstLog, int startEntry, int endEntry, int st
240240
// This test tests for a single event that ends on a block boundary
241241
@Test
242242
public void testBlockBoundary() throws Exception {
243-
final int PAD_FOR_BLOCK_SIZE_EVENT = 32490;
243+
final int PAD_FOR_BLOCK_SIZE_EVENT = 32511;
244244
Event event = createEventWithConstantSerializationOverhead();
245245
char[] field = new char[PAD_FOR_BLOCK_SIZE_EVENT];
246246
Arrays.fill(field, 'e');
@@ -267,7 +267,7 @@ public void testBlockBoundary() throws Exception {
267267
@Test
268268
public void testBlockBoundaryMultiple() throws Exception {
269269
Event event = createEventWithConstantSerializationOverhead();
270-
char[] field = new char[7929];
270+
char[] field = new char[7950];
271271
Arrays.fill(field, 'x');
272272
event.setField("message", new String(field));
273273
long startTime = System.currentTimeMillis();
@@ -935,7 +935,7 @@ private int prepareFilledSegmentFiles(int segments) throws IOException {
935935

936936
private int prepareFilledSegmentFiles(int segments, long start) throws IOException {
937937
final Event event = createEventWithConstantSerializationOverhead(Collections.emptyMap());
938-
event.setField("message", generateMessageContent(32479));
938+
event.setField("message", generateMessageContent(32500));
939939

940940
DLQEntry entry = new DLQEntry(event, "", "", String.format("%05d", 1), constantSerializationLengthTimestamp(start));
941941
assertEquals("Serialized dlq entry + header MUST be 32Kb (size of a block)", BLOCK_SIZE, entry.serialize().length + 13);

logstash-core/src/test/java/org/logstash/common/io/DeadLetterQueueWriterAgeRetentionTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ public void setUp() throws Exception {
105105
@Test
106106
public void testRemovesOlderSegmentsWhenWriteOnReopenedDLQContainingExpiredSegments() throws IOException {
107107
final Event event = DeadLetterQueueReaderTest.createEventWithConstantSerializationOverhead(Collections.emptyMap());
108-
event.setField("message", DeadLetterQueueReaderTest.generateMessageContent(32479));
108+
event.setField("message", DeadLetterQueueReaderTest.generateMessageContent(32500));
109109

110110
final Clock pointInTimeFixedClock = Clock.fixed(Instant.parse("2022-02-22T10:20:30.00Z"), ZoneId.of("Europe/Rome"));
111111
final ForwardableClock fakeClock = new ForwardableClock(pointInTimeFixedClock);
@@ -160,7 +160,7 @@ private void prepareDLQWithFirstSegmentOlderThanRetainPeriod(Event event, Forwar
160160
@Test
161161
public void testRemovesOlderSegmentsWhenWritesIntoDLQContainingExpiredSegments() throws IOException {
162162
final Event event = DeadLetterQueueReaderTest.createEventWithConstantSerializationOverhead(Collections.emptyMap());
163-
event.setField("message", DeadLetterQueueReaderTest.generateMessageContent(32479));
163+
event.setField("message", DeadLetterQueueReaderTest.generateMessageContent(32500));
164164

165165
long startTime = fakeClock.instant().toEpochMilli();
166166
int messageSize = 0;
@@ -203,7 +203,7 @@ public void testRemovesOlderSegmentsWhenWritesIntoDLQContainingExpiredSegments()
203203
@Test
204204
public void testRemoveMultipleOldestSegmentsWhenRetainedAgeIsExceeded() throws IOException {
205205
final Event event = DeadLetterQueueReaderTest.createEventWithConstantSerializationOverhead(Collections.emptyMap());
206-
event.setField("message", DeadLetterQueueReaderTest.generateMessageContent(32479));
206+
event.setField("message", DeadLetterQueueReaderTest.generateMessageContent(32500));
207207

208208
long startTime = fakeClock.instant().toEpochMilli();
209209
int messageSize = 0;

logstash-core/src/test/java/org/logstash/common/io/DeadLetterQueueWriterTest.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -251,7 +251,7 @@ static String generateASCIIMessageContent(int size, byte fillChar) {
251251
@Test
252252
public void testRemoveOldestSegmentWhenRetainedSizeIsExceededAndDropOlderModeIsEnabled() throws IOException {
253253
Event event = DeadLetterQueueReaderTest.createEventWithConstantSerializationOverhead(Collections.emptyMap());
254-
event.setField("message", DeadLetterQueueReaderTest.generateMessageContent(32479));
254+
event.setField("message", DeadLetterQueueReaderTest.generateMessageContent(32500));
255255
long startTime = System.currentTimeMillis();
256256

257257
int messageSize = 0;
@@ -488,7 +488,7 @@ public void testReadTimestampOfLastEventInSegmentWithDeletedSegment() throws IOE
488488
@Test
489489
public void testDropEventCountCorrectlyNotEnqueuedEvents() throws IOException, InterruptedException {
490490
Event blockAlmostFullEvent = DeadLetterQueueReaderTest.createEventWithConstantSerializationOverhead(Collections.emptyMap());
491-
int serializationHeader = 286;
491+
int serializationHeader = 265;
492492
int notEnoughHeaderSpace = 5;
493493
blockAlmostFullEvent.setField("message", DeadLetterQueueReaderTest.generateMessageContent(BLOCK_SIZE - serializationHeader - RECORD_HEADER_SIZE + notEnoughHeaderSpace));
494494

@@ -501,7 +501,7 @@ public void testDropEventCountCorrectlyNotEnqueuedEvents() throws IOException, I
501501
// enqueue a record with size smaller than BLOCK_SIZE
502502
DLQEntry entry = new DLQEntry(blockAlmostFullEvent, "", "", "00001", DeadLetterQueueReaderTest.constantSerializationLengthTimestamp(System.currentTimeMillis()));
503503
assertEquals("Serialized plus header must not leave enough space for another record header ",
504-
entry.serialize().length, BLOCK_SIZE - RECORD_HEADER_SIZE - notEnoughHeaderSpace);
504+
BLOCK_SIZE - RECORD_HEADER_SIZE - notEnoughHeaderSpace, entry.serialize().length);
505505
writeManager.writeEntry(entry);
506506

507507
// enqueue a record bigger than BLOCK_SIZE
@@ -512,7 +512,7 @@ public void testDropEventCountCorrectlyNotEnqueuedEvents() throws IOException, I
512512

513513
// fill the queue to push out the segment with the 2 previous events
514514
Event event = DeadLetterQueueReaderTest.createEventWithConstantSerializationOverhead(Collections.emptyMap());
515-
event.setField("message", DeadLetterQueueReaderTest.generateMessageContent(32479));
515+
event.setField("message", DeadLetterQueueReaderTest.generateMessageContent(32500));
516516
try (DeadLetterQueueWriter writeManager = DeadLetterQueueWriter
517517
.newBuilder(dir, 10 * MB, 20 * MB, Duration.ofSeconds(1))
518518
.storageType(QueueStorageType.DROP_NEWER)

0 commit comments

Comments
 (0)