@Test(timeout = 60_000) public void returnsImmediatelyIfCacheHasServers() { serverLauncher.running.set(true); List<CacheServer> servers = singletonList(mock(CacheServer.class)); when(cache.getCacheServers()).thenReturn(servers); when(system.isConnected()).thenReturn(true); when(cache.isReconnecting()).thenReturn(false); serverLauncher.waitOnServer(); } }
@Test(timeout = 60_000) public void returnsWhenLauncherIsRunningAndCacheIsNotReconnecting() { serverLauncher.running.set(true); when(cache.getCacheServers()).thenReturn(emptyList()); when(system.isConnected()).thenReturn(false); when(cache.isReconnecting()) .thenReturn(true, true, true) // Reconnecting for a while... .thenReturn(false); // ... then not serverLauncher.waitOnServer(); // Four times: true, true, true, false verify(cache, times(4)).isReconnecting(); }
@Test(timeout = 60_000) public void returnsWhenLauncherIsRunningAndSystemIsNotConnected() { serverLauncher.running.set(true); when(cache.getCacheServers()).thenReturn(emptyList()); when(cache.isReconnecting()).thenReturn(false); when(system.isConnected()) .thenReturn(true, true, true) // Connected for a while... .thenReturn(false); // ... then not serverLauncher.waitOnServer(); // Four times: false, false, false, true verify(system, times(4)).isConnected(); }
@Test public void reconnectedCacheIsClosed() { Cache cache = mock(Cache.class, "Cache"); Cache reconnectedCache = mock(Cache.class, "ReconnectedCache"); when(cache.isReconnecting()).thenReturn(false).thenReturn(false).thenReturn(true); when(cache.getCacheServers()).thenReturn(Collections.emptyList()); when(cache.getReconnectedCache()).thenReturn(reconnectedCache); new Builder().setCache(cache).build().waitOnServer(); verify(cache, atLeast(3)).isReconnecting(); verify(cache).getReconnectedCache(); verify(reconnectedCache).close(); }
@Test(timeout = 60_000) public void returnsWhenLauncherIsNotRunning() { when(cache.getCacheServers()).thenReturn(emptyList()); when(system.isConnected()).thenReturn(true); when(cache.isReconnecting()).thenReturn(false); // Running at first... serverLauncher.running.set(true); // Using isReconnecting() as a test hook to change running state // while we're in the while loop. when(cache.isReconnecting()) .thenReturn(false, false, false) .thenAnswer(invocation -> { serverLauncher.running.set(false); // ... then not running return false; }); serverLauncher.waitOnServer(); assertThat(serverLauncher.isRunning()).isFalse(); }
case START: info(start()); waitOnServer(); break; case STATUS: