public void testCancel() throws IOException, InsertException, MissingKeyException {
Random r = new Random(12124);
long size = 32768*6;
BarrierRandomAccessBuffer data = new BarrierRandomAccessBuffer(generateData(r, size));
HashResult[] hashes = getHashes(data);
data.pause();
MyCallback cb = new MyCallback();
InsertContext context = baseContext.clone();
context.earlyEncode = true;
KeysFetchingLocally keys = new MyKeysFetchingLocally();
SplitFileInserterStorage storage = new SplitFileInserterStorage(data, size, cb, null,
new ClientMetadata(), false, null, smallRAFFactory, false, context,
cryptoAlgorithm, cryptoKey, null, hashes, smallBucketFactory, checker,
r, memoryLimitedJobRunner, jobRunner, ticker, keys, false, 0, 0, 0, 0);
storage.start();
assertEquals(storage.getStatus(), Status.STARTED);
assertEquals(storage.segments.length, 1);
SplitFileInserterSegmentStorage segment = storage.segments[0];
segment.onFailure(0, new InsertException(InsertExceptionMode.INTERNAL_ERROR));
data.proceed();
try {
cb.waitForFinishedEncode();
assertFalse(true);
} catch (InsertException e) {
assertFalse(segment.isEncoding());
assertEquals(storage.getStatus(), Status.FAILED);
}
}