DBZ-7223 Use separate test support classes
This commit is contained in:
parent
1f245b9c87
commit
c78a8d40ad
@ -5,8 +5,6 @@
|
|||||||
*/
|
*/
|
||||||
package io.debezium.connector.mongodb.junit;
|
package io.debezium.connector.mongodb.junit;
|
||||||
|
|
||||||
import org.testcontainers.containers.Network;
|
|
||||||
|
|
||||||
import io.debezium.testing.testcontainers.MongoDbDeployment;
|
import io.debezium.testing.testcontainers.MongoDbDeployment;
|
||||||
import io.debezium.testing.testcontainers.MongoDbReplicaSet;
|
import io.debezium.testing.testcontainers.MongoDbReplicaSet;
|
||||||
import io.debezium.testing.testcontainers.MongoDbShardedCluster;
|
import io.debezium.testing.testcontainers.MongoDbShardedCluster;
|
||||||
@ -22,8 +20,6 @@ public final class MongoDbDatabaseProvider {
|
|||||||
// Should be aligned with definition in pom.xml
|
// Should be aligned with definition in pom.xml
|
||||||
public static final String MONGO_DOCKER_DESKTOP_PORT_DEFAULT = "27017:27117";
|
public static final String MONGO_DOCKER_DESKTOP_PORT_DEFAULT = "27017:27117";
|
||||||
|
|
||||||
private static Network NETWORK = null;
|
|
||||||
|
|
||||||
private static MongoDbReplicaSet.Builder dockerReplicaSetBuilder() {
|
private static MongoDbReplicaSet.Builder dockerReplicaSetBuilder() {
|
||||||
// will be used only in environment with docker desktop
|
// will be used only in environment with docker desktop
|
||||||
var portResolver = ParsingPortResolver.parseProperty(MONGO_DOCKER_DESKTOP_PORT_PROPERTY, MONGO_DOCKER_DESKTOP_PORT_DEFAULT);
|
var portResolver = ParsingPortResolver.parseProperty(MONGO_DOCKER_DESKTOP_PORT_PROPERTY, MONGO_DOCKER_DESKTOP_PORT_DEFAULT);
|
||||||
@ -40,13 +36,7 @@ private static MongoDbReplicaSet.Builder dockerReplicaSetBuilder() {
|
|||||||
* @return MongoDb Replica set
|
* @return MongoDb Replica set
|
||||||
*/
|
*/
|
||||||
public static MongoDbReplicaSet dockerReplicaSet() {
|
public static MongoDbReplicaSet dockerReplicaSet() {
|
||||||
var replicaSetBuilder = dockerReplicaSetBuilder();
|
return dockerReplicaSetBuilder().build();
|
||||||
if (NETWORK != null) {
|
|
||||||
replicaSetBuilder.network(NETWORK);
|
|
||||||
}
|
|
||||||
var replicaSet = replicaSetBuilder.build();
|
|
||||||
NETWORK = null;
|
|
||||||
return replicaSet;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -55,13 +45,7 @@ public static MongoDbReplicaSet dockerReplicaSet() {
|
|||||||
* @return MongoDb Replica set
|
* @return MongoDb Replica set
|
||||||
*/
|
*/
|
||||||
public static MongoDbReplicaSet dockerAuthReplicaSet() {
|
public static MongoDbReplicaSet dockerAuthReplicaSet() {
|
||||||
var replicaSetBuilder = dockerReplicaSetBuilder().authEnabled(true);
|
return dockerReplicaSetBuilder().authEnabled(true).build();
|
||||||
if (NETWORK != null) {
|
|
||||||
replicaSetBuilder.network(NETWORK);
|
|
||||||
}
|
|
||||||
var replicaSet = replicaSetBuilder.build();
|
|
||||||
NETWORK = null;
|
|
||||||
return replicaSet;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -69,7 +53,7 @@ public static MongoDbReplicaSet dockerAuthReplicaSet() {
|
|||||||
*
|
*
|
||||||
* @return MongoDb Replica set
|
* @return MongoDb Replica set
|
||||||
*/
|
*/
|
||||||
private static MongoDbShardedCluster.Builder mongoDbShardedClusterBuilder() {
|
public static MongoDbShardedCluster mongoDbShardedCluster() {
|
||||||
// will be used only in environment with docker desktop
|
// will be used only in environment with docker desktop
|
||||||
var portResolver = ParsingPortResolver.parseProperty(MONGO_DOCKER_DESKTOP_PORT_PROPERTY, MONGO_DOCKER_DESKTOP_PORT_DEFAULT);
|
var portResolver = ParsingPortResolver.parseProperty(MONGO_DOCKER_DESKTOP_PORT_PROPERTY, MONGO_DOCKER_DESKTOP_PORT_DEFAULT);
|
||||||
var shardSize = Integer.parseInt(System.getProperty(MONGO_SHARD_SIZE, "2"));
|
var shardSize = Integer.parseInt(System.getProperty(MONGO_SHARD_SIZE, "2"));
|
||||||
@ -79,22 +63,7 @@ private static MongoDbShardedCluster.Builder mongoDbShardedClusterBuilder() {
|
|||||||
.shardCount(shardSize)
|
.shardCount(shardSize)
|
||||||
.replicaCount(replicaSize)
|
.replicaCount(replicaSize)
|
||||||
.routerCount(1)
|
.routerCount(1)
|
||||||
.portResolver(portResolver);
|
.portResolver(portResolver)
|
||||||
}
|
|
||||||
|
|
||||||
public static MongoDbShardedCluster mongoDbShardedCluster() {
|
|
||||||
var clusterBuilder = mongoDbShardedClusterBuilder();
|
|
||||||
if (NETWORK != null) {
|
|
||||||
clusterBuilder.network(NETWORK);
|
|
||||||
}
|
|
||||||
var shardedCluster = clusterBuilder.build();
|
|
||||||
NETWORK = null;
|
|
||||||
return shardedCluster;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static MongoDbShardedCluster mongoDbShardedCluster(Network network) {
|
|
||||||
return mongoDbShardedClusterBuilder()
|
|
||||||
.network(network)
|
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -109,17 +78,6 @@ public static MongoDbDeployment externalOrDockerReplicaSet() {
|
|||||||
return platform.provider.get();
|
return platform.provider.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates MongoDB replica-set abstraction either for external database or a local MongoDB replica-set container with the provided container Network.
|
|
||||||
*
|
|
||||||
* @return MongoDb replica-set deployment
|
|
||||||
*/
|
|
||||||
public static MongoDbDeployment externalOrDockerReplicaSet(Network network) {
|
|
||||||
NETWORK = network;
|
|
||||||
var platform = MongoDbDatabaseVersionResolver.getPlatform();
|
|
||||||
return platform.provider.get();
|
|
||||||
}
|
|
||||||
|
|
||||||
private MongoDbDatabaseProvider() {
|
private MongoDbDatabaseProvider() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,17 +6,15 @@
|
|||||||
package io.debezium.connector.mongodb.sink;
|
package io.debezium.connector.mongodb.sink;
|
||||||
|
|
||||||
import static io.debezium.connector.mongodb.TestHelper.cleanDatabase;
|
import static io.debezium.connector.mongodb.TestHelper.cleanDatabase;
|
||||||
import static org.hamcrest.CoreMatchers.is;
|
|
||||||
|
|
||||||
import org.junit.After;
|
import org.junit.After;
|
||||||
import org.junit.AfterClass;
|
import org.junit.AfterClass;
|
||||||
import org.junit.Assume;
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.BeforeClass;
|
import org.junit.BeforeClass;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
import io.debezium.connector.mongodb.AbstractMongoConnectorIT;
|
import io.debezium.connector.mongodb.AbstractMongoConnectorIT;
|
||||||
import io.debezium.connector.mongodb.junit.MongoDbDatabaseProvider;
|
import io.debezium.connector.mongodb.sink.junit.NetworkIsolatedMongoDbDatabaseProvider;
|
||||||
import io.debezium.testing.testcontainers.MongoDbDeployment;
|
import io.debezium.testing.testcontainers.MongoDbDeployment;
|
||||||
import io.debezium.testing.testcontainers.testhelper.TestInfrastructureHelper;
|
import io.debezium.testing.testcontainers.testhelper.TestInfrastructureHelper;
|
||||||
import io.debezium.testing.testcontainers.util.DockerUtils;
|
import io.debezium.testing.testcontainers.util.DockerUtils;
|
||||||
@ -32,11 +30,8 @@ public MongoDbDeployment getMongoDbDeployment() {
|
|||||||
|
|
||||||
@BeforeClass
|
@BeforeClass
|
||||||
public static void beforeAll() {
|
public static void beforeAll() {
|
||||||
Assume.assumeThat("Skipping DebeziumMongoDbConnectorResourceIT tests when assembly profile is not active!",
|
|
||||||
System.getProperty("isAssemblyProfileActive", "false"),
|
|
||||||
is("true"));
|
|
||||||
DockerUtils.enableFakeDnsIfRequired();
|
DockerUtils.enableFakeDnsIfRequired();
|
||||||
mongo = MongoDbDatabaseProvider.externalOrDockerReplicaSet(TestInfrastructureHelper.getNetwork());
|
mongo = new NetworkIsolatedMongoDbDatabaseProvider(TestInfrastructureHelper.getNetwork()).dockerReplicaSet();
|
||||||
mongo.start();
|
mongo.start();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6,19 +6,15 @@
|
|||||||
package io.debezium.connector.mongodb.sink;
|
package io.debezium.connector.mongodb.sink;
|
||||||
|
|
||||||
import static io.debezium.connector.mongodb.TestHelper.cleanDatabase;
|
import static io.debezium.connector.mongodb.TestHelper.cleanDatabase;
|
||||||
import static org.hamcrest.CoreMatchers.is;
|
|
||||||
|
|
||||||
import org.junit.After;
|
import org.junit.After;
|
||||||
import org.junit.AfterClass;
|
import org.junit.AfterClass;
|
||||||
import org.junit.Assume;
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.BeforeClass;
|
import org.junit.BeforeClass;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
import io.debezium.connector.mongodb.AbstractShardedMongoConnectorIT;
|
import io.debezium.connector.mongodb.AbstractShardedMongoConnectorIT;
|
||||||
import io.debezium.connector.mongodb.junit.MongoDbDatabaseProvider;
|
import io.debezium.connector.mongodb.sink.junit.NetworkIsolatedMongoDbDatabaseProvider;
|
||||||
import io.debezium.connector.mongodb.junit.MongoDbDatabaseVersionResolver;
|
|
||||||
import io.debezium.connector.mongodb.junit.MongoDbPlatform;
|
|
||||||
import io.debezium.testing.testcontainers.MongoDbDeployment;
|
import io.debezium.testing.testcontainers.MongoDbDeployment;
|
||||||
import io.debezium.testing.testcontainers.MongoDbShardedCluster;
|
import io.debezium.testing.testcontainers.MongoDbShardedCluster;
|
||||||
import io.debezium.testing.testcontainers.testhelper.TestInfrastructureHelper;
|
import io.debezium.testing.testcontainers.testhelper.TestInfrastructureHelper;
|
||||||
@ -35,12 +31,8 @@ public MongoDbDeployment getMongoDbDeployment() {
|
|||||||
|
|
||||||
@BeforeClass
|
@BeforeClass
|
||||||
public static void beforeAll() {
|
public static void beforeAll() {
|
||||||
Assume.assumeThat("Skipping DebeziumMongoDbConnectorResourceIT tests when assembly profile is not active!",
|
|
||||||
System.getProperty("isAssemblyProfileActive", "false"),
|
|
||||||
is("true"));
|
|
||||||
Assume.assumeTrue(MongoDbDatabaseVersionResolver.getPlatform().equals(MongoDbPlatform.MONGODB_DOCKER));
|
|
||||||
DockerUtils.enableFakeDnsIfRequired();
|
DockerUtils.enableFakeDnsIfRequired();
|
||||||
mongo = MongoDbDatabaseProvider.mongoDbShardedCluster(TestInfrastructureHelper.getNetwork());
|
mongo = new NetworkIsolatedMongoDbDatabaseProvider(TestInfrastructureHelper.getNetwork()).mongoDbShardedCluster();
|
||||||
mongo.start();
|
mongo.start();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -0,0 +1,93 @@
|
|||||||
|
/*
|
||||||
|
* Copyright Debezium Authors.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache Software License version 2.0, available at http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*/
|
||||||
|
package io.debezium.connector.mongodb.sink.junit;
|
||||||
|
|
||||||
|
import org.testcontainers.containers.Network;
|
||||||
|
|
||||||
|
import io.debezium.testing.testcontainers.MongoDbReplicaSet;
|
||||||
|
import io.debezium.testing.testcontainers.MongoDbShardedCluster;
|
||||||
|
import io.debezium.testing.testcontainers.util.ParsingPortResolver;
|
||||||
|
|
||||||
|
public final class NetworkIsolatedMongoDbDatabaseProvider {
|
||||||
|
|
||||||
|
public static final String MONGO_REPLICA_SIZE = "mongodb.replica.size";
|
||||||
|
public static final String MONGO_SHARD_SIZE = "mongodb.shard.size";
|
||||||
|
public static final String MONGO_SHARD_REPLICA_SIZE = "mongodb.shard.replica.size";
|
||||||
|
public static final String MONGO_DOCKER_DESKTOP_PORT_PROPERTY = "mongodb.docker.desktop.ports";
|
||||||
|
|
||||||
|
// Should be aligned with definition in pom.xml
|
||||||
|
public static final String MONGO_DOCKER_DESKTOP_PORT_DEFAULT = "27017:27117";
|
||||||
|
|
||||||
|
private final Network network;
|
||||||
|
|
||||||
|
public NetworkIsolatedMongoDbDatabaseProvider(Network network) {
|
||||||
|
this.network = network;
|
||||||
|
}
|
||||||
|
|
||||||
|
public NetworkIsolatedMongoDbDatabaseProvider() {
|
||||||
|
this(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
private MongoDbReplicaSet.Builder dockerReplicaSetBuilder() {
|
||||||
|
// will be used only in environment with docker desktop
|
||||||
|
var portResolver = ParsingPortResolver.parseProperty(MONGO_DOCKER_DESKTOP_PORT_PROPERTY, MONGO_DOCKER_DESKTOP_PORT_DEFAULT);
|
||||||
|
var replicaSize = Integer.parseInt(System.getProperty(MONGO_REPLICA_SIZE, "1"));
|
||||||
|
|
||||||
|
var builder = MongoDbReplicaSet.replicaSet()
|
||||||
|
.memberCount(replicaSize)
|
||||||
|
.portResolver(portResolver);
|
||||||
|
if (network != null) {
|
||||||
|
builder.network(network);
|
||||||
|
}
|
||||||
|
return builder;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructs the default testing MongoDB replica set
|
||||||
|
*
|
||||||
|
* @return MongoDb Replica set
|
||||||
|
*/
|
||||||
|
public MongoDbReplicaSet dockerReplicaSet() {
|
||||||
|
return dockerReplicaSetBuilder().build();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructs testing MongoDB replica set with enabled authentication
|
||||||
|
*
|
||||||
|
* @return MongoDb Replica set
|
||||||
|
*/
|
||||||
|
public MongoDbReplicaSet dockerAuthReplicaSet() {
|
||||||
|
return dockerReplicaSetBuilder().authEnabled(true).build();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructs the default testing MongoDB sharded cluster
|
||||||
|
*
|
||||||
|
* @return MongoDb Replica set
|
||||||
|
*/
|
||||||
|
private MongoDbShardedCluster.Builder mongoDbShardedClusterBuilder() {
|
||||||
|
// will be used only in environment with docker desktop
|
||||||
|
var portResolver = ParsingPortResolver.parseProperty(MONGO_DOCKER_DESKTOP_PORT_PROPERTY, MONGO_DOCKER_DESKTOP_PORT_DEFAULT);
|
||||||
|
var shardSize = Integer.parseInt(System.getProperty(MONGO_SHARD_SIZE, "2"));
|
||||||
|
var replicaSize = Integer.parseInt(System.getProperty(MONGO_SHARD_REPLICA_SIZE, "1"));
|
||||||
|
|
||||||
|
var builder = MongoDbShardedCluster.shardedCluster()
|
||||||
|
.shardCount(shardSize)
|
||||||
|
.replicaCount(replicaSize)
|
||||||
|
.routerCount(1)
|
||||||
|
.portResolver(portResolver);
|
||||||
|
|
||||||
|
if (network != null) {
|
||||||
|
builder.network(network);
|
||||||
|
}
|
||||||
|
|
||||||
|
return builder;
|
||||||
|
}
|
||||||
|
|
||||||
|
public MongoDbShardedCluster mongoDbShardedCluster() {
|
||||||
|
return mongoDbShardedClusterBuilder().build();
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user