test(java-oracle): ArpRun records ARP as Java FILIUS runs it

Sends to addresses no card has on the new arp-routed network (ping on the
LAN and behind a router, two UDP datagrams, one behind a failing one):
frames and calls. ScenarioNetwork builds routers and their interfaces.

Measured: ARP asks twice, a round trip each, then host unreachable; the
thread that waits is the ping's caller, the router's IP thread, or the
node's transport thread per protocol, which blocks the next send.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-09-30 17:01:39 +00:00
co-authored by Claude Opus 5.5
parent 8869c865b1
commit 67fb608412
9 changed files with 651 additions and 8 deletions
@@ -0,0 +1,51 @@
{
"frames": {
"00000000-0000-0000-0000-000000000301": [
{
"time": 716,
"source": "02:00:00:00:03:11",
"destination": "FF:FF:FF:FF:FF:FF",
"arp": 1,
"senderIp": "10.0.0.2",
"targetIp": "10.0.0.9"
},
{
"time": 3467,
"source": "02:00:00:00:03:11",
"destination": "FF:FF:FF:FF:FF:FF",
"arp": 1,
"senderIp": "10.0.0.2",
"targetIp": "10.0.0.9"
}
],
"00000000-0000-0000-0000-000000000302": [
{
"time": 837,
"source": "02:00:00:00:03:11",
"destination": "FF:FF:FF:FF:FF:FF",
"arp": 1,
"senderIp": "10.0.0.2",
"targetIp": "10.0.0.9"
},
{
"time": 3578,
"source": "02:00:00:00:03:11",
"destination": "FF:FF:FF:FF:FF:FF",
"arp": 1,
"senderIp": "10.0.0.2",
"targetIp": "10.0.0.9"
}
],
"00000000-0000-0000-0000-000000000303": []
},
"events": [
[
712,
"sendProbe 10.0.0.9 called"
],
[
6222,
"sendProbe 10.0.0.9 returned ICMP 3/1 from 127.0.0.1"
]
]
}
@@ -0,0 +1,92 @@
{
"frames": {
"00000000-0000-0000-0000-000000000301": [
{
"time": 720,
"source": "02:00:00:00:03:11",
"destination": "FF:FF:FF:FF:FF:FF",
"arp": 1,
"senderIp": "10.0.0.2",
"targetIp": "10.0.0.1"
},
{
"time": 955,
"source": "02:00:00:00:03:21",
"destination": "02:00:00:00:03:11",
"arp": 2,
"senderIp": "10.0.0.1",
"targetIp": "10.0.0.2"
},
{
"time": 959,
"source": "02:00:00:00:03:11",
"destination": "02:00:00:00:03:21",
"icmp": 8
},
{
"time": 6685,
"source": "02:00:00:00:03:21",
"destination": "02:00:00:00:03:11",
"icmp": 3
}
],
"00000000-0000-0000-0000-000000000302": [
{
"time": 841,
"source": "02:00:00:00:03:11",
"destination": "FF:FF:FF:FF:FF:FF",
"arp": 1,
"senderIp": "10.0.0.2",
"targetIp": "10.0.0.1"
},
{
"time": 843,
"source": "02:00:00:00:03:21",
"destination": "02:00:00:00:03:11",
"arp": 2,
"senderIp": "10.0.0.1",
"targetIp": "10.0.0.2"
},
{
"time": 1072,
"source": "02:00:00:00:03:11",
"destination": "02:00:00:00:03:21",
"icmp": 8
},
{
"time": 6574,
"source": "02:00:00:00:03:21",
"destination": "02:00:00:00:03:11",
"icmp": 3
}
],
"00000000-0000-0000-0000-000000000303": [
{
"time": 1128,
"source": "02:00:00:00:03:22",
"destination": "FF:FF:FF:FF:FF:FF",
"arp": 1,
"senderIp": "20.0.0.1",
"targetIp": "20.0.0.9"
},
{
"time": 3878,
"source": "02:00:00:00:03:22",
"destination": "FF:FF:FF:FF:FF:FF",
"arp": 1,
"senderIp": "20.0.0.1",
"targetIp": "20.0.0.9"
}
]
},
"events": [
[
716,
"sendProbe 20.0.0.9 called"
],
[
3709,
"sendProbe 20.0.0.9 returned null"
]
]
}
@@ -0,0 +1,141 @@
{
"frames": {
"00000000-0000-0000-0000-000000000301": [
{
"time": 724,
"source": "02:00:00:00:03:11",
"destination": "FF:FF:FF:FF:FF:FF",
"arp": 1,
"senderIp": "10.0.0.2",
"targetIp": "10.0.0.9"
},
{
"time": 3475,
"source": "02:00:00:00:03:11",
"destination": "FF:FF:FF:FF:FF:FF",
"arp": 1,
"senderIp": "10.0.0.2",
"targetIp": "10.0.0.9"
},
{
"time": 6230,
"source": "02:00:00:00:03:11",
"destination": "FF:FF:FF:FF:FF:FF",
"arp": 1,
"senderIp": "10.0.0.2",
"targetIp": "10.0.0.1"
},
{
"time": 6453,
"source": "02:00:00:00:03:21",
"destination": "02:00:00:00:03:11",
"arp": 2,
"senderIp": "10.0.0.1",
"targetIp": "10.0.0.2"
},
{
"time": 6453,
"source": "02:00:00:00:03:11",
"destination": "02:00:00:00:03:21",
"sourceIp": "10.0.0.2",
"destinationIp": "20.0.0.2",
"protocol": 17,
"sourcePort": 64055,
"destinationPort": 9,
"payload": "dahinter"
}
],
"00000000-0000-0000-0000-000000000302": [
{
"time": 846,
"source": "02:00:00:00:03:11",
"destination": "FF:FF:FF:FF:FF:FF",
"arp": 1,
"senderIp": "10.0.0.2",
"targetIp": "10.0.0.9"
},
{
"time": 3586,
"source": "02:00:00:00:03:11",
"destination": "FF:FF:FF:FF:FF:FF",
"arp": 1,
"senderIp": "10.0.0.2",
"targetIp": "10.0.0.9"
},
{
"time": 6341,
"source": "02:00:00:00:03:11",
"destination": "FF:FF:FF:FF:FF:FF",
"arp": 1,
"senderIp": "10.0.0.2",
"targetIp": "10.0.0.1"
},
{
"time": 6342,
"source": "02:00:00:00:03:21",
"destination": "02:00:00:00:03:11",
"arp": 2,
"senderIp": "10.0.0.1",
"targetIp": "10.0.0.2"
},
{
"time": 6566,
"source": "02:00:00:00:03:11",
"destination": "02:00:00:00:03:21",
"sourceIp": "10.0.0.2",
"destinationIp": "20.0.0.2",
"protocol": 17,
"sourcePort": 64055,
"destinationPort": 9,
"payload": "dahinter"
}
],
"00000000-0000-0000-0000-000000000303": [
{
"time": 6622,
"source": "02:00:00:00:03:22",
"destination": "FF:FF:FF:FF:FF:FF",
"arp": 1,
"senderIp": "20.0.0.1",
"targetIp": "20.0.0.2"
},
{
"time": 6622,
"source": "02:00:00:00:03:13",
"destination": "02:00:00:00:03:22",
"arp": 2,
"senderIp": "20.0.0.2",
"targetIp": "20.0.0.1"
},
{
"time": 6733,
"source": "02:00:00:00:03:22",
"destination": "02:00:00:00:03:13",
"sourceIp": "10.0.0.2",
"destinationIp": "20.0.0.2",
"protocol": 17,
"sourcePort": 64055,
"destinationPort": 9,
"payload": "dahinter"
}
]
},
"events": [
[
716,
"senden verloren called"
],
[
720,
"senden verloren returned "
],
[
720,
"senden dahinter called"
],
[
6230,
"senden dahinter returned "
]
]
}
@@ -0,0 +1,91 @@
{
"frames": {
"00000000-0000-0000-0000-000000000301": [
{
"time": 722,
"source": "02:00:00:00:03:11",
"destination": "FF:FF:FF:FF:FF:FF",
"arp": 1,
"senderIp": "10.0.0.2",
"targetIp": "10.0.0.9"
},
{
"time": 3473,
"source": "02:00:00:00:03:11",
"destination": "FF:FF:FF:FF:FF:FF",
"arp": 1,
"senderIp": "10.0.0.2",
"targetIp": "10.0.0.9"
},
{
"time": 6228,
"source": "02:00:00:00:03:11",
"destination": "FF:FF:FF:FF:FF:FF",
"arp": 1,
"senderIp": "10.0.0.2",
"targetIp": "10.0.0.9"
},
{
"time": 8978,
"source": "02:00:00:00:03:11",
"destination": "FF:FF:FF:FF:FF:FF",
"arp": 1,
"senderIp": "10.0.0.2",
"targetIp": "10.0.0.9"
}
],
"00000000-0000-0000-0000-000000000302": [
{
"time": 844,
"source": "02:00:00:00:03:11",
"destination": "FF:FF:FF:FF:FF:FF",
"arp": 1,
"senderIp": "10.0.0.2",
"targetIp": "10.0.0.9"
},
{
"time": 3584,
"source": "02:00:00:00:03:11",
"destination": "FF:FF:FF:FF:FF:FF",
"arp": 1,
"senderIp": "10.0.0.2",
"targetIp": "10.0.0.9"
},
{
"time": 6339,
"source": "02:00:00:00:03:11",
"destination": "FF:FF:FF:FF:FF:FF",
"arp": 1,
"senderIp": "10.0.0.2",
"targetIp": "10.0.0.9"
},
{
"time": 9090,
"source": "02:00:00:00:03:11",
"destination": "FF:FF:FF:FF:FF:FF",
"arp": 1,
"senderIp": "10.0.0.2",
"targetIp": "10.0.0.9"
}
],
"00000000-0000-0000-0000-000000000303": []
},
"events": [
[
713,
"senden eins called"
],
[
718,
"senden eins returned "
],
[
718,
"senden zwei called"
],
[
6228,
"senden zwei returned "
]
]
}
@@ -0,0 +1,111 @@
{
"seed": 61,
"nodes": [
{
"id": "00000000-0000-0000-0000-000000000301",
"kind": "pc",
"ports": [
{
"id": "00000000-0000-0000-0000-000000000311",
"label": "eth0"
}
]
},
{
"id": "00000000-0000-0000-0000-000000000302",
"kind": "router",
"ports": [
{
"id": "00000000-0000-0000-0000-000000000321",
"label": "eth0"
},
{
"id": "00000000-0000-0000-0000-000000000322",
"label": "eth1"
}
]
},
{
"id": "00000000-0000-0000-0000-000000000303",
"kind": "pc",
"ports": [
{
"id": "00000000-0000-0000-0000-000000000313",
"label": "eth0"
}
]
},
{
"id": "00000000-0000-0000-0000-000000000304",
"kind": "networkSwitch",
"ports": [
{
"id": "00000000-0000-0000-0000-000000000341",
"label": "sw1"
},
{
"id": "00000000-0000-0000-0000-000000000342",
"label": "sw2"
},
{
"id": "00000000-0000-0000-0000-000000000343",
"label": "sw3"
}
]
}
],
"links": [
{
"id": "00000000-0000-0000-0000-00000000F301",
"sourceNode": "00000000-0000-0000-0000-000000000301",
"sourcePort": "00000000-0000-0000-0000-000000000311",
"targetNode": "00000000-0000-0000-0000-000000000304",
"targetPort": "00000000-0000-0000-0000-000000000341"
},
{
"id": "00000000-0000-0000-0000-00000000F302",
"sourceNode": "00000000-0000-0000-0000-000000000302",
"sourcePort": "00000000-0000-0000-0000-000000000321",
"targetNode": "00000000-0000-0000-0000-000000000304",
"targetPort": "00000000-0000-0000-0000-000000000342"
},
{
"id": "00000000-0000-0000-0000-00000000F303",
"sourceNode": "00000000-0000-0000-0000-000000000302",
"sourcePort": "00000000-0000-0000-0000-000000000322",
"targetNode": "00000000-0000-0000-0000-000000000303",
"targetPort": "00000000-0000-0000-0000-000000000313"
}
],
"devices": {
"00000000-0000-0000-0000-000000000301": {
"ip": "10.0.0.2",
"mask": "255.255.255.0",
"gateway": "10.0.0.1"
},
"00000000-0000-0000-0000-000000000302": {
"ip": "10.0.0.1",
"mask": "255.255.255.0"
},
"00000000-0000-0000-0000-000000000303": {
"ip": "20.0.0.2",
"mask": "255.255.255.0",
"gateway": "20.0.0.1"
}
},
"interfaces": [
{
"node": "00000000-0000-0000-0000-000000000302",
"port": "00000000-0000-0000-0000-000000000321",
"ip": "10.0.0.1",
"mask": "255.255.255.0"
},
{
"node": "00000000-0000-0000-0000-000000000302",
"port": "00000000-0000-0000-0000-000000000322",
"ip": "20.0.0.1",
"mask": "255.255.255.0"
}
],
"steps": []
}