use of com.hortonworks.streamline.streams.layout.component.Stream in project streamline by hortonworks.
the class TopologyTestHelper method createStreamlineSource.
public static StreamlineSource createStreamlineSource(String id) {
Stream stream = createDefaultStream();
StreamlineSource source = new StreamlineSource(Sets.newHashSet(stream));
source.setId(id);
source.setName("testSource_" + id);
source.setConfig(new Config());
source.setTransformationClass("dummyTransformation");
return source;
}
use of com.hortonworks.streamline.streams.layout.component.Stream in project streamline by hortonworks.
the class RuleParserTest method testParseUDF1.
@Test
public void testParseUDF1() throws Exception {
final UDF myFunc = new UDF();
myFunc.setClassName("foo.class.name");
myFunc.setDescription("My function");
myFunc.setId(Math.abs(new Random().nextLong()));
myFunc.setJarStoragePath("/udfstorage/");
myFunc.setName("myFunc");
myFunc.setType(Udf.Type.FUNCTION);
new Expectations() {
{
mockCatalogService.listStreamInfos(withAny(new ArrayList<QueryParam>()));
result = mockTopologyStream;
mockCatalogService.listUDFs();
result = Collections.singleton(myFunc);
mockTopologyStream.getStreamId();
result = "teststream";
mockTopologyStream.getFields();
result = Arrays.asList(Schema.Field.of("temperature", Schema.Type.LONG), Schema.Field.of("humidity", Schema.Type.LONG));
}
};
TopologyRule topologyRule = new TopologyRule();
topologyRule.setId(1L);
topologyRule.setName("Test");
topologyRule.setDescription("test rule");
topologyRule.setTopologyId(1L);
topologyRule.setVersionId(1L);
topologyRule.setSql("select myFunc(temperature) from teststream");
RuleParser ruleParser = new RuleParser(mockCatalogService, topologyRule.getSql(), topologyRule.getTopologyId(), topologyRule.getVersionId());
ruleParser.parse();
LOG.info("Projection: [{}]", ruleParser.getProjection());
assertNotNull(ruleParser.getProjection());
assertEquals(1, ruleParser.getStreams().size());
assertEquals(new Stream("teststream", Arrays.asList(Schema.Field.of("temperature", Schema.Type.LONG), Schema.Field.of("humidity", Schema.Type.LONG))), ruleParser.getStreams().get(0));
assertNull(ruleParser.getGroupBy());
assertNull(ruleParser.getHaving());
}
use of com.hortonworks.streamline.streams.layout.component.Stream in project streamline by hortonworks.
the class RuleParserTest method testParseAsExpressionWithCase.
@Test
public void testParseAsExpressionWithCase() throws Exception {
new Expectations() {
{
mockCatalogService.listStreamInfos(withAny(new ArrayList<QueryParam>()));
result = mockTopologyStream;
mockTopologyStream.getStreamId();
result = "teststream";
mockTopologyStream.getFields();
result = Arrays.asList(Schema.Field.of("temperature", Schema.Type.LONG), Schema.Field.of("humidity", Schema.Type.LONG));
}
};
TopologyRule topologyRule = new TopologyRule();
topologyRule.setId(1L);
topologyRule.setName("Test");
topologyRule.setDescription("test rule");
topologyRule.setTopologyId(1L);
topologyRule.setVersionId(1L);
topologyRule.setSql("select temperature as \"temp_TEST\" from teststream where humidity > 80");
RuleParser ruleParser = new RuleParser(mockCatalogService, topologyRule.getSql(), topologyRule.getTopologyId(), topologyRule.getVersionId());
ruleParser.parse();
assertEquals(new Condition(new BinaryExpression(Operator.GREATER_THAN, new FieldExpression(Schema.Field.of("humidity", Schema.Type.LONG)), new Literal("80"))), ruleParser.getCondition());
assertEquals(new Projection(Arrays.asList(new AsExpression(new FieldExpression(Schema.Field.of("temperature", Schema.Type.LONG)), "temp_TEST"))), ruleParser.getProjection());
assertEquals(1, ruleParser.getStreams().size());
assertEquals(new Stream("teststream", Arrays.asList(Schema.Field.of("temperature", Schema.Type.LONG), Schema.Field.of("humidity", Schema.Type.LONG))), ruleParser.getStreams().get(0));
assertNull(ruleParser.getGroupBy());
assertNull(ruleParser.getHaving());
}
use of com.hortonworks.streamline.streams.layout.component.Stream in project streamline by hortonworks.
the class RuleParser method parseStreams.
private List<Stream> parseStreams(SqlSelect sqlSelect) throws Exception {
List<Stream> streams = new ArrayList<>();
SqlNode sqlFrom = sqlSelect.getFrom();
LOG.debug("from = {}", sqlFrom);
if (sqlFrom instanceof SqlJoin) {
throw new IllegalArgumentException("Sql join is not yet supported");
} else if (sqlFrom instanceof SqlIdentifier) {
streams.add(getStream(((SqlIdentifier) sqlFrom).getSimple()));
}
LOG.debug("Streams {}", streams);
return streams;
}
use of com.hortonworks.streamline.streams.layout.component.Stream in project streamline by hortonworks.
the class TopologyTestRunnerTest method runTest_topologyActionsTestRunFails.
@Test
public void runTest_topologyActionsTestRunFails() throws Exception {
Topology topology = createSimpleDAGInjectedTestTopology();
Long topologyId = topology.getId();
Long testCaseId = 1L;
TopologyTestRunCase testCase = new TopologyTestRunCase();
testCase.setId(testCaseId);
testCase.setTopologyId(topology.getId());
testCase.setName("testcase1");
testCase.setTimestamp(System.currentTimeMillis());
setTopologyCurrentVersionExpectation(topology);
setTopologyTestRunCaseExpectations(topology, testCase);
setTopologyTestRunCaseSinkNotFoundExpectations(topology, testCase);
setTopologyTestRunHistoryExpectations();
setTopologyActionsThrowingExceptionExpectations();
long sourceCount = topology.getTopologyDag().getOutputComponents().stream().filter(c -> c instanceof StreamlineSource).count();
long sinkCount = topology.getTopologyDag().getInputComponents().stream().filter(c -> c instanceof StreamlineSink).count();
TopologyTestRunHistory resultHistory = topologyTestRunner.runTest(topologyActions, topology, testCase, null);
assertNotNull(resultHistory);
waitForTopologyTestRunToFinish(resultHistory);
new VerificationsInOrder() {
{
catalogService.getTopologyTestRunCaseSourceBySourceId(testCaseId, anyLong);
times = (int) sourceCount;
catalogService.getTopologyTestRunCaseSinkBySinkId(testCaseId, anyLong);
times = (int) sinkCount;
TopologyTestRunHistory runHistory;
// some fields are already modified after calling the method, so don't need to capture it
catalogService.addTopologyTestRunHistory(withInstanceOf(TopologyTestRunHistory.class));
times = 1;
catalogService.addOrUpdateTopologyTestRunHistory(anyLong, runHistory = withCapture());
times = 1;
assertEquals(topology.getId(), runHistory.getTopologyId());
assertEquals(topology.getVersionId(), runHistory.getVersionId());
assertTrue(runHistory.getFinished());
assertFalse(runHistory.getSuccess());
assertNotNull(runHistory.getStartTime());
assertNotNull(runHistory.getFinishTime());
assertTrue(runHistory.getFinishTime() - runHistory.getStartTime() >= 0);
assertTrue(isEmptyJson(runHistory.getExpectedOutputRecords()));
assertNull(runHistory.getActualOutputRecords());
assertFalse(runHistory.getMatched());
}
};
}
Aggregations