add module test for QueryableModule to allow for better runtime.properties testing (#12202)

added a default GetRequestLoggerProviderTest and GetEmitterRequestLoggerProviderTest
This commit is contained in:
TSFenwick 2022-01-25 22:26:11 -08:00 committed by GitHub
parent 96b3498a40
commit a813816fb1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 98 additions and 0 deletions

View File

@ -0,0 +1,98 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.druid.guice;
import com.fasterxml.jackson.databind.InjectableValues;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.inject.Guice;
import com.google.inject.Injector;
import com.google.inject.Key;
import org.apache.curator.shaded.com.google.common.collect.ImmutableList;
import org.apache.druid.guice.annotations.Json;
import org.apache.druid.jackson.JacksonModule;
import org.apache.druid.java.util.emitter.service.ServiceEmitter;
import org.apache.druid.server.log.EmittingRequestLogger;
import org.apache.druid.server.log.EmittingRequestLoggerProvider;
import org.apache.druid.server.log.NoopRequestLogger;
import org.apache.druid.server.log.NoopRequestLoggerProvider;
import org.apache.druid.server.log.RequestLogger;
import org.apache.druid.server.log.RequestLoggerProvider;
import org.apache.druid.server.metrics.NoopServiceEmitter;
import org.junit.Assert;
import org.junit.Test;
import java.util.Properties;
public class QueryableModuleTest
{
@Test
public void testGetEmitterRequestLoggerProvider()
{
Properties properties = new Properties();
properties.setProperty("druid.request.logging.type", "emitter");
properties.setProperty("druid.request.logging.feed", "requestlog");
final Injector injector = makeInjector(properties);
RequestLoggerProvider emittingRequestLoggerProvider = injector.getInstance(RequestLoggerProvider.class);
Assert.assertTrue(emittingRequestLoggerProvider instanceof EmittingRequestLoggerProvider);
RequestLogger requestLogger = emittingRequestLoggerProvider.get();
Assert.assertTrue(requestLogger instanceof EmittingRequestLogger);
}
@Test
public void testGetDefaultRequestLoggerProvider()
{
Properties properties = new Properties();
final Injector injector = makeInjector(properties);
RequestLoggerProvider emittingRequestLoggerProvider = injector.getInstance(RequestLoggerProvider.class);
Assert.assertTrue(emittingRequestLoggerProvider instanceof NoopRequestLoggerProvider);
RequestLogger requestLogger = emittingRequestLoggerProvider.get();
Assert.assertTrue(requestLogger instanceof NoopRequestLogger);
}
private Injector makeInjector(Properties properties)
{
Injector injector = Guice.createInjector(
ImmutableList.of(
new DruidGuiceExtensions(),
new JacksonModule(),
new ConfigModule(),
new QueryRunnerFactoryModule(),
new DruidProcessingConfigModule(),
new BrokerProcessingModule(),
new LifecycleModule(),
binder -> {
binder.bind(Properties.class).toInstance(properties);
},
new QueryableModule()
)
);
ObjectMapper mapper = injector.getInstance(Key.get(ObjectMapper.class, Json.class));
mapper.registerModules(new QueryableModule().getJacksonModules());
mapper.setInjectableValues(new InjectableValues.Std()
.addValue(ServiceEmitter.class, new NoopServiceEmitter())
);
return injector;
}
}