at 23.05-pre 2.0 kB view raw
1import ./make-test-python.nix ({ lib, pkgs, ... }: { 2 name = "syncthing"; 3 meta.maintainers = with pkgs.lib.maintainers; [ chkno ]; 4 5 nodes = rec { 6 a = { 7 environment.systemPackages = with pkgs; [ curl libxml2 syncthing ]; 8 services.syncthing = { 9 enable = true; 10 openDefaultPorts = true; 11 }; 12 }; 13 b = a; 14 }; 15 16 testScript = '' 17 import json 18 import shlex 19 20 confdir = "/var/lib/syncthing/.config/syncthing" 21 22 23 def addPeer(host, name, deviceID): 24 APIKey = host.succeed( 25 "xmllint --xpath 'string(configuration/gui/apikey)' %s/config.xml" % confdir 26 ).strip() 27 oldConf = host.succeed( 28 "curl -Ssf -H 'X-API-Key: %s' 127.0.0.1:8384/rest/config" % APIKey 29 ) 30 conf = json.loads(oldConf) 31 conf["devices"].append({"deviceID": deviceID, "id": name}) 32 conf["folders"].append( 33 { 34 "devices": [{"deviceID": deviceID}], 35 "id": "foo", 36 "path": "/var/lib/syncthing/foo", 37 "rescanIntervalS": 1, 38 } 39 ) 40 newConf = json.dumps(conf) 41 host.succeed( 42 "curl -Ssf -H 'X-API-Key: %s' 127.0.0.1:8384/rest/config -X PUT -d %s" 43 % (APIKey, shlex.quote(newConf)) 44 ) 45 46 47 start_all() 48 a.wait_for_unit("syncthing.service") 49 b.wait_for_unit("syncthing.service") 50 a.wait_for_open_port(22000) 51 b.wait_for_open_port(22000) 52 53 aDeviceID = a.succeed("syncthing -home=%s -device-id" % confdir).strip() 54 bDeviceID = b.succeed("syncthing -home=%s -device-id" % confdir).strip() 55 addPeer(a, "b", bDeviceID) 56 addPeer(b, "a", aDeviceID) 57 58 a.wait_for_file("/var/lib/syncthing/foo") 59 b.wait_for_file("/var/lib/syncthing/foo") 60 a.succeed("echo a2b > /var/lib/syncthing/foo/a2b") 61 b.succeed("echo b2a > /var/lib/syncthing/foo/b2a") 62 a.wait_for_file("/var/lib/syncthing/foo/b2a") 63 b.wait_for_file("/var/lib/syncthing/foo/a2b") 64 ''; 65})