@@ -73,8 +73,30 @@ let
7373 machine.succeed(
7474 "systemctl start ${backupService}.service",
7575 "zcat /var/backup/postgresql/${backupName}.sql.gz | grep '<test>ok</test>'",
76+ "ls -hal /var/backup/postgresql/ >/dev/console",
7677 "stat -c '%a' /var/backup/postgresql/${backupName}.sql.gz | grep 600",
7778 )
79+ with subtest("Backup service fails gracefully"):
80+ # Sabotage the backup process
81+ machine.succeed("rm /run/postgresql/.s.PGSQL.5432")
82+ machine.fail(
83+ "systemctl start ${backupService}.service",
84+ )
85+ machine.succeed(
86+ "ls -hal /var/backup/postgresql/ >/dev/console",
87+ "zcat /var/backup/postgresql/${backupName}.prev.sql.gz | grep '<test>ok</test>'",
88+ "stat /var/backup/postgresql/${backupName}.in-progress.sql.gz",
89+ )
90+ # In a previous version, the second run would overwrite prev.sql.gz,
91+ # so we test a second run as well.
92+ machine.fail(
93+ "systemctl start ${backupService}.service",
94+ )
95+ machine.succeed(
96+ "stat /var/backup/postgresql/${backupName}.in-progress.sql.gz",
97+ "zcat /var/backup/postgresql/${backupName}.prev.sql.gz | grep '<test>ok</test>'",
98+ )
99+
78100
79101 with subtest("Initdb works"):
80102 machine.succeed("sudo -u postgres initdb -D /tmp/testpostgres2")