@Test
public void testWriteAfterHeaderMerge() throws Exception {
final String segmentName = "Segment";
final int writeLength = 21;
@Cleanup
val s = createStorage();
s.initialize(1);
val writeHandle = s.create(segmentName, SegmentRollingPolicy.NO_ROLLING, TIMEOUT)
.thenCompose(v -> s.openWrite(segmentName)).join();
final Random rnd = new Random(0);
byte[] writeBuffer = new byte[writeLength];
val writeStream = new ByteArrayOutputStream();
String sourceSegment = segmentName + "_Source";
val sourceHandle = s.create(sourceSegment, TIMEOUT).thenCompose(v -> s.openWrite(sourceSegment)).join();
rnd.nextBytes(writeBuffer);
s.write(sourceHandle, 0, new ByteArrayInputStream(writeBuffer), writeBuffer.length, TIMEOUT).join();
s.seal(sourceHandle, TIMEOUT).join();
s.concat(writeHandle, writeStream.size(), sourceSegment, TIMEOUT).join();
writeStream.write(writeBuffer);
rnd.nextBytes(writeBuffer);
s.write(writeHandle, writeStream.size(), new ByteArrayInputStream(writeBuffer), writeBuffer.length, TIMEOUT).join();
writeStream.write(writeBuffer);
val readHandle = (RollingSegmentHandle) s.openRead(segmentName).join();
Assert.assertEquals("Unexpected number of chunks created.", 1, readHandle.chunks().size());
}