Unverified Commit d4513957 authored by Jacek Galowicz's avatar Jacek Galowicz Committed by GitHub
Browse files

Merge pull request #208225 from bjornfor/nixos-test-driver-improvement

nixos/test-driver: add optional address arg to wait_for_{open,closed}_port
parents 0d60f663 dba49a43
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -273,12 +273,13 @@ The following methods are available on machine objects:

`wait_for_open_port`

:   Wait until a process is listening on the given TCP port (on
    `localhost`, at least).
:   Wait until a process is listening on the given TCP port and IP address
    (default `localhost`).

`wait_for_closed_port`

:   Wait until nobody is listening on the given TCP port.
:   Wait until nobody is listening on the given TCP port and IP address
    (default `localhost`).

`wait_for_x`

+4 −3
Original line number Diff line number Diff line
@@ -483,8 +483,8 @@ start_all()
        </term>
        <listitem>
          <para>
            Wait until a process is listening on the given TCP port (on
            <literal>localhost</literal>, at least).
            Wait until a process is listening on the given TCP port and
            IP address (default <literal>localhost</literal>).
          </para>
        </listitem>
      </varlistentry>
@@ -494,7 +494,8 @@ start_all()
        </term>
        <listitem>
          <para>
            Wait until nobody is listening on the given TCP port.
            Wait until nobody is listening on the given TCP port and IP
            address (default <literal>localhost</literal>).
          </para>
        </listitem>
      </varlistentry>
+8 −6
Original line number Diff line number Diff line
@@ -699,20 +699,22 @@ class Machine:
        with self.nested("waiting for file ‘{}‘".format(filename)):
            retry(check_file)

    def wait_for_open_port(self, port: int) -> None:
    def wait_for_open_port(self, port: int, addr: str = "localhost") -> None:
        def port_is_open(_: Any) -> bool:
            status, _ = self.execute("nc -z localhost {}".format(port))
            status, _ = self.execute("nc -z {} {}".format(addr, port))
            return status == 0

        with self.nested("waiting for TCP port {}".format(port)):
        with self.nested("waiting for TCP port {} on {}".format(port, addr)):
            retry(port_is_open)

    def wait_for_closed_port(self, port: int) -> None:
    def wait_for_closed_port(self, port: int, addr: str = "localhost") -> None:
        def port_is_closed(_: Any) -> bool:
            status, _ = self.execute("nc -z localhost {}".format(port))
            status, _ = self.execute("nc -z {} {}".format(addr, port))
            return status != 0

        with self.nested("waiting for TCP port {} to be closed".format(port)):
        with self.nested(
            "waiting for TCP port {} on {} to be closed".format(port, addr)
        ):
            retry(port_is_closed)

    def start_job(self, jobname: str, user: Optional[str] = None) -> Tuple[int, str]: