about summary refs log tree commit diff
path: root/nixpkgs/nixos/lib
diff options
context:
space:
mode:
authorAlyssa Ross <hi@alyssa.is>2023-10-21 17:25:23 +0000
committerAlyssa Ross <hi@alyssa.is>2023-10-21 17:25:23 +0000
commit2a87a287685e127797106ffe684015a2371729fd (patch)
tree86f3180cc4eea397d9741a530593682404e94627 /nixpkgs/nixos/lib
parent53533fd13b70e6e78e9a63c7dad027b116335a2d (diff)
parent83b8726e5f6f85a28405c7772f75093fd9a399a3 (diff)
downloadnixlib-2a87a287685e127797106ffe684015a2371729fd.tar
nixlib-2a87a287685e127797106ffe684015a2371729fd.tar.gz
nixlib-2a87a287685e127797106ffe684015a2371729fd.tar.bz2
nixlib-2a87a287685e127797106ffe684015a2371729fd.tar.lz
nixlib-2a87a287685e127797106ffe684015a2371729fd.tar.xz
nixlib-2a87a287685e127797106ffe684015a2371729fd.tar.zst
nixlib-2a87a287685e127797106ffe684015a2371729fd.zip
Merge commit '83b8726e5f6f85a28405c7772f75093fd9a399a3'
Diffstat (limited to 'nixpkgs/nixos/lib')
-rw-r--r--nixpkgs/nixos/lib/test-driver/test_driver/machine.py22
1 files changed, 22 insertions, 0 deletions
diff --git a/nixpkgs/nixos/lib/test-driver/test_driver/machine.py b/nixpkgs/nixos/lib/test-driver/test_driver/machine.py
index 7ed001a1dfce..b1688cd3b64f 100644
--- a/nixpkgs/nixos/lib/test-driver/test_driver/machine.py
+++ b/nixpkgs/nixos/lib/test-driver/test_driver/machine.py
@@ -791,6 +791,28 @@ class Machine:
         with self.nested(f"waiting for TCP port {port} on {addr}"):
             retry(port_is_open, timeout)
 
+    def wait_for_open_unix_socket(
+        self, addr: str, is_datagram: bool = False, timeout: int = 900
+    ) -> None:
+        """
+        Wait until a process is listening on the given UNIX-domain socket
+        (default to a UNIX-domain stream socket).
+        """
+
+        nc_flags = [
+            "-z",
+            "-uU" if is_datagram else "-U",
+        ]
+
+        def socket_is_open(_: Any) -> bool:
+            status, _ = self.execute(f"nc {' '.join(nc_flags)} {addr}")
+            return status == 0
+
+        with self.nested(
+            f"waiting for UNIX-domain {'datagram' if is_datagram else 'stream'} on '{addr}'"
+        ):
+            retry(socket_is_open, timeout)
+
     def wait_for_closed_port(
         self, port: int, addr: str = "localhost", timeout: int = 900
     ) -> None: