 25bef2d8f9
			
		
	
	
		25bef2d8f9
		
	
	
	
	
		
			
			The library does not depend on stdenv, that `stdenv` exposes `lib` is an artifact of the ancient origins of nixpkgs.
		
			
				
	
	
		
			66 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			66 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| import ./make-test-python.nix ({ lib, pkgs, ... }: {
 | |
|   name = "syncthing";
 | |
|   meta.maintainers = with pkgs.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 -Ssf -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 -Ssf -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")
 | |
|   '';
 | |
| })
 |