From a5d2cb51719771213a9b04d9e4cfc60a923ac47c Mon Sep 17 00:00:00 2001 From: dblouin <dominique.blouin@telecom-paristech.fr> Date: Thu, 2 Feb 2017 17:29:23 +0100 Subject: [PATCH] Issue #18: Added tests for RSHClient --- tests/util/fr.tpt.ttool.tests.util/.classpath | 8 + tests/util/fr.tpt.ttool.tests.util/.project | 17 + .../.settings/org.eclipse.jdt.core.prefs | 11 + .../fr.tpt.ttool.tests.util/bin/.gitignore | 1 + .../launch/TestRshClient.launch | 16 + .../resources/helloWorld | Bin 0 -> 9112 bytes .../resources/helloWorldNonStop | Bin 0 -> 9320 bytes .../tests/util/remote/TestRshClient.java | 324 ++++++++++++++++++ 8 files changed, 377 insertions(+) create mode 100644 tests/util/fr.tpt.ttool.tests.util/.classpath create mode 100644 tests/util/fr.tpt.ttool.tests.util/.project create mode 100644 tests/util/fr.tpt.ttool.tests.util/.settings/org.eclipse.jdt.core.prefs create mode 100644 tests/util/fr.tpt.ttool.tests.util/bin/.gitignore create mode 100644 tests/util/fr.tpt.ttool.tests.util/launch/TestRshClient.launch create mode 100755 tests/util/fr.tpt.ttool.tests.util/resources/helloWorld create mode 100755 tests/util/fr.tpt.ttool.tests.util/resources/helloWorldNonStop create mode 100644 tests/util/fr.tpt.ttool.tests.util/src/fr/tpt/ttool/tests/util/remote/TestRshClient.java diff --git a/tests/util/fr.tpt.ttool.tests.util/.classpath b/tests/util/fr.tpt.ttool.tests.util/.classpath new file mode 100644 index 0000000000..ac3a9c3963 --- /dev/null +++ b/tests/util/fr.tpt.ttool.tests.util/.classpath @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="src" path="src"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/> + <classpathentry combineaccessrules="false" kind="src" path="/src"/> + <classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/tests/util/fr.tpt.ttool.tests.util/.project b/tests/util/fr.tpt.ttool.tests.util/.project new file mode 100644 index 0000000000..7a3d164b32 --- /dev/null +++ b/tests/util/fr.tpt.ttool.tests.util/.project @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>fr.tpt.ttool.tests.util</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.jdt.core.javanature</nature> + </natures> +</projectDescription> diff --git a/tests/util/fr.tpt.ttool.tests.util/.settings/org.eclipse.jdt.core.prefs b/tests/util/fr.tpt.ttool.tests.util/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000000..3a21537071 --- /dev/null +++ b/tests/util/fr.tpt.ttool.tests.util/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,11 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/tests/util/fr.tpt.ttool.tests.util/bin/.gitignore b/tests/util/fr.tpt.ttool.tests.util/bin/.gitignore new file mode 100644 index 0000000000..44fde9027b --- /dev/null +++ b/tests/util/fr.tpt.ttool.tests.util/bin/.gitignore @@ -0,0 +1 @@ +/fr/ diff --git a/tests/util/fr.tpt.ttool.tests.util/launch/TestRshClient.launch b/tests/util/fr.tpt.ttool.tests.util/launch/TestRshClient.launch new file mode 100644 index 0000000000..be994b1055 --- /dev/null +++ b/tests/util/fr.tpt.ttool.tests.util/launch/TestRshClient.launch @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<launchConfiguration type="org.eclipse.jdt.junit.launchconfig"> +<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS"> +<listEntry value="/fr.tpt.ttool.tests.util/src/fr/tpt/ttool/tests/util/remote/TestRshClient.java"/> +</listAttribute> +<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES"> +<listEntry value="1"/> +</listAttribute> +<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value=""/> +<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/> +<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/> +<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit4"/> +<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/> +<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="fr.tpt.ttool.tests.util.remote.TestRshClient"/> +<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="fr.tpt.ttool.tests.util"/> +</launchConfiguration> diff --git a/tests/util/fr.tpt.ttool.tests.util/resources/helloWorld b/tests/util/fr.tpt.ttool.tests.util/resources/helloWorld new file mode 100755 index 0000000000000000000000000000000000000000..4a59186b2ba9badf0ac77be4561e72ba237d8917 GIT binary patch literal 9112 zcmb<-^>JfjWMqH=CI&kO5N`sz16T+`GBDhb26MrL1A_$vCxZinJcA4a8v_FaD+2=q zOq~Oi1*3m}3}awmfYBUa6Brnn85kH?7#J8Vm>>ccOb`=bv<yU;0Y*cO0lN)kA5<E} zW{_A87l>qFfYA&L3Sa?{evn&#@PfGvKX?<s3>cjNbw>lpVPF}EK9Dd-p9CLRkU@eE zq7Ozt02$1{zyPCR{sZ|9ghN0EFfcHLK>Y`!T_DCWz-W+KkWj$Wk`xeIgA>GKV9?-% zgbR$efe16eXpmZvP~g*&6p%YXY+|qgR8bJrK3w6#0d+r&hI*GlKPNNE%tSvYMK>oi zue3t9!op0~%tWs^U(W~}uORb5YTf-p!8U=60l5zpsvtLuFhJ4(SiUp-!hf~9Hop!} z;GdTlYwW0NrU+6Gib{|fAbkuB0t}#J3K9busNs6mM|1{{Gl-21gX{;{g)S%0080_5 zGF*%d3__?vV4gD$aWfp^#yHIP$06RxfZg8nIK(rd;vd)`=>qIX1_lNtMg|5!1}TOF z0Z95300kUKGAA>sxFjW6TN@NNW(@K1>ACrN@x>*HMJ4g^4DnuN@j<ESnZ+fkMb0^i z#l@+`4Dp^JzVRukMNr`oU+0|syws4yq?}ZU9Cn!~zu*#!%>3f`q{QM>6VJTN5*I_) zGKTo5;1WZ#`1t(dlA_ea-1yAA;?$xN&*b0|L&M~Z#G?3;qQuOSV$Wn(*P!4ML*t~x z;>={2YR{1P5QBKvV6*rD?_lHj9I$C7sd*_mBpbjGkLf^Xm;+6c^Giz@ax#;WVWE^< zkr<y?l3I~j!Vn)1l7I$TZenI0gS(HXlXJY0o{^p@gdGtPZ>(pcXNk-M1wIHfF))Km zJ5YJY!~lXIQAP$v1|3FFs)nS;QmIT%P>u+N#v3C86S%AcrDKr#&U#HIkO_%UJtdlx zI2ah181kX&fAB-%9h6s~LLhDM^Z+U|xxpe3LIRpj*rE9lBFey^fFuser!a91Byo^g zFmVGUaai62$yp$Y!^%XExC4?nw1@)<Gk7$=;qd5YP32Tz@Mt|y!uq0_fq}uJ`3T2h zur!?bZyLm@!0=x+gj0cmU*3V?zbc5I0g`|D;Q#;s|5d#>6&Nx=LGbbdnC}GQgNl=v z2f%zQ5Fb>^zuW-k8-e&BufALW=4*lYATPe00OnufP+&-#0I~ptLGIio$iTp`PlVHf zVLvFlz1Z>p|9=Q;-~a#r4G(~w%`e{oQ@_7ZFoEGk(EtDccLfL}Fzf?y_k%JpNa4$< z|NsA|>G8|AfRr;BzV+<980XRX$fNnmhky{z;|CZx9T+^0ADqAeqK+G|J21Qu|NsC0 zmo$EP7Y2qM@d619p&q&s0tpNr%|G}&I-izF?*JJE3P!=${UC||57J=f#~ucS8p6JP zAo);_#&;mv<KRDLkIttaogX|7zOeUTJmzunUx_H(G;Ww_{PGO3havVi*lKbrFffz~ zhI({9eUbP7|Nq!ytYVxB42++_HtiSS13Ao|p_KLYWPW)DxM3eb8vb91eOZO#f5&jg zFvrgSj-ierKE0}8tO^XF9=*D8tO^Xlo}J%3JFog^J_W^r$HBkMFOL8H|KFqaZHa>6 zZJ7UjI$!y8esk&k@AzNjjz{xhMi0x^rLRB%9Ubc!;~480=NNx@0>b~F4}+4~8xD{P zP*MZsJ4HoBkJOx;e1-7*qMQ^(MMVY%21aRSYfzmF%3mFS|Nrk`U|`_*_y7L}P#fmo z|Nkc#7#K4C{r?{UqW}N@|A2vk;l}^}|204<k%55$RNsMOg|RA#fw4k>QJROHV*(?) z07x9v#sQh71yTUTAaM{ARXqcP3IhYUP4wf>|NjLb1$+W-d=g&#+~ph%4E9piTE;3$ zAYqVxP}?Hl@BjarAOROXffPOtusdQvZv6ZIzZz6LmX8D64k=+^U}*UF|9>h-+=)-1 zpUH_&qL0~?PobB^iBF@4)q~HVjm?A4qM6;7&!LFV!jaFwkx#>kPr->#!ii7732Ocx z1_p)||Nj36Wjc^iqj)p~Mnhn5g+Kxar2Uux>*qoFFjqp0EpQtIBnIPy+AJVG4~Sr3 zVCaChL!sR&1{P?4MG`6x>tDgTkFfTP6jYuA+MfcIfgmARTjA@!|M?*P3~0XzR3U@- z511kD29?7g{sE{wtnE<^bttT@BLPyxz`!61rC}7P0RU!0+as{D3RcmB%1@9ysC@*Y z#X$t9AIl1{A0~bR%7?kz0ICkwwt?CI??1#p6;Sp6p?sLVAE5jgs65mdnp3cTEV@O< zpz(SQN<V|r-=H)bG~I|nX>|SW&dyc}8lg$0c_pO^rg|oN2D)aYV4h)}p_!h6iJplj zL|nnhz|hRV%)k=e2n;?m10w@$d;nRJnSlx3zeW{jW+;KC4^(j$23Wd66=!9Dr6*Kz zHU?O_LltLdz!qQ33>*xwct%yv$pA|)sN!4<Kd{6*GXpm~f1#@9Vb}nT2UKxh1_dnf z!OXzN0BScPs|B%{8TjG(6~u>OW(ENU0cbvkiGgTl20{3E1c(pA%nU*d8CcZ|!^c@* zYC$wJg9rmG--Gxt%*-Il0BSD6_%NE8K@2|b0uuw#%nafTuznAS55vq15)2H`d<_!= z(aa2z3?5j;5&dS6Iv8eVfR$P>5e9I1$indPKSBh;0+ol1SlkaP2bmc77!IJt3&>=U zI0IU_tH%K9)$uVnpoxRpa*Pa83<ZLaejc=#V+aPdO|gV$71SJ9IS+9q14A2FJ!ZTt z1&_yJ`fCf!9H{%jZAJzL22gt!<Q`C824ptOJs=ue_*@6uE5wk&1t~v4dO-LoSR8x2 zV>9O?NE4QH$ifJU8_al@0y&657$d!DL&ahB6WCY=1_nE@Ihg6qg$dM8$4o!&;Bg>6 z22d{zWCpA}_h15z>+mta#!+Ey`*22(IUtp&I1Pt*AlQ7&d|Cw-M>PY)n~y_$9}e*w zP;pRq6r>-9|Kf0uBok<y2~j?PI?f<H8sP8&u~4xS6KISBGu-?^<}gVzfV!Q?I-)`1 zSjMr6K;lf244@7)vif>hI79ObxbMQiz|apCM^*`8zX7{P3d3GC@VJT;Lj^Q{K~ys^ z{J>$312e>5=<WygA%&32TX5ftfq|hDYz~(4Jh`Z(xTG{KO)r@tKHkeYDBj02I3zxv z0Wkm<Uy>W23>tzfW{8hZ$&XLZ$xlkmiBBoXFDi~tEUjQj&d)8#Ni9iD(K9!-FvYGY zJ}omZGd{7XD6uj=HLs+ok|C`qF*h|nr8GCUk|91Gi5H)lmsx_MGy~Kd26u+_k_!qL z;@y4xog97Q<BLm^;yvTRLt>y|J|Bzt_{@BeZie`Hw;)Gf*LYVym-u+7$6#!CztDJB z52ykUmms)#{%&r;t|9Ruj!r(VAWa~X;O<Cah(~r9cmR_j-X+q{(bv-%Hb$3RTnhFm zQNx_r#{(T4z@vMR5j~i>VB5eRg-SyQ|Kj5j<Ai83n5Kh<L!pXbrsExH^^Y$uNy*HM zFD*_@!8h<4pORRT2pOJah>s8Pb%up{RB#D+U=z*K_>|)O_>9E76wr7sWNZ@@ZlKTx zkFQc~v=+r)Jxhl8_@v@um_tF1BWoZR#Z-p)RFLl(81#xOb4wDF81#xuiXe0bjFp*J zl3G;2pqH0llB(zE<f&Vdm=5Ko=auRum1gFo=w_xc=z(|{iNzTVdMTB8#g(}bx}*pq zQ<hp(oSC18!ig_p&?`#KNd#$tvI=ra81%qlsaKFwqL-du!k|}@T2aEF2g-pAdPVtQ z2kWI~K=WKiN)ZE`2hj>i^bj2|c2;r`*gc84naK<wV?o9<=s^riDlTTwOU}>DP0a%h z;=l?o3TROK1XM-B>N8lo8#Z4D>#xDA0I7wsL9{Xh0|Tg!1k(?j_kzubq0i00>JgA$ z5H>{94{OJlKn(<qgMrk+FuHzFd+FQ%|M^hm@b>-;sDK7kBdlKu>%T#T8T=R+7(jhU zsB(C}-~d!W0qS8;KNQ4->4)|A!l2{oQ04Ic!vko?6V^|K*#|NM#s<-G3=9mQJ|av% zte+7Bbui2xD3<}I4n}7)Fff4noG?DDKT-kJ5CF1-fdM>!3sM7fKUA0j)P4koDM$_^ z2J5$+fa-_!bD>-Yn0}bMK%?0p{Z1gwNd4v?Pz|ttHi!$-gRZ|1+%AN;4`c*voS_30 z;0z25u<-+s90-H#0?{zsiKZXcU)liG4<0*(DP{oG<q!^Rd}0ckeptUs0hFjgW4{pP za1!Qzn7~{#{jmO*0aX7bv<QdU3)8<CO+Rd0g@qHM0!l$R;I=!Q31+N>>W9T2tUo6J z)hGs5g&@$wZzGz1*!(kWUK%tOj?fL7nL_3<FziRu59=RhK<x*$*O7Ighu=vC1_scS zJ2bn%`;oADYV`0z*MF6Pfq@^I2SN70`kNdeLy3sLhfw#!?1%MB1&GxD44SuK`eEZN zuyq8m^#ai32+uz-f6YL%AJ)(P0rC_c_rt>BJ(_-ae;8_k2PjaGFiane{(+_+)^GNJ z>W5Nr6JYva0{@_Hg!vydQ3jHWfNGRLOaJKg0W-KC#=rn8XFz&E7^dF@#6iL^<6tys ziVkKsk}`(l(1L>prVuKL#s&BDVR;9t1WZkUy8i<-;^Y_@7(jIu%>SUW45Sd0%(2<u N03AqlN0UUi9{?ZJK(_z@ literal 0 HcmV?d00001 diff --git a/tests/util/fr.tpt.ttool.tests.util/resources/helloWorldNonStop b/tests/util/fr.tpt.ttool.tests.util/resources/helloWorldNonStop new file mode 100755 index 0000000000000000000000000000000000000000..82cc5e028dbc9d54b72a0f6bc1a8b590d7b11c52 GIT binary patch literal 9320 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 literal 0 HcmV?d00001 diff --git a/tests/util/fr.tpt.ttool.tests.util/src/fr/tpt/ttool/tests/util/remote/TestRshClient.java b/tests/util/fr.tpt.ttool.tests.util/src/fr/tpt/ttool/tests/util/remote/TestRshClient.java new file mode 100644 index 0000000000..77eade0ebe --- /dev/null +++ b/tests/util/fr.tpt.ttool.tests.util/src/fr/tpt/ttool/tests/util/remote/TestRshClient.java @@ -0,0 +1,324 @@ +package fr.tpt.ttool.tests.util.remote; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; + +import java.io.File; +import java.io.StringWriter; +import java.io.Writer; + +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; + +import launcher.LauncherException; +import launcher.RshClient; +import launcher.RshServer; +import myutil.FileException; +import myutil.FileUtils; + +public class TestRshClient { + + private static final String EXPECTED_COMMAND_OUTPUT = "!!!Hello World!!!" + System.lineSeparator(); + private static final String TEST_PROGRAM_NAME = "helloWorld"; + private static final String TEST_COMMAND = "./resources/" + TEST_PROGRAM_NAME; + private static final String TEST_COMMAND_NON_STOP = "./resources/helloWorldNonStop"; + private static final String TEST_FILE_NAME = "./resources/test.txt"; + private static final String TEST_FILE_DATA = "testDatafhkenomrcg ,jgh o"; + + + private RshClient client = null; + private static Thread serverThread = null; + + @BeforeClass + public static void setUpBeforeClass() + throws Exception { + RshClient.PORT_NUMBER = 8080; + RshServer.PORT_NUMBER = RshClient.PORT_NUMBER; + + final Runnable runnable = new Runnable() { + + @Override + public void run() { + new RshServer( null ).startServer(); + } + }; + + serverThread = new Thread( runnable ); + serverThread.start(); + Thread.sleep( 500 ); + } + + @Before + public void setUp() + throws Exception { + client = new RshClient( "localhost" ); + } + + @AfterClass + public static void tearDownAfterClass() + throws Exception { + serverThread.interrupt(); + } + + private void handleException( final Throwable th ) { + th.printStackTrace(); + fail( th.getLocalizedMessage() ); + } + + @Test + public void testStopCommand() { + final Runnable runnable = new Runnable() { + + @Override + public void run() { + try { + client.setCmd( TEST_COMMAND_NON_STOP ); + client.sendExecuteCommandRequest(); + final Writer writer = new StringWriter(); + client.writeCommandMessages( writer ); + } + catch (LauncherException e) { + handleException( e ); + } + } + }; + + final Thread thread = new Thread( runnable ); + thread.start(); + + try { + + // Ensure the remote process has enough time to start + Thread.sleep( 200 ); + client.stopCommand(); + + // Ensure the stop command has been processed on the server + Thread.sleep( 200 ); + assertTrue( killUnexistentProcess() ); + } + catch ( LauncherException ex ) { + handleException( ex ); + } + catch ( InterruptedException ex ) { + handleException( ex ); + } + } + + private boolean killUnexistentProcess() { + try { + client.sendKillProcessRequest(); + + return false; + } + catch ( LauncherException ex ) { + return RshClient.FAILED.equals( ex.getMessage() ); + } + } + + @Test + public void testGetId() { + try { + final int id = client.getId(); + assertTrue( id == 1 ); + } + catch ( LauncherException ex ) { + handleException( ex ); + } + } + + @Test + public void testFreeId() { + try { + client.freeId( 1 ); + } + catch ( LauncherException ex ) { + handleException( ex ); + } + } + + @Test + public void testSendExecuteCommandRequest() { + client.setCmd( TEST_COMMAND ); + + try { + client.sendExecuteCommandRequest(); + final Writer writer = new StringWriter(); + client.writeCommandMessages( writer ); + assertTrue( ( EXPECTED_COMMAND_OUTPUT + System.lineSeparator() ).equals( writer.toString() ) ); + } + catch ( LauncherException ex ) { + handleException( ex ); + } + } + + @Test + public void testSendExecuteCommandRequestBoolean() { + client.setCmd( TEST_COMMAND ); + + try { + client.sendExecuteCommandRequest( true ); + final Writer writer = new StringWriter(); + client.writeCommandMessages( writer ); + assertTrue( writer.toString().startsWith( EXPECTED_COMMAND_OUTPUT ) ); + + final Integer retCode = client.getProcessReturnCode(); + assertTrue( retCode != null && retCode == 0 ); + } + catch ( LauncherException ex ) { + handleException( ex ); + } + } + + @Test + public void testSendExecutePipedCommandsRequest() { + final String testFileName = "./resources/test_piped_commands.txt"; + final String expectedData = "Test Passed!" + System.lineSeparator(); + + try { + FileUtils.saveFile( testFileName, expectedData ); + client.sendExecutePipedCommandsRequest( "echo " + testFileName, "xargs cat" ); + final String data = client.getDataFromProcess(); + + assertTrue( "Piped commands returned " + data, expectedData.equals( data ) ); + } + catch ( LauncherException ex ) { + handleException( ex ); + } + catch ( FileException ex ) { + handleException( ex ); + } + finally { + new File( testFileName ).delete(); + } + } + + private boolean deleteTestFile() { + final File testFile = new File( TEST_FILE_NAME ); + + if ( testFile.exists() ) { + assertTrue( "Test file could not be deleted!", testFile.delete() ); + } + + return true; + } + + @Test + public void testSendFileData() { + deleteTestFile(); + + try { + client.sendFileData( TEST_FILE_NAME, TEST_FILE_DATA ); + + try { + final String readData = FileUtils.loadFile( TEST_FILE_NAME ); + + assertTrue( ( TEST_FILE_DATA + System.lineSeparator() ).equals( readData ) ); + } + catch ( FileException ex ) { + handleException( ex ); + } + } + catch( LauncherException ex ) { + handleException( ex ); + } + } + + @Test + public void testGetFileData() { + deleteTestFile(); + + try { + FileUtils.saveFile( TEST_FILE_NAME, TEST_FILE_DATA ); + + final String readData = client.getFileData( TEST_FILE_NAME ); + + assertTrue( TEST_FILE_DATA.equals( readData ) ); + } + catch ( FileException ex ) { + handleException( ex ); + } + catch ( LauncherException ex ) { + handleException( ex ); + } + } + + @Test + public void testDeleteFile() { + deleteTestFile(); + + try { + FileUtils.saveFile( TEST_FILE_NAME, TEST_FILE_DATA ); + + client.deleteFile( TEST_FILE_NAME ); + + assertFalse( new File( TEST_FILE_NAME ).exists() ); + } + catch ( FileException ex ) { + handleException( ex ); + } + catch ( LauncherException ex ) { + handleException( ex ); + } + } + + @Test + public void testSendKillProcessRequest() { + client.setCmd( TEST_COMMAND_NON_STOP ); + + try { + client.sendExecuteCommandRequest(); + Thread.sleep( 200 ); + client.sendKillProcessRequest(); + + Thread.sleep( 200 ); + assertTrue( killUnexistentProcess() ); + } + catch ( LauncherException ex ) { + handleException( ex ); + } + catch ( InterruptedException ex ) { + handleException( ex ); + } + } + + @Test + public void testSendKillAllProcessRequest() { + client.setCmd( TEST_COMMAND_NON_STOP ); + + try { + for ( int index = 0; index < 4; index++ ) { + client.sendExecuteCommandRequest(); + Thread.sleep( 200 ); + } + + client.sendKillAllProcessRequest(); + + Thread.sleep( 200 ); + assertTrue( killUnexistentProcess() ); + } + catch ( LauncherException ex ) { + handleException( ex ); + } + catch ( InterruptedException ex ) { + handleException( ex ); + } + } + + @Test + public void testGetDataFromProcess() { + client.setCmd( TEST_COMMAND ); + + try { + client.sendExecuteCommandRequest(); + final String messageFromProcess = client.getDataFromProcess(); + + assertTrue( ( EXPECTED_COMMAND_OUTPUT ).equals( messageFromProcess ) ); + } + catch ( LauncherException ex ) { + handleException( ex ); + } + } +} -- GitLab