|
|
|
@ -21,10 +21,7 @@ import org.junit.rules.ExternalResource; |
|
|
|
import org.testcontainers.utility.Base58; |
|
|
|
|
|
|
|
import java.io.File; |
|
|
|
import java.util.Arrays; |
|
|
|
import java.util.HashMap; |
|
|
|
import java.util.List; |
|
|
|
import java.util.Map; |
|
|
|
import java.util.*; |
|
|
|
import java.util.stream.Collectors; |
|
|
|
import java.util.stream.IntStream; |
|
|
|
|
|
|
|
@ -32,7 +29,10 @@ import java.util.stream.IntStream; |
|
|
|
public class ThingsBoardDbInstaller extends ExternalResource { |
|
|
|
|
|
|
|
final static boolean IS_REDIS_CLUSTER = Boolean.parseBoolean(System.getProperty("blackBoxTests.redisCluster")); |
|
|
|
final static boolean IS_HYBRID_MODE = Boolean.parseBoolean(System.getProperty("blackBoxTests.hybridMode")); |
|
|
|
private final static String POSTGRES_DATA_VOLUME = "tb-postgres-test-data-volume"; |
|
|
|
|
|
|
|
private final static String CASSANDRA_DATA_VOLUME = "tb-cassandra-test-data-volume"; |
|
|
|
private final static String REDIS_DATA_VOLUME = "tb-redis-data-volume"; |
|
|
|
private final static String REDIS_CLUSTER_DATA_VOLUME = "tb-redis-cluster-data-volume"; |
|
|
|
private final static String TB_LOG_VOLUME = "tb-log-test-volume"; |
|
|
|
@ -46,6 +46,7 @@ public class ThingsBoardDbInstaller extends ExternalResource { |
|
|
|
private final DockerComposeExecutor dockerCompose; |
|
|
|
|
|
|
|
private final String postgresDataVolume; |
|
|
|
private final String cassandraDataVolume; |
|
|
|
|
|
|
|
private final String redisDataVolume; |
|
|
|
private final String redisClusterDataVolume; |
|
|
|
@ -60,10 +61,13 @@ public class ThingsBoardDbInstaller extends ExternalResource { |
|
|
|
|
|
|
|
public ThingsBoardDbInstaller() { |
|
|
|
log.info("System property of blackBoxTests.redisCluster is {}", IS_REDIS_CLUSTER); |
|
|
|
List<File> composeFiles = Arrays.asList( |
|
|
|
log.info("System property of blackBoxTests.hybridMode is {}", IS_HYBRID_MODE); |
|
|
|
List<File> composeFiles = new ArrayList<>(Arrays.asList( |
|
|
|
new File("./../../docker/docker-compose.yml"), |
|
|
|
new File("./../../docker/docker-compose.volumes.yml"), |
|
|
|
new File("./../../docker/docker-compose.postgres.yml"), |
|
|
|
IS_HYBRID_MODE |
|
|
|
? new File("./../../docker/docker-compose.hybrid.yml") |
|
|
|
: new File("./../../docker/docker-compose.postgres.yml"), |
|
|
|
new File("./../../docker/docker-compose.postgres.volumes.yml"), |
|
|
|
IS_REDIS_CLUSTER |
|
|
|
? new File("./../../docker/docker-compose.redis-cluster.yml") |
|
|
|
@ -71,12 +75,16 @@ public class ThingsBoardDbInstaller extends ExternalResource { |
|
|
|
IS_REDIS_CLUSTER |
|
|
|
? new File("./../../docker/docker-compose.redis-cluster.volumes.yml") |
|
|
|
: new File("./../../docker/docker-compose.redis.volumes.yml") |
|
|
|
); |
|
|
|
)); |
|
|
|
if (IS_HYBRID_MODE) { |
|
|
|
composeFiles.add(new File("./../../docker/docker-compose.cassandra.volumes.yml")); |
|
|
|
} |
|
|
|
|
|
|
|
String identifier = Base58.randomString(6).toLowerCase(); |
|
|
|
String project = identifier + Base58.randomString(6).toLowerCase(); |
|
|
|
|
|
|
|
postgresDataVolume = project + "_" + POSTGRES_DATA_VOLUME; |
|
|
|
cassandraDataVolume = project + "_" + CASSANDRA_DATA_VOLUME; |
|
|
|
redisDataVolume = project + "_" + REDIS_DATA_VOLUME; |
|
|
|
redisClusterDataVolume = project + "_" + REDIS_CLUSTER_DATA_VOLUME; |
|
|
|
tbLogVolume = project + "_" + TB_LOG_VOLUME; |
|
|
|
@ -91,6 +99,9 @@ public class ThingsBoardDbInstaller extends ExternalResource { |
|
|
|
|
|
|
|
env = new HashMap<>(); |
|
|
|
env.put("POSTGRES_DATA_VOLUME", postgresDataVolume); |
|
|
|
if (IS_HYBRID_MODE) { |
|
|
|
env.put("CASSANDRA_DATA_VOLUME", cassandraDataVolume); |
|
|
|
} |
|
|
|
env.put("TB_LOG_VOLUME", tbLogVolume); |
|
|
|
env.put("TB_COAP_TRANSPORT_LOG_VOLUME", tbCoapTransportLogVolume); |
|
|
|
env.put("TB_LWM2M_TRANSPORT_LOG_VOLUME", tbLwm2mTransportLogVolume); |
|
|
|
@ -119,6 +130,11 @@ public class ThingsBoardDbInstaller extends ExternalResource { |
|
|
|
dockerCompose.withCommand("volume create " + postgresDataVolume); |
|
|
|
dockerCompose.invokeDocker(); |
|
|
|
|
|
|
|
if (IS_HYBRID_MODE) { |
|
|
|
dockerCompose.withCommand("volume create " + cassandraDataVolume); |
|
|
|
dockerCompose.invokeDocker(); |
|
|
|
} |
|
|
|
|
|
|
|
dockerCompose.withCommand("volume create " + tbLogVolume); |
|
|
|
dockerCompose.invokeDocker(); |
|
|
|
|
|
|
|
@ -140,20 +156,23 @@ public class ThingsBoardDbInstaller extends ExternalResource { |
|
|
|
dockerCompose.withCommand("volume create " + tbVcExecutorLogVolume); |
|
|
|
dockerCompose.invokeDocker(); |
|
|
|
|
|
|
|
String redisService = ""; |
|
|
|
String additionalServices = ""; |
|
|
|
if (IS_HYBRID_MODE) { |
|
|
|
additionalServices += " cassandra"; |
|
|
|
} |
|
|
|
if (IS_REDIS_CLUSTER) { |
|
|
|
for (int i = 0; i < 6; i++) { |
|
|
|
redisService = redisService + " redis-node-" + i; |
|
|
|
additionalServices = additionalServices + " redis-node-" + i; |
|
|
|
dockerCompose.withCommand("volume create " + redisClusterDataVolume + '-' + i); |
|
|
|
dockerCompose.invokeDocker(); |
|
|
|
} |
|
|
|
} else { |
|
|
|
redisService = "redis"; |
|
|
|
additionalServices += " redis"; |
|
|
|
dockerCompose.withCommand("volume create " + redisDataVolume); |
|
|
|
dockerCompose.invokeDocker(); |
|
|
|
} |
|
|
|
|
|
|
|
dockerCompose.withCommand("up -d postgres " + redisService); |
|
|
|
dockerCompose.withCommand("up -d postgres" + additionalServices); |
|
|
|
dockerCompose.invokeCompose(); |
|
|
|
|
|
|
|
dockerCompose.withCommand("run --no-deps --rm -e INSTALL_TB=true -e LOAD_DEMO=true tb-core1"); |
|
|
|
|