use of org.infinispan.remoting.transport.BackupResponse in project infinispan by infinispan.
the class JGroupsBackupResponseUnitTest method testAsyncListener.
public void testAsyncListener() {
Listener listener = new Listener();
long sendTimestamp = timeService.time();
List<XSiteBackup> backups = new ArrayList<>(2);
backups.add(createAsyncBackup("async-1"));
backups.add(createAsyncBackup("async-2"));
Map<XSiteBackup, CompletableFuture<ValidResponse>> responses = createResponseMap(backups);
BackupResponse backupResponse = newBackupResponse(responses);
backupResponse.notifyAsyncAck(listener);
assertTrue(listener.queue.isEmpty());
timeService.advance(10);
responses.get(backups.get(0)).complete(null);
assertListenerData(listener, sendTimestamp, "async-1", null);
timeService.advance(10);
CacheException exception = new CacheException("Test-Exception");
responses.get(backups.get(1)).completeExceptionally(exception);
assertListenerData(listener, sendTimestamp, "async-2", exception);
assertTrue(listener.queue.isEmpty());
assertEquals(TimeUnit.NANOSECONDS.toMillis(sendTimestamp), backupResponse.getSendTimeMillis());
}
use of org.infinispan.remoting.transport.BackupResponse in project infinispan by infinispan.
the class JGroupsBackupResponseUnitTest method testNoWaitForAsyncWith.
public void testNoWaitForAsyncWith() {
List<XSiteBackup> backups = Collections.singletonList(createAsyncBackup("async-only"));
Map<XSiteBackup, CompletableFuture<ValidResponse>> responses = createResponseMap(backups);
BackupResponse response = newBackupResponse(responses);
Future<Void> waiting = waitBackupResponse(response);
// we only have async. it should be completed
assertCompleted(waiting);
}
use of org.infinispan.remoting.transport.BackupResponse in project infinispan by infinispan.
the class JGroupsBackupResponseUnitTest method testSyncListener.
public void testSyncListener() {
Listener listener = new Listener();
List<XSiteBackup> backups = new ArrayList<>(2);
backups.add(createSyncBackup("sync-1", 10000));
backups.add(createAsyncBackup("async-2"));
Map<XSiteBackup, CompletableFuture<ValidResponse>> responses = createResponseMap(backups);
BackupResponse backupResponse = newBackupResponse(responses);
backupResponse.notifyFinish(listener);
assertTrue(listener.queue.isEmpty());
Future<Void> waiting = waitBackupResponse(backupResponse);
timeService.advance(10);
responses.get(backups.get(1)).complete(null);
assertNotCompleted(waiting);
assertTrue(listener.queue.isEmpty());
timeService.advance(10);
responses.get(backups.get(0)).complete(null);
assertCompleted(waiting);
assertListenerData(listener, 20, null, null);
assertTrue(listener.queue.isEmpty());
}
use of org.infinispan.remoting.transport.BackupResponse in project infinispan by infinispan.
the class JGroupsBackupResponseUnitTest method testNoErrorsFromAsync.
public void testNoErrorsFromAsync() {
// tests if JGroupsBackupResponse doesn't waitBackupResponse for the async request
long timeoutMs = 10000;
List<XSiteBackup> backups = new ArrayList<>(3);
backups.add(createSyncBackup("sync-1", timeoutMs));
backups.add(createSyncBackup("sync-2", 2 * timeoutMs));
backups.add(createAsyncBackup("async"));
Map<XSiteBackup, CompletableFuture<ValidResponse>> responses = createResponseMap(backups);
BackupResponse response = newBackupResponse(responses);
// this will trigger a timeout for sync-1
timeService.advance(timeoutMs + 1);
Future<Void> waiting = waitBackupResponse(response);
assertNotCompleted(waiting);
// complete the async request
CacheException exception = new CacheException("Test-Exception");
responses.get(backups.get(1)).complete(null);
responses.get(backups.get(2)).completeExceptionally(exception);
assertCompleted(waiting);
assertEquals(1, response.getCommunicationErrors().size());
assertEquals(1, response.getFailedBackups().size());
assertTrue(response.getCommunicationErrors().contains("sync-1"));
assertTrue(response.getFailedBackups().containsKey("sync-1"));
assertException(org.infinispan.util.concurrent.TimeoutException.class, response.getFailedBackups().get("sync-1"));
}
use of org.infinispan.remoting.transport.BackupResponse in project infinispan by infinispan.
the class JGroupsBackupResponseUnitTest method testEmpty.
public void testEmpty() {
List<XSiteBackup> backups = new ArrayList<>(1);
backups.add(createAsyncBackup("async"));
BackupResponse response = newBackupResponse(createResponseMap(backups));
assertTrue(response.isEmpty());
backups.add(createSyncBackup("sync", 10000));
response = newBackupResponse(createResponseMap(backups));
assertFalse(response.isEmpty());
}
Aggregations