mirror of
https://github.com/retspen/webvirtcloud
synced 2026-11-08 11:16:47 +00:00
websockify logs "Openening socket failed" and calls sys.exit() when its port is taken, so novncd ended with status 0. Under systemd the unit then counts as stopped, not failed: Restart=on-failure does not start it again, systemctl --failed does not list it, and VNC consoles stay down until someone starts it by hand. novncd now ends with status 1 there.
22 lines
832 B
Python
22 lines
832 B
Python
"""novncd that cannot listen ends with a failure status, which systemd restarts."""
|
|
|
|
import socket
|
|
import subprocess
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
from django.test import SimpleTestCase
|
|
|
|
ROOT = Path(__file__).resolve().parent.parent.parent
|
|
|
|
|
|
class NovncdExitTestCase(SimpleTestCase):
|
|
def test_a_taken_port_ends_novncd_with_a_failure_status(self):
|
|
with socket.socket() as taken:
|
|
taken.bind(("127.0.0.1", 0))
|
|
taken.listen()
|
|
port = taken.getsockname()[1]
|
|
novncd = subprocess.run([sys.executable, str(ROOT / "console" / "novncd"), "-v", "-H", "127.0.0.1",
|
|
"-p", str(port)], cwd=ROOT, capture_output=True, timeout=60)
|
|
self.assertNotEqual(novncd.returncode, 0)
|
|
self.assertIn(b"Openening socket failed", novncd.stderr)
|