Add authenticated WiFi transport with BLE fallback
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
"""Explicit real-system restart test, synchronized by a transient test session name."""
|
||||
import json
|
||||
import threading
|
||||
import time
|
||||
|
||||
from remote_support import connect, execute
|
||||
|
||||
|
||||
class RestartProbe:
|
||||
def __init__(self):
|
||||
self.stop = threading.Event()
|
||||
self.error = None
|
||||
self.completed = False
|
||||
self.thread = threading.Thread(target=self.run, daemon=True)
|
||||
|
||||
def start(self):
|
||||
self.thread.start()
|
||||
|
||||
def run(self):
|
||||
client = None
|
||||
try:
|
||||
client, fields = connect()
|
||||
code, _, _ = execute(client, 'command -v python3 >/dev/null && command -v systemctl >/dev/null')
|
||||
if code: raise RuntimeError('Required remote tools unavailable')
|
||||
deadline = time.monotonic() + 120
|
||||
while not self.stop.wait(1):
|
||||
if time.monotonic() >= deadline:
|
||||
raise RuntimeError('Authenticated restart readiness was not observed')
|
||||
code, output, _ = execute(client, "python3 -c \"import urllib.request,json; s=json.load(urllib.request.urlopen('http://127.0.0.1:8080/api/status',timeout=5)); m=s.get('mobile',{}); print(json.dumps({'ready':m.get('connected') and m.get('active_transport')=='wifi' and m.get('client_name')=='android-test-restart-ready'}))\"")
|
||||
if code or not json.loads(output).get('ready'):
|
||||
continue
|
||||
code, _, _ = execute(client, 'systemctl restart matrix-screen-controller.service && systemctl is-active --quiet matrix-screen-controller.service', password=fields['密码'], timeout=60)
|
||||
if code: raise RuntimeError('Real service restart failed')
|
||||
self.completed = True
|
||||
return
|
||||
except Exception:
|
||||
self.error = 'Real service restart coordination failed; no private diagnostics emitted'
|
||||
finally:
|
||||
if client is not None: client.close()
|
||||
|
||||
def finish(self):
|
||||
self.stop.set()
|
||||
self.thread.join(timeout=65)
|
||||
if self.thread.is_alive() or self.error or not self.completed:
|
||||
raise RuntimeError(self.error or 'Real service restart did not complete')
|
||||
Reference in New Issue
Block a user