/*
# Licensed Materials - Property of IBM
# Copyright IBM Corp. 2015
*/
package com.ibm.streamsx.topology.test.distributed;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assume.assumeTrue;
import java.util.List;
import java.util.concurrent.TimeUnit;
import org.junit.Test;
import com.ibm.streamsx.topology.TStream;
import com.ibm.streamsx.topology.Topology;
import com.ibm.streamsx.topology.context.StreamsContext;
import com.ibm.streamsx.topology.internal.spljava.Schemas;
import com.ibm.streamsx.topology.jobconfig.JobConfig;
import com.ibm.streamsx.topology.spl.JavaPrimitive;
import com.ibm.streamsx.topology.spl.SPLStream;
import com.ibm.streamsx.topology.test.TestTopology;
import com.ibm.streamsx.topology.test.api.JobPropertiesTest.JobPropertiesTestOp;
import com.ibm.streamsx.topology.tester.Condition;
/**
* Test submission using JobConfig API
*/
public class JobConfigSubmissionTest extends TestTopology {
@Test
public void testGroupJobConfig() throws Exception {
JobConfig config = new JobConfig();
config.setJobGroup("default");
List<String> result = testItDirect("testGroupJobConfig", config);
assertFalse(result.get(0).isEmpty()); // job id
assertFalse(result.get(2).isEmpty()); // job name
assertEquals("default", result.get(2)); // job group
assertEquals("<empty>", result.get(3)); // data-directory
}
@Test
public void testNameJobConfig() throws Exception {
JobConfig config = new JobConfig();
config.setJobName("nameG");
List<String> result = testItDirect("testNameJobConfig", config);
assertFalse(result.get(0).isEmpty()); // job id
assertEquals("nameG", result.get(1)); // job name
assertEquals("default", result.get(2)); // job group
assertEquals("<empty>", result.get(3)); // data-directory
}
@Test
public void testDataDirJobConfig() throws Exception {
JobConfig config = new JobConfig();
config.setJobName("nameDD");
config.setDataDirectory("/tmp/some/dir");
List<String> result = testItDirect("testNameJobConfig", config);
assertFalse(result.get(0).isEmpty()); // job id
assertEquals("nameDD", result.get(1)); // job name
assertEquals("default", result.get(2)); // job group
assertEquals("/tmp/some/dir", result.get(3)); // data-directory
}
private List<String> testItDirect(String topologyName, JobConfig config)
throws Exception {
// JobConfig only apply to DISTRIBUTED submit
assumeTrue(getTesterType() == StreamsContext.Type.DISTRIBUTED_TESTER);
assumeTrue(SC_OK);
config.addToConfig(getConfig());
Topology topology = newTopology(topologyName);
topology.addClassDependency(JobPropertiesTestOp.class);
SPLStream sourceSPL = JavaPrimitive.invokeJavaPrimitiveSource(topology, JobPropertiesTestOp.class,
Schemas.STRING, null);
TStream<String> source = sourceSPL.toStringStream();
Condition<Long> end = topology.getTester().tupleCount(source, 4);
Condition<List<String>> result = topology.getTester().stringContents(source);
complete(topology.getTester(), end, 10, TimeUnit.SECONDS);
return result.getResult();
}
}