vuls: init at 0.27.0
[NixPkgs.git] / nixos / tests / mysql / mysql-autobackup.nix
blob80dbb47adcd2998500260706cbb3e917c70c08e6
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   makeAutobackupTest =
14     {
15       package,
16       name ? mkTestName package,
17     }:
18     makeTest {
19       name = "${name}-automysqlbackup";
20       meta.maintainers = [ lib.maintainers.aanderse ];
22       nodes.machine = {
23         services.mysql = {
24           inherit package;
25           enable = true;
26           initialDatabases = [
27             {
28               name = "testdb";
29               schema = ./testdb.sql;
30             }
31           ];
32         };
34         services.automysqlbackup.enable = true;
35         automysqlbackup.settings.mysql_dump_port = "";
36       };
38       testScript = ''
39         start_all()
41         # Need to have mysql started so that it can be populated with data.
42         machine.wait_for_unit("mysql.service")
44         with subtest("Wait for testdb to be fully populated (5 rows)."):
45             machine.wait_until_succeeds(
46                 "mysql -u root -D testdb -N -B -e 'select count(id) from tests' | grep -q 5"
47             )
49         with subtest("Do a backup and wait for it to start"):
50             machine.start_job("automysqlbackup.service")
51             machine.wait_for_job("automysqlbackup.service")
53         with subtest("wait for backup file and check that data appears in backup"):
54             machine.wait_for_file("/var/backup/mysql/daily/testdb")
55             machine.succeed(
56                 "${pkgs.gzip}/bin/zcat /var/backup/mysql/daily/testdb/daily_testdb_*.sql.gz | grep hello"
57             )
58       '';
59     };
61 lib.mapAttrs (_: package: makeAutobackupTest { inherit package; }) mariadbPackages