forkInput = opProcInFork.perform(forkInput);
forkInput = opProcInFork.perform(forkInput);
conditionInput = proc.perform(conditionInput);
conditionInput = proc.perform(conditionInput);
@Test public void testMultipleOperationsConfig() throws HandlerException { BaseHandler.CONFIG_FILE = "/config/handler_config_two_operations.json"; List<DummyEvent> events = new ArrayList<DummyEvent>(1); events.add(new DummyEvent("foo", 0)); TestContext context = new TestContext(); context.setInvokedFunctionArn("arn:aws:lambda:us-east-1:123:function:test:tag"); handler.init(context); List<OperationProcessor> operationProcessores = handler.sources.get(0).getOperationProcessors(); for (int i = 0; i < operationProcessores.size(); i++) { OperationProcessor operationProcessor = spy(operationProcessores.get(i)); operationProcessores.set(i, operationProcessor); } handler.handler(events, context); /* * 2 operations specified in the config file */ verify(operationProcessores.get(0), times(1)).perform(any()); verify(operationProcessores.get(1), times(1)).perform(any()); }
@Test public void testNullInternalEventFiltering() throws JsonSyntaxException, UnsupportedEncodingException, IOException, OperationException { /* * Setup mocks for test */ DummyOperation op = spy(new DummyOperation()); when(op.perform(any(InternalEvent.class))).thenReturn(null); DummyOperationFactory operationFactory = new DummyOperationFactory(op); OperationProcessor processor = new OperationProcessor(operationFactory); /* * Do call */ Stream<InternalEvent> stream = processor.perform(Stream.of(new InternalEvent("foo", null, 1))); List<InternalEvent> output = stream.collect(Collectors.toList()); /* * Verify nothing came out */ assertEquals(0, output.size()); }
@Test public void testOperationThroughProcessor() throws FieldNotFoundException { List<PartitionSpec> partitionSpecs = new ArrayList<PartitionSpec>(1); List<String> sources = Arrays.asList("foo"); PartitionSpec spec = new PartitionSpec("foo", sources, PartitionSpec.Interpreter.STRING); partitionSpecs.add(spec); PartitionOperation op = new PartitionOperation(partitionSpecs); InternalEvent ievent = new InternalEvent("foo", null, 1); DummyStringEvent devent = spy(new DummyStringEvent("")); ievent.setEventObj(devent); doReturn("baz").when(devent).getFieldAsString("foo"); DummyOperationFactory opFact = new DummyOperationFactory(op); OperationProcessor opProc = new OperationProcessor(opFact); opProc.perform(Stream.of(ievent)).count(); LinkedHashMap<String, String> actual = ievent.getPartitions(); LinkedHashMap<String, String> expected = new LinkedHashMap<String, String>(1); expected.put("foo", "baz"); assertEquals(expected, actual); } }
@Test public void testNullDeserializedEventFiltering() throws JsonSyntaxException, UnsupportedEncodingException, IOException, OperationException { /* * Setup mocks for test */ DummyOperation op = spy(new DummyOperation()); InternalEvent retEvent = new InternalEvent("foo", null, 1); retEvent.setEventObj(null); when(op.perform(any(InternalEvent.class))).thenReturn(retEvent); DummyOperationFactory operationFactory = new DummyOperationFactory(op); OperationProcessor processor = new OperationProcessor(operationFactory); /* * Do call */ Stream<InternalEvent> stream = processor.perform(Stream.of(new InternalEvent("foo", null, 1))); List<InternalEvent> output = stream.collect(Collectors.toList()); /* * Verify nothing came out */ assertEquals(0, output.size()); }
@Test public void testStatsLoggingOnError() { DummyOperation operation = mock(DummyOperation.class); DummyOperationFactory mutatorFactory = new DummyOperationFactory(operation); OperationProcessor processor = new OperationProcessor(mutatorFactory); InternalEvent ievent = new InternalEvent("a", null, 1); doThrow(new OperationException("Expceted")).when(operation).perform(ievent); /* * Mock the Stat object */ Stat runtimeStat = mock(Stat.class); Stat successStat = mock(Stat.class); Stat errorStat = mock(Stat.class); processor.setRuntimeStat(runtimeStat); processor.setSuccessCountStat(successStat); processor.setErrorCountStat(errorStat); Stream<InternalEvent> stream = processor.perform(Stream.of(ievent)); List<InternalEvent> output = stream.collect(Collectors.toList()); /* * Verify start, stop are called, increment error count and never increment success count. */ verify(runtimeStat, times(1)).start(); verify(runtimeStat, times(1)).stop(); verify(successStat, never()).increment(); verify(errorStat, times(1)).increment(); /* * Verify contents of output stream */ assertEquals(0, output.size()); }
@Test public void testNullPayloadFiltering() throws JsonSyntaxException, UnsupportedEncodingException, IOException, OperationException { /* * Setup mocks for test */ DummyOperation op = spy(new DummyOperation()); InternalEvent retEvent = new InternalEvent("foo", null, 1); retEvent.setEventObj(new DummyDeserializerHelper.DummyStringEvent(null)); when(op.perform(any(InternalEvent.class))).thenReturn(retEvent); DummyOperationFactory operationFactory = new DummyOperationFactory(op); OperationProcessor processor = new OperationProcessor(operationFactory); /* * Do call */ Stream<InternalEvent> stream = processor.perform(Stream.of(new InternalEvent("foo", null, 1))); List<InternalEvent> output = stream.collect(Collectors.toList()); /* * Verify nothing came out */ assertEquals(0, output.size()); } }
operated = operation.perform(operated);
operated = operation.perform(operated);
@Test public void testStatsLogging() throws JsonSyntaxException, UnsupportedEncodingException, IOException, OperationException { DummyOperationFactory mutatorFactory = new DummyOperationFactory(); OperationProcessor processor = new OperationProcessor(mutatorFactory); /* * Mock the Stat object */ Stat runtimeStat = mock(Stat.class); Stat successStat = mock(Stat.class); Stat errorStat = mock(Stat.class); processor.setRuntimeStat(runtimeStat); processor.setSuccessCountStat(successStat); processor.setErrorCountStat(errorStat); InternalEvent ievent = new InternalEvent("foo", null, 1); ievent.setEventObj(new DummyDeserializerHelper.DummyStringEvent("test")); Stream<InternalEvent> stream = processor.perform(Stream.of(ievent)); List<InternalEvent> output = stream.collect(Collectors.toList()); /* * Verify start, stop, increment success count, and never increment error count. */ verify(runtimeStat, times(1)).start(); verify(runtimeStat, times(1)).stop(); verify(successStat, times(1)).increment(); verify(errorStat, never()).increment(); /* * Verify contents of output stream */ assertEquals(1, output.size()); }