Merge pull request #93788 from chkno/syncthing-test
nixos/tests: Add test for syncthing
This commit is contained in:
commit
032775d0ac
@ -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 {};
|
||||
|
65
nixos/tests/syncthing.nix
Normal file
65
nixos/tests/syncthing.nix
Normal file
@ -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
Block a user