@Test public void testListenerErrorCanRestartReplication() throws URISyntaxException, InterruptedException { Listener listener = new Listener(); URI uri = new URI("http://127.0.0.1:5984/db1"); DatastoreExtended mockDatastore = mock(DatastoreExtended.class); ReplicationStrategy mockStrategy = mock(ReplicationStrategy.class); when(mockStrategy.isReplicationTerminated()).thenReturn(true); when(mockStrategy.getEventBus()).thenReturn(new EventBus()); PullReplication pull = createPullReplication(uri, mockDatastore); TestReplicator replicator = new TestReplicator(pull, mockStrategy); replicator.getEventBus().register(listener); replicator.start(); // Waits for callbacks to be run replicator.error( new ReplicationStrategyErrored( mockStrategy, new ErrorInfo(new RuntimeException("Mocked error")))); Assert.assertTrue(listener.run); Assert.assertFalse(listener.errorThrown); // Don't leave threads about the place replicator.complete(new ReplicationStrategyCompleted(mockStrategy)); }
@Before public void setUp() throws Exception { uri = new URI("http://127.0.0.1:5984/db1"); mockDatastore = mock(DatastoreExtended.class); mockStrategy = mock(ReplicationStrategy.class); when(mockStrategy.getEventBus()).thenReturn(new EventBus()); mockListener = mock(Listener.class); replicator = new TestReplicator(this.createPullReplication(this.uri, this.mockDatastore), mockStrategy); // mockStrategy always needs to be ready to start when(mockStrategy.isReplicationTerminated()).thenReturn(true); }