!RROtHmAaQIkiJzJZZE:nixos.org

NixOS Infrastructure

387 Members
Next Infra call: 2024-07-11, 18:00 CEST (UTC+2) | Infra operational issues backlog: https://github.com/orgs/NixOS/projects/52 | See #infra-alerts:nixos.org for real time alerts from Prometheus.120 Servers

Load older messages


SenderMessageTime
21 Oct 2021
@janne.hess:helsinki-systems.deJanne Heßyeah that works19:56:06
@k900:0upti.meK900It could be ordering the atexit hooks wrong19:56:28
@k900:0upti.meK900I'm not sure if they have a deterministic order19:56:36
@k900:0upti.meK900
diff --git a/nixos/lib/test-driver/test-driver.py b/nixos/lib/test-driver/test-driver.py
index 3ee8b3227c6..dd50696bfce 100755
--- a/nixos/lib/test-driver/test-driver.py
+++ b/nixos/lib/test-driver/test-driver.py
@@ -8,7 +8,6 @@ import queue
 import io
 import threading
 import argparse
-import atexit
 import base64
 import codecs
 import os
@@ -1128,11 +1127,13 @@ class Driver:
             for cmd in cmd(start_scripts)
         ]

-        @atexit.register
-        def clean_up() -> None:
-            with rootlog.nested("clean up"):
-                for machine in self.machines:
-                    machine.release()
+    def __enter__(self):
+        return self
+
+    def __exit__(self, *_):
+        with rootlog.nested("clean up"):
+            for machine in self.machines:
+                machine.release()

     def subtest(self, name: str) -> Iterator[None]:
         """Group logs under a given test name"""
@@ -1307,14 +1308,13 @@ if __name__ == "__main__":
     if not args.keep_vm_state:
         rootlog.info("Machine state will be reset. To keep it, pass --keep-vm-state")

-    driver = Driver(
+    with Driver(
         args.start_scripts, args.vlans, args.testscript.read_text(), args.keep_vm_state
-    )
-
-    if args.interactive:
-        ptpython.repl.embed(driver.test_symbols(), {})
-    else:
-        tic = time.time()
-        driver.run_tests()
-        toc = time.time()
-        rootlog.info(f"test script finished in {(toc-tic):.2f}s")
+    ) as driver:
+        if args.interactive:
+            ptpython.repl.embed(driver.test_symbols(), {})
+        else:
+            tic = time.time()
+            driver.run_tests()
+            toc = time.time()
+            rootlog.info(f"test script finished in {(toc-tic):.2f}s")
19:58:16
@k900:0upti.meK900Try this19:58:17
@k900:0upti.meK900Ugh20:02:35
@k900:0upti.meK900mypy20:02:36
@k900:0upti.meK900
    def __enter__(self) -> "Driver":
        return self

    def __exit__(self, *_: Any) -> None:
        with rootlog.nested("clean up"):
            for machine in self.machines:
                machine.release()
20:02:38
@k900:0upti.meK900This should be correct (with type hints added)20:02:45
@janne.hess:helsinki-systems.deJanne Heß it exits \o/ 20:06:13
@k900:0upti.meK900Run it a few more times? 20:07:10
@janne.hess:helsinki-systems.deJanne Heßdoing that rn20:07:19
@janne.hess:helsinki-systems.deJanne Heßyou could to that in parallel, gives us twice the computing ;)20:07:32
@k900:0upti.meK900Do you have a specific commit? 20:07:44
@k900:0upti.meK900Just to make sure we're on the same code 20:07:56
@janne.hess:helsinki-systems.deJanne Heß
            if chunk == "":
                sys.exit(1)
20:08:06
@k900:0upti.meK900Also the previous version has literally never locked up for me either 20:08:12
@janne.hess:helsinki-systems.deJanne Heß *
diff --git a/nixos/lib/test-driver/test-driver.py b/nixos/lib/test-driver/test-driver.py
index 70a9ada3f3c..23278d1ce7b 100755
--- a/nixos/lib/test-driver/test-driver.py
+++ b/nixos/lib/test-driver/test-driver.py
@@ -8,7 +8,6 @@ import queue
 import io
 import threading
 import argparse
-import atexit
 import base64
 import codecs
 import os
@@ -593,6 +592,7 @@ class Machine:
         status_code_pattern = re.compile(r"(.*)\|\!=EOF\s+(\d+)", flags=re.DOTALL)
 
         while True:
+            print(f"current output is '{output}'")
             chunk = self.shell.recv(4096).decode(errors="ignore")
             match = status_code_pattern.match(output + chunk)
             if match:
@@ -1034,7 +1034,7 @@ class Machine:
         assert self.monitor
         assert self.serial_thread
 
-        self.process.terminate()
+        self.process.kill()
         self.shell.close()
         self.monitor.close()
         self.serial_thread.join()
@@ -1128,11 +1128,13 @@ class Driver:
             for cmd in cmd(start_scripts)
         ]
 
-        @atexit.register
-        def clean_up() -> None:
-            with rootlog.nested("clean up"):
-                for machine in self.machines:
-                    machine.release()
+    def __enter__(self) -> "Driver":
+        return self
+
+    def __exit__(self, *_: Any) -> None:
+        with rootlog.nested("clean up"):
+            for machine in self.machines:
+                machine.release()
 
     def subtest(self, name: str) -> Iterator[None]:
         """Group logs under a given test name"""
@@ -1307,14 +1309,13 @@ if __name__ == "__main__":
     if not args.keep_vm_state:
         rootlog.info("Machine state will be reset. To keep it, pass --keep-vm-state")
 
-    driver = Driver(
+    with Driver(
         args.start_scripts, args.vlans, args.testscript.read_text(), args.keep_vm_state
-    )
-
-    if args.interactive:
-        ptpython.repl.embed(driver.test_symbols(), {})
-    else:
-        tic = time.time()
-        driver.run_tests()
-        toc = time.time()
-        rootlog.info(f"test script finished in {(toc-tic):.2f}s")
+    ) as driver:
+        if args.interactive:
+            ptpython.repl.embed(driver.test_symbols(), {})
+        else:
+            tic = time.time()
+            driver.run_tests()
+            toc = time.time()
+            rootlog.info(f"test script finished in {(toc-tic):.2f}s")
20:08:21
@k900:0upti.meK900What test are you runnign?20:09:59
@k900:0upti.meK900 * What test are you running?20:10:01
@janne.hess:helsinki-systems.deJanne Heßswitch-test because I was initially testing something else20:10:14
@janne.hess:helsinki-systems.deJanne Heßbut it's annoyingly long20:10:17
@janne.hess:helsinki-systems.deJanne Heßsome maniac must have written allthat20:10:25
@janne.hess:helsinki-systems.deJanne Heß * some maniac must have written all that20:10:27
@k900:0upti.meK900I've been running tests/nixos/simple.nix cause it's, well, simple20:10:50
@k900:0upti.meK900But maybe it only locks up if you do something weird20:11:09
@k900:0upti.meK900Let me try switch-test20:11:18
@k900:0upti.meK900Took two minutes but it did pass20:13:48
@k900:0upti.meK900Gonna loop it now20:14:02
@janne.hess:helsinki-systems.deJanne Heßoof20:14:10

There are no newer messages yet.


Back to Room ListRoom Version: 6