]> git.scottworley.com Git - syncthing-autoregister/blobdiff - tests/automatic-enrollment.nix
Fix race: Re-register on file change
[syncthing-autoregister] / tests / automatic-enrollment.nix
index 803013d4dab2881615cd5345c0dd3333d6f245c9..617f672e4da38f157986db9d2f7b2d1ef3be764b 100644 (file)
@@ -49,23 +49,49 @@ import <nixpkgs/nixos/tests/make-test-python.nix> ({ pkgs, lib, ... }:
     };
 
     testScript = ''
     };
 
     testScript = ''
+      import os
+
+
       def setConfig(machine, config):
           machine.copy_from_host(config, "/etc/nixos/configuration.nix")
 
 
       def verifyDeviceIDSet(machine, expectedDevice):
       def setConfig(machine, config):
           machine.copy_from_host(config, "/etc/nixos/configuration.nix")
 
 
       def verifyDeviceIDSet(machine, expectedDevice):
-          machine.succeed(
+          machine.wait_until_succeeds(
               '(( "$(nix eval --raw -f "<nixos/nixos>" config.services.syncthing.declarative.devices.%s.id | wc -c)" == 63 ))'
               % expectedDevice
           )
 
 
               '(( "$(nix eval --raw -f "<nixos/nixos>" config.services.syncthing.declarative.devices.%s.id | wc -c)" == 63 ))'
               % expectedDevice
           )
 
 
+      def getDeviceFile(machine):
+          machine.copy_from_vm("${deviceIDFilename}")
+
+
+      def putDeviceFile(machine):
+          hostDeviceIDFilename = os.path.join(
+              os.environ["out"],
+              os.path.basename("${deviceIDFilename}"),
+          )
+          machine.copy_from_host(
+              hostDeviceIDFilename, "${deviceIDFilename}"
+          )
+          machine.succeed("chown syncthing ${deviceIDFilename}")
+
+
       configurationWithDeviceIDs = (
           "${configurationWithDeviceIDs}"
       )
 
       configurationWithDeviceIDs = (
           "${configurationWithDeviceIDs}"
       )
 
+      start_all()
       a.wait_for_unit("syncthing-autoregister.service")
       setConfig(a, configurationWithDeviceIDs)
       verifyDeviceIDSet(a, "a")
       a.wait_for_unit("syncthing-autoregister.service")
       setConfig(a, configurationWithDeviceIDs)
       verifyDeviceIDSet(a, "a")
+      getDeviceFile(a)
+
+      b.wait_for_unit("syncthing-autoregister.service")
+      putDeviceFile(b)
+      setConfig(b, configurationWithDeviceIDs)
+      verifyDeviceIDSet(b, "a")
+      verifyDeviceIDSet(b, "b")
     '';
   })
     '';
   })