@Test
@Override
public void testFencing() throws Exception {
final String segment1 = "segment1";
final String segment2 = "segment2";
@Cleanup
val baseStorage = new InMemoryStorage();
@Cleanup
val storage = new AsyncStorageWrapper(baseStorage, executorService());
storage.initialize(DEFAULT_EPOCH);
storage.create(segment1, TIMEOUT).get(TIMEOUT.toMillis(), TimeUnit.MILLISECONDS);
SegmentHandle handle1 = storage.openWrite(segment1).join();
verifyAllOperationsSucceed(handle1, storage);
baseStorage.changeOwner();
verifyWriteOperationsFail(handle1, storage);
handle1 = storage.openWrite(segment1).join();
verifyAllOperationsSucceed(handle1, storage);
storage.create(segment2, TIMEOUT).get(TIMEOUT.toMillis(), TimeUnit.MILLISECONDS);
SegmentHandle handle2 = storage.openWrite(segment2).join();
verifyAllOperationsSucceed(handle2, storage);
storage.delete(handle1, TIMEOUT).get(TIMEOUT.toMillis(), TimeUnit.MILLISECONDS);
storage.delete(handle2, TIMEOUT).get(TIMEOUT.toMillis(), TimeUnit.MILLISECONDS);
}