// Format: abs=<count> rel=<count> op=<connect|init|upload|...> <operation description>
"rel=[678].+delete.+temp", // << 3 retries!!
}
));
TestClient clientA = new TestClient("A", testConnection);
clientA.createNewFile("file");
clientA.up();
clientA.changeFile("file");
clientA.upWithForceChecksum();
CleanupOperationOptions cleanupOptions = new CleanupOperationOptions();
cleanupOptions.setMaxDatabaseFiles(1);
boolean cleanupFailed = false;
try {
clientA.cleanup(cleanupOptions);
}
catch (StorageException e) {
cleanupFailed = true;
}
TransferManager transferManager = new TransactionAwareTransferManager(
new UnreliableLocalTransferPlugin().createTransferManager(testConnection, null), null);
assertTrue(cleanupFailed);
assertEquals(2, transferManager.list(MultichunkRemoteFile.class).size());
assertEquals(2, new File(testConnection.getPath(), "multichunks").list().length);
assertEquals(1, transferManager.list(DatabaseRemoteFile.class).size());
assertEquals(1, new File(testConnection.getPath(), "databases").list().length);
assertEquals(0, transferManager.list(TransactionRemoteFile.class).size());
assertEquals(0, new File(testConnection.getPath(), "transactions").list().length);
assertEquals(1, transferManager.list(ActionRemoteFile.class).size());
assertEquals(1, new File(testConnection.getPath(), "actions").list().length);
// Two temporary files left (first deletion failed)
assertEquals(2, transferManager.list(TempRemoteFile.class).size());
assertEquals(2, new File(testConnection.getPath(), "temporary").list().length);
clientA.cleanup(cleanupOptions);
// Functional cleanup results in removal of action file and unreferenced files
assertEquals(0, transferManager.list(ActionRemoteFile.class).size());
assertEquals(0, new File(testConnection.getPath(), "actions").list().length);