vuls: init at 0.27.0
[NixPkgs.git] / nixos / tests / mysql / mysql-backup.nix
blob451f5c04ce46780b5f57ac790c1a5371cc93c49e
2   system ? builtins.currentSystem,
3   config ? {},
4   pkgs ? import ../../.. { inherit system config; },
5   lib ? pkgs.lib
6 }:
8 let
9   inherit (import ./common.nix { inherit pkgs lib; }) mkTestName mariadbPackages;
11   makeTest = import ./../make-test-python.nix;
13   makeBackupTest = {
14     package,
15     name ? mkTestName package
16   }: makeTest {
17     name = "${name}-backup";
19     nodes = {
20       master = { pkgs, ... }: {
21         services.mysql = {
22           inherit package;
23           enable = true;
24           initialDatabases = [ { name = "testdb"; schema = ./testdb.sql; } ];
25         };
27         services.mysqlBackup = {
28           enable = true;
29           databases = [ "doesnotexist" "testdb" ];
30         };
31       };
32     };
34     testScript = ''
35       start_all()
37       # Delete backup file that may be left over from a previous test run.
38       # This is not needed on Hydra but useful for repeated local test runs.
39       master.execute("rm -f /var/backup/mysql/testdb.gz")
41       # Need to have mysql started so that it can be populated with data.
42       master.wait_for_unit("mysql.service")
44       # Wait for testdb to be fully populated (5 rows).
45       master.wait_until_succeeds(
46           "mysql -u root -D testdb -N -B -e 'select count(id) from tests' | grep -q 5"
47       )
49       # Do a backup and wait for it to start
50       master.start_job("mysql-backup.service")
52       # wait for backup to fail, because of database 'doesnotexist'
53       master.wait_until_fails("systemctl is-active -q mysql-backup.service")
55       # wait for backup file and check that data appears in backup
56       master.wait_for_file("/var/backup/mysql/testdb.gz")
57       master.succeed(
58           "${pkgs.gzip}/bin/zcat /var/backup/mysql/testdb.gz | grep hello"
59       )
61       # Check that a failed backup is logged
62       master.succeed(
63           "journalctl -u mysql-backup.service | grep 'fail.*doesnotexist' > /dev/null"
64       )
65     '';
66   };
68   lib.mapAttrs (_: package: makeBackupTest { inherit package; }) mariadbPackages