Merge pull request #73992 from flokli/nixos-test-port-mysql
nixosTests.mysql*: port to python
This commit is contained in:
commit
76ad040bb1
@ -1,5 +1,5 @@
|
|||||||
# Test whether mysqlBackup option works
|
# Test whether mysqlBackup option works
|
||||||
import ./make-test.nix ({ pkgs, ... } : {
|
import ./make-test-python.nix ({ pkgs, ... } : {
|
||||||
name = "mysql-backup";
|
name = "mysql-backup";
|
||||||
meta = with pkgs.stdenv.lib.maintainers; {
|
meta = with pkgs.stdenv.lib.maintainers; {
|
||||||
maintainers = [ rvl ];
|
maintainers = [ rvl ];
|
||||||
@ -20,31 +20,37 @@ import ./make-test.nix ({ pkgs, ... } : {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
testScript =
|
testScript = ''
|
||||||
'' startAll;
|
start_all()
|
||||||
|
|
||||||
# Delete backup file that may be left over from a previous test run.
|
# Delete backup file that may be left over from a previous test run.
|
||||||
# This is not needed on Hydra but useful for repeated local test runs.
|
# This is not needed on Hydra but useful for repeated local test runs.
|
||||||
$master->execute("rm -f /var/backup/mysql/testdb.gz");
|
master.execute("rm -f /var/backup/mysql/testdb.gz")
|
||||||
|
|
||||||
# Need to have mysql started so that it can be populated with data.
|
# Need to have mysql started so that it can be populated with data.
|
||||||
$master->waitForUnit("mysql.service");
|
master.wait_for_unit("mysql.service")
|
||||||
|
|
||||||
# Wait for testdb to be fully populated (5 rows).
|
# Wait for testdb to be fully populated (5 rows).
|
||||||
$master->waitUntilSucceeds("mysql -u root -D testdb -N -B -e 'select count(id) from tests' | grep -q 5");
|
master.wait_until_succeeds(
|
||||||
|
"mysql -u root -D testdb -N -B -e 'select count(id) from tests' | grep -q 5"
|
||||||
|
)
|
||||||
|
|
||||||
# Do a backup and wait for it to start
|
# Do a backup and wait for it to start
|
||||||
$master->startJob("mysql-backup.service");
|
master.start_job("mysql-backup.service")
|
||||||
$master->waitForJob("mysql-backup.service");
|
master.wait_for_unit("mysql-backup.service")
|
||||||
|
|
||||||
# wait for backup to fail, because of database 'doesnotexist'
|
# wait for backup to fail, because of database 'doesnotexist'
|
||||||
$master->waitUntilFails("systemctl is-active -q mysql-backup.service");
|
master.wait_until_fails("systemctl is-active -q mysql-backup.service")
|
||||||
|
|
||||||
# wait for backup file and check that data appears in backup
|
# wait for backup file and check that data appears in backup
|
||||||
$master->waitForFile("/var/backup/mysql/testdb.gz");
|
master.wait_for_file("/var/backup/mysql/testdb.gz")
|
||||||
$master->succeed("${pkgs.gzip}/bin/zcat /var/backup/mysql/testdb.gz | grep hello");
|
master.succeed(
|
||||||
|
"${pkgs.gzip}/bin/zcat /var/backup/mysql/testdb.gz | grep hello"
|
||||||
|
)
|
||||||
|
|
||||||
# Check that a failed backup is logged
|
# Check that a failed backup is logged
|
||||||
$master->succeed("journalctl -u mysql-backup.service | grep 'fail.*doesnotexist' > /dev/null");
|
master.succeed(
|
||||||
'';
|
"journalctl -u mysql-backup.service | grep 'fail.*doesnotexist' > /dev/null"
|
||||||
|
)
|
||||||
|
'';
|
||||||
})
|
})
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import ./make-test.nix ({ pkgs, ...} :
|
import ./make-test-python.nix ({ pkgs, ...} :
|
||||||
|
|
||||||
let
|
let
|
||||||
replicateUser = "replicate";
|
replicateUser = "replicate";
|
||||||
@ -54,28 +54,36 @@ in
|
|||||||
};
|
};
|
||||||
|
|
||||||
testScript = ''
|
testScript = ''
|
||||||
$master->start;
|
master.start()
|
||||||
$master->waitForUnit("mysql");
|
master.wait_for_unit("mysql")
|
||||||
$master->waitForOpenPort(3306);
|
master.wait_for_open_port(3306)
|
||||||
# Wait for testdb to be fully populated (5 rows).
|
# Wait for testdb to be fully populated (5 rows).
|
||||||
$master->waitUntilSucceeds("mysql -u root -D testdb -N -B -e 'select count(id) from tests' | grep -q 5");
|
master.wait_until_succeeds(
|
||||||
|
"mysql -u root -D testdb -N -B -e 'select count(id) from tests' | grep -q 5"
|
||||||
|
)
|
||||||
|
|
||||||
$slave1->start;
|
slave1.start()
|
||||||
$slave2->start;
|
slave2.start()
|
||||||
$slave1->waitForUnit("mysql");
|
slave1.wait_for_unit("mysql")
|
||||||
$slave1->waitForOpenPort(3306);
|
slave1.wait_for_open_port(3306)
|
||||||
$slave2->waitForUnit("mysql");
|
slave2.wait_for_unit("mysql")
|
||||||
$slave2->waitForOpenPort(3306);
|
slave2.wait_for_open_port(3306)
|
||||||
|
|
||||||
# wait for replications to finish
|
# wait for replications to finish
|
||||||
$slave1->waitUntilSucceeds("mysql -u root -D testdb -N -B -e 'select count(id) from tests' | grep -q 5");
|
slave1.wait_until_succeeds(
|
||||||
$slave2->waitUntilSucceeds("mysql -u root -D testdb -N -B -e 'select count(id) from tests' | grep -q 5");
|
"mysql -u root -D testdb -N -B -e 'select count(id) from tests' | grep -q 5"
|
||||||
|
)
|
||||||
|
slave2.wait_until_succeeds(
|
||||||
|
"mysql -u root -D testdb -N -B -e 'select count(id) from tests' | grep -q 5"
|
||||||
|
)
|
||||||
|
|
||||||
$slave2->succeed("systemctl stop mysql");
|
slave2.succeed("systemctl stop mysql")
|
||||||
$master->succeed("echo 'insert into testdb.tests values (123, 456);' | mysql -u root -N");
|
master.succeed("echo 'insert into testdb.tests values (123, 456);' | mysql -u root -N")
|
||||||
$slave2->succeed("systemctl start mysql");
|
slave2.succeed("systemctl start mysql")
|
||||||
$slave2->waitForUnit("mysql");
|
slave2.wait_for_unit("mysql")
|
||||||
$slave2->waitForOpenPort(3306);
|
slave2.wait_for_open_port(3306)
|
||||||
$slave2->waitUntilSucceeds("echo 'select * from testdb.tests where Id = 123;' | mysql -u root -N | grep 456");
|
slave2.wait_until_succeeds(
|
||||||
|
"echo 'select * from testdb.tests where Id = 123;' | mysql -u root -N | grep 456"
|
||||||
|
)
|
||||||
'';
|
'';
|
||||||
})
|
})
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import ./make-test.nix ({ pkgs, ...} : {
|
import ./make-test-python.nix ({ pkgs, ...} : {
|
||||||
name = "mysql";
|
name = "mysql";
|
||||||
meta = with pkgs.stdenv.lib.maintainers; {
|
meta = with pkgs.stdenv.lib.maintainers; {
|
||||||
maintainers = [ eelco shlevy ];
|
maintainers = [ eelco shlevy ];
|
||||||
@ -47,17 +47,23 @@ import ./make-test.nix ({ pkgs, ...} : {
|
|||||||
};
|
};
|
||||||
|
|
||||||
testScript = ''
|
testScript = ''
|
||||||
startAll;
|
start_all
|
||||||
|
|
||||||
$mysql->waitForUnit("mysql");
|
mysql.wait_for_unit("mysql")
|
||||||
$mysql->succeed("echo 'use empty_testdb;' | mysql -u root");
|
mysql.succeed("echo 'use empty_testdb;' | mysql -u root")
|
||||||
$mysql->succeed("echo 'use testdb; select * from tests;' | mysql -u root -N | grep 4");
|
mysql.succeed("echo 'use testdb; select * from tests;' | mysql -u root -N | grep 4")
|
||||||
# ';' acts as no-op, just check whether login succeeds with the user created from the initialScript
|
# ';' acts as no-op, just check whether login succeeds with the user created from the initialScript
|
||||||
$mysql->succeed("echo ';' | mysql -u passworduser --password=password123");
|
mysql.succeed("echo ';' | mysql -u passworduser --password=password123")
|
||||||
|
|
||||||
$mariadb->waitForUnit("mysql");
|
mariadb.wait_for_unit("mysql")
|
||||||
$mariadb->succeed("echo 'use testdb; create table tests (test_id INT, PRIMARY KEY (test_id));' | sudo -u testuser mysql -u testuser");
|
mariadb.succeed(
|
||||||
$mariadb->succeed("echo 'use testdb; insert into tests values (42);' | sudo -u testuser mysql -u testuser");
|
"echo 'use testdb; create table tests (test_id INT, PRIMARY KEY (test_id));' | sudo -u testuser mysql -u testuser"
|
||||||
$mariadb->succeed("echo 'use testdb; select test_id from tests;' | sudo -u testuser mysql -u testuser -N | grep 42");
|
)
|
||||||
|
mariadb.succeed(
|
||||||
|
"echo 'use testdb; insert into tests values (42);' | sudo -u testuser mysql -u testuser"
|
||||||
|
)
|
||||||
|
mariadb.succeed(
|
||||||
|
"echo 'use testdb; select test_id from tests;' | sudo -u testuser mysql -u testuser -N | grep 42"
|
||||||
|
)
|
||||||
'';
|
'';
|
||||||
})
|
})
|
||||||
|
Loading…
x
Reference in New Issue
Block a user