use of com.nextdoor.bender.ipc.IpcSenderService in project bender by Nextdoor.
the class BaseHandlerTest method testIpcOnAddFailure.
@Test
public void testIpcOnAddFailure() throws Throwable {
BaseHandler.CONFIG_FILE = "/config/handler_config.json";
handler.skipWriteStats = true;
List<DummyEvent> events = new ArrayList<DummyEvent>(2);
events.add(new DummyEvent("foo", 0));
events.add(new DummyEvent("bar", 0));
TestContext context = new TestContext();
context.setInvokedFunctionArn("arn:aws:lambda:us-east-1:123:function:test:tag");
handler.init(context);
TransportBuffer tbSpy1 = spy(new ArrayTransportBuffer());
TransportBuffer tbSpy2 = spy(new ArrayTransportBuffer());
doCallRealMethod().doCallRealMethod().when(tbSpy1).add(any());
doThrow(new IllegalStateException("expected")).when(tbSpy2).add(any());
IpcSenderService spyIpc = spy(handler.getIpcService());
TransportFactory tfSpy = spy(spyIpc.getTransportFactory());
when(tfSpy.newTransportBuffer()).thenReturn(tbSpy1, tbSpy2);
spyIpc.setTransportFactory(tfSpy);
handler.setIpcService(spyIpc);
handler.handler(events, context);
assertEquals(1, spyIpc.getSuccessCountStat().getValue());
}
use of com.nextdoor.bender.ipc.IpcSenderService in project bender by Nextdoor.
the class HandlerTest method testExceptionHandling.
@Test(expected = TransportException.class)
public void testExceptionHandling() throws Throwable {
TestContext ctx = new TestContext();
ctx.setFunctionName("unittest");
ctx.setInvokedFunctionArn("arn:aws:lambda:us-east-1:123:function:test-function:staging");
/*
* Invoke handler
*/
BaseHandler<T> fhandler = (BaseHandler<T>) getHandler();
fhandler.init(ctx);
IpcSenderService ipcSpy = spy(fhandler.getIpcService());
doThrow(new TransportException("expected")).when(ipcSpy).shutdown();
fhandler.setIpcService(ipcSpy);
T event = getTestEvent();
try {
fhandler.handler(event, ctx);
} catch (Exception e) {
throw e.getCause().getCause();
}
}
use of com.nextdoor.bender.ipc.IpcSenderService in project bender by Nextdoor.
the class BaseHandlerTest method testGeneralTransportExceptionOnShutdown.
@Test(expected = TransportException.class)
public void testGeneralTransportExceptionOnShutdown() throws Throwable {
BaseHandler.CONFIG_FILE = "/config/handler_config.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);
IpcSenderService spy = spy(handler.getIpcService());
handler.setIpcService(spy);
doThrow(new TransportException("expected")).when(spy).shutdown();
try {
handler.handler(events, context);
} catch (Exception e) {
throw e.getCause().getCause();
}
}
use of com.nextdoor.bender.ipc.IpcSenderService in project bender by Nextdoor.
the class BaseHandlerTest method testTransportOnSendFailure.
@Test(expected = TransportException.class)
public void testTransportOnSendFailure() throws Throwable {
BaseHandler.CONFIG_FILE = "/config/handler_config.json";
List<DummyEvent> events = new ArrayList<DummyEvent>(2);
events.add(new DummyEvent("foo", 0));
events.add(new DummyEvent("bar", 0));
TestContext context = new TestContext();
context.setInvokedFunctionArn("arn:aws:lambda:us-east-1:123:function:test:tag");
handler.init(context);
IpcSenderService spyIpc = spy(handler.getIpcService());
TransportFactory tf = spy(handler.getIpcService().getTransportFactory());
BufferedTransporter mockTransport = mock(BufferedTransporter.class);
doThrow(new TransportException("expected")).when(mockTransport).sendBatch(any());
when(tf.newInstance()).thenReturn(mockTransport);
spyIpc.setTransportFactory(tf);
handler.setIpcService(spyIpc);
try {
handler.handler(events, context);
} catch (Exception e) {
throw e.getCause().getCause();
}
}
use of com.nextdoor.bender.ipc.IpcSenderService in project bender by Nextdoor.
the class BaseHandlerTest method testInterruptedExceptionOnShutdown.
@Test(expected = InterruptedException.class)
public void testInterruptedExceptionOnShutdown() throws Throwable {
BaseHandler.CONFIG_FILE = "/config/handler_config.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);
IpcSenderService spy = spy(handler.getIpcService());
handler.setIpcService(spy);
doThrow(new InterruptedException("expected")).when(spy).shutdown();
try {
handler.handler(events, context);
} catch (Exception e) {
throw e.getCause().getCause();
}
}
Aggregations