@Test public void testClose() throws Exception { CommandFuture<Void> future = new DefaultCommandFuture<>(); when(command.execute()).thenReturn(future); future.setFailure(new Exception()); RetryTemplate<Void> retryTemplate = RetryNTimes.retryForEver(new RetryDelay(10)); OneThreadTaskExecutor oneThreadTaskExecutor = new OneThreadTaskExecutor(retryTemplate, executors); oneThreadTaskExecutor.executeCommand(command); sleep(100); oneThreadTaskExecutor.destroy(); retryTemplate.destroy(); sleep(10); verify(command, new AtLeast(1)).execute(); verify(command, new AtLeast(1)).reset(); sleep(100); verifyNoMoreInteractions(command); }
@Test public void moduleProviderDependencies() { final BQModuleProvider testModuleProvider1 = mock(BQModuleProvider.class); final BQModuleProvider testModuleProvider2 = mock(BQModuleProvider.class); final BQModuleProvider testModuleProvider3 = mock(BQModuleProvider.class); when(testModuleProvider1.dependencies()).thenReturn(asList(testModuleProvider2, testModuleProvider3)); final Collection<BQModuleProvider> bqModuleProviders = BootiqueUtils.moduleProviderDependencies(singletonList(testModuleProvider1)); assertTrue(bqModuleProviders.contains(testModuleProvider1)); assertTrue(bqModuleProviders.contains(testModuleProvider2)); assertTrue(bqModuleProviders.contains(testModuleProvider3)); assertEquals(3, bqModuleProviders.size()); verify(testModuleProvider1, new AtLeast(1)).dependencies(); verify(testModuleProvider2, new AtLeast(1)).dependencies(); verify(testModuleProvider3, new AtLeast(1)).dependencies(); verifyNoMoreInteractions(testModuleProvider1, testModuleProvider2, testModuleProvider3); }
@Test public void moduleProviderDependenciesTwoLevels() { final BQModuleProvider testModuleProvider1 = mock(BQModuleProvider.class); final BQModuleProvider testModuleProvider2 = mock(BQModuleProvider.class); final BQModuleProvider testModuleProvider3 = mock(BQModuleProvider.class); when(testModuleProvider1.dependencies()).thenReturn(singletonList(testModuleProvider2)); when(testModuleProvider2.dependencies()).thenReturn(singletonList(testModuleProvider3)); final Collection<BQModuleProvider> bqModuleProviders = BootiqueUtils.moduleProviderDependencies(singletonList(testModuleProvider1)); assertTrue(bqModuleProviders.contains(testModuleProvider1)); assertTrue(bqModuleProviders.contains(testModuleProvider2)); assertTrue(bqModuleProviders.contains(testModuleProvider3)); assertEquals(3, bqModuleProviders.size()); verify(testModuleProvider1, new AtLeast(1)).dependencies(); verify(testModuleProvider2, new AtLeast(1)).dependencies(); verify(testModuleProvider3, new AtLeast(1)).dependencies(); verifyNoMoreInteractions(testModuleProvider1, testModuleProvider2, testModuleProvider3); }
@Test public void moduleProviderDependenciesCircular() { final BQModuleProvider testModuleProvider1 = mock(BQModuleProvider.class); final BQModuleProvider testModuleProvider2 = mock(BQModuleProvider.class); final BQModuleProvider testModuleProvider3 = mock(BQModuleProvider.class); when(testModuleProvider1.dependencies()).thenReturn(singletonList(testModuleProvider2)); when(testModuleProvider2.dependencies()).thenReturn(singletonList(testModuleProvider3)); when(testModuleProvider3.dependencies()).thenReturn(singletonList(testModuleProvider1)); final Collection<BQModuleProvider> bqModuleProviders = BootiqueUtils.moduleProviderDependencies(singletonList(testModuleProvider1)); assertTrue(bqModuleProviders.contains(testModuleProvider1)); assertTrue(bqModuleProviders.contains(testModuleProvider2)); assertTrue(bqModuleProviders.contains(testModuleProvider3)); assertEquals(3, bqModuleProviders.size()); verify(testModuleProvider1, new AtLeast(1)).dependencies(); verify(testModuleProvider2, new AtLeast(1)).dependencies(); verify(testModuleProvider3, new AtLeast(1)).dependencies(); verifyNoMoreInteractions(testModuleProvider1, testModuleProvider2, testModuleProvider3); }
@Test public void shouldCreateCorrectType() { Timeout t = new Timeout(25, 50, mode); assertCorrectMode(t.atLeastOnce(), Timeout.class, 50, 25, AtLeast.class); assertCorrectMode(t.atLeast(5), Timeout.class, 50, 25, AtLeast.class); assertCorrectMode(t.times(5), Timeout.class, 50, 25, Times.class); assertCorrectMode(t.never(), Timeout.class, 50, 25, Times.class); assertCorrectMode(t.only(), Timeout.class, 50, 25, Only.class); assertCorrectMode(t.atMost(10), Timeout.class, 50, 25, AtMost.class); }
@Test public void should_create_correctly_configured_timeout() { Timeout t = new Timeout(25, 50, mode); assertTimeoutCorrectlyConfigured(t.atLeastOnce(), Timeout.class, 50, 25, AtLeast.class); assertTimeoutCorrectlyConfigured(t.atLeast(5), Timeout.class, 50, 25, AtLeast.class); assertTimeoutCorrectlyConfigured(t.times(5), Timeout.class, 50, 25, Times.class); assertTimeoutCorrectlyConfigured(t.only(), Timeout.class, 50, 25, Only.class); }