use of org.apache.samza.operators.OperatorSpecGraph in project samza by apache.
the class TestWindowOperator method testEndOfStreamFlushesWithNoTriggerFirings.
@Test
public void testEndOfStreamFlushesWithNoTriggerFirings() throws Exception {
OperatorSpecGraph sgb = this.getKeyedSessionWindowStreamGraph(AccumulationMode.DISCARDING, Duration.ofMillis(500)).getOperatorSpecGraph();
TestClock testClock = new TestClock();
List<WindowPane<Integer, Collection<IntegerEnvelope>>> windowPanes = new ArrayList<>();
StreamOperatorTask task = new StreamOperatorTask(sgb, testClock);
task.init(this.context);
MessageCollector messageCollector = envelope -> windowPanes.add((WindowPane<Integer, Collection<IntegerEnvelope>>) envelope.getMessage());
task.processAsync(new IntegerEnvelope(1), messageCollector, taskCoordinator, taskCallback);
task.processAsync(new IntegerEnvelope(1), messageCollector, taskCoordinator, taskCallback);
task.processAsync(new IntegerEnvelope(1), messageCollector, taskCoordinator, taskCallback);
task.processAsync(new IntegerEnvelope(1), messageCollector, taskCoordinator, taskCallback);
final IncomingMessageEnvelope endOfStream = IncomingMessageEnvelope.buildEndOfStreamEnvelope(new SystemStreamPartition("kafka", "integers", new Partition(0)));
task.processAsync(endOfStream, messageCollector, taskCoordinator, taskCallback);
Assert.assertEquals(windowPanes.size(), 1);
Assert.assertEquals(windowPanes.get(0).getMessage().size(), 4);
verify(taskCoordinator, times(1)).commit(TaskCoordinator.RequestScope.CURRENT_TASK);
verify(taskCoordinator, times(1)).shutdown(TaskCoordinator.RequestScope.CURRENT_TASK);
}
use of org.apache.samza.operators.OperatorSpecGraph in project samza by apache.
the class TestWindowOperator method testCancellationOfOnceTrigger.
@Test
public void testCancellationOfOnceTrigger() throws Exception {
OperatorSpecGraph sgb = this.getKeyedTumblingWindowStreamGraph(AccumulationMode.ACCUMULATING, Duration.ofSeconds(1), Triggers.count(2)).getOperatorSpecGraph();
TestClock testClock = new TestClock();
StreamOperatorTask task = new StreamOperatorTask(sgb, testClock);
task.init(this.context);
List<WindowPane<Integer, Collection<IntegerEnvelope>>> windowPanes = new ArrayList<>();
MessageCollector messageCollector = envelope -> windowPanes.add((WindowPane<Integer, Collection<IntegerEnvelope>>) envelope.getMessage());
task.processAsync(new IntegerEnvelope(1), messageCollector, taskCoordinator, taskCallback);
task.processAsync(new IntegerEnvelope(1), messageCollector, taskCoordinator, taskCallback);
Assert.assertEquals(windowPanes.size(), 1);
Assert.assertEquals(windowPanes.get(0).getKey().getPaneId(), "0");
Assert.assertEquals(windowPanes.get(0).getKey().getKey(), new Integer(1));
Assert.assertEquals(windowPanes.get(0).getFiringType(), FiringType.EARLY);
task.processAsync(new IntegerEnvelope(1), messageCollector, taskCoordinator, taskCallback);
task.processAsync(new IntegerEnvelope(1), messageCollector, taskCoordinator, taskCallback);
task.processAsync(new IntegerEnvelope(1), messageCollector, taskCoordinator, taskCallback);
Assert.assertEquals(windowPanes.size(), 1);
testClock.advanceTime(Duration.ofSeconds(1));
task.window(messageCollector, taskCoordinator);
Assert.assertEquals(windowPanes.size(), 2);
Assert.assertEquals(windowPanes.get(0).getKey().getPaneId(), "0");
Assert.assertEquals(windowPanes.get(1).getKey().getPaneId(), "0");
Assert.assertEquals(windowPanes.get(1).getFiringType(), FiringType.DEFAULT);
task.processAsync(new IntegerEnvelope(3), messageCollector, taskCoordinator, taskCallback);
testClock.advanceTime(Duration.ofSeconds(1));
task.window(messageCollector, taskCoordinator);
Assert.assertEquals(windowPanes.size(), 3);
Assert.assertEquals(windowPanes.get(2).getKey().getKey(), new Integer(3));
Assert.assertEquals(windowPanes.get(2).getKey().getPaneId(), "1000");
Assert.assertEquals(windowPanes.get(2).getFiringType(), FiringType.DEFAULT);
Assert.assertEquals((windowPanes.get(2).getMessage()).size(), 1);
}
use of org.apache.samza.operators.OperatorSpecGraph in project samza by apache.
the class TestPartitionByOperatorSpec method testCopy.
@Test
public void testCopy() {
StreamApplicationDescriptorImpl streamAppDesc = new StreamApplicationDescriptorImpl(appDesc -> {
MessageStream inputStream = appDesc.getInputStream(testInputDescriptor);
inputStream.partitionBy(m -> m.toString(), m -> m, mock(KVSerde.class), testRepartitionedStreamName);
}, getConfig());
OperatorSpecGraph specGraph = streamAppDesc.getOperatorSpecGraph();
OperatorSpecGraph clonedGraph = specGraph.clone();
OperatorSpecTestUtils.assertClonedGraph(specGraph, clonedGraph);
}
use of org.apache.samza.operators.OperatorSpecGraph in project samza by apache.
the class TestQueryTranslator method testTranslate.
@Test
public void testTranslate() {
Map<String, String> config = SamzaSqlTestConfig.fetchStaticConfigsWithFactories(10);
config.put(SamzaSqlApplicationConfig.CFG_SQL_STMT, "Insert into testavro.outputTopic(id) select MyTest(id) from testavro.level1.level2.SIMPLE1 as s where s.id = 10");
Config samzaConfig = SamzaSqlApplicationRunner.computeSamzaConfigs(true, new MapConfig(config));
List<String> sqlStmts = fetchSqlFromConfig(config);
List<SamzaSqlQueryParser.QueryInfo> queryInfo = fetchQueryInfo(sqlStmts);
SamzaSqlApplicationConfig samzaSqlApplicationConfig = new SamzaSqlApplicationConfig(new MapConfig(config), queryInfo.stream().map(SamzaSqlQueryParser.QueryInfo::getSources).flatMap(Collection::stream).collect(Collectors.toList()), queryInfo.stream().map(SamzaSqlQueryParser.QueryInfo::getSink).collect(Collectors.toList()));
StreamApplicationDescriptorImpl appDesc = new StreamApplicationDescriptorImpl(streamApp -> {
}, samzaConfig);
QueryTranslator translator = new QueryTranslator(appDesc, samzaSqlApplicationConfig);
translator.translate(queryInfo.get(0), appDesc, 0);
OperatorSpecGraph specGraph = appDesc.getOperatorSpecGraph();
StreamConfig streamConfig = new StreamConfig(samzaConfig);
String inputStreamId = specGraph.getInputOperators().keySet().stream().findFirst().get();
String inputSystem = streamConfig.getSystem(inputStreamId);
String inputPhysicalName = streamConfig.getPhysicalName(inputStreamId);
String outputStreamId = specGraph.getOutputStreams().keySet().stream().findFirst().get();
String outputSystem = streamConfig.getSystem(outputStreamId);
String outputPhysicalName = streamConfig.getPhysicalName(outputStreamId);
Assert.assertEquals(1, specGraph.getOutputStreams().size());
Assert.assertEquals("testavro", outputSystem);
Assert.assertEquals("outputTopic", outputPhysicalName);
Assert.assertEquals(1, specGraph.getInputOperators().size());
Assert.assertEquals("testavro", inputSystem);
Assert.assertEquals("SIMPLE1", inputPhysicalName);
}
use of org.apache.samza.operators.OperatorSpecGraph in project samza by apache.
the class TestQueryTranslator method testTranslateFanOut.
@Test
public void testTranslateFanOut() {
Map<String, String> config = SamzaSqlTestConfig.fetchStaticConfigsWithFactories(10);
String sql1 = "Insert into testavro.SIMPLE2 select * from testavro.SIMPLE1";
String sql2 = "Insert into testavro.SIMPLE3 select * from testavro.SIMPLE1";
List<String> sqlStmts = Arrays.asList(sql1, sql2);
config.put(SamzaSqlApplicationConfig.CFG_SQL_STMTS_JSON, JsonUtil.toJson(sqlStmts));
Config samzaConfig = SamzaSqlApplicationRunner.computeSamzaConfigs(true, new MapConfig(config));
List<SamzaSqlQueryParser.QueryInfo> queryInfo = fetchQueryInfo(sqlStmts);
SamzaSqlApplicationConfig samzaSqlApplicationConfig = new SamzaSqlApplicationConfig(new MapConfig(config), queryInfo.stream().map(SamzaSqlQueryParser.QueryInfo::getSources).flatMap(Collection::stream).collect(Collectors.toList()), queryInfo.stream().map(SamzaSqlQueryParser.QueryInfo::getSink).collect(Collectors.toList()));
StreamApplicationDescriptorImpl appDesc = new StreamApplicationDescriptorImpl(streamApp -> {
}, samzaConfig);
QueryTranslator translator = new QueryTranslator(appDesc, samzaSqlApplicationConfig);
translator.translate(queryInfo.get(0), appDesc, 0);
translator.translate(queryInfo.get(1), appDesc, 1);
OperatorSpecGraph specGraph = appDesc.getOperatorSpecGraph();
StreamConfig streamConfig = new StreamConfig(samzaConfig);
String inputStreamId = specGraph.getInputOperators().keySet().stream().findFirst().get();
String inputSystem = streamConfig.getSystem(inputStreamId);
String inputPhysicalName = streamConfig.getPhysicalName(inputStreamId);
String outputStreamId1 = specGraph.getOutputStreams().keySet().stream().findFirst().get();
String outputSystem1 = streamConfig.getSystem(outputStreamId1);
String outputPhysicalName1 = streamConfig.getPhysicalName(outputStreamId1);
String outputStreamId2 = specGraph.getOutputStreams().keySet().stream().skip(1).findFirst().get();
String outputSystem2 = streamConfig.getSystem(outputStreamId2);
String outputPhysicalName2 = streamConfig.getPhysicalName(outputStreamId2);
Assert.assertEquals(2, specGraph.getOutputStreams().size());
Assert.assertEquals("testavro", outputSystem1);
Assert.assertEquals("SIMPLE2", outputPhysicalName1);
Assert.assertEquals("testavro", outputSystem2);
Assert.assertEquals("SIMPLE3", outputPhysicalName2);
Assert.assertEquals(1, specGraph.getInputOperators().size());
Assert.assertEquals("testavro", inputSystem);
Assert.assertEquals("SIMPLE1", inputPhysicalName);
}
Aggregations