public static Emitter create( Properties props, AsyncHttpClient httpClient, ObjectMapper jsonMapper, Lifecycle lifecycle ) { Map<String, Object> jsonified; if (props.getProperty(LOG_EMITTER_PROP) != null) { jsonified = makeLoggingMap(props); jsonified.put("type", "logging"); } else if (props.getProperty(HTTP_EMITTER_PROP) != null) { jsonified = makeHttpMap(props); jsonified.put("type", "http"); } else if (props.getProperty(CUSTOM_EMITTER_TYPE_PROP) != null) { jsonified = makeCustomFactoryMap(props); } else { throw new ISE( "Unknown type of emitter. Please set [%s], [%s] or provide registered subtype of org.apache.druid.java.util.emitter.core.factory.EmitterFactory via [%s]", LOG_EMITTER_PROP, HTTP_EMITTER_PROP, CUSTOM_EMITTER_TYPE_PROP ); } return jsonMapper.convertValue(jsonified, EmitterFactory.class).makeEmitter(jsonMapper, httpClient, lifecycle); }
@Test public void testSettingEverything() { final Properties props = new Properties(); props.setProperty("org.apache.druid.java.util.emitter.loggerClass", "Foo"); props.setProperty("org.apache.druid.java.util.emitter.logLevel", "INFO"); final ObjectMapper objectMapper = new ObjectMapper(); final LoggingEmitterConfig config = objectMapper.convertValue( Emitters.makeCustomFactoryMap(props), LoggingEmitterConfig.class ); Assert.assertEquals("getLoggerClass", "Foo", config.getLoggerClass()); Assert.assertEquals("getLogLevel", "INFO", config.getLogLevel()); }
private Emitter parametrizedEmmiter(String uriPattern) throws Exception { final Properties props = new Properties(); props.setProperty("org.apache.druid.java.util.emitter.type", "parametrized"); props.setProperty("org.apache.druid.java.util.emitter.recipientBaseUrlPattern", uriPattern); lifecycle = new Lifecycle(); Emitter emitter = Emitters.create(props, httpClient, lifecycle); assertEquals(ParametrizedUriEmitter.class, emitter.getClass()); lifecycle.start(); return emitter; }
@Test public void testDefaultsLegacy() { final Properties props = new Properties(); final ObjectMapper objectMapper = new ObjectMapper(); final LoggingEmitterConfig config = objectMapper.convertValue( Emitters.makeLoggingMap(props), LoggingEmitterConfig.class ); Assert.assertEquals("getLoggerClass", LoggingEmitter.class.getName(), config.getLoggerClass()); Assert.assertEquals("getLogLevel", "debug", config.getLogLevel()); }
@Test public void testSettingEverythingLegacy() { final Properties props = new Properties(); props.setProperty("org.apache.druid.java.util.emitter.flushMillis", "1"); props.setProperty("org.apache.druid.java.util.emitter.flushCount", "2"); props.setProperty("org.apache.druid.java.util.emitter.http.url", "http://example.com/"); props.setProperty("org.apache.druid.java.util.emitter.http.basicAuthentication", "a:b"); props.setProperty("org.apache.druid.java.util.emitter.http.batchingStrategy", "newlines"); props.setProperty("org.apache.druid.java.util.emitter.http.maxBatchSize", "4"); props.setProperty("org.apache.druid.java.util.emitter.http.flushTimeOut", "1000"); props.setProperty("org.apache.druid.java.util.emitter.http.batchQueueSizeLimit", "2500"); props.setProperty("org.apache.druid.java.util.emitter.http.httpTimeoutAllowanceFactor", "3.0"); props.setProperty("org.apache.druid.java.util.emitter.http.minHttpTimeoutMillis", "100"); final ObjectMapper objectMapper = new ObjectMapper(); final HttpEmitterConfig config = objectMapper.convertValue(Emitters.makeHttpMap(props), HttpEmitterConfig.class); Assert.assertEquals(1, config.getFlushMillis()); Assert.assertEquals(2, config.getFlushCount()); Assert.assertEquals("http://example.com/", config.getRecipientBaseUrl()); Assert.assertEquals("a:b", config.getBasicAuthentication()); Assert.assertEquals(BatchingStrategy.NEWLINES, config.getBatchingStrategy()); Assert.assertEquals(4, config.getMaxBatchSize()); Assert.assertEquals(1000, config.getFlushTimeOut()); Assert.assertEquals(2500, config.getBatchQueueSizeLimit()); Assert.assertEquals(3.0f, config.getHttpTimeoutAllowanceFactor(), 0.0f); Assert.assertEquals(100, config.getMinHttpTimeoutMillis()); }
@Test public void testDefaults() { final Properties props = new Properties(); final ObjectMapper objectMapper = new ObjectMapper(); final LoggingEmitterConfig config = objectMapper.convertValue( Emitters.makeCustomFactoryMap(props), LoggingEmitterConfig.class ); Assert.assertEquals("getLoggerClass", LoggingEmitter.class.getName(), config.getLoggerClass()); Assert.assertEquals("getLogLevel", "info", config.getLogLevel()); }
private HttpPostEmitter sizeBasedEmitterGeneralizedCreation(int size) { Properties props = new Properties(); props.setProperty("org.apache.druid.java.util.emitter.type", "http"); props.setProperty("org.apache.druid.java.util.emitter.recipientBaseUrl", TARGET_URL); props.setProperty("org.apache.druid.java.util.emitter.flushMillis", String.valueOf(Long.MAX_VALUE)); props.setProperty("org.apache.druid.java.util.emitter.flushCount", String.valueOf(size)); Lifecycle lifecycle = new Lifecycle(); Emitter emitter = Emitters.create(props, httpClient, jsonMapper, lifecycle); Assert.assertTrue(StringUtils.format( "HttpPostEmitter emitter should be created, but found %s", emitter.getClass().getName() ), emitter instanceof HttpPostEmitter); emitter.start(); return (HttpPostEmitter) emitter; }
@Test public void testSettingEverythingLegacy() { final Properties props = new Properties(); props.setProperty("org.apache.druid.java.util.emitter.logging.class", "Foo"); props.setProperty("org.apache.druid.java.util.emitter.logging.level", "INFO"); final ObjectMapper objectMapper = new ObjectMapper(); final LoggingEmitterConfig config = objectMapper.convertValue( Emitters.makeLoggingMap(props), LoggingEmitterConfig.class ); Assert.assertEquals("getLoggerClass", "Foo", config.getLoggerClass()); Assert.assertEquals("getLogLevel", "INFO", config.getLogLevel()); } }
@Test public void testDefaultsLegacy() { final Properties props = new Properties(); props.put("org.apache.druid.java.util.emitter.http.url", "http://example.com/"); final ObjectMapper objectMapper = new ObjectMapper(); final HttpEmitterConfig config = objectMapper.convertValue(Emitters.makeHttpMap(props), HttpEmitterConfig.class); Assert.assertEquals(60000, config.getFlushMillis()); Assert.assertEquals(300, config.getFlushCount()); Assert.assertEquals("http://example.com/", config.getRecipientBaseUrl()); Assert.assertEquals(null, config.getBasicAuthentication()); Assert.assertEquals(BatchingStrategy.ARRAY, config.getBatchingStrategy()); Pair<Integer, Integer> batchConfigPair = BaseHttpEmittingConfig.getDefaultBatchSizeAndLimit( Runtime.getRuntime().maxMemory() ); Assert.assertEquals(batchConfigPair.lhs.intValue(), config.getMaxBatchSize()); Assert.assertEquals(batchConfigPair.rhs.intValue(), config.getBatchQueueSizeLimit()); Assert.assertEquals(Long.MAX_VALUE, config.getFlushTimeOut()); Assert.assertEquals(2.0f, config.getHttpTimeoutAllowanceFactor(), 0.0f); Assert.assertEquals(0, config.getMinHttpTimeoutMillis()); }
public static Emitter create( Properties props, AsyncHttpClient httpClient, ObjectMapper jsonMapper, Lifecycle lifecycle ) { Map<String, Object> jsonified = Maps.newHashMap(); if (props.getProperty(LOG_EMITTER_PROP) != null) { jsonified = makeLoggingMap(props); jsonified.put("type", "logging"); } else if (props.getProperty(HTTP_EMITTER_PROP) != null) { jsonified = makeHttpMap(props); jsonified.put("type", "http"); } else if (props.getProperty(CUSTOM_EMITTER_TYPE_PROP) != null) { jsonified = makeCustomFactoryMap(props); } else { throw new ISE( "Unknown type of emitter. Please set [%s], [%s] or provide registered subtype of org.apache.druid.java.util.emitter.core.factory.EmitterFactory via [%s]", LOG_EMITTER_PROP, HTTP_EMITTER_PROP, CUSTOM_EMITTER_TYPE_PROP ); } return jsonMapper.convertValue(jsonified, EmitterFactory.class).makeEmitter(jsonMapper, httpClient, lifecycle); }
@Test public void testSettingEverything() { final Properties props = new Properties(); props.setProperty("org.apache.druid.java.util.emitter.httpEmitting.flushMillis", "1"); props.setProperty("org.apache.druid.java.util.emitter.httpEmitting.flushCount", "2"); props.setProperty("org.apache.druid.java.util.emitter.httpEmitting.basicAuthentication", "a:b"); props.setProperty("org.apache.druid.java.util.emitter.httpEmitting.batchingStrategy", "NEWLINES"); props.setProperty("org.apache.druid.java.util.emitter.httpEmitting.maxBatchSize", "4"); props.setProperty("org.apache.druid.java.util.emitter.httpEmitting.flushTimeOut", "1000"); final ObjectMapper objectMapper = new ObjectMapper(); final ParametrizedUriEmitterConfig paramConfig = objectMapper.convertValue(Emitters.makeCustomFactoryMap(props), ParametrizedUriEmitterConfig.class); final HttpEmitterConfig config = paramConfig.buildHttpEmitterConfig("http://example.com/topic"); Assert.assertEquals(1, config.getFlushMillis()); Assert.assertEquals(2, config.getFlushCount()); Assert.assertEquals("http://example.com/topic", config.getRecipientBaseUrl()); Assert.assertEquals("a:b", config.getBasicAuthentication()); Assert.assertEquals(BatchingStrategy.NEWLINES, config.getBatchingStrategy()); Assert.assertEquals(4, config.getMaxBatchSize()); Assert.assertEquals(1000, config.getFlushTimeOut()); } }
@Test public void testCustomEmitter() { final Properties props = new Properties(); props.put("org.apache.druid.java.util.emitter.stringProperty", "http://example.com/"); props.put("org.apache.druid.java.util.emitter.intProperty", "1"); props.put("org.apache.druid.java.util.emitter.type", "test"); final ObjectMapper objectMapper = new ObjectMapper(); objectMapper.registerSubtypes(TestEmitterConfig.class); final Lifecycle lifecycle = new Lifecycle(); final Emitter emitter = Emitters.create(props, null, objectMapper, lifecycle); Assert.assertTrue("created emitter should be of class StubEmitter", emitter instanceof StubEmitter); StubEmitter stubEmitter = (StubEmitter) emitter; Assert.assertEquals("http://example.com/", stubEmitter.getStringProperty()); Assert.assertEquals(1, stubEmitter.getIntProperty()); } }
@Test public void testSettingEverything() { final Properties props = new Properties(); props.setProperty("org.apache.druid.java.util.emitter.flushMillis", "1"); props.setProperty("org.apache.druid.java.util.emitter.flushCount", "2"); props.setProperty("org.apache.druid.java.util.emitter.recipientBaseUrl", "http://example.com/"); props.setProperty("org.apache.druid.java.util.emitter.basicAuthentication", "a:b"); props.setProperty("org.apache.druid.java.util.emitter.batchingStrategy", "NEWLINES"); props.setProperty("org.apache.druid.java.util.emitter.maxBatchSize", "4"); props.setProperty("org.apache.druid.java.util.emitter.flushTimeOut", "1000"); props.setProperty("org.apache.druid.java.util.emitter.batchQueueSizeLimit", "2500"); props.setProperty("org.apache.druid.java.util.emitter.httpTimeoutAllowanceFactor", "3.0"); props.setProperty("org.apache.druid.java.util.emitter.minHttpTimeoutMillis", "100"); final ObjectMapper objectMapper = new ObjectMapper(); final HttpEmitterConfig config = objectMapper.convertValue( Emitters.makeCustomFactoryMap(props), HttpEmitterConfig.class ); Assert.assertEquals(1, config.getFlushMillis()); Assert.assertEquals(2, config.getFlushCount()); Assert.assertEquals("http://example.com/", config.getRecipientBaseUrl()); Assert.assertEquals("a:b", config.getBasicAuthentication()); Assert.assertEquals(BatchingStrategy.NEWLINES, config.getBatchingStrategy()); Assert.assertEquals(4, config.getMaxBatchSize()); Assert.assertEquals(1000, config.getFlushTimeOut()); Assert.assertEquals(2500, config.getBatchQueueSizeLimit()); Assert.assertEquals(3.0f, config.getHttpTimeoutAllowanceFactor(), 0.0f); Assert.assertEquals(100, config.getMinHttpTimeoutMillis()); }
@Test public void testDefaults() { final Properties props = new Properties(); final ObjectMapper objectMapper = new ObjectMapper(); final ParametrizedUriEmitterConfig paramConfig = objectMapper.convertValue(Emitters.makeCustomFactoryMap(props), ParametrizedUriEmitterConfig.class); final HttpEmitterConfig config = paramConfig.buildHttpEmitterConfig("http://example.com/topic"); Assert.assertEquals(60000, config.getFlushMillis()); Assert.assertEquals(500, config.getFlushCount()); Assert.assertEquals("http://example.com/topic", config.getRecipientBaseUrl()); Assert.assertEquals(null, config.getBasicAuthentication()); Assert.assertEquals(BatchingStrategy.ARRAY, config.getBatchingStrategy()); Pair<Integer, Integer> batchConfigPair = BaseHttpEmittingConfig.getDefaultBatchSizeAndLimit( Runtime.getRuntime().maxMemory() ); Assert.assertEquals(batchConfigPair.lhs.intValue(), config.getMaxBatchSize()); Assert.assertEquals(batchConfigPair.rhs.intValue(), config.getBatchQueueSizeLimit()); Assert.assertEquals(Long.MAX_VALUE, config.getFlushTimeOut()); }
@Test public void testDefaults() { final Properties props = new Properties(); props.put("org.apache.druid.java.util.emitter.recipientBaseUrl", "http://example.com/"); final ObjectMapper objectMapper = new ObjectMapper(); final HttpEmitterConfig config = objectMapper.convertValue( Emitters.makeCustomFactoryMap(props), HttpEmitterConfig.class ); Assert.assertEquals(60000, config.getFlushMillis()); Assert.assertEquals(500, config.getFlushCount()); Assert.assertEquals("http://example.com/", config.getRecipientBaseUrl()); Assert.assertEquals(null, config.getBasicAuthentication()); Assert.assertEquals(BatchingStrategy.ARRAY, config.getBatchingStrategy()); Pair<Integer, Integer> batchConfigPair = BaseHttpEmittingConfig.getDefaultBatchSizeAndLimit( Runtime.getRuntime().maxMemory() ); Assert.assertEquals(batchConfigPair.lhs.intValue(), config.getMaxBatchSize()); Assert.assertEquals(batchConfigPair.rhs.intValue(), config.getBatchQueueSizeLimit()); Assert.assertEquals(Long.MAX_VALUE, config.getFlushTimeOut()); Assert.assertEquals(2.0f, config.getHttpTimeoutAllowanceFactor(), 0.0f); Assert.assertEquals(0, config.getMinHttpTimeoutMillis()); }