public void shutdown() { try { this.s3.stop(); } catch (IOException | InterruptedException | TimeoutException e) { return; } } }
/** * Generates an Amazon TestContext object that will be used to invoke our Bender Handlers. * * @return TestContext */ protected static TestContext getContext() { TestContext ctx = new TestContext(); ctx.setFunctionName("cli-main"); ctx.setInvokedFunctionArn("arn:aws:lambda:" + AWS_REGION + ":" + AWS_ACCOUNT + ":function:function_name:function_alias"); ctx.setAwsRequestId(System.currentTimeMillis() + ""); return ctx; } }
@Test(expected = HandlerException.class) public void testBadConfig() throws HandlerException { BaseHandler.CONFIG_FILE = "/config/handler_config_bad.json"; List<DummyEvent> events = new ArrayList<DummyEvent>(1); TestContext context = new TestContext(); context.setInvokedFunctionArn("arn:aws:lambda:us-east-1:123:function:test:tag"); handler.handler(events, context); }
public S3EventIterator(LambdaContext context, List<S3EventNotificationRecord> records, AmazonS3ClientFactory s3ClientFactory) { this.records = records; this.context = context; this.client = s3ClientFactory.newInstance(); this.config = new RetryConfigBuilder() .retryOnSpecificExceptions(SocketTimeoutException.class, UncheckedIOException.class) .withMaxNumberOfTries(3).withDelayBetweenTries(100, ChronoUnit.MILLIS) .withExponentialBackoff().build(); }
private static URI getFile(final URI where, final String fileName) throws ZipException, IOException { final File location; final URI fileURI; location = new File(where); // not in a JAR, just return the path on disk if (location.isDirectory()) { fileURI = URI.create(where.toString() + fileName); } else { final ZipFile zipFile; zipFile = new ZipFile(location); try { fileURI = extract(zipFile, fileName); } finally { zipFile.close(); } } return (fileURI); }
public S3MockClientFactory(int port, String username, String pass) { try { this.s3.start(port, username, pass); } catch (IOException | InterruptedException | InvalidExitValueException | TimeoutException e) { throw new RuntimeException(e); } BasicAWSCredentials awsCredentials = new BasicAWSCredentials(username, pass); this.client = new AmazonS3Client(awsCredentials, new ClientConfiguration()); this.client.setEndpoint("http://127.0.0.1:" + port); this.client.createBucket(S3_BUCKET); }
@After public void teardown() { this.clientFactory.shutdown(); }
@Test(expected = HandlerException.class) public void testMissingConfig() throws HandlerException { BaseHandler.CONFIG_FILE = "/config/missing.json"; List<DummyEvent> events = new ArrayList<DummyEvent>(1); TestContext context = new TestContext(); context.setInvokedFunctionArn("arn:aws:lambda:us-east-1:123:function:test:tag"); handler.handler(events, context); }
public S3EventIterator(LambdaContext context, List<S3EventNotificationRecord> records, AmazonS3ClientFactory s3ClientFactory) { this.records = records; this.context = context; this.client = s3ClientFactory.newInstance(); this.config = new RetryConfigBuilder() .retryOnSpecificExceptions(SocketTimeoutException.class, UncheckedIOException.class) .withMaxNumberOfTries(3).withDelayBetweenTries(100, ChronoUnit.MILLIS) .withExponentialBackoff().build(); }
@Test public void testLatestTagConfig() throws HandlerException { List<DummyEvent> events = new ArrayList<DummyEvent>(1); TestContext context = new TestContext(); context.setInvokedFunctionArn("arn:aws:lambda:us-east-1:123:function:test"); handler.handler(events, context); assertEquals("/config/$LATEST.json", handler.config.getConfigFile()); }
@Override public void setConf(AbstractConfig config) { this.config = (GeoIpOperationConfig) config; AmazonS3Client client = this.s3Factory.newInstance(); AmazonS3URI uri = new AmazonS3URI(this.config.getGeoLiteDb()); GetObjectRequest req = new GetObjectRequest(uri.getBucket(), uri.getKey()); S3Object obj = client.getObject(req); try { this.databaseReader = new DatabaseReader.Builder(obj.getObjectContent()).withCache(new CHMCache()).build(); } catch (IOException e) { throw new ConfigurationException("Unable to read " + this.config.getGeoLiteDb(), e); } } }
@Test public void testTagConfig() throws HandlerException { List<DummyEvent> events = new ArrayList<DummyEvent>(1); TestContext context = new TestContext(); context.setInvokedFunctionArn("arn:aws:lambda:us-east-1:123:function:test:staging"); handler.handler(events, context); assertEquals("/config/staging.json", handler.config.getConfigFile()); }
@Test public void testEndToEndWithNoOperations() throws HandlerException { BaseHandler.CONFIG_FILE = "/config/handler_config_no_operations.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.handler(events, context); /* * Verify Events made it all the way through */ assertEquals(2, BufferedTransporter.output.size()); assertEquals("foo", BufferedTransporter.output.get(0)); assertEquals("bar", BufferedTransporter.output.get(1)); }
@Test public void testContains() throws HandlerException { BaseHandler.CONFIG_FILE = "/config/handler_config_contains.json"; List<DummyEvent> events = new ArrayList<DummyEvent>(2); events.add(new DummyEvent("foo", 0)); events.add(new DummyEvent("bar", 0)); events.add(new DummyEvent("loop", 0)); TestContext context = new TestContext(); context.setInvokedFunctionArn("arn:aws:lambda:us-east-1:123:function:test:tag"); handler.handler(events, context); /* * Verify Events made it all the way through */ assertEquals(1, BufferedTransporter.output.size()); assertEquals("bar", BufferedTransporter.output.get(0)); }
@Test public void testEndToEnd() throws HandlerException { 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.handler(events, context); /* * Verify Events made it all the way through */ assertEquals(2, BufferedTransporter.output.size()); assertEquals("foo", BufferedTransporter.output.get(0)); assertEquals("bar", BufferedTransporter.output.get(1)); }
@Test public void testRegex() throws HandlerException { BaseHandler.CONFIG_FILE = "/config/handler_config_regex.json"; List<DummyEvent> events = new ArrayList<DummyEvent>(2); events.add(new DummyEvent("foo", 0)); events.add(new DummyEvent("bar", 0)); events.add(new DummyEvent("loop", 0)); TestContext context = new TestContext(); context.setInvokedFunctionArn("arn:aws:lambda:us-east-1:123:function:test:tag"); handler.handler(events, context); /* * Verify Events made it all the way through */ assertEquals(1, BufferedTransporter.output.size()); assertEquals("bar", BufferedTransporter.output.get(0)); } }
@Test public void testUserTags() throws HandlerException { BaseHandler.CONFIG_FILE = "/config/handler_config_user_tags.json"; TestContext context = new TestContext(); context.setInvokedFunctionArn("arn:aws:lambda:us-east-1:123:function:test:test_tags"); HashMap<String, String> expected = new HashMap<String, String>() { { put("u1", "foo"); put("u2", "bar"); } }; handler.init(context); Map<String, String> actual = handler.monitor.getTagsMap(); assertTrue(actual.entrySet().containsAll(expected.entrySet())); }
@Test public void testS3Config() throws HandlerException { BaseHandler handler = new DummyHandler(); handler.CONFIG_FILE = null; handler.s3ClientFactory = this.clientFactory; List<DummyEvent> events = new ArrayList<DummyEvent>(1); TestContext context = new TestContext(); context.setInvokedFunctionArn("arn:aws:lambda:us-east-1:123:function:test"); handler.handler(events, context); assertEquals("s3://" + S3_BUCKET + "/bender/config.json", handler.config.getConfigFile()); assertEquals("Test Events", handler.config.getSources().get(0).getName()); } }
@Test public void testFastSourceFastConsumer() throws HandlerException { BaseHandler.CONFIG_FILE = "/config/handler_config_queue.yaml"; Queue<DummyEvent> q = new Queue<DummyEvent>(); Iterator<DummyEvent> dummyEvents = q.stream().iterator(); for (int i = 0; i < 1000; i++) { q.offer(new DummyEvent("" + i, 0)); } q.close(); TestContext context = new TestContext(); context.setInvokedFunctionArn("arn:aws:lambda:us-east-1:123:function:test:tag"); handler.handler(dummyEvents, context); /* * Verify Events made it all the way through */ assertEquals(1000, BufferedTransporter.output.size()); }