Skip to content

Commit 2149d94

Browse files
committed
chore: incorrect cursor end example
1 parent 484b80e commit 2149d94

File tree

1 file changed

+52
-0
lines changed

1 file changed

+52
-0
lines changed

rumqttd/src/segments/mod.rs

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -362,6 +362,58 @@ mod tests {
362362
assert_eq!(log.len(), 2);
363363
}
364364

365+
#[test]
366+
fn should_not_fail() {
367+
let max_segment_size = 1024 * 100; // 100K
368+
let packet_size: u64 = 1024;
369+
// 1 as active only
370+
let mut log = CommitLog::new(max_segment_size, 1).unwrap();
371+
372+
for i in 0..10 {
373+
log.append(random_payload(i, packet_size));
374+
}
375+
376+
assert_eq!(log.active_segment().len(), 10);
377+
assert_eq!(log.active_segment().size(), packet_size * 10);
378+
379+
// Read one by one
380+
let mut out = Vec::new();
381+
let mut last_read_cursor = (0, 0);
382+
for i in 0..10 {
383+
let offset = i as u64;
384+
let next = log.readv((0, offset), 1, &mut out).unwrap();
385+
let data = out.pop().unwrap();
386+
verify(i, packet_size, data);
387+
388+
if i == 9 {
389+
if let Done { start: _, end } = next {
390+
last_read_cursor = end;
391+
};
392+
assert_eq!(
393+
next,
394+
Done {
395+
start: (0, 9),
396+
end: (1, 10)
397+
}
398+
);
399+
continue;
400+
}
401+
402+
assert_eq!(
403+
next,
404+
Next {
405+
start: (0, i as u64),
406+
end: (0, i as u64 + 1)
407+
}
408+
);
409+
}
410+
411+
log.append(random_payload(10, packet_size));
412+
log.readv(last_read_cursor, 1, &mut out).unwrap();
413+
let data = out.pop().unwrap();
414+
verify(10, packet_size, data);
415+
}
416+
365417
#[test]
366418
fn active_segment_appends_and_reads_works() {
367419
let max_segment_size = 1024 * 100; // 100K

0 commit comments

Comments
 (0)