nixos/tests: Add test for syncthing
This commit is contained in:
parent
017c7a4940
commit
140247cd8a
|
@ -319,6 +319,7 @@ in
|
||||||
sudo = handleTest ./sudo.nix {};
|
sudo = handleTest ./sudo.nix {};
|
||||||
switchTest = handleTest ./switch-test.nix {};
|
switchTest = handleTest ./switch-test.nix {};
|
||||||
sympa = handleTest ./sympa.nix {};
|
sympa = handleTest ./sympa.nix {};
|
||||||
|
syncthing = handleTest ./syncthing.nix {};
|
||||||
syncthing-init = handleTest ./syncthing-init.nix {};
|
syncthing-init = handleTest ./syncthing-init.nix {};
|
||||||
syncthing-relay = handleTest ./syncthing-relay.nix {};
|
syncthing-relay = handleTest ./syncthing-relay.nix {};
|
||||||
systemd = handleTest ./systemd.nix {};
|
systemd = handleTest ./systemd.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")
|
||||||
|
'';
|
||||||
|
})
|
Loading…
Reference in New Issue