Skip to content

Commit

Permalink
nixos/tests: Add test for syncthing
Browse files Browse the repository at this point in the history
  • Loading branch information
chkno committed Jul 24, 2020
1 parent 017c7a4 commit 140247c
Show file tree
Hide file tree
Showing 2 changed files with 66 additions and 0 deletions.
1 change: 1 addition & 0 deletions nixos/tests/all-tests.nix
Expand Up @@ -319,6 +319,7 @@ in
sudo = handleTest ./sudo.nix {};
switchTest = handleTest ./switch-test.nix {};
sympa = handleTest ./sympa.nix {};
syncthing = handleTest ./syncthing.nix {};
syncthing-init = handleTest ./syncthing-init.nix {};
syncthing-relay = handleTest ./syncthing-relay.nix {};
systemd = handleTest ./systemd.nix {};
Expand Down
65 changes: 65 additions & 0 deletions nixos/tests/syncthing.nix
@@ -0,0 +1,65 @@
import ./make-test-python.nix ({ lib, pkgs, ... }: {
name = "syncthing";
meta.maintainers = with pkgs.stdenv.lib.maintainers; [ chkno ];

nodes = rec {
a = {
environment.systemPackages = with pkgs; [ curl libxml2 syncthing ];
services.syncthing = {
enable = true;
openDefaultPorts = true;
};
};
b = a;
};

testScript = ''
import json
import shlex
confdir = "/var/lib/syncthing/.config/syncthing"
def addPeer(host, name, deviceID):
APIKey = host.succeed(
"xmllint --xpath 'string(configuration/gui/apikey)' %s/config.xml" % confdir
).strip()
oldConf = host.succeed(
"curl -Ss -H 'X-API-Key: %s' 127.0.0.1:8384/rest/system/config" % APIKey
)
conf = json.loads(oldConf)
conf["devices"].append({"deviceID": deviceID, "id": name})
conf["folders"].append(
{
"devices": [{"deviceID": deviceID}],
"id": "foo",
"path": "/var/lib/syncthing/foo",
"rescanIntervalS": 1,
}
)
newConf = json.dumps(conf)
host.succeed(
"curl -Ss -H 'X-API-Key: %s' 127.0.0.1:8384/rest/system/config -d %s"
% (APIKey, shlex.quote(newConf))
)
start_all()
a.wait_for_unit("syncthing.service")
b.wait_for_unit("syncthing.service")
a.wait_for_open_port(22000)
b.wait_for_open_port(22000)
aDeviceID = a.succeed("syncthing -home=%s -device-id" % confdir).strip()
bDeviceID = b.succeed("syncthing -home=%s -device-id" % confdir).strip()
addPeer(a, "b", bDeviceID)
addPeer(b, "a", aDeviceID)
a.wait_for_file("/var/lib/syncthing/foo")
b.wait_for_file("/var/lib/syncthing/foo")
a.succeed("echo a2b > /var/lib/syncthing/foo/a2b")
b.succeed("echo b2a > /var/lib/syncthing/foo/b2a")
a.wait_for_file("/var/lib/syncthing/foo/b2a")
b.wait_for_file("/var/lib/syncthing/foo/a2b")
'';
})

0 comments on commit 140247c

Please sign in to comment.