bitnami-containers/bitnami/mariadb/test.sh

534 lines
20 KiB
Bash
Executable File

#!/usr/bin/env bats
MARIADB_DATABASE=test_database
MARIADB_USER=test_user
MARIADB_PASSWORD=test_password
MARIADB_REPLICATION_USER=repl_user
MARIADB_REPLICATION_PASSWORD=repl_password
# source the helper script
APP_NAME=mariadb
SLEEP_TIME=90
VOL_PREFIX=/bitnami/$APP_NAME
VOLUMES=$VOL_PREFIX
load tests/docker_helper
# Link to container and execute mysql client
# $1 : name of the container to link to
# ${@:2} : arguments for the mysql command
mysql_client() {
container_link_and_run_command $1 mysql --no-defaults -h$APP_NAME -P3306 "${@:2}"
}
cleanup_environment() {
container_remove_full default
container_remove_full slave0
}
teardown() {
cleanup_environment
}
# cleanup the environment of any leftover containers and volumes before starting the tests
cleanup_environment
@test "Port 3306 exposed and accepting external connections" {
container_create default -d
run container_link_and_run_command default mysqladmin --no-defaults \
-h$APP_NAME -P3306 -uroot ping
[[ "$output" =~ "mysqld is alive" ]]
}
@test "Root can login without a password" {
container_create default -d
run mysql_client default -uroot -e 'SHOW DATABASES\G;'
[[ "$output" =~ "Database: mysql" ]]
}
@test "Root user created with custom password" {
container_create default -d \
-e MARIADB_ROOT_PASSWORD=$MARIADB_PASSWORD
run mysql_client default -uroot -p$MARIADB_PASSWORD -e 'SHOW DATABASES\G;'
[[ "$output" =~ "Database: mysql" ]]
}
@test "Can't set root user password with MARIADB_PASSWORD" {
run container_create default \
-e MARIADB_PASSWORD=$MARIADB_PASSWORD
[[ "$output" =~ "provide the --rootPassword property" ]]
}
@test "Can't specify 'root' in MARIADB_USER" {
run container_create default \
-e MARIADB_USER=root
[[ "$output" =~ "'root' user is created by default" ]]
}
@test "Root user has access to admin database" {
container_create default -d \
-e MARIADB_ROOT_PASSWORD=$MARIADB_PASSWORD
run mysql_client default -uroot -p$MARIADB_PASSWORD mysql -e 'SHOW TABLES\G;'
[[ "$output" =~ "Tables_in_mysql: user" ]]
}
@test "Can create custom database" {
container_create default -d \
-e MARIADB_DATABASE=$MARIADB_DATABASE
run mysql_client default -uroot -e "SHOW DATABASES\G"
[[ "$output" =~ "Database: $MARIADB_DATABASE" ]]
}
@test "Can create custom database with '-' character in the name" {
container_create default -d \
-e MARIADB_DATABASE=my-db
run mysql_client default -uroot -e "SHOW DATABASES\G"
[[ "$output" =~ "Database: my-db" ]]
}
@test "Can create custom database with password for root" {
container_create default -d \
-e MARIADB_ROOT_PASSWORD=$MARIADB_PASSWORD \
-e MARIADB_DATABASE=$MARIADB_DATABASE
run mysql_client default -uroot -p$MARIADB_PASSWORD -e "SHOW DATABASES\G"
[[ "$output" =~ "Database: $MARIADB_DATABASE" ]]
}
@test "Can't create custom user without database" {
run container_create default \
-e MARIADB_USER=$MARIADB_USER
[[ "$output" =~ "provide the --database property as well" ]]
}
@test "Custom user created without password" {
container_create default -d \
-e MARIADB_USER=$MARIADB_USER \
-e MARIADB_DATABASE=$MARIADB_DATABASE
run mysql_client default -u$MARIADB_USER -e "SHOW DATABASES\G"
[[ "$output" =~ "Database: $MARIADB_DATABASE" ]]
}
@test "Custom user created with password" {
container_create default -d \
-e MARIADB_USER=$MARIADB_USER \
-e MARIADB_PASSWORD=$MARIADB_PASSWORD \
-e MARIADB_DATABASE=$MARIADB_DATABASE
run mysql_client default -u$MARIADB_USER -p$MARIADB_PASSWORD -e "SHOW DATABASES\G"
[[ "$output" =~ "Database: $MARIADB_DATABASE" ]]
}
@test "Custom user can't access admin database" {
container_create default -d \
-e MARIADB_USER=$MARIADB_USER \
-e MARIADB_PASSWORD=$MARIADB_PASSWORD \
-e MARIADB_DATABASE=$MARIADB_DATABASE
run mysql_client default -u$MARIADB_USER -p$MARIADB_PASSWORD mysql -e 'SHOW TABLES\G;'
[[ "$output" =~ "Access denied for user" ]]
}
@test "Can set root password and create custom user without password" {
container_create default -d \
-e MARIADB_ROOT_PASSWORD=$MARIADB_PASSWORD \
-e MARIADB_USER=$MARIADB_USER \
-e MARIADB_DATABASE=$MARIADB_DATABASE
run mysql_client default -uroot -p$MARIADB_PASSWORD -e "SHOW DATABASES\G"
[[ "$output" =~ "Database: mysql" ]]
run mysql_client default -u$MARIADB_USER -e "SHOW DATABASES\G"
[[ "$output" =~ "Database: $MARIADB_DATABASE" ]]
}
@test "Can set root password and create custom user with password" {
container_create default -d \
-e MARIADB_ROOT_PASSWORD=$MARIADB_PASSWORD \
-e MARIADB_USER=$MARIADB_USER \
-e MARIADB_PASSWORD=$MARIADB_PASSWORD \
-e MARIADB_DATABASE=$MARIADB_DATABASE
run mysql_client default -uroot -p$MARIADB_PASSWORD -e "SHOW DATABASES\G"
[[ "$output" =~ "Database: mysql" ]]
run mysql_client default -u$MARIADB_USER -p$MARIADB_PASSWORD -e "SHOW DATABASES\G"
[[ "$output" =~ "Database: $MARIADB_DATABASE" ]]
}
@test "Data is preserved on container restart" {
container_create default -d \
-e MARIADB_USER=$MARIADB_USER \
-e MARIADB_PASSWORD=$MARIADB_PASSWORD \
-e MARIADB_DATABASE=$MARIADB_DATABASE
container_restart default
run mysql_client default -u$MARIADB_USER -p$MARIADB_PASSWORD -e "SHOW DATABASES\G"
[[ "$output" =~ "Database: $MARIADB_DATABASE" ]]
}
@test "All the volumes exposed" {
container_create default -d
run container_inspect default --format {{.Mounts}}
[[ "$output" =~ "$VOL_PREFIX" ]]
}
@test "Data gets generated in volume if bind mounted in the host" {
container_create_with_host_volumes default -d
run container_exec default ls -la $VOL_PREFIX/data/
[[ "$output" =~ "mysql" ]]
[[ "$output" =~ "ibdata1" ]]
run container_exec default ls -la $VOL_PREFIX/conf/
[[ "$output" =~ "my.cnf" ]]
}
@test "If host mounted, password and settings are preserved after deletion" {
container_create_with_host_volumes default -d \
-e MARIADB_USER=$MARIADB_USER \
-e MARIADB_PASSWORD=$MARIADB_PASSWORD \
-e MARIADB_DATABASE=$MARIADB_DATABASE
container_remove default
container_create_with_host_volumes default -d
run mysql_client default -u$MARIADB_USER -p$MARIADB_PASSWORD -e "SHOW DATABASES\G"
[[ "$output" =~ "Database: $MARIADB_DATABASE" ]]
}
@test "Can't setup replication master without creating a replication user" {
run container_create default \
-e MARIADB_REPLICATION_MODE=master
[[ "$output" =~ "provide the --replicationUser property as well" ]]
}
@test "Can't setup replication slave without specifying the master host" {
run container_create slave0 \
-e MARIADB_REPLICATION_MODE=slave
[[ "$output" =~ "provide the --masterHost property as well" ]]
}
@test "Can't setup replication slave without database" {
run container_create slave0 \
-e MARIADB_REPLICATION_MODE=slave \
-e MARIADB_MASTER_HOST=master
[[ "$output" =~ "provide the --database property as well" ]]
}
@test "Can't setup replication slave without replication user" {
run container_create slave0 \
-e MARIADB_REPLICATION_MODE=slave \
-e MARIADB_MASTER_HOST=master \
-e MARIADB_DATABASE=$MARIADB_DATABASE
[[ "$output" =~ "provide the --replicationUser property as well" ]]
}
@test "Can setup master/slave replication with minimal configuration" {
container_create default -d \
-e MARIADB_REPLICATION_MODE=master \
-e MARIADB_REPLICATION_USER=$MARIADB_REPLICATION_USER \
-e MARIADB_DATABASE=$MARIADB_DATABASE
container_create slave0 -d \
$(container_link default $CONTAINER_NAME) \
-e MARIADB_REPLICATION_MODE=slave \
-e MARIADB_REPLICATION_USER=$MARIADB_REPLICATION_USER \
-e MARIADB_MASTER_HOST=$CONTAINER_NAME \
-e MARIADB_DATABASE=$MARIADB_DATABASE
mysql_client default -uroot $MARIADB_DATABASE -e \
"CREATE TABLE users (id INT AUTO_INCREMENT, name VARCHAR(30), datum TIMESTAMP DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY(id)); \
INSERT INTO users(name) VALUES ('Marko');"
run mysql_client slave0 -uroot $MARIADB_DATABASE -e "SELECT * FROM users\G"
[[ "$output" =~ "name: Marko" ]]
}
@test "Can setup master/slave replication with root password" {
container_create default -d \
-e MARIADB_REPLICATION_MODE=master \
-e MARIADB_REPLICATION_USER=$MARIADB_REPLICATION_USER \
-e MARIADB_REPLICATION_PASSWORD=$MARIADB_REPLICATION_PASSWORD \
-e MARIADB_ROOT_PASSWORD=$MARIADB_PASSWORD \
-e MARIADB_DATABASE=$MARIADB_DATABASE
container_create slave0 -d \
$(container_link default $CONTAINER_NAME) \
-e MARIADB_REPLICATION_MODE=slave \
-e MARIADB_REPLICATION_USER=$MARIADB_REPLICATION_USER \
-e MARIADB_REPLICATION_PASSWORD=$MARIADB_REPLICATION_PASSWORD \
-e MARIADB_MASTER_HOST=$CONTAINER_NAME \
-e MARIADB_MASTER_PASSWORD=$MARIADB_PASSWORD \
-e MARIADB_ROOT_PASSWORD=$MARIADB_PASSWORD \
-e MARIADB_DATABASE=$MARIADB_DATABASE
mysql_client default -uroot -p$MARIADB_PASSWORD $MARIADB_DATABASE -e \
"CREATE TABLE users (id INT AUTO_INCREMENT, name VARCHAR(30), datum TIMESTAMP DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY(id)); \
INSERT INTO users(name) VALUES ('Marko');"
run mysql_client slave0 -uroot -p$MARIADB_PASSWORD $MARIADB_DATABASE -e "SELECT * FROM users\G"
[[ "$output" =~ "name: Marko" ]]
}
@test "Can setup master/slave replication using a custom master port" {
container_create default -d -p 3306 \
-e MARIADB_REPLICATION_MODE=master \
-e MARIADB_REPLICATION_USER=$MARIADB_REPLICATION_USER \
-e MARIADB_REPLICATION_PASSWORD=$MARIADB_REPLICATION_PASSWORD \
-e MARIADB_ROOT_PASSWORD=$MARIADB_PASSWORD \
-e MARIADB_DATABASE=$MARIADB_DATABASE
MASTER_HOST=$(container_exec default ip route list | grep ^default | awk '{print $3}')
MASTER_PORT=$(docker port $CONTAINER_NAME-default 3306/tcp | cut -d':' -f2)
container_create slave0 -d \
-e MARIADB_REPLICATION_MODE=slave \
-e MARIADB_REPLICATION_USER=$MARIADB_REPLICATION_USER \
-e MARIADB_REPLICATION_PASSWORD=$MARIADB_REPLICATION_PASSWORD \
-e MARIADB_MASTER_HOST=$MASTER_HOST \
-e MARIADB_MASTER_PORT=$MASTER_PORT \
-e MARIADB_MASTER_PASSWORD=$MARIADB_PASSWORD \
-e MARIADB_ROOT_PASSWORD=$MARIADB_PASSWORD \
-e MARIADB_DATABASE=$MARIADB_DATABASE
mysql_client default -uroot -p$MARIADB_PASSWORD $MARIADB_DATABASE -e \
"CREATE TABLE users (id INT AUTO_INCREMENT, name VARCHAR(30), datum TIMESTAMP DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY(id)); \
INSERT INTO users(name) VALUES ('Marko');"
run mysql_client slave0 -uroot -p$MARIADB_PASSWORD $MARIADB_DATABASE -e "SELECT * FROM users\G"
[[ "$output" =~ "name: Marko" ]]
}
@test "Can setup master/slave replication with password for replication user" {
container_create default -d \
-e MARIADB_REPLICATION_MODE=master \
-e MARIADB_REPLICATION_USER=$MARIADB_REPLICATION_USER \
-e MARIADB_REPLICATION_PASSWORD=$MARIADB_REPLICATION_PASSWORD \
-e MARIADB_ROOT_PASSWORD=$MARIADB_PASSWORD \
-e MARIADB_DATABASE=$MARIADB_DATABASE
container_create slave0 -d \
$(container_link default $CONTAINER_NAME) \
-e MARIADB_REPLICATION_MODE=slave \
-e MARIADB_REPLICATION_USER=$MARIADB_REPLICATION_USER \
-e MARIADB_REPLICATION_PASSWORD=$MARIADB_REPLICATION_PASSWORD \
-e MARIADB_MASTER_HOST=$CONTAINER_NAME \
-e MARIADB_MASTER_PASSWORD=$MARIADB_PASSWORD \
-e MARIADB_ROOT_PASSWORD=$MARIADB_PASSWORD \
-e MARIADB_DATABASE=$MARIADB_DATABASE
mysql_client default -uroot -p$MARIADB_PASSWORD $MARIADB_DATABASE -e \
"CREATE TABLE users (id INT AUTO_INCREMENT, name VARCHAR(30), datum TIMESTAMP DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY(id)); \
INSERT INTO users(name) VALUES ('Marko');"
run mysql_client slave0 -uroot -p$MARIADB_PASSWORD $MARIADB_DATABASE -e "SELECT * FROM users\G"
[[ "$output" =~ "name: Marko" ]]
}
@test "Can setup master/slave replication with custom user without password" {
container_create default -d \
-e MARIADB_REPLICATION_MODE=master \
-e MARIADB_REPLICATION_USER=$MARIADB_REPLICATION_USER \
-e MARIADB_REPLICATION_PASSWORD=$MARIADB_REPLICATION_PASSWORD \
-e MARIADB_USER=$MARIADB_USER \
-e MARIADB_DATABASE=$MARIADB_DATABASE
container_create slave0 -d \
$(container_link default $CONTAINER_NAME) \
-e MARIADB_REPLICATION_MODE=slave \
-e MARIADB_REPLICATION_USER=$MARIADB_REPLICATION_USER \
-e MARIADB_REPLICATION_PASSWORD=$MARIADB_REPLICATION_PASSWORD \
-e MARIADB_MASTER_HOST=$CONTAINER_NAME \
-e MARIADB_MASTER_USER=$MARIADB_USER \
-e MARIADB_USER=$MARIADB_USER \
-e MARIADB_DATABASE=$MARIADB_DATABASE
mysql_client default -u$MARIADB_USER $MARIADB_DATABASE -e \
"CREATE TABLE users (id INT AUTO_INCREMENT, name VARCHAR(30), datum TIMESTAMP DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY(id)); \
INSERT INTO users(name) VALUES ('Marko');"
run mysql_client slave0 -u$MARIADB_USER $MARIADB_DATABASE -e "SELECT * FROM users\G"
[[ "$output" =~ "name: Marko" ]]
}
@test "Can setup master/slave replication with custom user and password" {
container_create default -d \
-e MARIADB_REPLICATION_MODE=master \
-e MARIADB_REPLICATION_USER=$MARIADB_REPLICATION_USER \
-e MARIADB_REPLICATION_PASSWORD=$MARIADB_REPLICATION_PASSWORD \
-e MARIADB_USER=$MARIADB_USER \
-e MARIADB_PASSWORD=$MARIADB_PASSWORD \
-e MARIADB_DATABASE=$MARIADB_DATABASE
container_create slave0 -d \
$(container_link default $CONTAINER_NAME) \
-e MARIADB_REPLICATION_MODE=slave \
-e MARIADB_REPLICATION_USER=$MARIADB_REPLICATION_USER \
-e MARIADB_REPLICATION_PASSWORD=$MARIADB_REPLICATION_PASSWORD \
-e MARIADB_MASTER_HOST=$CONTAINER_NAME \
-e MARIADB_MASTER_USER=$MARIADB_USER \
-e MARIADB_MASTER_PASSWORD=$MARIADB_PASSWORD \
-e MARIADB_USER=$MARIADB_USER \
-e MARIADB_PASSWORD=$MARIADB_PASSWORD \
-e MARIADB_DATABASE=$MARIADB_DATABASE
mysql_client default -u$MARIADB_USER -p$MARIADB_PASSWORD $MARIADB_DATABASE -e \
"CREATE TABLE users (id INT AUTO_INCREMENT, name VARCHAR(30), datum TIMESTAMP DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY(id)); \
INSERT INTO users(name) VALUES ('Marko');"
run mysql_client slave0 -u$MARIADB_USER -p$MARIADB_PASSWORD $MARIADB_DATABASE -e "SELECT * FROM users\G"
[[ "$output" =~ "name: Marko" ]]
}
@test "Slave synchronizes with the master (delayed start)" {
container_create default -d \
-e MARIADB_REPLICATION_MODE=master \
-e MARIADB_REPLICATION_USER=$MARIADB_REPLICATION_USER \
-e MARIADB_REPLICATION_PASSWORD=$MARIADB_REPLICATION_PASSWORD \
-e MARIADB_USER=$MARIADB_USER \
-e MARIADB_PASSWORD=$MARIADB_PASSWORD \
-e MARIADB_DATABASE=$MARIADB_DATABASE
mysql_client default -u$MARIADB_USER -p$MARIADB_PASSWORD $MARIADB_DATABASE -e \
"CREATE TABLE users (id INT AUTO_INCREMENT, name VARCHAR(30), datum TIMESTAMP DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY(id)); \
INSERT INTO users(name) VALUES ('Marko');"
container_create slave0 -d \
$(container_link default $CONTAINER_NAME) \
-e MARIADB_REPLICATION_MODE=slave \
-e MARIADB_REPLICATION_USER=$MARIADB_REPLICATION_USER \
-e MARIADB_REPLICATION_PASSWORD=$MARIADB_REPLICATION_PASSWORD \
-e MARIADB_MASTER_HOST=$CONTAINER_NAME \
-e MARIADB_MASTER_USER=$MARIADB_USER \
-e MARIADB_MASTER_PASSWORD=$MARIADB_PASSWORD \
-e MARIADB_USER=$MARIADB_USER \
-e MARIADB_PASSWORD=$MARIADB_PASSWORD \
-e MARIADB_DATABASE=$MARIADB_DATABASE
run mysql_client slave0 -u$MARIADB_USER -p$MARIADB_PASSWORD $MARIADB_DATABASE -e "SELECT * FROM users\G"
[[ "$output" =~ "name: Marko" ]]
}
@test "Replication setup and state is preserved after restart" {
container_create_with_host_volumes default -d \
-e MARIADB_REPLICATION_MODE=master \
-e MARIADB_REPLICATION_USER=$MARIADB_REPLICATION_USER \
-e MARIADB_REPLICATION_PASSWORD=$MARIADB_REPLICATION_PASSWORD \
-e MARIADB_USER=$MARIADB_USER \
-e MARIADB_PASSWORD=$MARIADB_PASSWORD \
-e MARIADB_DATABASE=$MARIADB_DATABASE
mysql_client default -u$MARIADB_USER -p$MARIADB_PASSWORD $MARIADB_DATABASE -e \
"CREATE TABLE users (id INT AUTO_INCREMENT, name VARCHAR(30), datum TIMESTAMP DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY(id)); \
INSERT INTO users(name) VALUES ('Marko');"
container_create_with_host_volumes slave0 -d \
$(container_link default $CONTAINER_NAME) \
-e MARIADB_REPLICATION_MODE=slave \
-e MARIADB_REPLICATION_USER=$MARIADB_REPLICATION_USER \
-e MARIADB_REPLICATION_PASSWORD=$MARIADB_REPLICATION_PASSWORD \
-e MARIADB_MASTER_HOST=$CONTAINER_NAME \
-e MARIADB_MASTER_USER=$MARIADB_USER \
-e MARIADB_MASTER_PASSWORD=$MARIADB_PASSWORD \
-e MARIADB_USER=$MARIADB_USER \
-e MARIADB_PASSWORD=$MARIADB_PASSWORD \
-e MARIADB_DATABASE=$MARIADB_DATABASE
container_restart default
container_restart slave0
mysql_client default -u$MARIADB_USER -p$MARIADB_PASSWORD $MARIADB_DATABASE -e "INSERT INTO users(name) VALUES ('Polo')"
run mysql_client slave0 -u$MARIADB_USER -p$MARIADB_PASSWORD $MARIADB_DATABASE -e "SELECT * FROM users\G"
[[ "$output" =~ "name: Marko" ]]
[[ "$output" =~ "name: Polo" ]]
}
@test "Slave recovers if master is temporarily offine" {
container_create_with_host_volumes default -d \
-e MARIADB_REPLICATION_MODE=master \
-e MARIADB_REPLICATION_USER=$MARIADB_REPLICATION_USER \
-e MARIADB_REPLICATION_PASSWORD=$MARIADB_REPLICATION_PASSWORD \
-e MARIADB_USER=$MARIADB_USER \
-e MARIADB_PASSWORD=$MARIADB_PASSWORD \
-e MARIADB_DATABASE=$MARIADB_DATABASE
mysql_client default -u$MARIADB_USER -p$MARIADB_PASSWORD $MARIADB_DATABASE -e \
"CREATE TABLE users (id INT AUTO_INCREMENT, name VARCHAR(30), datum TIMESTAMP DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY(id)); \
INSERT INTO users(name) VALUES ('Marko');"
container_create_with_host_volumes slave0 -d \
$(container_link default $CONTAINER_NAME) \
-e MARIADB_REPLICATION_MODE=slave \
-e MARIADB_REPLICATION_USER=$MARIADB_REPLICATION_USER \
-e MARIADB_REPLICATION_PASSWORD=$MARIADB_REPLICATION_PASSWORD \
-e MARIADB_MASTER_HOST=$CONTAINER_NAME \
-e MARIADB_MASTER_USER=$MARIADB_USER \
-e MARIADB_MASTER_PASSWORD=$MARIADB_PASSWORD \
-e MARIADB_USER=$MARIADB_USER \
-e MARIADB_PASSWORD=$MARIADB_PASSWORD \
-e MARIADB_DATABASE=$MARIADB_DATABASE
container_restart default
mysql_client default -u$MARIADB_USER -p$MARIADB_PASSWORD $MARIADB_DATABASE -e "INSERT INTO users(name) VALUES ('Polo')"
# wait for slave to sync
sleep 60
run mysql_client slave0 -u$MARIADB_USER -p$MARIADB_PASSWORD $MARIADB_DATABASE -e "SELECT * FROM users\G"
[[ "$output" =~ "name: Marko" ]]
[[ "$output" =~ "name: Polo" ]]
}
@test "Replication setup and state is preserved after deletion" {
container_create_with_host_volumes default -d \
-e MARIADB_REPLICATION_MODE=master \
-e MARIADB_REPLICATION_USER=$MARIADB_REPLICATION_USER \
-e MARIADB_REPLICATION_PASSWORD=$MARIADB_REPLICATION_PASSWORD \
-e MARIADB_USER=$MARIADB_USER \
-e MARIADB_PASSWORD=$MARIADB_PASSWORD \
-e MARIADB_DATABASE=$MARIADB_DATABASE
mysql_client default -u$MARIADB_USER -p$MARIADB_PASSWORD $MARIADB_DATABASE -e \
"CREATE TABLE users (id INT AUTO_INCREMENT, name VARCHAR(30), datum TIMESTAMP DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY(id)); \
INSERT INTO users(name) VALUES ('Marko');"
container_create_with_host_volumes slave0 -d \
$(container_link default $CONTAINER_NAME) \
-e MARIADB_REPLICATION_MODE=slave \
-e MARIADB_REPLICATION_USER=$MARIADB_REPLICATION_USER \
-e MARIADB_REPLICATION_PASSWORD=$MARIADB_REPLICATION_PASSWORD \
-e MARIADB_MASTER_HOST=$CONTAINER_NAME \
-e MARIADB_MASTER_USER=$MARIADB_USER \
-e MARIADB_MASTER_PASSWORD=$MARIADB_PASSWORD \
-e MARIADB_USER=$MARIADB_USER \
-e MARIADB_PASSWORD=$MARIADB_PASSWORD \
-e MARIADB_DATABASE=$MARIADB_DATABASE
container_remove default
container_remove slave0
container_create_with_host_volumes default -d \
-e MARIADB_REPLICATION_MODE=master
container_create_with_host_volumes slave0 -d \
$(container_link default $CONTAINER_NAME) \
-e MARIADB_REPLICATION_MODE=slave \
-e MARIADB_DATABASE=$MARIADB_DATABASE
mysql_client default -u$MARIADB_USER -p$MARIADB_PASSWORD $MARIADB_DATABASE -e "INSERT INTO users(name) VALUES ('Polo')"
run mysql_client slave0 -u$MARIADB_USER -p$MARIADB_PASSWORD $MARIADB_DATABASE -e "SELECT * FROM users\G"
[[ "$output" =~ "name: Marko" ]]
[[ "$output" =~ "name: Polo" ]]
}