/*
* ProActive Parallel Suite(TM):
* The Open Source library for parallel and distributed
* Workflows & Scheduling, Orchestration, Cloud Automation
* and Big Data Analysis on Enterprise Grids & Clouds.
*
* Copyright (c) 2007 - 2017 ActiveEon
* Contact: contact@activeeon.com
*
* This library is free software: you can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License
* as published by the Free Software Foundation: version 3 of
* the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* If needed, contact us to obtain a release under GPL Version 2 or 3
* or a different license than the AGPL.
*/
package functionaltests;
import org.apache.commons.lang3.StringUtils;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.ow2.proactive.scheduler.common.job.JobId;
import org.ow2.proactive.scheduler.common.job.JobStatus;
public class TagCommandsFunctTest extends AbstractFunctCmdTest {
private static JobId jobId = null;
/**
* Very large jobId, very probably not existent, in this test env.
*/
private static long NOT_EXISTENT_JOBID = 234454567;
@BeforeClass
public static void beforeClass() throws Exception {
System.out.println("Init class: " + TagCommandsFunctTest.class);
init();
System.out.println("Finished init class: " + TagCommandsFunctTest.class);
}
@Before
public void setUp() throws Exception {
System.out.println("Setup test case for class: " + TagCommandsFunctTest.class);
synchronized (TagCommandsFunctTest.class) {
System.out.println("Synchronized");
super.setUp();
if (jobId == null) {
System.out.println("JobId was null");
cleanScheduler();
//submit a job with a loop and out and err outputs
System.out.println("submit a job with loop, out and err outputs");
jobId = submitJob("flow_loop_out.xml", JobStatus.FINISHED);
System.out.println("Job " + jobId + " finished");
}
}
System.out.println("Finished setup test case");
}
@Test
public void testListJobTaskIds() throws Exception {
typeLine("listtasks(+" + jobId.longValue() + ")");
runCli();
String out = this.capturedOutput.toString();
System.setOut(stdOut);
System.out.println("------------- testListJobTaskIds:");
System.out.println(out);
assertTrue(out.contains("T1#1"));
assertTrue(out.contains("Print1#1"));
assertTrue(out.contains("Print2#1"));
assertTrue(out.contains("T2#1"));
assertTrue(out.contains("T1#2"));
assertTrue(out.contains("Print1#2"));
assertTrue(out.contains("Print2#2"));
assertTrue(out.contains("T2#2"));
}
@Test
public void testListJobTaskIdsWithTag() throws Exception {
typeLine("listtasks(" + jobId.longValue() + ", 'LOOP-T2-1')");
runCli();
String out = this.capturedOutput.toString();
System.setOut(stdOut);
System.out.println("------------- testListJobTaskIdsWithTag:");
System.out.println(out);
assertTrue(out.contains("T1#1"));
assertTrue(out.contains("Print1#1"));
assertTrue(out.contains("Print2#1"));
assertTrue(out.contains("T2#1"));
assertTrue(!out.contains("T1#2"));
assertTrue(!out.contains("Print1#2"));
assertTrue(!out.contains("Print2#2"));
assertTrue(!out.contains("T2#2"));
}
@Test
public void testListJobTaskIdsWithUnknownTag() throws Exception {
typeLine("listtasks(" + jobId.longValue() + ", 'unknownTag')");
runCli();
String out = this.capturedOutput.toString();
System.setOut(stdOut);
System.out.println("------------- testListJobTaskIdsWithUnknownTag:");
System.out.println(out);
assertTrue(!out.contains("T1#1"));
assertTrue(!out.contains("Print1#1"));
assertTrue(!out.contains("Print2#1"));
assertTrue(!out.contains("T2#1"));
assertTrue(!out.contains("T1#2"));
assertTrue(!out.contains("Print1#2"));
assertTrue(!out.contains("Print2#2"));
assertTrue(!out.contains("T2#2"));
}
@Test
public void testListJobTaskIdsUnknownJob() throws Exception {
typeLine("listtasks(" + NOT_EXISTENT_JOBID + ", 'unknownTag')");
runCli();
String out = this.capturedOutput.toString();
System.setOut(stdOut);
System.out.println("------------- testListJobTaskIdsUnknownJob:");
System.out.println(out);
assertTrue(out.contains("error"));
assertTrue(!out.contains("T1#1"));
assertTrue(!out.contains("Print1#1"));
assertTrue(!out.contains("Print2#1"));
assertTrue(!out.contains("T2#1"));
assertTrue(!out.contains("T1#2"));
assertTrue(!out.contains("Print1#2"));
assertTrue(!out.contains("Print2#2"));
assertTrue(!out.contains("T2#2"));
}
@Test
public void testListTaskStates() throws Exception {
typeLine("taskstates(" + jobId.longValue() + ")");
runCli();
String out = this.capturedOutput.toString();
System.setOut(stdOut);
System.out.println("------------- testListTaskStates:");
System.out.println(out);
assertTrue(out.contains("T1#1"));
assertTrue(out.contains("Print1#1"));
assertTrue(out.contains("Print2#1"));
assertTrue(out.contains("T2#1"));
assertTrue(out.contains("T1#2"));
assertTrue(out.contains("Print1#2"));
assertTrue(out.contains("Print2#2"));
assertTrue(out.contains("T2#2"));
}
@Test
public void testListTaskStateWithTag() throws Exception {
typeLine("taskstates(" + jobId.longValue() + ", 'LOOP-T2-1')");
runCli();
String out = this.capturedOutput.toString();
System.setOut(stdOut);
System.out.println("------------- testListTaskStateWithTag:");
System.out.println(out);
assertTrue(out.contains("T1#1"));
assertTrue(out.contains("Print1#1"));
assertTrue(out.contains("Print2#1"));
assertTrue(out.contains("T2#1"));
assertTrue(!out.contains("T1#2"));
assertTrue(!out.contains("Print1#2"));
assertTrue(!out.contains("Print2#2"));
assertTrue(!out.contains("T2#2"));
}
@Test
public void testListTaskStatesWithUnknownTag() throws Exception {
typeLine("taskstates(" + jobId.longValue() + ", 'unknownTag')");
runCli();
String out = this.capturedOutput.toString();
System.setOut(stdOut);
System.out.println("------------- testListTaskStatesWithUnknownTag:");
System.out.println(out);
assertTrue(!out.contains("T1#1"));
assertTrue(!out.contains("Print1#1"));
assertTrue(!out.contains("Print2#1"));
assertTrue(!out.contains("T2#1"));
assertTrue(!out.contains("T1#2"));
assertTrue(!out.contains("Print1#2"));
assertTrue(!out.contains("Print2#2"));
assertTrue(!out.contains("T2#2"));
}
@Test
public void testListTaskStatesUnknownJob() throws Exception {
typeLine("taskstates(" + NOT_EXISTENT_JOBID + ", 'unknownTag')");
runCli();
String out = this.capturedOutput.toString();
System.setOut(stdOut);
System.out.println("------------- testListTaskStatesUnknownJob:");
System.out.println(out);
assertTrue(out.contains("error"));
assertTrue(!out.contains("T1#1"));
assertTrue(!out.contains("Print1#1"));
assertTrue(!out.contains("Print2#1"));
assertTrue(!out.contains("T2#1"));
assertTrue(!out.contains("T1#2"));
assertTrue(!out.contains("Print1#2"));
assertTrue(!out.contains("Print2#2"));
assertTrue(!out.contains("T2#2"));
}
@Test
public void testJobOutput() throws Exception {
typeLine("joboutput(" + jobId.longValue() + ")");
runCli();
String out = this.capturedOutput.toString();
System.setOut(stdOut);
System.out.println("------------- testJobOutput:");
System.out.println(out);
assertTrue(StringUtils.countMatches(out, "Task 1 : Test STDERR") == 2);
assertTrue(StringUtils.countMatches(out, "Task 1 : Test STDOUT") == 2);
assertTrue(StringUtils.countMatches(out, "Terminate task number 1") == 2);
assertTrue(StringUtils.countMatches(out, "Task 2 : Test STDERR") == 2);
assertTrue(StringUtils.countMatches(out, "Task 2 : Test STDOUT") == 2);
assertTrue(StringUtils.countMatches(out, "Terminate task number 2") == 2);
}
@Test
public void testJobOutputWithTag() throws Exception {
typeLine("joboutput(" + jobId.longValue() + ", 'LOOP-T2-1')");
runCli();
String out = this.capturedOutput.toString();
System.setOut(stdOut);
System.out.println("------------- testJobOutputWithTag:");
System.out.println(out);
assertEquals(2, StringUtils.countMatches(out, "Task 1 : Test STDERR"));
assertEquals(2, StringUtils.countMatches(out, "Task 1 : Test STDOUT"));
assertEquals(2, StringUtils.countMatches(out, "Terminate task number 1"));
assertTrue(!out.contains("Task 2 : Test STDERR"));
assertTrue(!out.contains("Task 2 : Test STDOUT"));
assertTrue(!out.contains("Terminate task number 2"));
}
@Test
public void testJobOutputWithUnknownTag() throws Exception {
typeLine("joboutput(" + jobId.longValue() + ", 'unknownTag')");
runCli();
String out = this.capturedOutput.toString();
System.setOut(stdOut);
System.out.println("------------- testJobOutputWithUnknownTag:");
System.out.println(out);
assertTrue(!out.contains("Task 1 : Test STDERR"));
assertTrue(!out.contains("Task 1 : Test STDOUT"));
assertTrue(!out.contains("Terminate task number 1"));
}
@Test
public void testListJobOutputUnknownJob() throws Exception {
typeLine("joboutput(" + NOT_EXISTENT_JOBID + ", 'unknownTag')");
runCli();
String out = this.capturedOutput.toString();
System.setOut(stdOut);
System.out.println("------------- testListJobOutputUnknownJob:");
System.out.println(out);
assertTrue(out.contains("error"));
}
@Test
public void testJobResult() throws Exception {
typeLine("jobresult(" + jobId.longValue() + ")");
runCli();
String out = this.capturedOutput.toString();
System.setOut(stdOut);
System.out.println("------------- testJobResult:");
System.out.println(out);
assertTrue(out.contains("T1#1"));
assertTrue(out.contains("Print1#1"));
assertTrue(out.contains("Print2#1"));
assertTrue(out.contains("T2#1"));
assertTrue(out.contains("T1#2"));
assertTrue(out.contains("Print1#2"));
assertTrue(out.contains("Print2#2"));
assertTrue(out.contains("T2#2"));
}
@Test
public void testJobResultWithTag() throws Exception {
typeLine("jobresult(" + jobId.longValue() + ", 'LOOP-T2-1')");
runCli();
String out = this.capturedOutput.toString();
System.setOut(stdOut);
System.out.println("------------- testJobResultWithTag:");
System.out.println(out);
assertTrue(out.contains("T1#1"));
assertTrue(out.contains("Print1#1"));
assertTrue(out.contains("Print2#1"));
assertTrue(out.contains("T2#1"));
assertTrue(!out.contains("T1#2"));
assertTrue(!out.contains("Print1#2"));
assertTrue(!out.contains("Print2#2"));
assertTrue(!out.contains("T2#2"));
}
@Test
public void testJobResultWithUnknownTag() throws Exception {
typeLine("jobresult(" + jobId.longValue() + ", 'unknownTag')");
runCli();
String out = this.capturedOutput.toString();
System.setOut(stdOut);
System.out.println("------------- testJobResultWithUnknownTag:");
System.out.println(out);
assertTrue(!out.contains("T1#1"));
assertTrue(!out.contains("Print1#1"));
assertTrue(!out.contains("Print2#1"));
assertTrue(!out.contains("T2#1"));
assertTrue(!out.contains("T1#2"));
assertTrue(!out.contains("Print1#2"));
assertTrue(!out.contains("Print2#2"));
assertTrue(!out.contains("T2#2"));
}
@Test
public void testListJobResultUnknownJob() throws Exception {
typeLine("jobresult(" + NOT_EXISTENT_JOBID + ", 'unknownTag')");
runCli();
String out = this.capturedOutput.toString();
System.setOut(stdOut);
System.out.println("------------- testListJobResultUnknownJob:");
System.out.println(out);
assertTrue(out.contains("error"));
}
}