Newer
Older
{ ... }: {
nodes = {
storage = { config, pkgs, ... }: {
imports = [
../tahoe.nix
];
services.tahoe.nodes.storage = {
package = pkgs.privatestorage;
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
66
67
68
69
70
71
72
sections = {
node = {
nickname = "storage";
"web.port" = "tcp:4000:interface=127.0.0.1";
"tub.port" = "tcp:4001";
"tub.location" = "tcp:127.0.0.1:4001";
};
storage = {
enabled = true;
};
};
};
};
};
testScript = ''
startAll;
# After the service starts, destroy the "created" marker to force it to
# re-create its internal state.
$storage->waitForOpenPort(4001);
$storage->succeed("systemctl stop tahoe.storage");
$storage->succeed("rm /var/db/tahoe-lafs/storage.created");
$storage->succeed("systemctl start tahoe.storage");
# After it starts up again, verify it has consistent internal state and a
# backup of the prior state.
$storage->waitForOpenPort(4001);
$storage->succeed("[ -e /var/db/tahoe-lafs/storage ]");
$storage->succeed("[ -e /var/db/tahoe-lafs/storage.created ]");
$storage->succeed("[ -e /var/db/tahoe-lafs/storage.1 ]");
$storage->succeed("[ -e /var/db/tahoe-lafs/storage.1/private/node.privkey ]");
$storage->succeed("[ -e /var/db/tahoe-lafs/storage.1/private/node.pem ]");
$storage->succeed("[ ! -e /var/db/tahoe-lafs/storage.2 ]");
# Stop it again, once again destroy the "created" marker, and this time also
# jam some partial state in the way that will need cleanup.
$storage->succeed("systemctl stop tahoe.storage");
$storage->succeed("rm /var/db/tahoe-lafs/storage.created");
$storage->succeed("mkdir -p /var/db/tahoe-lafs/storage.atomic/partial");
eval {
$storage->succeed("systemctl start tahoe.storage");
1;
} or do {
my ($x, $y) = $storage->execute("journalctl -u tahoe.storage");
$storage->log($y);
die $@;
};
# After it starts up again, verify it has consistent internal state and
# backups of the prior two states. It also has no copy of the inconsistent
# state because it could never have been used.
$storage->waitForOpenPort(4001);
$storage->succeed("[ -e /var/db/tahoe-lafs/storage ]");
$storage->succeed("[ -e /var/db/tahoe-lafs/storage.created ]");
$storage->succeed("[ -e /var/db/tahoe-lafs/storage.1 ]");
$storage->succeed("[ -e /var/db/tahoe-lafs/storage.2 ]");
$storage->succeed("[ -e /var/db/tahoe-lafs/storage.2/private/node.privkey ]");
$storage->succeed("[ -e /var/db/tahoe-lafs/storage.2/private/node.pem ]");
$storage->succeed("[ ! -e /var/db/tahoe-lafs/storage.atomic ]");
$storage->succeed("[ ! -e /var/db/tahoe-lafs/storage/partial ]");
$storage->succeed("[ ! -e /var/db/tahoe-lafs/storage.3 ]");
'';
}