feat(core): programs' threads, and FILIUS' echo server and generic client after Java, measured against Java
Programs run as generators that yield what they wait for (threads.ts); the engine resumes them after every event. TCP connect, send, receive, accept and name resolution exist as such steps; the blocking calls wrap them. EchoRun records eight stories in Java FILIUS, frames, tables and each program's window lines; echoJava.test.ts plays them card by card. Not taken from Java: a connection without a route hangs for ever; a server switched off leaves its connections' last FIN unanswered. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,377 @@
|
||||
{
|
||||
"frames": {
|
||||
"00000000-0000-0000-0000-000000000101": [
|
||||
{
|
||||
"time": 641,
|
||||
"source": "02:00:00:00:01:12",
|
||||
"destination": "FF:FF:FF:FF:FF:FF",
|
||||
"arp": 1,
|
||||
"senderIp": "192.168.0.20",
|
||||
"targetIp": "192.168.0.30"
|
||||
}
|
||||
],
|
||||
"00000000-0000-0000-0000-000000000102": [
|
||||
{
|
||||
"time": 519,
|
||||
"source": "02:00:00:00:01:12",
|
||||
"destination": "FF:FF:FF:FF:FF:FF",
|
||||
"arp": 1,
|
||||
"senderIp": "192.168.0.20",
|
||||
"targetIp": "192.168.0.30"
|
||||
},
|
||||
{
|
||||
"time": 755,
|
||||
"source": "02:00:00:00:01:13",
|
||||
"destination": "02:00:00:00:01:12",
|
||||
"arp": 2,
|
||||
"senderIp": "192.168.0.30",
|
||||
"targetIp": "192.168.0.20"
|
||||
},
|
||||
{
|
||||
"time": 758,
|
||||
"source": "02:00:00:00:01:12",
|
||||
"destination": "02:00:00:00:01:13",
|
||||
"sourceIp": "192.168.0.20",
|
||||
"destinationIp": "192.168.0.30",
|
||||
"protocol": 6,
|
||||
"sourcePort": 58845,
|
||||
"destinationPort": 55555,
|
||||
"payload": null,
|
||||
"tcpFlags": "S",
|
||||
"sequence": 2000000,
|
||||
"acknowledgement": 0
|
||||
}
|
||||
],
|
||||
"00000000-0000-0000-0000-000000000103": [
|
||||
{
|
||||
"time": 641,
|
||||
"source": "02:00:00:00:01:12",
|
||||
"destination": "FF:FF:FF:FF:FF:FF",
|
||||
"arp": 1,
|
||||
"senderIp": "192.168.0.20",
|
||||
"targetIp": "192.168.0.30"
|
||||
},
|
||||
{
|
||||
"time": 643,
|
||||
"source": "02:00:00:00:01:13",
|
||||
"destination": "02:00:00:00:01:12",
|
||||
"arp": 2,
|
||||
"senderIp": "192.168.0.30",
|
||||
"targetIp": "192.168.0.20"
|
||||
},
|
||||
{
|
||||
"time": 871,
|
||||
"source": "02:00:00:00:01:12",
|
||||
"destination": "02:00:00:00:01:13",
|
||||
"sourceIp": "192.168.0.20",
|
||||
"destinationIp": "192.168.0.30",
|
||||
"protocol": 6,
|
||||
"sourcePort": 58845,
|
||||
"destinationPort": 55555,
|
||||
"payload": null,
|
||||
"tcpFlags": "S",
|
||||
"sequence": 2000000,
|
||||
"acknowledgement": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
"rows": {
|
||||
"00000000-0000-0000-0000-000000000101": [
|
||||
[
|
||||
"1",
|
||||
"02:00:00:00:01:12",
|
||||
"FF:FF:FF:FF:FF:FF",
|
||||
"",
|
||||
"Netzzugang",
|
||||
"0x806"
|
||||
],
|
||||
[
|
||||
"1",
|
||||
"192.168.0.20",
|
||||
"192.168.0.30",
|
||||
"ARP",
|
||||
"Vermittlung",
|
||||
"Suche nach MAC für 192.168.0.30 [op=REQUEST, sender=02:00:00:00:01:12|192.168.0.20, target=FF:FF:FF:FF:FF:FF|192.168.0.30]"
|
||||
]
|
||||
],
|
||||
"00000000-0000-0000-0000-000000000102": [
|
||||
[
|
||||
"1",
|
||||
"02:00:00:00:01:12",
|
||||
"FF:FF:FF:FF:FF:FF",
|
||||
"",
|
||||
"Netzzugang",
|
||||
"0x806"
|
||||
],
|
||||
[
|
||||
"1",
|
||||
"192.168.0.20",
|
||||
"192.168.0.30",
|
||||
"ARP",
|
||||
"Vermittlung",
|
||||
"Suche nach MAC für 192.168.0.30 [op=REQUEST, sender=02:00:00:00:01:12|192.168.0.20, target=FF:FF:FF:FF:FF:FF|192.168.0.30]"
|
||||
],
|
||||
[
|
||||
"2",
|
||||
"02:00:00:00:01:13",
|
||||
"02:00:00:00:01:12",
|
||||
"",
|
||||
"Netzzugang",
|
||||
"0x806"
|
||||
],
|
||||
[
|
||||
"2",
|
||||
"192.168.0.30",
|
||||
"192.168.0.20",
|
||||
"ARP",
|
||||
"Vermittlung",
|
||||
"MAC ist 02:00:00:00:01:13 [op=REPLY, sender=02:00:00:00:01:13|192.168.0.30, target=02:00:00:00:01:12|192.168.0.20]"
|
||||
],
|
||||
[
|
||||
"3",
|
||||
"02:00:00:00:01:12",
|
||||
"02:00:00:00:01:13",
|
||||
"",
|
||||
"Netzzugang",
|
||||
"0x800"
|
||||
],
|
||||
[
|
||||
"3",
|
||||
"192.168.0.20",
|
||||
"192.168.0.30",
|
||||
"IP",
|
||||
"Vermittlung",
|
||||
"Protokoll: 6, TTL: 64"
|
||||
],
|
||||
[
|
||||
"3",
|
||||
"192.168.0.20:58845",
|
||||
"192.168.0.30:55555",
|
||||
"TCP",
|
||||
"Transport",
|
||||
"SYN, SEQ: 2.000.000"
|
||||
]
|
||||
],
|
||||
"00000000-0000-0000-0000-000000000103": [
|
||||
[
|
||||
"1",
|
||||
"02:00:00:00:01:12",
|
||||
"FF:FF:FF:FF:FF:FF",
|
||||
"",
|
||||
"Netzzugang",
|
||||
"0x806"
|
||||
],
|
||||
[
|
||||
"1",
|
||||
"192.168.0.20",
|
||||
"192.168.0.30",
|
||||
"ARP",
|
||||
"Vermittlung",
|
||||
"Suche nach MAC für 192.168.0.30 [op=REQUEST, sender=02:00:00:00:01:12|192.168.0.20, target=FF:FF:FF:FF:FF:FF|192.168.0.30]"
|
||||
],
|
||||
[
|
||||
"2",
|
||||
"02:00:00:00:01:13",
|
||||
"02:00:00:00:01:12",
|
||||
"",
|
||||
"Netzzugang",
|
||||
"0x806"
|
||||
],
|
||||
[
|
||||
"2",
|
||||
"192.168.0.30",
|
||||
"192.168.0.20",
|
||||
"ARP",
|
||||
"Vermittlung",
|
||||
"MAC ist 02:00:00:00:01:13 [op=REPLY, sender=02:00:00:00:01:13|192.168.0.30, target=02:00:00:00:01:12|192.168.0.20]"
|
||||
],
|
||||
[
|
||||
"3",
|
||||
"02:00:00:00:01:12",
|
||||
"02:00:00:00:01:13",
|
||||
"",
|
||||
"Netzzugang",
|
||||
"0x800"
|
||||
],
|
||||
[
|
||||
"3",
|
||||
"192.168.0.20",
|
||||
"192.168.0.30",
|
||||
"IP",
|
||||
"Vermittlung",
|
||||
"Protokoll: 6, TTL: 64"
|
||||
],
|
||||
[
|
||||
"3",
|
||||
"192.168.0.20:58845",
|
||||
"192.168.0.30:55555",
|
||||
"TCP",
|
||||
"Transport",
|
||||
"SYN, SEQ: 2.000.000"
|
||||
]
|
||||
]
|
||||
},
|
||||
"layeredRows": {
|
||||
"00000000-0000-0000-0000-000000000101": [
|
||||
[
|
||||
"1",
|
||||
"02:00:00:00:01:12",
|
||||
"FF:FF:FF:FF:FF:FF",
|
||||
"",
|
||||
"Netzzugang",
|
||||
"0x806"
|
||||
],
|
||||
[
|
||||
"1",
|
||||
"192.168.0.20",
|
||||
"192.168.0.30",
|
||||
"ARP",
|
||||
"Vermittlung",
|
||||
"Suche nach MAC für 192.168.0.30 [op=REQUEST, sender=02:00:00:00:01:12|192.168.0.20, target=FF:FF:FF:FF:FF:FF|192.168.0.30]"
|
||||
]
|
||||
],
|
||||
"00000000-0000-0000-0000-000000000102": [
|
||||
[
|
||||
"1",
|
||||
"02:00:00:00:01:12",
|
||||
"FF:FF:FF:FF:FF:FF",
|
||||
"",
|
||||
"Netzzugang",
|
||||
"0x806"
|
||||
],
|
||||
[
|
||||
"1",
|
||||
"192.168.0.20",
|
||||
"192.168.0.30",
|
||||
"ARP",
|
||||
"Vermittlung",
|
||||
"Suche nach MAC für 192.168.0.30 [op=REQUEST, sender=02:00:00:00:01:12|192.168.0.20, target=FF:FF:FF:FF:FF:FF|192.168.0.30]"
|
||||
],
|
||||
[
|
||||
"2",
|
||||
"02:00:00:00:01:13",
|
||||
"02:00:00:00:01:12",
|
||||
"",
|
||||
"Netzzugang",
|
||||
"0x806"
|
||||
],
|
||||
[
|
||||
"2",
|
||||
"192.168.0.30",
|
||||
"192.168.0.20",
|
||||
"ARP",
|
||||
"Vermittlung",
|
||||
"MAC ist 02:00:00:00:01:13 [op=REPLY, sender=02:00:00:00:01:13|192.168.0.30, target=02:00:00:00:01:12|192.168.0.20]"
|
||||
],
|
||||
[
|
||||
"3",
|
||||
"02:00:00:00:01:12",
|
||||
"02:00:00:00:01:13",
|
||||
"",
|
||||
"Netzzugang",
|
||||
"0x800"
|
||||
],
|
||||
[
|
||||
"3",
|
||||
"192.168.0.20",
|
||||
"192.168.0.30",
|
||||
"IP",
|
||||
"Vermittlung",
|
||||
"Protokoll: 6, TTL: 64"
|
||||
],
|
||||
[
|
||||
"3",
|
||||
"58845",
|
||||
"55555",
|
||||
"TCP",
|
||||
"Transport",
|
||||
"SYN, SEQ: 2.000.000"
|
||||
]
|
||||
],
|
||||
"00000000-0000-0000-0000-000000000103": [
|
||||
[
|
||||
"1",
|
||||
"02:00:00:00:01:12",
|
||||
"FF:FF:FF:FF:FF:FF",
|
||||
"",
|
||||
"Netzzugang",
|
||||
"0x806"
|
||||
],
|
||||
[
|
||||
"1",
|
||||
"192.168.0.20",
|
||||
"192.168.0.30",
|
||||
"ARP",
|
||||
"Vermittlung",
|
||||
"Suche nach MAC für 192.168.0.30 [op=REQUEST, sender=02:00:00:00:01:12|192.168.0.20, target=FF:FF:FF:FF:FF:FF|192.168.0.30]"
|
||||
],
|
||||
[
|
||||
"2",
|
||||
"02:00:00:00:01:13",
|
||||
"02:00:00:00:01:12",
|
||||
"",
|
||||
"Netzzugang",
|
||||
"0x806"
|
||||
],
|
||||
[
|
||||
"2",
|
||||
"192.168.0.30",
|
||||
"192.168.0.20",
|
||||
"ARP",
|
||||
"Vermittlung",
|
||||
"MAC ist 02:00:00:00:01:13 [op=REPLY, sender=02:00:00:00:01:13|192.168.0.30, target=02:00:00:00:01:12|192.168.0.20]"
|
||||
],
|
||||
[
|
||||
"3",
|
||||
"02:00:00:00:01:12",
|
||||
"02:00:00:00:01:13",
|
||||
"",
|
||||
"Netzzugang",
|
||||
"0x800"
|
||||
],
|
||||
[
|
||||
"3",
|
||||
"192.168.0.20",
|
||||
"192.168.0.30",
|
||||
"IP",
|
||||
"Vermittlung",
|
||||
"Protokoll: 6, TTL: 64"
|
||||
],
|
||||
[
|
||||
"3",
|
||||
"58845",
|
||||
"55555",
|
||||
"TCP",
|
||||
"Transport",
|
||||
"SYN, SEQ: 2.000.000"
|
||||
]
|
||||
]
|
||||
},
|
||||
"events": [
|
||||
[
|
||||
211,
|
||||
"server",
|
||||
"null"
|
||||
],
|
||||
[
|
||||
212,
|
||||
"client",
|
||||
"null"
|
||||
],
|
||||
[
|
||||
213,
|
||||
"other",
|
||||
"null"
|
||||
],
|
||||
[
|
||||
500,
|
||||
"client",
|
||||
"call verbinden 192.168.0.30:55555"
|
||||
],
|
||||
[
|
||||
8810,
|
||||
"client",
|
||||
"Fehler beim Verbindungsaufbau\nZeitüberschreitung beim Verbindungsaufbau"
|
||||
]
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user