1 16 package scriptella.tools.launcher; 17 18 import scriptella.DBTestCase; 19 import scriptella.util.IOUtils; 20 21 import javax.management.MBeanServer ; 22 import javax.management.MalformedObjectNameException ; 23 import javax.management.ObjectName ; 24 import java.io.File ; 25 import java.io.FileNotFoundException ; 26 import java.lang.management.ManagementFactory ; 27 import java.net.MalformedURLException ; 28 import java.net.URL ; 29 import java.util.ArrayList ; 30 import java.util.Collections ; 31 import java.util.List ; 32 import java.util.concurrent.Callable ; 33 34 40 public class EtlLauncherTest extends DBTestCase { 41 42 public void testLaunch() { 43 final List <String > files = new ArrayList <String >(); 44 45 EtlLauncher etlLauncher = new EtlLauncher() { 46 @Override 47 protected boolean isFile(File file) { 48 return file.getName().indexOf("_nofile_")<0; 49 } 50 51 @Override 52 public void execute(final File file) { 53 files.add(file.getName()); 54 } 55 }; 56 assertEquals(EtlLauncher.ErrorCode.OK, etlLauncher.launch(new String []{"-v"})); 57 assertEquals(EtlLauncher.ErrorCode.UNRECOGNIZED_OPTION, etlLauncher.launch(new String []{"-nosuchproperty"})); 58 assertEquals(EtlLauncher.ErrorCode.OK, etlLauncher.launch(new String []{"-h"})); 59 assertEquals(EtlLauncher.ErrorCode.OK, etlLauncher.launch(new String []{})); 60 assertEquals(1, files.size()); 61 assertEquals("etl.xml", files.get(0)); 62 files.clear(); 63 assertEquals(EtlLauncher.ErrorCode.FILE_NOT_FOUND, etlLauncher.launch(new String []{"_nofile_", "etl.xml"})); 64 assertEquals(0, files.size()); 65 } 66 67 public void testNoEtlFile() { 68 EtlLauncher etlLauncher = new EtlLauncher() { 69 @Override 70 protected boolean isFile(File file) { 71 return false; 72 } 73 }; 74 assertEquals(EtlLauncher.ErrorCode.FILE_NOT_FOUND, etlLauncher.launch(new String [] {})); 75 76 77 } 78 79 public void testFile() { 80 EtlLauncher launcher = new EtlLauncher(); 81 assertEquals(EtlLauncher.ErrorCode.OK, launcher.launch(new String [] {"tools/src/test/scriptella/tools/launcher/EtlLauncherTest"})); 82 } 83 84 87 public void testJmx() throws FileNotFoundException , MalformedURLException , MalformedObjectNameException { 88 final EtlLauncher launcher = new EtlLauncher(); 89 final String fileName = "tools/src/test/scriptella/tools/launcher/EtlLauncherTestJmx"; 90 URL u = IOUtils.toUrl(launcher.resolveFile(null, fileName)); 91 final ObjectName mbeanName = new ObjectName ("scriptella:type=etl,url=" + ObjectName.quote(u.toString())); 92 final MBeanServer srv = ManagementFactory.getPlatformMBeanServer(); 93 Callable r = new Callable () { 94 public String call() throws Exception { 95 try { 96 final Number n = (Number ) srv.getAttribute( 97 mbeanName, 98 "ExecutedStatementsCount"); 99 assertEquals(2, n.intValue()); 100 } catch (Exception e) { 101 fail(e.getMessage()); 102 } 103 srv.invoke(mbeanName, "cancel",null, null); 105 return ""; 106 } 107 }; 108 launcher.setProperties(Collections.singletonMap("callback", r)); 109 110 assertEquals(EtlLauncher.ErrorCode.FAILED, launcher.launch(new String [] {fileName})); 111 assertFalse(srv.isRegistered(mbeanName)); 112 } 113 114 115 } 116 | Popular Tags |