@ -32,15 +32,15 @@ import java.util.stream.IntStream;
@Slf4j
public class ThingsBoardDbInstaller {
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_VALKEY _CLUSTER = Boolean . parseBoolean ( System . getProperty ( "blackBoxTests.redisCluster" ) ) ;
final static boolean IS_VALKEY _SENTINEL = Boolean . parseBoolean ( System . getProperty ( "blackBoxTests.redisSentinel" ) ) ;
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 REDIS_SENTINEL_DATA_VOLUME = "tb-redis -sentinel-data-volume";
private final static String VALKEY_DATA_VOLUME = "tb-valkey -data-volume";
private final static String VALKEY_CLUSTER_DATA_VOLUME = "tb-valkey -cluster-data-volume";
private final static String VALKEY_SENTINEL_DATA_VOLUME = "tb-valkey -sentinel-data-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_LWM2M_TRANSPORT_LOG_VOLUME = "tb-lwm2m-transport-log-test-volume" ;
@ -56,9 +56,9 @@ public class ThingsBoardDbInstaller {
private final String postgresDataVolume ;
private final String cassandraDataVolume ;
private final String redis DataVolume;
private final String redis ClusterDataVolume;
private final String redis SentinelDataVolume;
private final String valkey DataVolume;
private final String valkey ClusterDataVolume;
private final String valkey SentinelDataVolume;
private final String tbLogVolume ;
private final String tbCoapTransportLogVolume ;
private final String tbLwm2mTransportLogVolume ;
@ -70,8 +70,8 @@ public class ThingsBoardDbInstaller {
private final Map < String , String > env ;
public ThingsBoardDbInstaller ( ) {
log . info ( "System property of blackBoxTests.redisCluster is {}" , IS_REDIS _CLUSTER ) ;
log . info ( "System property of blackBoxTests.redisCluster is {}" , IS_REDIS _SENTINEL ) ;
log . info ( "System property of blackBoxTests.redisCluster is {}" , IS_VALKEY _CLUSTER ) ;
log . info ( "System property of blackBoxTests.redisCluster is {}" , IS_VALKEY _SENTINEL ) ;
log . info ( "System property of blackBoxTests.hybridMode is {}" , IS_HYBRID_MODE ) ;
List < File > composeFiles = new ArrayList < > ( Arrays . asList (
new File ( "./../../docker/docker-compose.yml" ) ,
@ -80,8 +80,8 @@ public class ThingsBoardDbInstaller {
? new File ( "./../../docker/docker-compose.hybrid.yml" )
: new File ( "./../../docker/docker-compose.postgres.yml" ) ,
new File ( "./../../docker/docker-compose.postgres.volumes.yml" ) ,
resolveRedis ComposeFile ( ) ,
resolveRedis ComposeVolumesFile ( )
resolveValkey ComposeFile ( ) ,
resolveValkey ComposeVolumesFile ( )
) ) ;
if ( IS_HYBRID_MODE ) {
composeFiles . add ( new File ( "./../../docker/docker-compose.cassandra.volumes.yml" ) ) ;
@ -95,9 +95,9 @@ public class ThingsBoardDbInstaller {
postgresDataVolume = project + "_" + POSTGRES_DATA_VOLUME ;
cassandraDataVolume = project + "_" + CASSANDRA_DATA_VOLUME ;
redis DataVolume = project + "_" + REDIS _DATA_VOLUME;
redis ClusterDataVolume = project + "_" + REDIS _CLUSTER_DATA_VOLUME;
redis SentinelDataVolume = project + "_" + REDIS _SENTINEL_DATA_VOLUME;
valkey DataVolume = project + "_" + VALKEY _DATA_VOLUME;
valkey ClusterDataVolume = project + "_" + VALKEY _CLUSTER_DATA_VOLUME;
valkey SentinelDataVolume = project + "_" + VALKEY _SENTINEL_DATA_VOLUME;
tbLogVolume = project + "_" + TB_LOG_VOLUME ;
tbCoapTransportLogVolume = project + "_" + TB_COAP_TRANSPORT_LOG_VOLUME ;
tbLwm2mTransportLogVolume = project + "_" + TB_LWM2M_TRANSPORT_LOG_VOLUME ;
@ -123,38 +123,38 @@ public class ThingsBoardDbInstaller {
env . put ( "TB_SNMP_TRANSPORT_LOG_VOLUME" , tbSnmpTransportLogVolume ) ;
env . put ( "TB_VC_EXECUTOR_LOG_VOLUME" , tbVcExecutorLogVolume ) ;
env . put ( "TB_EDQS_LOG_VOLUME" , tbEdqsLogVolume ) ;
if ( IS_REDIS _CLUSTER ) {
if ( IS_VALKEY _CLUSTER ) {
for ( int i = 0 ; i < 6 ; i + + ) {
env . put ( "REDIS _CLUSTER_DATA_VOLUME_" + i , redis ClusterDataVolume + '-' + i ) ;
env . put ( "VALKEY _CLUSTER_DATA_VOLUME_" + i , valkey ClusterDataVolume + '-' + i ) ;
}
} else if ( IS_REDIS _SENTINEL ) {
env . put ( "REDIS_SENTINEL_DATA_VOLUME_MASTER" , redis SentinelDataVolume + "-" + "maste r" ) ;
env . put ( "REDIS_SENTINEL_DATA_VOLUME_SLAVE" , redis SentinelDataVolume + "-" + "slave " ) ;
env . put ( "REDIS_SENTINEL_DATA_VOLUME_SENTINEL" , redis SentinelDataVolume + "-" + "sentinel" ) ;
} else if ( IS_VALKEY _SENTINEL ) {
env . put ( "VALKEY_SENTINEL_DATA_VOLUME_PRIMARY" , valkey SentinelDataVolume + "-" + "pri mary " ) ;
env . put ( "VALKEY_SENTINEL_DATA_VOLUME_REPLICA" , valkey SentinelDataVolume + "-" + "replica " ) ;
env . put ( "VALKEY_SENTINEL_DATA_VOLUME_SENTINEL" , valkey SentinelDataVolume + "-" + "sentinel" ) ;
} else {
env . put ( "REDIS_DATA_VOLUME" , redis DataVolume ) ;
env . put ( "VALKEY_DATA_VOLUME" , valkey DataVolume ) ;
}
dockerCompose . withEnv ( env ) ;
}
private static File resolveRedis ComposeVolumesFile ( ) {
if ( IS_REDIS _CLUSTER ) {
return new File ( "./../../docker/docker-compose.redis -cluster.volumes.yml" ) ;
private static File resolveValkey ComposeVolumesFile ( ) {
if ( IS_VALKEY _CLUSTER ) {
return new File ( "./../../docker/docker-compose.valkey -cluster.volumes.yml" ) ;
}
if ( IS_REDIS _SENTINEL ) {
return new File ( "./../../docker/docker-compose.redis -sentinel.volumes.yml" ) ;
if ( IS_VALKEY _SENTINEL ) {
return new File ( "./../../docker/docker-compose.valkey -sentinel.volumes.yml" ) ;
}
return new File ( "./../../docker/docker-compose.redis .volumes.yml" ) ;
return new File ( "./../../docker/docker-compose.valkey .volumes.yml" ) ;
}
private static File resolveRedis ComposeFile ( ) {
if ( IS_REDIS _CLUSTER ) {
return new File ( "./../../docker/docker-compose.redis -cluster.yml" ) ;
private static File resolveValkey ComposeFile ( ) {
if ( IS_VALKEY _CLUSTER ) {
return new File ( "./../../docker/docker-compose.valkey -cluster.yml" ) ;
}
if ( IS_REDIS _SENTINEL ) {
return new File ( "./../../docker/docker-compose.redis -sentinel.yml" ) ;
if ( IS_VALKEY _SENTINEL ) {
return new File ( "./../../docker/docker-compose.valkey -sentinel.yml" ) ;
}
return new File ( "./../../docker/docker-compose.redis .yml" ) ;
return new File ( "./../../docker/docker-compose.valkey .yml" ) ;
}
public Map < String , String > getEnv ( ) {
@ -200,27 +200,27 @@ public class ThingsBoardDbInstaller {
if ( IS_HYBRID_MODE ) {
additionalServices . append ( " cassandra" ) ;
}
if ( IS_REDIS _CLUSTER ) {
if ( IS_VALKEY _CLUSTER ) {
for ( int i = 0 ; i < 6 ; i + + ) {
additionalServices . append ( " redis -node-" ) . append ( i ) ;
dockerCompose . withCommand ( "volume create " + redis ClusterDataVolume + '-' + i ) ;
additionalServices . append ( " valkey -node-" ) . append ( i ) ;
dockerCompose . withCommand ( "volume create " + valkey ClusterDataVolume + '-' + i ) ;
dockerCompose . invokeDocker ( ) ;
}
} else if ( IS_REDIS _SENTINEL ) {
additionalServices . append ( " redis-master " ) ;
dockerCompose . withCommand ( "volume create " + redis SentinelDataVolume + "-" + "maste r" ) ;
} else if ( IS_VALKEY _SENTINEL ) {
additionalServices . append ( " valkey-primary " ) ;
dockerCompose . withCommand ( "volume create " + valkey SentinelDataVolume + "-" + "pri mary " ) ;
dockerCompose . invokeDocker ( ) ;
additionalServices . append ( " redis-slave " ) ;
dockerCompose . withCommand ( "volume create " + redis SentinelDataVolume + '-' + "slave " ) ;
additionalServices . append ( " valkey-replica " ) ;
dockerCompose . withCommand ( "volume create " + valkey SentinelDataVolume + '-' + "replica " ) ;
dockerCompose . invokeDocker ( ) ;
additionalServices . append ( " redis -sentinel" ) ;
dockerCompose . withCommand ( "volume create " + redis SentinelDataVolume + '-' + "sentinel" ) ;
additionalServices . append ( " valkey -sentinel" ) ;
dockerCompose . withCommand ( "volume create " + valkey SentinelDataVolume + '-' + "sentinel" ) ;
dockerCompose . invokeDocker ( ) ;
} else {
additionalServices . append ( " redis " ) ;
dockerCompose . withCommand ( "volume create " + redis DataVolume) ;
additionalServices . append ( " valkey " ) ;
dockerCompose . withCommand ( "volume create " + valkey DataVolume) ;
dockerCompose . invokeDocker ( ) ;
}
@ -261,7 +261,7 @@ public class ThingsBoardDbInstaller {
. add ( tbSnmpTransportLogVolume )
. add ( tbVcExecutorLogVolume )
. add ( tbEdqsLogVolume )
. add ( resolveRedis ComposeVolumeLog ( ) ) ;
. add ( resolveValkey ComposeVolumeLog ( ) ) ;
if ( IS_HYBRID_MODE ) {
rmVolumesCommand . add ( cassandraDataVolume ) ;
@ -270,16 +270,16 @@ public class ThingsBoardDbInstaller {
dockerCompose . withCommand ( rmVolumesCommand . toString ( ) ) ;
}
private String resolveRedis ComposeVolumeLog ( ) {
if ( IS_REDIS _CLUSTER ) {
return IntStream . range ( 0 , 6 ) . mapToObj ( i - > " " + redis ClusterDataVolume + "-" + i ) . collect ( Collectors . joining ( ) ) ;
private String resolveValkey ComposeVolumeLog ( ) {
if ( IS_VALKEY _CLUSTER ) {
return IntStream . range ( 0 , 6 ) . mapToObj ( i - > " " + valkey ClusterDataVolume + "-" + i ) . collect ( Collectors . joining ( ) ) ;
}
if ( IS_REDIS _SENTINEL ) {
return redis SentinelDataVolume + "-" + "maste r " + " " +
redis SentinelDataVolume + "-" + "slave " + " " +
redis SentinelDataVolume + " " + "sentinel" ;
if ( IS_VALKEY _SENTINEL ) {
return valkey SentinelDataVolume + "-" + "pri mary " + " " +
valkey SentinelDataVolume + "-" + "replica " + " " +
valkey SentinelDataVolume + " " + "sentinel" ;
}
return redis DataVolume;
return valkey DataVolume;
}
private void copyLogs ( String volumeName , String targetDir ) {