feat(core): a cable carries one frame after the other, as in Java

Java's SimplexVerbindung sleeps a cable's delay with the port's buffer
locked: frames on one cable leave one after the other, and a frame shows
in the packet log when it leaves. The engine now queues a frame in the
output buffer until the one before has arrived (ethernetLinkDeparture).
Swift sends a cable's frames at once; the option swiftCables keeps that for
the Swift comparison, which goes on checking everything else trace by
trace.

With the queue, the Java comparisons match within 120 ms (was 200); a
state of the TCP stories within 250 ms, where the engine's calls block
one after the other.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-09-30 16:37:45 +00:00
co-authored by Claude Opus 5.5
parent cec0a92f95
commit efc7c440f6
7 changed files with 153 additions and 15 deletions
+4 -1
View File
@@ -33,7 +33,10 @@ npm test # vergleicht mit den geschriebenen *.swift.json
DHCP-Szenarien vergleicht `dhcpJava.test.ts` mit Java-Läufen
(`tools/java-oracle`, `DhcpRun`), am Swift-Ergebnis prüft der Test nur
noch, dass sie abweichen. Ebenso seit F2.3c die drei TCP-Szenarien
(`tcpJava.test.ts`, `TcpRun`).
(`tcpJava.test.ts`, `TcpRun`). Seit F2.3d befördert ein Kabel des Kerns
einen Frame nach dem anderen wie Java; der Swift-Vergleich startet die
Engine mit `swiftCables` (alle Frames zugleich, wie Swift) und prüft so
alles andere weiter Spur für Spur.
Das Ergebnis enthält die Sockets mit der Länge ihrer Warteschlange, dem
TCP-Zustand, dem annehmenden Socket und den Sitzungswerten.