@ -32,12 +32,14 @@ import java.util.stream.IntStream;
public class ThingsBoardDbInstaller {
public class ThingsBoardDbInstaller {
final static boolean IS_REDIS_CLUSTER = Boolean . parseBoolean ( System . getProperty ( "blackBoxTests.redisCluster" ) ) ;
final static boolean IS_REDIS_CLUSTER = Boolean . parseBoolean ( System . getProperty ( "blackBoxTests.redisCluster" ) ) ;
final static boolean IS_REDIS_SENTINEL = Boolean . parseBoolean ( System . getProperty ( "blackBoxTests.redisSentinel" ) ) ;
final static boolean IS_HYBRID_MODE = Boolean . parseBoolean ( System . getProperty ( "blackBoxTests.hybridMode" ) ) ;
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 POSTGRES_DATA_VOLUME = "tb-postgres-test-data-volume" ;
private final static String CASSANDRA_DATA_VOLUME = "tb-cassandra-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_DATA_VOLUME = "tb-redis-data-volume" ;
private final static String REDIS_CLUSTER_DATA_VOLUME = "tb-redis-cluster-data-volume" ;
private final static String REDIS_CLUSTER_DATA_VOLUME = "tb-redis-cluster-data-volume" ;
private final static String REDIS_SENTINEL_DATA_VOLUME = "tb-redis-sentinel-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" ;
@ -54,6 +56,7 @@ public class ThingsBoardDbInstaller {
private final String redisDataVolume ;
private final String redisDataVolume ;
private final String redisClusterDataVolume ;
private final String redisClusterDataVolume ;
private final String redisSentinelDataVolume ;
private final String tbLogVolume ;
private final String tbLogVolume ;
private final String tbCoapTransportLogVolume ;
private final String tbCoapTransportLogVolume ;
private final String tbLwm2mTransportLogVolume ;
private final String tbLwm2mTransportLogVolume ;
@ -73,12 +76,8 @@ public class ThingsBoardDbInstaller {
? new File ( "./../../docker/docker-compose.hybrid.yml" )
? new File ( "./../../docker/docker-compose.hybrid.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
resolveComposeFile ( ) ,
? new File ( "./../../docker/docker-compose.redis-cluster.yml" )
resolveComposeVolumesFile ( )
: new File ( "./../../docker/docker-compose.redis.yml" ) ,
IS_REDIS_CLUSTER
? new File ( "./../../docker/docker-compose.redis-cluster.volumes.yml" )
: new File ( "./../../docker/docker-compose.redis.volumes.yml" )
) ) ;
) ) ;
if ( IS_HYBRID_MODE ) {
if ( IS_HYBRID_MODE ) {
composeFiles . add ( new File ( "./../../docker/docker-compose.cassandra.volumes.yml" ) ) ;
composeFiles . add ( new File ( "./../../docker/docker-compose.cassandra.volumes.yml" ) ) ;
@ -94,6 +93,7 @@ public class ThingsBoardDbInstaller {
cassandraDataVolume = project + "_" + CASSANDRA_DATA_VOLUME ;
cassandraDataVolume = project + "_" + CASSANDRA_DATA_VOLUME ;
redisDataVolume = project + "_" + REDIS_DATA_VOLUME ;
redisDataVolume = project + "_" + REDIS_DATA_VOLUME ;
redisClusterDataVolume = project + "_" + REDIS_CLUSTER_DATA_VOLUME ;
redisClusterDataVolume = project + "_" + REDIS_CLUSTER_DATA_VOLUME ;
redisSentinelDataVolume = project + "_" + REDIS_SENTINEL_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 ;
@ -121,12 +121,36 @@ public class ThingsBoardDbInstaller {
for ( int i = 0 ; i < 6 ; i + + ) {
for ( int i = 0 ; i < 6 ; i + + ) {
env . put ( "REDIS_CLUSTER_DATA_VOLUME_" + i , redisClusterDataVolume + '-' + i ) ;
env . put ( "REDIS_CLUSTER_DATA_VOLUME_" + i , redisClusterDataVolume + '-' + i ) ;
}
}
} else if ( IS_REDIS_SENTINEL ) {
env . put ( "REDIS_SENTINEL_DATA_VOLUME_MASTER" , redisSentinelDataVolume + "-" + "master" ) ;
env . put ( "REDIS_SENTINEL_DATA_VOLUME_SLAVE" , redisSentinelDataVolume + "-" + "slave" ) ;
env . put ( "REDIS_SENTINEL_DATA_VOLUME_SENTINEL" , redisSentinelDataVolume + "-" + "sentinel" ) ;
} else {
} else {
env . put ( "REDIS_DATA_VOLUME" , redisDataVolume ) ;
env . put ( "REDIS_DATA_VOLUME" , redisDataVolume ) ;
}
}
dockerCompose . withEnv ( env ) ;
dockerCompose . withEnv ( env ) ;
}
}
private static File resolveComposeVolumesFile ( ) {
if ( IS_REDIS_CLUSTER ) {
return new File ( "./../../docker/docker-compose.redis-cluster.volumes.yml" ) ;
}
if ( IS_REDIS_SENTINEL ) {
return new File ( "./../../docker/docker-compose.redis-sentinel.volumes.yml" ) ;
}
return new File ( "./../../docker/docker-compose.redis.volumes.yml" ) ;
}
private static File resolveComposeFile ( ) {
if ( IS_REDIS_CLUSTER ) {
return new File ( "./../../docker/docker-compose.redis-cluster.yml" ) ;
}
if ( IS_REDIS_SENTINEL ) {
return new File ( "./../../docker/docker-compose.redis-sentinel.yml" ) ;
}
return new File ( "./../../docker/docker-compose.redis.yml" ) ;
}
public Map < String , String > getEnv ( ) {
public Map < String , String > getEnv ( ) {
return env ;
return env ;
}
}
@ -163,18 +187,30 @@ public class ThingsBoardDbInstaller {
dockerCompose . withCommand ( "volume create " + tbVcExecutorLogVolume ) ;
dockerCompose . withCommand ( "volume create " + tbVcExecutorLogVolume ) ;
dockerCompose . invokeDocker ( ) ;
dockerCompose . invokeDocker ( ) ;
String additionalServices = "" ;
StringBuilder additionalServices = new StringBuilder ( ) ;
if ( IS_HYBRID_MODE ) {
if ( IS_HYBRID_MODE ) {
additionalServices + = " cassandra" ;
additionalServices . append ( " cassandra" ) ;
}
}
if ( IS_REDIS_CLUSTER ) {
if ( IS_REDIS_CLUSTER ) {
for ( int i = 0 ; i < 6 ; i + + ) {
for ( int i = 0 ; i < 6 ; i + + ) {
additionalServices = additionalServices + " redis-node-" + i ;
additionalServices . append ( " redis-node-" ) . append ( i ) ;
dockerCompose . withCommand ( "volume create " + redisClusterDataVolume + '-' + i ) ;
dockerCompose . withCommand ( "volume create " + redisClusterDataVolume + '-' + i ) ;
dockerCompose . invokeDocker ( ) ;
dockerCompose . invokeDocker ( ) ;
}
}
} else if ( IS_REDIS_SENTINEL ) {
additionalServices . append ( " redis-master" ) ;
dockerCompose . withCommand ( "volume create " + redisSentinelDataVolume + "-" + "master" ) ;
dockerCompose . invokeDocker ( ) ;
additionalServices . append ( " redis-slave" ) ;
dockerCompose . withCommand ( "volume create " + redisSentinelDataVolume + '-' + "slave" ) ;
dockerCompose . invokeDocker ( ) ;
additionalServices . append ( " redis-sentinel" ) ;
dockerCompose . withCommand ( "volume create " + redisSentinelDataVolume + '-' + "sentinel" ) ;
dockerCompose . invokeDocker ( ) ;
} else {
} else {
additionalServices + = " redis" ;
additionalServices . append ( " redis" ) ;
dockerCompose . withCommand ( "volume create " + redisDataVolume ) ;
dockerCompose . withCommand ( "volume create " + redisDataVolume ) ;
dockerCompose . invokeDocker ( ) ;
dockerCompose . invokeDocker ( ) ;
}
}
@ -189,7 +225,7 @@ public class ThingsBoardDbInstaller {
try {
try {
dockerCompose . withCommand ( "down -v" ) ;
dockerCompose . withCommand ( "down -v" ) ;
dockerCompose . invokeCompose ( ) ;
dockerCompose . invokeCompose ( ) ;
} catch ( Exception e ) { }
} catch ( Exception ignor ed ) { }
}
}
}
}