/*
# 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.Assert.assertNull;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
import java.util.HashMap;
import java.util.Map;
import org.junit.Test;
import com.ibm.streamsx.topology.context.JobProperties;
import com.ibm.streamsx.topology.jobconfig.JobConfig;
public class JobSubmissionAPITest {
@Test
public void testEmptyJobConfig() {
JobConfig jc = new JobConfig();
assertNull(jc.getJobGroup());
assertNull(jc.getJobName());
_testMostlyEmptyJobConfig(jc);
}
private void _testMostlyEmptyJobConfig(JobConfig jc) {
assertFalse(jc.hasSubmissionParameters());
assertTrue(jc.getSubmissionParameters().isEmpty());
assertFalse(jc.hasSubmissionParameters()); // repeat
}
@Test
public void testConstructedJobConfig() {
JobConfig jc = new JobConfig("groupY", "nameX");
assertEquals("groupY", jc.getJobGroup());
assertEquals("nameX", jc.getJobName());
_testMostlyEmptyJobConfig(jc);
}
@Test
public void testSettersJobConfig() {
JobConfig jc = new JobConfig();
jc.setJobGroup("groupYY");
jc.setJobName("nameXX");
assertEquals("groupYY", jc.getJobGroup());
assertEquals("nameXX", jc.getJobName());
}
@Test
public void testFromConfigProperties() {
Map<String, Object> config = new HashMap<>();
JobConfig jc = JobConfig.fromProperties(config);
assertNull(jc.getJobGroup());
assertNull(jc.getJobName());
_testMostlyEmptyJobConfig(jc);
config.put(JobProperties.GROUP, "groupB");
jc = JobConfig.fromProperties(config);
assertEquals("groupB", jc.getJobGroup());
assertNull(jc.getJobName());
_testMostlyEmptyJobConfig(jc);
config.clear();
config.put(JobProperties.NAME, "nameA");
jc = JobConfig.fromProperties(config);
assertNull(jc.getJobGroup());
assertEquals("nameA", jc.getJobName());
_testMostlyEmptyJobConfig(jc);
config.clear();
config.put(JobProperties.GROUP, "groupC");
config.put(JobProperties.NAME, "nameD");
jc = JobConfig.fromProperties(config);
assertEquals("groupC", jc.getJobGroup());
assertEquals("nameD", jc.getJobName());
_testMostlyEmptyJobConfig(jc);
}
@Test
public void testFromConfigJobConfig() {
Map<String, Object> config = new HashMap<>();
JobConfig jc = new JobConfig();
jc.setJobGroup("groupE");
jc.setJobName("nameF");
config.put(JobProperties.CONFIG, jc);
JobConfig jcc = JobConfig.fromProperties(config);
assertSame(jc, jcc);
config.put(JobProperties.GROUP, "groupC");
config.put(JobProperties.NAME, "nameD");
jcc = JobConfig.fromProperties(config);
assertSame(jc, jcc);
assertEquals("groupE", jc.getJobGroup());
assertEquals("nameF", jc.getJobName());
}
@Test(expected=IllegalArgumentException.class)
public void testFromConfigInvalid() {
Map<String, Object> config = new HashMap<>();
config.put(JobProperties.CONFIG, 235);
JobConfig.fromProperties(config);
}
}