/** * Calls {@link com.nextdoor.bender.deserializer.Deserializer#deserialize(String)} and returns a * DeserializedEvent. * * @param eventString A plain text string which needs to be converted into a * {@link DeserializedEvent}. * @return A DeserializedEvent if deserialization succeeded or null if it failed. */ public DeserializedEvent deserialize(String eventString) { DeserializedEvent dEvent = null; this.getRuntimeStat().start(); try { dEvent = this.deser.deserialize(eventString); this.getSuccessCountStat().increment(); } catch (DeserializationException e) { logger.warn("failed to deserialize", e); this.getErrorCountStat().increment(); } finally { this.getRuntimeStat().stop(); } return dEvent; }
/** * Calls {@link com.nextdoor.bender.deserializer.Deserializer#deserialize(String)} and returns a * DeserializedEvent. * * @param eventString A plain text string which needs to be converted into a * {@link DeserializedEvent}. * @return A DeserializedEvent if deserialization succeeded or null if it failed. */ public DeserializedEvent deserialize(String eventString) { DeserializedEvent dEvent = null; this.getRuntimeStat().start(); try { dEvent = this.deser.deserialize(eventString); this.getSuccessCountStat().increment(); } catch (DeserializationException e) { logger.warn("failed to deserialize", e); this.getErrorCountStat().increment(); } finally { this.getRuntimeStat().stop(); } return dEvent; }
@Test public void testFilterNullDeserialization() throws HandlerException { BaseHandler.CONFIG_FILE = "/config/handler_config.json"; handler.skipWriteStats = true; 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); DeserializerProcessor proc = handler.sources.get(0).getDeserProcessor(); Deserializer deserSpy = spy(proc.getDeserializer()); when(deserSpy.deserialize(anyString())).thenReturn(null); proc.setDeserializer(deserSpy); handler.handler(events, context); assertEquals(0, BufferedTransporter.output.size()); }
@Test public void testFilterFailedDeserialization() throws HandlerException { BaseHandler.CONFIG_FILE = "/config/handler_config.json"; handler.skipWriteStats = true; 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); DeserializerProcessor proc = handler.sources.get(0).getDeserProcessor(); Deserializer deserSpy = spy(proc.getDeserializer()); doThrow(new DeserializationException("expected")).when(deserSpy).deserialize(anyString()); proc.setDeserializer(deserSpy); handler.handler(events, context); assertEquals(0, BufferedTransporter.output.size()); }
@Test public void testLoadFactory() { Deserializer d = DeserializerFactory.loadFromFactory(DummyDeserializerFactory.class); assertEquals("foo", d.deserialize("foo").getPayload()); } }
@Test public void testDeserializationException() throws HandlerException { BaseHandler.CONFIG_FILE = "/config/handler_config.json"; handler.skipWriteStats = true; 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); DeserializerProcessor proc = handler.sources.get(0).getDeserProcessor(); Deserializer deserSpy = spy(proc.getDeserializer()); doThrow(new DeserializationException("expected")).when(deserSpy).deserialize(anyString()); proc.setDeserializer(deserSpy); handler.handler(events, context); assertEquals(1, proc.getErrorCountStat().getValue()); }