public void run() { for ( SlaveServerDetection slaveServerDetection : detections ) { SlaveServer slaveServer = slaveServerDetection.getSlaveServer(); // See if we can get a status... // try { // TODO: consider making this lighter or retaining more information... slaveServer.getStatus(); // throws the exception slaveServerDetection.setActive( true ); slaveServerDetection.setLastActiveDate( new Date() ); } catch ( Exception e ) { slaveServerDetection.setActive( false ); slaveServerDetection.setLastInactiveDate( new Date() ); // TODO: kick it out after a configurable period of time... } } } };
for ( SlaveServerDetection detection : detections ) { try { detection.getSlaveServer().getStatus(); } catch ( Exception e ) { detection.setActive( false );
for ( SlaveServerDetection slaveServer : getDetections() ) { try { slaveServer.getSlaveServer().getStatus(); } catch ( Exception e ) { slaveServer.setActive( false );
doReturn( activeSlaveServer ).when( activeServerDetection ).getSlaveServer(); doReturn( inactiveSlaveServer ).when( inactiveServerDetection ).getSlaveServer(); doThrow( new Exception() ).when( inactiveSlaveServer ).getStatus(); verify( activeSlaveServer ).getStatus(); verify( activeServerDetection, never() ).setActive( false ); verify( activeServerDetection, never() ).setLastInactiveDate( anyObject() ); verify( activeServerDetection ).getXML(); verify( inactiveSlaveServer ).getStatus(); verify( inactiveServerDetection ).setActive( false ); verify( inactiveServerDetection ).setLastInactiveDate( anyObject() );
doReturn( activeSlaveServer ).when( activeSlaveServerDetection ).getSlaveServer(); doReturn( inactiveSlaveServer ).when( inactiveSlaveServerDetection ).getSlaveServer(); doThrow( new Exception() ).when( inactiveSlaveServer ).getStatus(); verify( master ).getStatus(); verify( masterDetection, never() ).setActive( false ); verify( masterDetection, never() ).setLastInactiveDate( anyObject() ); verify( activeSlaveServer ).getStatus(); verify( activeSlaveServerDetection, never() ).setActive( false ); verify( activeSlaveServerDetection, never() ).setLastInactiveDate( anyObject() ); verify( inactiveSlaveServer ).getStatus(); verify( inactiveSlaveServerDetection ).setActive( false ); verify( inactiveSlaveServerDetection ).setLastInactiveDate( anyObject() );
@Ignore @Test public void test() throws Exception { CountDownLatch latch = new CountDownLatch( 1 ); System.setProperty( Const.KETTLE_SLAVE_DETECTION_TIMER, "100" ); SlaveServer master = new SlaveServer(); master.setHostname( "127.0.0.1" ); master.setPort( "9000" ); master.setUsername( "cluster" ); master.setPassword( "cluster" ); master.setMaster( true ); SlaveServerConfig config = new SlaveServerConfig(); config.setSlaveServer( master ); Carte carte = new Carte( config ); SlaveServerDetection slaveServerDetection = mock( SlaveServerDetection.class ); carte.getWebServer().getDetections().add( slaveServerDetection ); SlaveServer slaveServer = mock( SlaveServer.class, RETURNS_MOCKS ); when( slaveServerDetection.getSlaveServer() ).thenReturn( slaveServer ); when( slaveServer.getStatus() ).thenAnswer( new Answer<SlaveServerStatus>() { @Override public SlaveServerStatus answer( InvocationOnMock invocation ) throws Throwable { SlaveServerDetection anotherDetection = mock( SlaveServerDetection.class ); carte.getWebServer().getDetections().add( anotherDetection ); latch.countDown(); return new SlaveServerStatus(); } } ); latch.await( 10, TimeUnit.SECONDS ); assertEquals( carte.getWebServer().getDetections().size(), 2 ); carte.getWebServer().stopServer(); }
slaveServerStatus = slaveServer.getStatus(); } catch ( Exception e ) { slaveServerStatus = new SlaveServerStatus( "Error contacting server" );