1{
2 system ? builtins.currentSystem,
3 config ? { },
4 pkgs ? import ../../.. { inherit system config; },
5 lib ? pkgs.lib,
6}:
7
8let
9 inherit (import ./common.nix { inherit pkgs lib; }) mkTestName mariadbPackages;
10
11 makeTest = import ./../make-test-python.nix;
12
13 makeAutobackupTest =
14 {
15 package,
16 name ? mkTestName package,
17 }:
18 makeTest {
19 name = "${name}-automysqlbackup";
20 meta.maintainers = [ lib.maintainers.aanderse ];
21
22 nodes.machine = {
23 services = {
24 mysql = {
25 inherit package;
26 enable = true;
27 initialDatabases = [
28 {
29 name = "testdb";
30 schema = ./testdb.sql;
31 }
32 ];
33 };
34
35 automysqlbackup = {
36 enable = true;
37 settings.mysql_dump_port = "";
38 };
39 };
40 };
41
42 testScript = ''
43 start_all()
44
45 # Need to have mysql started so that it can be populated with data.
46 machine.wait_for_unit("mysql.service")
47
48 with subtest("Wait for testdb to be fully populated (5 rows)."):
49 machine.wait_until_succeeds(
50 "mysql -u root -D testdb -N -B -e 'select count(id) from tests' | grep -q 5"
51 )
52
53 with subtest("Do a backup and wait for it to start"):
54 machine.start_job("automysqlbackup.service")
55 machine.wait_for_job("automysqlbackup.service")
56
57 with subtest("wait for backup file and check that data appears in backup"):
58 machine.wait_for_file("/var/backup/mysql/daily/testdb")
59 machine.succeed(
60 "${pkgs.gzip}/bin/zcat /var/backup/mysql/daily/testdb/daily_testdb_*.sql.gz | grep hello"
61 )
62 '';
63 };
64in
65lib.mapAttrs (_: package: makeAutobackupTest { inherit package; }) mariadbPackages