summaryrefslogtreecommitdiffstats
path: root/nixos/tests/mysql/mysql-autobackup.nix
blob: a28475e84a674b3d417f743afff6471de84fe3c7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
{
  system ? builtins.currentSystem,
  config ? { },
  pkgs ? import ../../.. { inherit system config; },
  lib ? pkgs.lib,
}:

let
  inherit (import ./common.nix { inherit pkgs lib; }) mkTestName mariadbPackages;

  makeTest = import ./../make-test-python.nix;

  makeAutobackupTest =
    {
      package,
      name ? mkTestName package,
    }:
    makeTest {
      name = "${name}-automysqlbackup";
      meta.maintainers = [ lib.maintainers.aanderse ];

      nodes.machine = {
        services = {
          mysql = {
            inherit package;
            enable = true;
            initialDatabases = [
              {
                name = "testdb";
                schema = ./testdb.sql;
              }
            ];
          };

          automysqlbackup = {
            enable = true;
            settings.mysql_dump_port = "";
          };
        };
      };

      testScript = ''
        start_all()

        # Need to have mysql started so that it can be populated with data.
        machine.wait_for_unit("mysql.service")

        with subtest("Wait for testdb to be fully populated (5 rows)."):
            machine.wait_until_succeeds(
                "mysql -u root -D testdb -N -B -e 'select count(id) from tests' | grep -q 5"
            )

        with subtest("Do a backup and wait for it to start"):
            machine.start_job("automysqlbackup.service")
            machine.wait_for_unit("automysqlbackup.service")

        with subtest("wait for backup file and check that data appears in backup"):
            machine.wait_for_file("/var/backup/mysql/daily/testdb")
            machine.succeed(
                "${pkgs.gzip}/bin/zcat /var/backup/mysql/daily/testdb/daily_testdb_*.sql.gz | grep hello"
            )
      '';
    };
in
lib.mapAttrs (_: package: makeAutobackupTest { inherit package; }) mariadbPackages