Remove EasyMock dependency from CalciteTests. (#9310)

* Remove EasyMock dependency from CalciteTests.

Useful because CalciteTests is used by other modules (e.g. druid-benchmarks)
and we don't want them to have to pull in EasyMock.

* CalciteTests no longer needs curator-x-discovery either.
This commit is contained in:
Gian Merlino 2020-02-04 22:10:17 -08:00 committed by GitHub
parent 48b95f02f2
commit 475b90c3a6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 110 additions and 20 deletions

View File

@ -22,9 +22,9 @@ package org.apache.druid.discovery;
import com.google.common.base.Preconditions;
import com.google.common.base.Throwables;
import com.google.common.util.concurrent.ListenableFuture;
import org.apache.druid.client.selector.DiscoverySelector;
import org.apache.druid.client.selector.Server;
import org.apache.druid.concurrent.LifecycleLock;
import org.apache.druid.curator.discovery.ServerDiscoverySelector;
import org.apache.druid.java.util.common.IOE;
import org.apache.druid.java.util.common.ISE;
import org.apache.druid.java.util.common.RE;
@ -73,7 +73,7 @@ public class DruidLeaderClient
private final String leaderRequestPath;
//Note: This is kept for back compatibility with pre 0.11.0 releases and should be removed in future.
private final ServerDiscoverySelector serverDiscoverySelector;
private final DiscoverySelector<Server> serverDiscoverySelector;
private LifecycleLock lifecycleLock = new LifecycleLock();
private DruidNodeDiscovery druidNodeDiscovery;
@ -84,7 +84,7 @@ public class DruidLeaderClient
DruidNodeDiscoveryProvider druidNodeDiscoveryProvider,
NodeRole nodeRoleToWatch,
String leaderRequestPath,
ServerDiscoverySelector serverDiscoverySelector
DiscoverySelector<Server> serverDiscoverySelector
)
{
this.httpClient = httpClient;

View File

@ -166,10 +166,6 @@
<groupId>org.apache.calcite.avatica</groupId>
<artifactId>avatica-metrics</artifactId>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-x-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.checkerframework</groupId>
<artifactId>checker-qual</artifactId>

View File

@ -23,17 +23,17 @@ import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import com.google.common.util.concurrent.ListenableFuture;
import com.google.inject.Guice;
import com.google.inject.Injector;
import com.google.inject.Key;
import com.google.inject.Module;
import org.apache.calcite.jdbc.CalciteSchema;
import org.apache.calcite.schema.SchemaPlus;
import org.apache.curator.x.discovery.ServiceProvider;
import org.apache.druid.client.BrokerSegmentWatcherConfig;
import org.apache.druid.client.DruidServer;
import org.apache.druid.client.ServerInventoryView;
import org.apache.druid.collections.CloseableStupidPool;
import org.apache.druid.curator.discovery.ServerDiscoverySelector;
import org.apache.druid.data.input.InputRow;
import org.apache.druid.data.input.impl.DimensionSchema;
import org.apache.druid.data.input.impl.DimensionsSpec;
@ -45,6 +45,7 @@ import org.apache.druid.data.input.impl.MapInputRowParser;
import org.apache.druid.data.input.impl.TimeAndDimsParseSpec;
import org.apache.druid.data.input.impl.TimestampSpec;
import org.apache.druid.discovery.DruidLeaderClient;
import org.apache.druid.discovery.DruidNodeDiscovery;
import org.apache.druid.discovery.DruidNodeDiscoveryProvider;
import org.apache.druid.discovery.NodeRole;
import org.apache.druid.guice.ExpressionModule;
@ -54,6 +55,8 @@ import org.apache.druid.java.util.common.io.Closer;
import org.apache.druid.java.util.emitter.core.NoopEmitter;
import org.apache.druid.java.util.emitter.service.ServiceEmitter;
import org.apache.druid.java.util.http.client.HttpClient;
import org.apache.druid.java.util.http.client.Request;
import org.apache.druid.java.util.http.client.response.HttpResponseHandler;
import org.apache.druid.math.expr.ExprMacroTable;
import org.apache.druid.query.DefaultGenericQueryMetricsFactory;
import org.apache.druid.query.DefaultQueryRunnerFactoryConglomerate;
@ -99,6 +102,7 @@ import org.apache.druid.segment.QueryableIndex;
import org.apache.druid.segment.TestHelper;
import org.apache.druid.segment.incremental.IncrementalIndexSchema;
import org.apache.druid.segment.writeout.OffHeapMemorySegmentWriteOutMediumFactory;
import org.apache.druid.server.DruidNode;
import org.apache.druid.server.QueryLifecycleFactory;
import org.apache.druid.server.coordinator.BytesAccumulatingResponseHandler;
import org.apache.druid.server.log.NoopRequestLogger;
@ -129,20 +133,24 @@ import org.apache.druid.sql.calcite.view.NoopViewManager;
import org.apache.druid.sql.calcite.view.ViewManager;
import org.apache.druid.timeline.DataSegment;
import org.apache.druid.timeline.partition.LinearShardSpec;
import org.easymock.EasyMock;
import org.joda.time.DateTime;
import org.joda.time.Duration;
import org.joda.time.chrono.ISOChronology;
import javax.annotation.Nullable;
import java.io.File;
import java.lang.reflect.InvocationTargetException;
import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.Executor;
import java.util.function.BooleanSupplier;
/**
* Utility functions for Calcite tests.
@ -848,15 +856,16 @@ public class CalciteTests
)
{
final DruidLeaderClient druidLeaderClient = new DruidLeaderClient(
EasyMock.createMock(HttpClient.class),
EasyMock.createMock(DruidNodeDiscoveryProvider.class),
new FakeHttpClient(),
new FakeDruidNodeDiscoveryProvider(),
NodeRole.COORDINATOR,
"/simple/leader",
new ServerDiscoverySelector(EasyMock.createMock(ServiceProvider.class), "test")
)
{
};
final SystemSchema schema = new SystemSchema(
() -> {
throw new UnsupportedOperationException();
}
);
return new SystemSchema(
druidSchema,
new MetadataSegmentView(
druidLeaderClient,
@ -866,14 +875,13 @@ public class CalciteTests
plannerConfig
),
new TestServerInventoryView(walker.getSegments()),
EasyMock.createMock(ServerInventoryView.class),
new FakeServerInventoryView(),
authorizerMapper,
druidLeaderClient,
druidLeaderClient,
EasyMock.createMock(DruidNodeDiscoveryProvider.class),
new FakeDruidNodeDiscoveryProvider(),
getJsonMapper()
);
return schema;
}
public static SchemaPlus createMockRootSchema(
@ -970,4 +978,90 @@ public class CalciteTests
schema.stop();
return schema;
}
/**
* A fake {@link HttpClient} for {@link #createMockSystemSchema}.
*/
private static class FakeHttpClient implements HttpClient
{
@Override
public <Intermediate, Final> ListenableFuture<Final> go(
Request request,
HttpResponseHandler<Intermediate, Final> handler
)
{
throw new UnsupportedOperationException();
}
@Override
public <Intermediate, Final> ListenableFuture<Final> go(
Request request,
HttpResponseHandler<Intermediate, Final> handler,
Duration readTimeout
)
{
throw new UnsupportedOperationException();
}
}
/**
* A fake {@link DruidNodeDiscoveryProvider} for {@link #createMockSystemSchema}.
*/
private static class FakeDruidNodeDiscoveryProvider extends DruidNodeDiscoveryProvider
{
@Override
public BooleanSupplier getForNode(DruidNode node, NodeRole nodeRole)
{
throw new UnsupportedOperationException();
}
@Override
public DruidNodeDiscovery getForNodeRole(NodeRole nodeRole)
{
throw new UnsupportedOperationException();
}
}
/**
* A fake {@link ServerInventoryView} for {@link #createMockSystemSchema}.
*/
private static class FakeServerInventoryView implements ServerInventoryView
{
@Nullable
@Override
public DruidServer getInventoryValue(String serverKey)
{
throw new UnsupportedOperationException();
}
@Override
public Collection<DruidServer> getInventory()
{
throw new UnsupportedOperationException();
}
@Override
public boolean isStarted()
{
throw new UnsupportedOperationException();
}
@Override
public boolean isSegmentLoadedByServer(String serverKey, DataSegment segment)
{
throw new UnsupportedOperationException();
}
@Override
public void registerServerRemovedCallback(Executor exec, ServerRemovedCallback callback)
{
throw new UnsupportedOperationException();
}
@Override
public void registerSegmentCallback(Executor exec, SegmentCallback callback)
{
throw new UnsupportedOperationException();
}
}
}