Testanleitung: eigenes X-Display je Projekt fuer Parallelbetrieb
Damit mehrere Agenten gleichzeitig Oberflaechen testen koennen, bekommt jedes Projekt eine feste Displaynummer (Vorgabe Richard): :99 PolyTrader, :98 Predictalytics, :97 ClawdDotNet, :96 IBKRTrader, :95 und absteigend fuer kuenftige Projekte. Zwei Prozesse auf demselben Display sehen die Fenster des jeweils anderen - Klicks landen im falschen Programm, Aufnahmen zeigen fremde Anwendungen. Beim Durcharbeiten fielen zwei weitere Kollisionspunkte auf, die zum Parallelbetrieb dazugehoeren und mit aufgenommen wurden: - Screenshot- und Logdateien in /tmp brauchen ein Projektpraefix. /tmp/v_1.png ueberschreiben sich parallel laufende Projekte gegenseitig. - "xvfb-run -a" darf NICHT mehr verwendet werden: Das -a sucht sich selbst ein freies Display und beginnt dabei bei :99 - ausgerechnet PolyTraders Nummer. Stattdessen "xvfb-run -n <nummer>". Die Warnung ist nicht theoretisch: Auf der VM lag ein verwaister X98-Socket, entstanden durch genau so einen "xvfb-run -a"-Aufruf beim smoke-ui-Test, als :99 belegt war. Er blockierte Predictalytics' reservierte Nummer, ohne dass ein Prozess lief. Entfernt, und die Anleitung erklaert jetzt, wie man verwaiste Sockets erkennt (ls /tmp/.X11-unix/ gegen pgrep -a Xvfb lesen) und aufraeumt. Weiter ergaenzt: - pkill nie ohne Displaynummer - "pkill Xvfb" erschlaegt die Sitzungen aller anderen Projekte. - DISPLAY in jedem Skript setzen, sonst landet man auf :0, dem echten Desktop. - Die Skriptvorlage hat jetzt einen Kopf mit PROJEKT/DISP/FENSTER; das ist alles, was sich je Projekt unterscheidet. Praktisch gegengetestet. - Aufraeumabschnitt und Belegungsliste um Displays und Verzeichnisse erweitert. Nebenbei aufgefallen: Das PolyTrader-Publish lag unter ~/pt-test statt ~/polytrader-test und verletzte damit die eigene Verzeichniskonvention. Umbenannt. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
using System;
|
||||
using System;
|
||||
using System.Linq;
|
||||
using Deploymentcenter.Client;
|
||||
using PolyTrader.Core;
|
||||
@@ -94,6 +94,12 @@ namespace PolyTrader.App.Avalonia.Licensing
|
||||
|
||||
const string settingsPath = "server_settings.xml";
|
||||
var settings = ServerSettings.Load(settingsPath);
|
||||
|
||||
// Master-Key laden, BEVOR der Schlüssel abgelegt wird. Ohne diesen Aufruf reicht
|
||||
// SecretProtection.Protect den Klartext unveraendert durch - genau das war der Grund,
|
||||
// warum --license-status "gesetzt (Klartext)" meldete (Befund B-12).
|
||||
Program.ConfigureSecretProtection(Console.Error.WriteLine);
|
||||
|
||||
settings.LicenseKey = SecretProtection.Protect(key.Trim());
|
||||
settings.Save(settingsPath);
|
||||
Console.WriteLine($"Lizenz gültig und in {settingsPath} gespeichert " +
|
||||
@@ -106,6 +112,9 @@ namespace PolyTrader.App.Avalonia.Licensing
|
||||
var options = Program.LoadDeploymentcenterOptions();
|
||||
var settings = ServerSettings.Load("server_settings.xml");
|
||||
|
||||
// Ein verschluesselt abgelegter Schluessel (B-12) ist ohne Master-Key nicht lesbar.
|
||||
Program.ConfigureSecretProtection(Console.Error.WriteLine);
|
||||
|
||||
string key;
|
||||
try { key = SecretProtection.Unprotect(settings.LicenseKey); }
|
||||
catch (Exception ex)
|
||||
|
||||
Reference in New Issue
Block a user