|
|
@ -15,6 +15,7 @@ |
|
|
*/ |
|
|
*/ |
|
|
package org.thingsboard.server.msa; |
|
|
package org.thingsboard.server.msa; |
|
|
|
|
|
|
|
|
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
import org.apache.commons.lang3.RandomStringUtils; |
|
|
import org.apache.commons.lang3.RandomStringUtils; |
|
|
import org.junit.rules.ExternalResource; |
|
|
import org.junit.rules.ExternalResource; |
|
|
import org.testcontainers.utility.Base58; |
|
|
import org.testcontainers.utility.Base58; |
|
|
@ -24,10 +25,16 @@ import java.util.Arrays; |
|
|
import java.util.HashMap; |
|
|
import java.util.HashMap; |
|
|
import java.util.List; |
|
|
import java.util.List; |
|
|
import java.util.Map; |
|
|
import java.util.Map; |
|
|
|
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
import java.util.stream.IntStream; |
|
|
|
|
|
|
|
|
|
|
|
@Slf4j |
|
|
public class ThingsBoardDbInstaller extends ExternalResource { |
|
|
public class ThingsBoardDbInstaller extends ExternalResource { |
|
|
|
|
|
|
|
|
|
|
|
final static boolean IS_REDIS_CLUSTER = Boolean.parseBoolean(System.getProperty("blackBoxTests.redisCluster")); |
|
|
private final static String POSTGRES_DATA_VOLUME = "tb-postgres-test-data-volume"; |
|
|
private final static String POSTGRES_DATA_VOLUME = "tb-postgres-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"; |
|
|
private final static String TB_LOG_VOLUME = "tb-log-test-volume"; |
|
|
private final static String TB_COAP_TRANSPORT_LOG_VOLUME = "tb-coap-transport-log-test-volume"; |
|
|
private final static String TB_COAP_TRANSPORT_LOG_VOLUME = "tb-coap-transport-log-test-volume"; |
|
|
private final static String TB_LWM2M_TRANSPORT_LOG_VOLUME = "tb-lwm2m-transport-log-test-volume"; |
|
|
private final static String TB_LWM2M_TRANSPORT_LOG_VOLUME = "tb-lwm2m-transport-log-test-volume"; |
|
|
@ -39,6 +46,9 @@ public class ThingsBoardDbInstaller extends ExternalResource { |
|
|
private final DockerComposeExecutor dockerCompose; |
|
|
private final DockerComposeExecutor dockerCompose; |
|
|
|
|
|
|
|
|
private final String postgresDataVolume; |
|
|
private final String postgresDataVolume; |
|
|
|
|
|
|
|
|
|
|
|
private final String redisDataVolume; |
|
|
|
|
|
private final String redisClusterDataVolume; |
|
|
private final String tbLogVolume; |
|
|
private final String tbLogVolume; |
|
|
private final String tbCoapTransportLogVolume; |
|
|
private final String tbCoapTransportLogVolume; |
|
|
private final String tbLwm2mTransportLogVolume; |
|
|
private final String tbLwm2mTransportLogVolume; |
|
|
@ -49,14 +59,21 @@ public class ThingsBoardDbInstaller extends ExternalResource { |
|
|
private final Map<String, String> env; |
|
|
private final Map<String, String> env; |
|
|
|
|
|
|
|
|
public ThingsBoardDbInstaller() { |
|
|
public ThingsBoardDbInstaller() { |
|
|
|
|
|
log.info("System property of blackBoxTests.redisCluster is {}", IS_REDIS_CLUSTER); |
|
|
List<File> composeFiles = Arrays.asList(new File("./../../docker/docker-compose.yml"), |
|
|
List<File> composeFiles = Arrays.asList(new File("./../../docker/docker-compose.yml"), |
|
|
new File("./../../docker/docker-compose.postgres.yml"), |
|
|
new File("./../../docker/docker-compose.postgres.yml"), |
|
|
new File("./../../docker/docker-compose.postgres.volumes.yml")); |
|
|
new File("./../../docker/docker-compose.postgres.volumes.yml"), |
|
|
|
|
|
IS_REDIS_CLUSTER |
|
|
|
|
|
? new File("./../../docker/docker-compose.redis-cluster.yml") |
|
|
|
|
|
: new File("./../../docker/docker-compose.redis.yml") |
|
|
|
|
|
); |
|
|
|
|
|
|
|
|
String identifier = Base58.randomString(6).toLowerCase(); |
|
|
String identifier = Base58.randomString(6).toLowerCase(); |
|
|
String project = identifier + Base58.randomString(6).toLowerCase(); |
|
|
String project = identifier + Base58.randomString(6).toLowerCase(); |
|
|
|
|
|
|
|
|
postgresDataVolume = project + "_" + POSTGRES_DATA_VOLUME; |
|
|
postgresDataVolume = project + "_" + POSTGRES_DATA_VOLUME; |
|
|
|
|
|
redisDataVolume = project + "_" + REDIS_DATA_VOLUME; |
|
|
|
|
|
redisClusterDataVolume = project + "_" + REDIS_CLUSTER_DATA_VOLUME; |
|
|
tbLogVolume = project + "_" + TB_LOG_VOLUME; |
|
|
tbLogVolume = project + "_" + TB_LOG_VOLUME; |
|
|
tbCoapTransportLogVolume = project + "_" + TB_COAP_TRANSPORT_LOG_VOLUME; |
|
|
tbCoapTransportLogVolume = project + "_" + TB_COAP_TRANSPORT_LOG_VOLUME; |
|
|
tbLwm2mTransportLogVolume = project + "_" + TB_LWM2M_TRANSPORT_LOG_VOLUME; |
|
|
tbLwm2mTransportLogVolume = project + "_" + TB_LWM2M_TRANSPORT_LOG_VOLUME; |
|
|
@ -76,6 +93,13 @@ public class ThingsBoardDbInstaller extends ExternalResource { |
|
|
env.put("TB_MQTT_TRANSPORT_LOG_VOLUME", tbMqttTransportLogVolume); |
|
|
env.put("TB_MQTT_TRANSPORT_LOG_VOLUME", tbMqttTransportLogVolume); |
|
|
env.put("TB_SNMP_TRANSPORT_LOG_VOLUME", tbSnmpTransportLogVolume); |
|
|
env.put("TB_SNMP_TRANSPORT_LOG_VOLUME", tbSnmpTransportLogVolume); |
|
|
env.put("TB_VC_EXECUTOR_LOG_VOLUME", tbVcExecutorLogVolume); |
|
|
env.put("TB_VC_EXECUTOR_LOG_VOLUME", tbVcExecutorLogVolume); |
|
|
|
|
|
if (IS_REDIS_CLUSTER) { |
|
|
|
|
|
for (int i = 0; i < 6; i++) { |
|
|
|
|
|
env.put("REDIS_CLUSTER_DATA_VOLUME_" + i, redisClusterDataVolume + '-' + i); |
|
|
|
|
|
} |
|
|
|
|
|
} else { |
|
|
|
|
|
env.put("REDIS_DATA_VOLUME", redisDataVolume); |
|
|
|
|
|
} |
|
|
dockerCompose.withEnv(env); |
|
|
dockerCompose.withEnv(env); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@ -111,7 +135,20 @@ public class ThingsBoardDbInstaller extends ExternalResource { |
|
|
dockerCompose.withCommand("volume create " + tbVcExecutorLogVolume); |
|
|
dockerCompose.withCommand("volume create " + tbVcExecutorLogVolume); |
|
|
dockerCompose.invokeDocker(); |
|
|
dockerCompose.invokeDocker(); |
|
|
|
|
|
|
|
|
dockerCompose.withCommand("up -d redis postgres"); |
|
|
String redisService = ""; |
|
|
|
|
|
if (IS_REDIS_CLUSTER) { |
|
|
|
|
|
for (int i = 0; i < 6; i++) { |
|
|
|
|
|
redisService = redisService + " redis-node-" + i; |
|
|
|
|
|
dockerCompose.withCommand("volume create " + redisClusterDataVolume + '-' + i); |
|
|
|
|
|
dockerCompose.invokeDocker(); |
|
|
|
|
|
} |
|
|
|
|
|
} else { |
|
|
|
|
|
redisService = "redis"; |
|
|
|
|
|
dockerCompose.withCommand("volume create " + redisDataVolume); |
|
|
|
|
|
dockerCompose.invokeDocker(); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
dockerCompose.withCommand("up -d postgres " + redisService); |
|
|
dockerCompose.invokeCompose(); |
|
|
dockerCompose.invokeCompose(); |
|
|
|
|
|
|
|
|
dockerCompose.withCommand("run --no-deps --rm -e INSTALL_TB=true -e LOAD_DEMO=true tb-core1"); |
|
|
dockerCompose.withCommand("run --no-deps --rm -e INSTALL_TB=true -e LOAD_DEMO=true tb-core1"); |
|
|
@ -137,7 +174,10 @@ public class ThingsBoardDbInstaller extends ExternalResource { |
|
|
|
|
|
|
|
|
dockerCompose.withCommand("volume rm -f " + postgresDataVolume + " " + tbLogVolume + |
|
|
dockerCompose.withCommand("volume rm -f " + postgresDataVolume + " " + tbLogVolume + |
|
|
" " + tbCoapTransportLogVolume + " " + tbLwm2mTransportLogVolume + " " + tbHttpTransportLogVolume + |
|
|
" " + tbCoapTransportLogVolume + " " + tbLwm2mTransportLogVolume + " " + tbHttpTransportLogVolume + |
|
|
" " + tbMqttTransportLogVolume + " " + tbSnmpTransportLogVolume + " " + tbVcExecutorLogVolume); |
|
|
" " + tbMqttTransportLogVolume + " " + tbSnmpTransportLogVolume + " " + tbVcExecutorLogVolume + |
|
|
|
|
|
(IS_REDIS_CLUSTER |
|
|
|
|
|
? IntStream.range(0, 6).mapToObj(i -> " " + redisClusterDataVolume + '-' + i).collect(Collectors.joining()) |
|
|
|
|
|
: redisDataVolume)); |
|
|
dockerCompose.invokeDocker(); |
|
|
dockerCompose.invokeDocker(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|