commit
032775d0ac
@ -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