use of org.apache.heron.eco.definition.EcoTopologyDefinition in project heron by twitter.
the class HeronEcoBuilderTest method setUpForEachTestCase.
@Before
public void setUpForEachTestCase() {
configMap = new HashMap<>();
ecoTopologyDefinition = new EcoTopologyDefinition();
ecoTopologyDefinition.setConfig(configMap);
}
use of org.apache.heron.eco.definition.EcoTopologyDefinition in project heron by twitter.
the class EcoParserTest method testParseFromInputStream_VerifyComponents_MapsAsExpected.
@Test
public void testParseFromInputStream_VerifyComponents_MapsAsExpected() throws Exception {
InputStream inputStream = new ByteArrayInputStream(YAML_STR_1.getBytes());
FileInputStream mockPropsStream = PowerMockito.mock(FileInputStream.class);
EcoTopologyDefinition topologyDefinition = subject.parseFromInputStream(inputStream, mockPropsStream, false);
List<BeanDefinition> components = topologyDefinition.getComponents();
assertEquals("kafka-topology", topologyDefinition.getName());
assertEquals("heron", topologyDefinition.getType());
assertEquals(4, components.size());
BeanDefinition stringSchemeComponent = components.get(0);
assertEquals("stringScheme", stringSchemeComponent.getId());
assertEquals("org.apache.storm.kafka.StringScheme", stringSchemeComponent.getClassName());
BeanDefinition stringMultiSchemeComponent = components.get(1);
assertEquals("stringMultiScheme", stringMultiSchemeComponent.getId());
assertEquals("org.apache.storm.spout.SchemeAsMultiScheme", stringMultiSchemeComponent.getClassName());
assertEquals(1, stringMultiSchemeComponent.getConstructorArgs().size());
BeanReference multiStringReference = (BeanReference) stringMultiSchemeComponent.getConstructorArgs().get(0);
assertEquals("stringScheme", multiStringReference.getId());
BeanDefinition zkHostsComponent = components.get(2);
assertEquals("zkHosts", zkHostsComponent.getId());
assertEquals("org.apache.storm.kafka.ZkHosts", zkHostsComponent.getClassName());
assertEquals(1, zkHostsComponent.getConstructorArgs().size());
assertEquals("localhost:2181", zkHostsComponent.getConstructorArgs().get(0));
BeanDefinition spoutConfigComponent = components.get(3);
List<Object> spoutConstructArgs = spoutConfigComponent.getConstructorArgs();
assertEquals("spoutConfig", spoutConfigComponent.getId());
assertEquals("org.apache.storm.kafka.SpoutConfig", spoutConfigComponent.getClassName());
BeanReference spoutBrokerHostComponent = (BeanReference) spoutConstructArgs.get(0);
assertEquals("zkHosts", spoutBrokerHostComponent.getId());
assertEquals("myKafkaTopic", spoutConstructArgs.get(1));
assertEquals("/kafkaSpout", spoutConstructArgs.get(2));
List<PropertyDefinition> properties = spoutConfigComponent.getProperties();
assertEquals("ignoreZkOffsets", properties.get(0).getName());
assertEquals(true, properties.get(0).getValue());
assertEquals("scheme", properties.get(1).getName());
assertEquals(true, properties.get(1).isReference());
assertEquals("stringMultiScheme", properties.get(1).getRef());
}
use of org.apache.heron.eco.definition.EcoTopologyDefinition in project heron by twitter.
the class BoltBuilderTest method testBuildBolts_AllGood_BehavesAsExpected.
@Test
public void testBuildBolts_AllGood_BehavesAsExpected() throws ClassNotFoundException, InvocationTargetException, NoSuchFieldException, InstantiationException, IllegalAccessException {
EcoTopologyDefinition ecoTopologyDefinition = new EcoTopologyDefinition();
BoltDefinition boltDefinition = new BoltDefinition();
final String id = "id";
boltDefinition.setId(id);
BoltDefinition boltDefinition1 = new BoltDefinition();
final String id1 = "id1";
boltDefinition1.setId(id1);
List<BoltDefinition> boltDefinitions = new ArrayList<>();
boltDefinitions.add(boltDefinition);
boltDefinitions.add(boltDefinition1);
ecoTopologyDefinition.setBolts(boltDefinitions);
Object object = new Object();
Object object1 = new Object();
when(mockContext.getTopologyDefinition()).thenReturn(ecoTopologyDefinition);
when(mockObjectBuilder.buildObject(eq(boltDefinition), eq(mockContext))).thenReturn(object);
when(mockObjectBuilder.buildObject(eq(boltDefinition1), eq(mockContext))).thenReturn(object1);
subject.buildBolts(mockContext, mockObjectBuilder);
verify(mockContext).getTopologyDefinition();
verify(mockObjectBuilder).buildObject(same(boltDefinition), same(mockContext));
verify(mockObjectBuilder).buildObject(same(boltDefinition1), same(mockContext));
verify(mockContext).addBolt(eq(id), anyObject());
verify(mockContext).addBolt(eq(id1), anyObject());
}
use of org.apache.heron.eco.definition.EcoTopologyDefinition in project heron by twitter.
the class EcoParser method loadTopologyFromYaml.
private EcoTopologyDefinition loadTopologyFromYaml(Yaml yaml, InputStream inputStream, InputStream propsIn, boolean envFilter) throws IOException {
LOG.info("Parsing eco config file");
ByteArrayOutputStream bos = new ByteArrayOutputStream();
int b;
while ((b = inputStream.read()) != -1) {
bos.write(b);
}
String yamlDefinitionStr = bos.toString();
// properties file substitution
if (propsIn != null) {
LOG.info("Performing property substitution.");
Properties props = new Properties();
props.load(propsIn);
for (Object key : props.keySet()) {
yamlDefinitionStr = yamlDefinitionStr.replace("${" + key + "}", props.getProperty((String) key));
}
} else {
LOG.info("Not performing property substitution.");
}
// environment variable substitution
if (envFilter) {
LOG.info("Performing environment variable substitution.");
Map<String, String> envs = System.getenv();
for (String key : envs.keySet()) {
yamlDefinitionStr = yamlDefinitionStr.replace("${ENV-" + key + "}", envs.get(key));
}
} else {
LOG.info("Not performing environment variable substitution.");
}
return (EcoTopologyDefinition) yaml.load(yamlDefinitionStr);
}
use of org.apache.heron.eco.definition.EcoTopologyDefinition in project heron by twitter.
the class ConfigBuilderTest method testBuildConfig_IncorrectComponentJVMOptions_ExceptionThrown.
@Test(expected = IllegalArgumentException.class)
public void testBuildConfig_IncorrectComponentJVMOptions_ExceptionThrown() throws Exception {
Config config = null;
try {
EcoParser ecoParser = new EcoParser();
InputStream inputStream = new ByteArrayInputStream(INCORRECT_JVM_OPTIONS_CONFIG.getBytes());
FileInputStream mockPropsStream = PowerMockito.mock(FileInputStream.class);
EcoTopologyDefinition ecoTopologyDefinition = ecoParser.parseFromInputStream(inputStream, mockPropsStream, false);
config = subject.buildConfig(ecoTopologyDefinition);
} finally {
assertNull(config);
}
}
Aggregations