private static void shutdown( String hostname, String port, String username, String password ) { try { callStopCarteRestService( hostname, port, username, password ); } catch ( Exception e ) { e.printStackTrace(); } }
@Override public void run() { carte.getWebServer().stopServer(); exitJVM( 0 ); } }, 1000 );
public static void main( String[] args ) { try { parseAndRunCommand( args ); } catch ( Exception e ) { e.printStackTrace(); } }
public static void runCarte( SlaveServerConfig config ) throws Exception { KettleLogStore.init( config.getMaxLogLines(), config.getMaxLogTimeoutMinutes() ); config.setJoining( true ); Carte carte = new Carte( config, false ); CarteSingleton.setCarte( carte ); carte.getWebServer().join(); }
displayHelpAndAbort(); FileObject file = KettleVFS.getFileObject( arguments[0] ); Document document = XMLHandler.loadXMLFile( file ); setKettleEnvironment(); // Must stand up server now to allow decryption of password Node configNode = XMLHandler.getSubNode( document, SlaveServerConfig.XML_TAG ); config = new SlaveServerConfig( new LogChannel( "Slave server config" ), configNode ); String user = cmd.getOptionValue( 'u' ); String password = cmd.getOptionValue( 'p' ); shutdown( hostname, port, user, password ); System.exit( 0 ); displayHelpAndAbort(); setKettleEnvironment(); runCarte( config );
private static void displayHelpAndAbort() { HelpFormatter formatter = new HelpFormatter(); String optionsHelp = getOptionsHelpForUsage(); String header = BaseMessages.getString( PKG, "Carte.Usage.Text" ) + optionsHelp + "\nor\n" + BaseMessages.getString( PKG, "Carte.Usage.Text2" ) + "\n\n" + BaseMessages.getString( PKG, "Carte.MainDescription" ); StringWriter stringWriter = new StringWriter(); PrintWriter printWriter = new PrintWriter( stringWriter ); formatter.printHelp( printWriter, 80, "CarteDummy", header, options, 5, 5, "", false ); System.err.println( stripOff( stringWriter.toString(), "usage: CarteDummy" ) ); System.err.println( BaseMessages.getString( PKG, "Carte.Usage.Example" ) + ": Carte 127.0.0.1 8080" ); System.err.println( BaseMessages.getString( PKG, "Carte.Usage.Example" ) + ": Carte 192.168.1.221 8081" ); System.err.println(); System.err.println( BaseMessages.getString( PKG, "Carte.Usage.Example" ) + ": Carte /foo/bar/carte-config.xml" ); System.err.println( BaseMessages.getString( PKG, "Carte.Usage.Example" ) + ": Carte http://www.example.com/carte-config.xml" ); System.err.println( BaseMessages.getString( PKG, "Carte.Usage.Example" ) + ": Carte 127.0.0.1 8080 -s -u cluster -p cluster" ); System.exit( 1 ); }
private static String getOptionsHelpForUsage() { HelpFormatter formatter = new HelpFormatter(); StringWriter stringWriter = new StringWriter(); PrintWriter printWriter = new PrintWriter( stringWriter ); formatter.printUsage( printWriter, 999, "", options ); return stripOff( stringWriter.toString(), "usage: " ); // Strip off the "usage:" so it can be localized }
@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(); }
@Override public SlaveServerStatus answer( InvocationOnMock invocation ) throws Throwable { SlaveServerDetection anotherDetection = mock( SlaveServerDetection.class ); carte.getWebServer().getDetections().add( anotherDetection ); latch.countDown(); return new SlaveServerStatus(); } } );
@Test public void callStopCarteRestService() throws Exception { WebResource status = mock( WebResource.class ); doReturn( "<serverstatus>" ).when( status ).get( String.class ); WebResource stop = mock( WebResource.class ); doReturn( "Shutting Down" ).when( stop ).get( String.class ); Client client = mock( Client.class ); doCallRealMethod().when( client ).addFilter( any( HTTPBasicAuthFilter.class ) ); doCallRealMethod().when( client ).getHeadHandler(); doReturn( status ).when( client ).resource( "http://localhost:8080/kettle/status/?xml=Y" ); doReturn( stop ).when( client ).resource( "http://localhost:8080/kettle/stopCarte" ); mockStatic( Client.class ); when( Client.create( any( ClientConfig.class ) ) ).thenReturn( client ); Carte.callStopCarteRestService( "localhost", "8080", "admin", "Encrypted 2be98afc86aa7f2e4bb18bd63c99dbdde" ); // the expected value is: "Basic <base64 encoded username:password>" assertEquals( "Basic " + new String( Base64.getEncoder().encode( "admin:password".getBytes( "utf-8" ) ) ), getInternalState( client.getHeadHandler(), "authentication" ) ); } }