testLabel="[Test]" # Detect current master pod by parsing INFO replication. function redisReplicaMasterGet() { local output error if ! run output error k3sPodList "$redisKube"; then appError "$error" return 1 fi while read -r pod; do if ! run output error redisPodExecCli "$pod" INFO replication; then appError "$pod | $error" continue fi if echo "$output" | grep -q "role:master"; then echo "$pod" return 0 fi done < <(awk 'NF' <<<"$output") appError "Master node not found" return 1 } # Test MariaDB replica function testMariadbReplica() { local database=$(uuidgen) if ! run output error mariadbMasterRootQuery "CREATE DATABASE \`$database\`;"; then printDanger "$testLabel $mariadbMasterKube | Database: $database | Create: $error" return 1 else printSuccess "$testLabel $mariadbMasterKube | Database: $database | Create: OK" fi local databaseMaster if ! run databaseMaster error mariadbMasterRootQuery "SHOW DATABASES LIKE '$database';"; then printDanger "$testLabel "$mariadbMasterKube" | Database list: $error" else if [[ "$databaseMaster" == "$database" ]]; then printSuccess "$testLabel $mariadbMasterKube | Database: $database | Exists" else printDanger "$testLabel $mariadbMasterKube | Database: $database | Not found" fi fi local databaseSlave if ! run databaseSlave error mariadbSlaveRootQuery "SHOW DATABASES LIKE '$database';"; then printDanger "$testLabel "$mariadbSlaveKube" | Database list: $error" else if [[ "$databaseSlave" == "$database" ]]; then printSuccess "$testLabel $mariadbSlaveKube | Database: $database | Exists" else printDanger "$testLabel $mariadbSlaveKube | Database: $database | Not found" fi fi if ! run output error mariadbMasterRootQuery "DROP DATABASE \`$database\`;"; then printDanger "$testLabel $mariadbMasterKube | Database: $database | Drop: $error" return 1 else printSuccess "$testLabel $mariadbMasterKube | Database: $database | Drop: OK" fi } # Test Redis cluster function testRedisCluster() { local key=$(uuidgen) local value=$(uuidgen) local podMaster podList error if ! run podList error k3sPodList "$redisKube"; then printDanger "$testLabel k3sPodList: $error" return 1 fi if ! run podMaster error redisReplicaMasterGet; then printDanger "$testLabel redisReplicaMasterGet: $error" return 1 fi if ! run output error redisPodExecCli "$podMaster" SET "$key" "$value"; then printDanger "$testLabel $podMaster | Key: $key | Set: $error" return 1 else printSuccess "$testLabel $podMaster | Key: $key | Set: $value" fi while read pod; do if ! run output error redisPodExecCli "$pod" GET "$key"; then printDanger "$testLabel $pod | Key: $key | Get: $error" continue fi if [[ "$output" == "$value" ]]; then printSuccess "$testLabel $pod | Key: $key | Get: $output" else printDanger "$testLabel $pod | Key: $key | Get: $output" fi done < <(awk 'NF' <<<"$podList") if ! run output error redisPodExecCli "$podMaster" DEL "$key"; then printDanger "$testLabel $podMaster | Key: $key | Del: $error" return 1 else printSuccess "$testLabel $podMaster | Key: $key | Del: OK" fi } # Test create site function testSite() { local domain domain="test-$(stringRandom 16 'a-z').test" if ! run output error cmdSiteAddDefault "$domain"; then printDanger "$testLabel Domain: $domain | Create: $error" else printSuccess "$testLabel Domain: $domain | Create: OK" cmdOpenlitespeedRestart if ! run output error systemHostAdd "$domain"; then printDanger "$testLabel Domain: $domain | Host add: $error" else printSuccess "$testLabel Domain: $domain | Host add: OK" fi local code if ! run code error curl -s -L -o /dev/null -w "%{http_code}" "$domain"; then printDanger "$testLabel Domain: $domain | Curl: $code: $error" else if [[ "$code" == "200" ]]; then printSuccess "$testLabel Domain: $domain | Curl: $code" else printWarning "$testLabel Domain: $domain | Curl: $code" fi fi if ! run output error systemHostRemove "$domain"; then printDanger "$testLabel Domain: $domain | Host remove: $error" else printSuccess "$testLabel Domain: $domain | Host remove: OK" fi fi if ! run output error cmdSiteRemove "$domain"; then printDanger "$testLabel Domain: $domain | Site remove: $error" else printSuccess "$testLabel Domain: $domain | Site remove: OK" fi cmdOpenlitespeedRestart } # Test create site Wordpress function testSiteWordpress() { local domain domain="test-$(stringRandom 16 'a-z').test" if ! run output error cmdSiteAddWordpress $domain; then printDanger "$testLabel Domain: $domain | Create: $error" else printSuccess "$testLabel Domain: $domain | Create: OK" cmdOpenlitespeedRestart if ! run output error systemHostAdd "$domain"; then printDanger "$testLabel Domain: $domain | Host add: $error" else printSuccess "$testLabel Domain: $domain | Host add: OK" fi local code if ! run code error curl -s -L -o /dev/null -w "%{http_code}" "$domain"; then printDanger "$testLabel Domain: $domain | Curl: $code: $error" else if [[ "$code" == "200" ]]; then printSuccess "$testLabel Domain: $domain | Curl: $code" else printWarning "$testLabel Domain: $domain | Curl: $code" fi fi if ! run output error systemHostRemove "$domain"; then printDanger "$testLabel Domain: $domain | Host remove: $error" else printSuccess "$testLabel Domain: $domain | Host remove: OK" fi fi if ! run output error cmdSiteRemove "$domain"; then printDanger "$testLabel Domain: $domain | Site remove: $error" else printSuccess "$testLabel Domain: $domain | Site remove: OK" fi cmdOpenlitespeedRestart } # testRedisCluster # local key="kube:haproxy:uuid" uuid # uuid=$(uuidgen) # if run output error redisExecCli -h redis-master -p 6379 SET "$key" "$uuid"; then # printInfo "$redisHaproxyLabel Set $key | $uuid" # else # printDanger "$redisHaproxyLabel Set $key: $error" # fi # if run output error redisExecCli -h redis-master -p 6379 GET "$key"; then # printInfo "$redisHaproxyLabel Get $key | $output" # if [[ "$uuid" != "$output" ]]; then # printDanger "$redisHaproxyLabel Validation failed" # else # printSuccess "$redisHaproxyLabel Validation success" # fi # else # printDanger "$redisHaproxyLabel Get $key: $error" # fi