<?xml version="1.0" encoding="UTF-8"?>
<robot generator="Robot 7.4.2 (Python 3.12.3 on linux)" generated="2026-04-17T08:40:26.143154" rpa="false" schemaversion="5">
<suite id="s1" name="Basic Pub Sub &amp; Multi Pub Sub &amp; Network Crash &amp; Pub Crash &amp; Rpc N To N Test &amp; Rpc Ping Test &amp; Rpc Reconnect Test &amp; Sub Crash &amp; Sub Send Crash">
<suite id="s1-s1" name="Basic Pub Sub" source="/home/runner/work/ecal-test-suite/ecal-test-suite/integration_tests/basic_pub_sub/robottests/basic_pub_sub.robot">
<kw name="Init Test Context" type="SETUP">
<kw name="Set Test Context" owner="GlobalPathsLibrary">
<arg>basic_pub_sub</arg>
<arg>basic_pub_sub</arg>
<doc>Sets the test folder and tag prefix if it's a valid test case.
The folder must exist under integration_tests/ and contain typical test structure.</doc>
<status status="PASS" start="2026-04-17T08:40:26.280265" elapsed="0.000198"/>
</kw>
<kw name="Get Build Script Path" owner="GlobalPathsLibrary">
<msg time="2026-04-17T08:40:26.280722" level="INFO">${build} = /home/runner/work/ecal-test-suite/ecal-test-suite/integration_tests/basic_pub_sub/scripts/build_images.sh</msg>
<var>${build}</var>
<status status="PASS" start="2026-04-17T08:40:26.280601" elapsed="0.000147"/>
</kw>
<kw name="Get Network Name" owner="GlobalPathsLibrary">
<msg time="2026-04-17T08:40:26.280998" level="INFO">${net} = ecal_test_net</msg>
<var>${net}</var>
<status status="PASS" start="2026-04-17T08:40:26.280822" elapsed="0.000197"/>
</kw>
<kw name="Get Build Script Args" owner="GlobalPathsLibrary">
<msg time="2026-04-17T08:40:26.281178" level="INFO">${args} = ['basic_pub_sub']</msg>
<var>${args}</var>
<status status="PASS" start="2026-04-17T08:40:26.281089" elapsed="0.000107"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T08:40:26.281623" level="INFO">${BUILD_SCRIPT} = /home/runner/work/ecal-test-suite/ecal-test-suite/integration_tests/basic_pub_sub/scripts/build_images.sh</msg>
<arg>${BUILD_SCRIPT}</arg>
<arg>${build}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T08:40:26.281282" elapsed="0.000376"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T08:40:26.281977" level="INFO">${NETWORK} = ecal_test_net</msg>
<arg>${NETWORK}</arg>
<arg>${net}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T08:40:26.281745" elapsed="0.000263"/>
</kw>
<kw name="Get Test Description" owner="GlobalPathsLibrary">
<msg time="2026-04-17T08:40:26.282244" level="INFO">${desc} = This test checks basic communication between a single publisher and a single subscriber.

Test Setup:
- The publisher sends 4 messages, each 0.2 MB in size, on a single topic.
- The subscriber listens...</msg>
<var>${desc}</var>
<doc>Reads the *** Comments *** section from the .robot file and returns it as a string.</doc>
<status status="PASS" start="2026-04-17T08:40:26.282081" elapsed="0.000183"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T08:40:26.282571" level="INFO">This test checks basic communication between a single publisher and a single subscriber.

Test Setup:
- The publisher sends 4 messages, each 0.2 MB in size, on a single topic.
- The subscriber listens on that topic for 6 seconds and counts received messages.

Covered eCAL modes:
- local_shm
- local_udp
- local_tcp
- network_udp
- network_tcp

Goals:
- Ensure that basic 1:1 communication works reliably across all transport modes.
- Validate correct transmission of payloads (200 KB).

Success Criteria:
- The subscriber receives exactly 4 messages.
- If true, it exits with code 0.
- Otherwise, it exits with code 1.</msg>
<arg>${desc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T08:40:26.282343" elapsed="0.000265"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>[SETUP] Building Docker image...</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-17T08:40:26.282682" elapsed="0.000180"/>
</kw>
<kw name="Run Process" owner="Process">
<msg time="2026-04-17T08:40:26.283235" level="INFO">Starting process:
/home/runner/work/ecal-test-suite/ecal-test-suite/integration_tests/basic_pub_sub/scripts/build_images.sh basic_pub_sub</msg>
<msg time="2026-04-17T08:40:26.283738" level="INFO">Waiting for process to complete.</msg>
<msg time="2026-04-17T08:40:51.024460" level="INFO">Process completed.</msg>
<msg time="2026-04-17T08:40:51.024661" level="INFO">${result} = &lt;result object with rc 0&gt;</msg>
<var>${result}</var>
<arg>${BUILD_SCRIPT}</arg>
<arg>@{args}</arg>
<doc>Runs a process and waits for it to complete.</doc>
<status status="PASS" start="2026-04-17T08:40:26.282967" elapsed="24.741719"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-17T08:40:51.025556" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${result.rc}</arg>
<arg>0</arg>
<arg>Failed to build Docker image!</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-04-17T08:40:51.024846" elapsed="0.000777"/>
</kw>
<kw name="Create Docker Network" owner="DockerLibrary">
<arg>${NETWORK}</arg>
<status status="PASS" start="2026-04-17T08:40:51.025734" elapsed="0.046597"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-17T08:40:54.073039" level="INFO">Slept 3 seconds.</msg>
<arg>3s</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-04-17T08:40:51.072558" elapsed="3.000607"/>
</kw>
<status status="PASS" start="2026-04-17T08:40:26.279722" elapsed="27.793547"/>
</kw>
<test id="s1-s1-t1" name="Basic Pub/Sub Local SHM" line="38">
<kw name="Run Local Pub Sub Test">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:40:54.074584" level="INFO">${IMAGE} = basic_pub_sub_local_shm</msg>
<var>${IMAGE}</var>
<arg>${BASE_IMAGE}_${layer_tag}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:40:54.074255" elapsed="0.000352"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:40:54.074893" level="INFO">${CONTAINER} = basic_local_local_shm</msg>
<var>${CONTAINER}</var>
<arg>basic_local_${layer_tag}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:40:54.074686" elapsed="0.000226"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>\n[INFO] Running local pub/sub test in mode: ${layer_tag}</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-17T08:40:54.074986" elapsed="0.000229"/>
</kw>
<kw name="Start Container" owner="DockerLibrary">
<arg>${CONTAINER}</arg>
<arg>${IMAGE}</arg>
<arg>local</arg>
<arg>${layer_tag}</arg>
<arg>test_topic</arg>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-17T08:40:54.075320" elapsed="0.119585"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-17T08:41:03.195593" level="INFO">Slept 9 seconds.</msg>
<arg>9s</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-04-17T08:40:54.195082" elapsed="9.000645"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-17T08:41:03.199168" level="INFO">${logs} = [Entrypoint] Starting subscriber and publisher in mode local_shm
Shared memory monitoring is enabled (domain: ecal_mon - queue size: 1024)
1776415254196 ms | e3fe74e20e5f | pub_test | 6 | info | Using...</msg>
<var>${logs}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-17T08:41:03.195909" elapsed="0.003290"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>\n[CONTAINER LOG: LOCAL PUB+SUB]\n${logs}</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-17T08:41:03.199319" elapsed="0.000336"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T08:41:03.200029" level="INFO">
[CONTAINER LOG: LOCAL PUB+SUB]
[Entrypoint] Starting subscriber and publisher in mode local_shm
Shared memory monitoring is enabled (domain: ecal_mon - queue size: 1024)
1776415254196 ms | e3fe74e20e5f | pub_test | 6 | info | Using built-in local time plugin.
[Publisher] Waiting for at least 1 subscriber(s) on topic: test_topic
[Publisher] Found 1 subscriber(s). Proceeding to send messages.
[Publisher] Send result: ✓, size: 209715 bytes
[Publisher] Send result: ✓, size: 209715 bytes
[Publisher] Send result: ✓, size: 209715 bytes
[Publisher] Send result: ✓, size: 209715 bytes
[Publisher] Finished sending.
Shared memory monitoring is enabled (domain: ecal_mon - queue size: 1024)
1776415255197 ms | e3fe74e20e5f | sub_test | 12 | info | Using built-in local time plugin.


[Subscriber] Ready and waiting...

[Subscriber] Received 209715 bytes (message 1)
[Subscriber] Received 209715 bytes (message 2)
[Subscriber] Received 209715 bytes (message 3)
[Subscriber] Received 209715 bytes (message 4)
[Subscriber] Received 4 messages.
</msg>
<arg>\n[CONTAINER LOG: LOCAL PUB+SUB]\n${logs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T08:41:03.199774" elapsed="0.000353"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-17T08:41:03.201391" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-17T08:41:03.200208" elapsed="0.001206"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-17T08:41:03.201761" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${exit_code}</arg>
<arg>0</arg>
<arg>Local communication test failed!</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-04-17T08:41:03.201523" elapsed="0.000287"/>
</kw>
<kw name="Log Test Summary" owner="DockerLibrary">
<arg>Basic Pub/Sub Local ${layer_tag}</arg>
<arg>${True}</arg>
<status status="PASS" start="2026-04-17T08:41:03.201894" elapsed="0.000140"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-17T08:41:03.202137" elapsed="0.005029"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-17T08:41:04.207653" level="INFO">Slept 1 second.</msg>
<arg>1s</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-04-17T08:41:03.207270" elapsed="1.000504"/>
</kw>
<arg>local_shm</arg>
<status status="PASS" start="2026-04-17T08:40:54.073985" elapsed="10.133895"/>
</kw>
<tag>basic_pub_sub_local_shm</tag>
<status status="PASS" start="2026-04-17T08:40:54.073359" elapsed="10.134672"/>
</test>
<test id="s1-s1-t2" name="Basic Pub/Sub Local UDP" line="42">
<kw name="Run Local Pub Sub Test">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:41:04.209763" level="INFO">${IMAGE} = basic_pub_sub_local_udp</msg>
<var>${IMAGE}</var>
<arg>${BASE_IMAGE}_${layer_tag}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:41:04.209426" elapsed="0.000359"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:41:04.210067" level="INFO">${CONTAINER} = basic_local_local_udp</msg>
<var>${CONTAINER}</var>
<arg>basic_local_${layer_tag}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:41:04.209869" elapsed="0.000217"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>\n[INFO] Running local pub/sub test in mode: ${layer_tag}</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-17T08:41:04.210157" elapsed="0.000234"/>
</kw>
<kw name="Start Container" owner="DockerLibrary">
<arg>${CONTAINER}</arg>
<arg>${IMAGE}</arg>
<arg>local</arg>
<arg>${layer_tag}</arg>
<arg>test_topic</arg>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-17T08:41:04.210520" elapsed="0.116482"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-17T08:41:13.327780" level="INFO">Slept 9 seconds.</msg>
<arg>9s</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-04-17T08:41:04.327207" elapsed="9.000695"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-17T08:41:13.331219" level="INFO">${logs} = [Entrypoint] Starting subscriber and publisher in mode local_udp
1776415264328 ms | 2ff86edd7910 | pub_test | 7 | info | Using built-in local time plugin.
[Publisher] Waiting for at least 1 subscriber...</msg>
<var>${logs}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-17T08:41:13.328077" elapsed="0.003171"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>\n[CONTAINER LOG: LOCAL PUB+SUB]\n${logs}</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-17T08:41:13.331359" elapsed="0.000348"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T08:41:13.332076" level="INFO">
[CONTAINER LOG: LOCAL PUB+SUB]
[Entrypoint] Starting subscriber and publisher in mode local_udp
1776415264328 ms | 2ff86edd7910 | pub_test | 7 | info | Using built-in local time plugin.
[Publisher] Waiting for at least 1 subscriber(s) on topic: test_topic
[Publisher] Found 1 subscriber(s). Proceeding to send messages.
[Publisher] Send result: ✓, size: 209715 bytes
[Publisher] Send result: ✓, size: 209715 bytes
[Publisher] Send result: ✓, size: 209715 bytes
[Publisher] Send result: ✓, size: 209715 bytes
[Publisher] Finished sending.
1776415265330 ms | 2ff86edd7910 | sub_test | 13 | info | Using built-in local time plugin.


[Subscriber] Ready and waiting...

[Subscriber] Received 209715 bytes (message 1)
[Subscriber] Received 209715 bytes (message 2)
[Subscriber] Received 209715 bytes (message 3)
[Subscriber] Received 209715 bytes (message 4)
[Subscriber] Received 4 messages.
</msg>
<arg>\n[CONTAINER LOG: LOCAL PUB+SUB]\n${logs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T08:41:13.331836" elapsed="0.000282"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-17T08:41:13.333303" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-17T08:41:13.332195" elapsed="0.001132"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-17T08:41:13.333692" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${exit_code}</arg>
<arg>0</arg>
<arg>Local communication test failed!</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-04-17T08:41:13.333409" elapsed="0.000331"/>
</kw>
<kw name="Log Test Summary" owner="DockerLibrary">
<arg>Basic Pub/Sub Local ${layer_tag}</arg>
<arg>${True}</arg>
<status status="PASS" start="2026-04-17T08:41:13.333820" elapsed="0.000140"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-17T08:41:13.334074" elapsed="0.005112"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-17T08:41:14.339742" level="INFO">Slept 1 second.</msg>
<arg>1s</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-04-17T08:41:13.339300" elapsed="1.000562"/>
</kw>
<arg>local_udp</arg>
<status status="PASS" start="2026-04-17T08:41:04.209199" elapsed="10.130756"/>
</kw>
<tag>basic_pub_sub_local_udp</tag>
<status status="PASS" start="2026-04-17T08:41:04.208756" elapsed="10.131351"/>
</test>
<test id="s1-s1-t3" name="Basic Pub/Sub Local TCP" line="46">
<kw name="Run Local Pub Sub Test">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:41:14.341918" level="INFO">${IMAGE} = basic_pub_sub_local_tcp</msg>
<var>${IMAGE}</var>
<arg>${BASE_IMAGE}_${layer_tag}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:41:14.341625" elapsed="0.000316"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:41:14.342327" level="INFO">${CONTAINER} = basic_local_local_tcp</msg>
<var>${CONTAINER}</var>
<arg>basic_local_${layer_tag}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:41:14.342101" elapsed="0.000246"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>\n[INFO] Running local pub/sub test in mode: ${layer_tag}</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-17T08:41:14.342421" elapsed="0.000263"/>
</kw>
<kw name="Start Container" owner="DockerLibrary">
<arg>${CONTAINER}</arg>
<arg>${IMAGE}</arg>
<arg>local</arg>
<arg>${layer_tag}</arg>
<arg>test_topic</arg>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-17T08:41:14.342777" elapsed="0.121520"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-17T08:41:23.464990" level="INFO">Slept 9 seconds.</msg>
<arg>9s</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-04-17T08:41:14.464472" elapsed="9.000648"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-17T08:41:23.468523" level="INFO">${logs} = [Entrypoint] Starting subscriber and publisher in mode local_tcp
1776415274466 ms | 5aca3fa32f6f | pub_test | 7 | info | Using built-in local time plugin.
[Publisher] Waiting for at least 1 subscriber...</msg>
<var>${logs}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-17T08:41:23.465301" elapsed="0.003253"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>\n[CONTAINER LOG: LOCAL PUB+SUB]\n${logs}</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-17T08:41:23.468678" elapsed="0.000319"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T08:41:23.469438" level="INFO">
[CONTAINER LOG: LOCAL PUB+SUB]
[Entrypoint] Starting subscriber and publisher in mode local_tcp
1776415274466 ms | 5aca3fa32f6f | pub_test | 7 | info | Using built-in local time plugin.
[Publisher] Waiting for at least 1 subscriber(s) on topic: test_topic
1776415276468 ms | 5aca3fa32f6f | pub_test | 7 | info | CTCPReaderLayer - TCPPubSub (Info) -Publisher :::0: Created publisher and waiting for clients.
[Publisher] Found 1 subscriber(s). Proceeding to send messages.
1776415276469 ms | 5aca3fa32f6f | pub_test | 7 | info | CTCPReaderLayer - TCPPubSub (Info) -Publisher :::41013: Subscriber ::ffff:172.17.0.3:41814 has connected.
[Publisher] Send result: ✓, size: 209715 bytes
[Publisher] Send result: ✓, size: 209715 bytes
[Publisher] Send result: ✓, size: 209715 bytes
[Publisher] Send result: ✓, size: 209715 bytes
[Publisher] Finished sending.
1776415279970 ms | 5aca3fa32f6f | pub_test | 7 | error | CTCPReaderLayer - TCPPubSub (Error) -Publisher ?: Error while waiting for subsriber: Operation aborted.
1776415275468 ms | 5aca3fa32f6f | sub_test | 13 | info | Using built-in local time plugin.


[Subscriber] Ready and waiting...

[Subscriber] Received 209715 bytes (message 1)
[Subscriber] Received 209715 bytes (message 2)
[Subscriber] Received 209715 bytes (message 3)
[Subscriber] Received 209715 bytes (message 4)
1776415279970 ms | 5aca3fa32f6f | sub_test | 13 | error | CTCPReaderLayer - TCPPubSub (Error) -SubscriberSession 172.17.0.3:41814-&gt;5aca3fa32f6f:41013: Error reading header length: End of file
1776415279971 ms | 5aca3fa32f6f | sub_test | 13 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.17.0.3:41828: Failed connecting to publisher 5aca3fa32f6f:41013: Connection refused
1776415279971 ms | 5aca3fa32f6f | sub_test | 13 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.17.0.3:41830: Failed connecting to publisher 5aca3fa32f6f:41013: Connection refused
1776415279972 ms | 5aca3fa32f6f | sub_test | 13 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.17.0.3:41832: Failed connecting to publisher 5aca3fa32f6f:41013: Connection refused
1776415279972 ms | 5aca3fa32f6f | sub_test | 13 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.17.0.3:41834: Failed connecting to publisher 5aca3fa32f6f:41013: Connection refused
1776415279972 ms | 5aca3fa32f6f | sub_test | 13 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.17.0.3:41840: Failed connecting to publisher 5aca3fa32f6f:41013: Connection refused
[Subscriber] Received 4 messages.
</msg>
<arg>\n[CONTAINER LOG: LOCAL PUB+SUB]\n${logs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T08:41:23.469130" elapsed="0.000399"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-17T08:41:23.470818" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-17T08:41:23.469618" elapsed="0.001223"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-17T08:41:23.471151" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${exit_code}</arg>
<arg>0</arg>
<arg>Local communication test failed!</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-04-17T08:41:23.470926" elapsed="0.000271"/>
</kw>
<kw name="Log Test Summary" owner="DockerLibrary">
<arg>Basic Pub/Sub Local ${layer_tag}</arg>
<arg>${True}</arg>
<status status="PASS" start="2026-04-17T08:41:23.471275" elapsed="0.000152"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-17T08:41:23.471539" elapsed="0.005093"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-17T08:41:24.477144" level="INFO">Slept 1 second.</msg>
<arg>1s</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-04-17T08:41:23.476738" elapsed="1.000547"/>
</kw>
<arg>local_tcp</arg>
<status status="PASS" start="2026-04-17T08:41:14.341343" elapsed="10.136037"/>
</kw>
<tag>basic_pub_sub_local_tcp</tag>
<status status="PASS" start="2026-04-17T08:41:14.340932" elapsed="10.136626"/>
</test>
<test id="s1-s1-t4" name="Basic Pub/Sub Network UDP" line="50">
<kw name="Run Network Pub Sub Test">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:41:24.479318" level="INFO">${IMAGE} = basic_pub_sub_network_udp</msg>
<var>${IMAGE}</var>
<arg>${BASE_IMAGE}_${layer_tag}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:41:24.479031" elapsed="0.000309"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:41:24.479650" level="INFO">${TOPIC} = topic_network_udp</msg>
<var>${TOPIC}</var>
<arg>topic_${layer_tag}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:41:24.479414" elapsed="0.000261"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:41:24.479945" level="INFO">${SUB_NAME} = sub_network_udp</msg>
<var>${SUB_NAME}</var>
<arg>sub_${layer_tag}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:41:24.479747" elapsed="0.000215"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:41:24.480210" level="INFO">${PUB_NAME} = pub_network_udp</msg>
<var>${PUB_NAME}</var>
<arg>pub_${layer_tag}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:41:24.480027" elapsed="0.000200"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>\n[INFO] Running network pub/sub test in mode: ${layer_tag}</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-17T08:41:24.480293" elapsed="0.000198"/>
</kw>
<kw name="Start Container" owner="DockerLibrary">
<arg>${SUB_NAME}</arg>
<arg>${IMAGE}</arg>
<arg>subscriber</arg>
<arg>${layer_tag}</arg>
<arg>${TOPIC}</arg>
<arg>${SUB_NAME}</arg>
<arg>network=${NETWORK}</arg>
<status status="PASS" start="2026-04-17T08:41:24.480616" elapsed="0.141197"/>
</kw>
<kw name="Start Container" owner="DockerLibrary">
<arg>${PUB_NAME}</arg>
<arg>${IMAGE}</arg>
<arg>publisher</arg>
<arg>${layer_tag}</arg>
<arg>${TOPIC}</arg>
<arg>${PUB_NAME}</arg>
<arg>network=${NETWORK}</arg>
<status status="PASS" start="2026-04-17T08:41:24.622039" elapsed="0.132712"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-17T08:41:33.755431" level="INFO">Slept 9 seconds.</msg>
<arg>9s</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-04-17T08:41:24.754945" elapsed="9.000654"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-17T08:41:33.758833" level="INFO">${log_sub} = [Entrypoint] Starting subscriber in mode network_udp
1776415284623 ms | 6e155c4dcc03 | sub_network_udp | 7 | info | Using built-in local time plugin.


[Subscriber] Ready and waiting...

[Subscriber] ...</msg>
<var>${log_sub}</var>
<arg>${SUB_NAME}</arg>
<status status="PASS" start="2026-04-17T08:41:33.755785" elapsed="0.003079"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-17T08:41:33.761240" level="INFO">${log_pub} = [Entrypoint] Starting publisher in mode network_udp
1776415284756 ms | 716904210c40 | pub_network_udp | 7 | info | Using built-in local time plugin.
[Publisher] Waiting for at least 1 subscriber(s) on...</msg>
<var>${log_pub}</var>
<arg>${PUB_NAME}</arg>
<status status="PASS" start="2026-04-17T08:41:33.758987" elapsed="0.002282"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>\n[CONTAINER LOG: PUBLISHER]\n${log_pub}</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-17T08:41:33.761383" elapsed="0.000358"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T08:41:33.762087" level="INFO">
[CONTAINER LOG: PUBLISHER]
[Entrypoint] Starting publisher in mode network_udp
1776415284756 ms | 716904210c40 | pub_network_udp | 7 | info | Using built-in local time plugin.
[Publisher] Waiting for at least 1 subscriber(s) on topic: topic_network_udp
[Publisher] Found 1 subscriber(s). Proceeding to send messages.
[Publisher] Send result: ✓, size: 209715 bytes
[Publisher] Send result: ✓, size: 209715 bytes
[Publisher] Send result: ✓, size: 209715 bytes
[Publisher] Send result: ✓, size: 209715 bytes
[Publisher] Finished sending.
</msg>
<arg>\n[CONTAINER LOG: PUBLISHER]\n${log_pub}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T08:41:33.761860" elapsed="0.000267"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>\n[CONTAINER LOG: SUBSCRIBER]\n${log_sub}</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-17T08:41:33.762202" elapsed="0.000210"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T08:41:33.762760" level="INFO">
[CONTAINER LOG: SUBSCRIBER]
[Entrypoint] Starting subscriber in mode network_udp
1776415284623 ms | 6e155c4dcc03 | sub_network_udp | 7 | info | Using built-in local time plugin.


[Subscriber] Ready and waiting...

[Subscriber] Received 209715 bytes (message 1)
[Subscriber] Received 209715 bytes (message 2)
[Subscriber] Received 209715 bytes (message 3)
[Subscriber] Received 209715 bytes (message 4)
[Subscriber] Received 4 messages.
</msg>
<arg>\n[CONTAINER LOG: SUBSCRIBER]\n${log_sub}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T08:41:33.762550" elapsed="0.000244"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-17T08:41:33.763968" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${SUB_NAME}</arg>
<status status="PASS" start="2026-04-17T08:41:33.762868" elapsed="0.001122"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-17T08:41:33.764311" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${exit_code}</arg>
<arg>0</arg>
<arg>Subscriber failed in ${layer_tag}!</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-04-17T08:41:33.764072" elapsed="0.000285"/>
</kw>
<kw name="Log Test Summary" owner="DockerLibrary">
<arg>Basic Pub/Sub Network ${layer_tag}</arg>
<arg>${True}</arg>
<status status="PASS" start="2026-04-17T08:41:33.764431" elapsed="0.000180"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${SUB_NAME}</arg>
<status status="PASS" start="2026-04-17T08:41:33.764713" elapsed="0.005302"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${PUB_NAME}</arg>
<status status="PASS" start="2026-04-17T08:41:33.770138" elapsed="0.006543"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-17T08:41:34.777275" level="INFO">Slept 1 second.</msg>
<arg>1s</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-04-17T08:41:33.776818" elapsed="1.000579"/>
</kw>
<arg>network_udp</arg>
<arg>network</arg>
<status status="PASS" start="2026-04-17T08:41:24.478782" elapsed="10.298710"/>
</kw>
<tag>basic_pub_sub_network_udp</tag>
<status status="PASS" start="2026-04-17T08:41:24.478312" elapsed="10.299369"/>
</test>
<test id="s1-s1-t5" name="Basic Pub/Sub Network TCP" line="54">
<kw name="Run Network Pub Sub Test">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:41:34.779620" level="INFO">${IMAGE} = basic_pub_sub_network_tcp</msg>
<var>${IMAGE}</var>
<arg>${BASE_IMAGE}_${layer_tag}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:41:34.779306" elapsed="0.000336"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:41:34.779919" level="INFO">${TOPIC} = topic_network_tcp</msg>
<var>${TOPIC}</var>
<arg>topic_${layer_tag}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:41:34.779719" elapsed="0.000220"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:41:34.780215" level="INFO">${SUB_NAME} = sub_network_tcp</msg>
<var>${SUB_NAME}</var>
<arg>sub_${layer_tag}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:41:34.780018" elapsed="0.000216"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:41:34.780487" level="INFO">${PUB_NAME} = pub_network_tcp</msg>
<var>${PUB_NAME}</var>
<arg>pub_${layer_tag}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:41:34.780300" elapsed="0.000226"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>\n[INFO] Running network pub/sub test in mode: ${layer_tag}</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-17T08:41:34.780599" elapsed="0.000200"/>
</kw>
<kw name="Start Container" owner="DockerLibrary">
<arg>${SUB_NAME}</arg>
<arg>${IMAGE}</arg>
<arg>subscriber</arg>
<arg>${layer_tag}</arg>
<arg>${TOPIC}</arg>
<arg>${SUB_NAME}</arg>
<arg>network=${NETWORK}</arg>
<status status="PASS" start="2026-04-17T08:41:34.780906" elapsed="0.140572"/>
</kw>
<kw name="Start Container" owner="DockerLibrary">
<arg>${PUB_NAME}</arg>
<arg>${IMAGE}</arg>
<arg>publisher</arg>
<arg>${layer_tag}</arg>
<arg>${TOPIC}</arg>
<arg>${PUB_NAME}</arg>
<arg>network=${NETWORK}</arg>
<status status="PASS" start="2026-04-17T08:41:34.921729" elapsed="0.131505"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-17T08:41:44.053941" level="INFO">Slept 9 seconds.</msg>
<arg>9s</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-04-17T08:41:35.053417" elapsed="9.000645"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-17T08:41:44.057423" level="INFO">${log_sub} = [Entrypoint] Starting subscriber in mode network_tcp
1776415294923 ms | e3caec98c7ae | sub_network_tcp | 7 | info | Using built-in local time plugin.


[Subscriber] Ready and waiting...

[Subscriber] ...</msg>
<var>${log_sub}</var>
<arg>${SUB_NAME}</arg>
<status status="PASS" start="2026-04-17T08:41:44.054236" elapsed="0.003213"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-17T08:41:44.059653" level="INFO">${log_pub} = [Entrypoint] Starting publisher in mode network_tcp
1776415295055 ms | abbc0f668eb7 | pub_network_tcp | 7 | info | Using built-in local time plugin.
[Publisher] Waiting for at least 1 subscriber(s) on...</msg>
<var>${log_pub}</var>
<arg>${PUB_NAME}</arg>
<status status="PASS" start="2026-04-17T08:41:44.057633" elapsed="0.002045"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>\n[CONTAINER LOG: PUBLISHER]\n${log_pub}</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-17T08:41:44.059761" elapsed="0.000289"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T08:41:44.060389" level="INFO">
[CONTAINER LOG: PUBLISHER]
[Entrypoint] Starting publisher in mode network_tcp
1776415295055 ms | abbc0f668eb7 | pub_network_tcp | 7 | info | Using built-in local time plugin.
[Publisher] Waiting for at least 1 subscriber(s) on topic: topic_network_tcp
1776415295924 ms | abbc0f668eb7 | pub_network_tcp | 7 | info | CTCPReaderLayer - TCPPubSub (Info) -Publisher :::0: Created publisher and waiting for clients.
1776415295926 ms | abbc0f668eb7 | pub_network_tcp | 7 | info | CTCPReaderLayer - TCPPubSub (Info) -Publisher :::45703: Subscriber ::ffff:172.18.0.2:43290 has connected.
[Publisher] Found 1 subscriber(s). Proceeding to send messages.
[Publisher] Send result: ✓, size: 209715 bytes
[Publisher] Send result: ✓, size: 209715 bytes
[Publisher] Send result: ✓, size: 209715 bytes
[Publisher] Send result: ✓, size: 209715 bytes
[Publisher] Finished sending.
1776415299458 ms | abbc0f668eb7 | pub_network_tcp | 7 | error | CTCPReaderLayer - TCPPubSub (Error) -Publisher ?: Error while waiting for subsriber: Operation aborted.
</msg>
<arg>\n[CONTAINER LOG: PUBLISHER]\n${log_pub}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T08:41:44.060170" elapsed="0.000260"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>\n[CONTAINER LOG: SUBSCRIBER]\n${log_sub}</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-17T08:41:44.060544" elapsed="0.000235"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T08:41:44.061069" level="INFO">
[CONTAINER LOG: SUBSCRIBER]
[Entrypoint] Starting subscriber in mode network_tcp
1776415294923 ms | e3caec98c7ae | sub_network_tcp | 7 | info | Using built-in local time plugin.


[Subscriber] Ready and waiting...

[Subscriber] Received 209715 bytes (message 1)
[Subscriber] Received 209715 bytes (message 2)
[Subscriber] Received 209715 bytes (message 3)
[Subscriber] Received 209715 bytes (message 4)
1776415299458 ms | e3caec98c7ae | sub_network_tcp | 7 | error | CTCPReaderLayer - TCPPubSub (Error) -SubscriberSession 172.18.0.2:43290-&gt;abbc0f668eb7:45703: Error reading header length: End of file
1776415299459 ms | e3caec98c7ae | sub_network_tcp | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:43302: Failed connecting to publisher abbc0f668eb7:45703: Connection refused
1776415299460 ms | e3caec98c7ae | sub_network_tcp | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:43318: Failed connecting to publisher abbc0f668eb7:45703: Connection refused
1776415299461 ms | e3caec98c7ae | sub_network_tcp | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:43322: Failed connecting to publisher abbc0f668eb7:45703: Connection refused
1776415299462 ms | e3caec98c7ae | sub_network_tcp | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:43332: Failed connecting to publisher abbc0f668eb7:45703: Connection refused
1776415299462 ms | e3caec98c7ae | sub_network_tcp | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:43338: Failed connecting to publisher abbc0f668eb7:45703: Connection refused
[Subscriber] Received 4 messages.
</msg>
<arg>\n[CONTAINER LOG: SUBSCRIBER]\n${log_sub}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T08:41:44.060885" elapsed="0.000223"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-17T08:41:44.062289" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${SUB_NAME}</arg>
<status status="PASS" start="2026-04-17T08:41:44.061180" elapsed="0.001131"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-17T08:41:44.062688" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${exit_code}</arg>
<arg>0</arg>
<arg>Subscriber failed in ${layer_tag}!</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-04-17T08:41:44.062393" elapsed="0.000341"/>
</kw>
<kw name="Log Test Summary" owner="DockerLibrary">
<arg>Basic Pub/Sub Network ${layer_tag}</arg>
<arg>${True}</arg>
<status status="PASS" start="2026-04-17T08:41:44.062814" elapsed="0.000136"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${SUB_NAME}</arg>
<status status="PASS" start="2026-04-17T08:41:44.063049" elapsed="0.005057"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${PUB_NAME}</arg>
<status status="PASS" start="2026-04-17T08:41:44.068189" elapsed="0.004945"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-17T08:41:45.073595" level="INFO">Slept 1 second.</msg>
<arg>1s</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-04-17T08:41:44.073219" elapsed="1.000498"/>
</kw>
<arg>network_tcp</arg>
<arg>network</arg>
<status status="PASS" start="2026-04-17T08:41:34.779055" elapsed="10.294744"/>
</kw>
<tag>basic_pub_sub_network_tcp</tag>
<status status="PASS" start="2026-04-17T08:41:34.778609" elapsed="10.295311"/>
</test>
<status status="PASS" start="2026-04-17T08:40:26.170783" elapsed="78.904323"/>
</suite>
<suite id="s1-s2" name="Multi Pub Sub" source="/home/runner/work/ecal-test-suite/ecal-test-suite/integration_tests/multi_pub_sub/robottests/multi_pub_sub.robot">
<kw name="Init Test Context" type="SETUP">
<kw name="Set Test Context" owner="GlobalPathsLibrary">
<arg>multi_pub_sub</arg>
<arg>multi_pub_sub</arg>
<doc>Sets the test folder and tag prefix if it's a valid test case.
The folder must exist under integration_tests/ and contain typical test structure.</doc>
<status status="PASS" start="2026-04-17T08:41:45.078911" elapsed="0.000160"/>
</kw>
<kw name="Get Build Script Path" owner="GlobalPathsLibrary">
<msg time="2026-04-17T08:41:45.079245" level="INFO">${build} = /home/runner/work/ecal-test-suite/ecal-test-suite/integration_tests/multi_pub_sub/scripts/build_images.sh</msg>
<var>${build}</var>
<status status="PASS" start="2026-04-17T08:41:45.079154" elapsed="0.000112"/>
</kw>
<kw name="Get Network Name" owner="GlobalPathsLibrary">
<msg time="2026-04-17T08:41:45.079408" level="INFO">${net} = ecal_test_net</msg>
<var>${net}</var>
<status status="PASS" start="2026-04-17T08:41:45.079330" elapsed="0.000095"/>
</kw>
<kw name="Get Build Script Args" owner="GlobalPathsLibrary">
<msg time="2026-04-17T08:41:45.079604" level="INFO">${args} = ['multi_pub_sub']</msg>
<var>${args}</var>
<status status="PASS" start="2026-04-17T08:41:45.079485" elapsed="0.000137"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T08:41:45.079975" level="INFO">${BUILD_SCRIPT} = /home/runner/work/ecal-test-suite/ecal-test-suite/integration_tests/multi_pub_sub/scripts/build_images.sh</msg>
<arg>${BUILD_SCRIPT}</arg>
<arg>${build}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T08:41:45.079703" elapsed="0.000303"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T08:41:45.080294" level="INFO">${NETWORK} = ecal_test_net</msg>
<arg>${NETWORK}</arg>
<arg>${net}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T08:41:45.080084" elapsed="0.000238"/>
</kw>
<kw name="Get Test Description" owner="GlobalPathsLibrary">
<msg time="2026-04-17T08:41:45.080646" level="INFO">${desc} = This test validates eCAL communication in a scenario involving multiple publishers and subscribers.

Test Setup:
- Two publishers run in parallel and publish messages on the **same topic**.
• Publishe...</msg>
<var>${desc}</var>
<doc>Reads the *** Comments *** section from the .robot file and returns it as a string.</doc>
<status status="PASS" start="2026-04-17T08:41:45.080434" elapsed="0.000236"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T08:41:45.080933" level="INFO">This test validates eCAL communication in a scenario involving multiple publishers and subscribers.

Test Setup:
- Two publishers run in parallel and publish messages on the **same topic**.
• Publisher 1 sends messages containing the byte value **42**.
• Publisher 2 sends messages containing the byte value **43**.
- Two subscribers listen on that same topic and must receive all messages from both publishers.

Covered eCAL modes:
- (local_shm)   --&gt; Failing
- local_udp
- (local_tcp) --&gt; Failing
- network_udp
- network_tcp

Goals:
- Ensure that eCAL correctly distributes messages from **multiple sources** to **multiple receivers**.
- Verify that **topic routing, message integrity, and delivery** work consistently across different transport modes.

Success Criteria:
- Each subscriber must receive **10 messages with value 42** and **10 with value 43**.
- If this condition is met, the subscriber exits with code **0**.
- If any expected messages are missing, the subscriber exits with code **1**.</msg>
<arg>${desc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T08:41:45.080747" elapsed="0.000227"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>[SETUP] Building Docker image...</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-17T08:41:45.081046" elapsed="0.000182"/>
</kw>
<kw name="Run Process" owner="Process">
<msg time="2026-04-17T08:41:45.081635" level="INFO">Starting process:
/home/runner/work/ecal-test-suite/ecal-test-suite/integration_tests/multi_pub_sub/scripts/build_images.sh multi_pub_sub</msg>
<msg time="2026-04-17T08:41:45.082115" level="INFO">Waiting for process to complete.</msg>
<msg time="2026-04-17T08:41:54.495159" level="INFO">Process completed.</msg>
<msg time="2026-04-17T08:41:54.495329" level="INFO">${result} = &lt;result object with rc 0&gt;</msg>
<var>${result}</var>
<arg>${BUILD_SCRIPT}</arg>
<arg>@{args}</arg>
<doc>Runs a process and waits for it to complete.</doc>
<status status="PASS" start="2026-04-17T08:41:45.081338" elapsed="9.414016"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-17T08:41:54.496328" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${result.rc}</arg>
<arg>0</arg>
<arg>Failed to build Docker image!</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-04-17T08:41:54.495582" elapsed="0.000799"/>
</kw>
<kw name="Create Docker Network" owner="DockerLibrary">
<arg>${NETWORK}</arg>
<status status="PASS" start="2026-04-17T08:41:54.496488" elapsed="0.008184"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-17T08:41:57.505299" level="INFO">Slept 3 seconds.</msg>
<arg>3s</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-04-17T08:41:54.504869" elapsed="3.000574"/>
</kw>
<status status="PASS" start="2026-04-17T08:41:45.078728" elapsed="12.426877"/>
</kw>
<test id="s1-s2-t1" name="Multi Pub/Sub Local UDP Test" line="44">
<kw name="Run Multi Pub Sub Test Local">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:41:57.507068" level="INFO">${IMAGE} = multi_pub_sub_local_udp</msg>
<var>${IMAGE}</var>
<arg>${BASE_IMAGE}_${layer_tag}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:41:57.506779" elapsed="0.000310"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:41:57.507369" level="INFO">${CONTAINER} = multi_locallocal_udp</msg>
<var>${CONTAINER}</var>
<arg>multi_local${layer_tag}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:41:57.507168" elapsed="0.000219"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>\n[INFO] Running local multi pub/sub test (all binarys in same Container) with ${layer_tag}</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-17T08:41:57.507460" elapsed="0.000256"/>
</kw>
<kw name="Start Container" owner="DockerLibrary">
<arg>${CONTAINER}</arg>
<arg>${IMAGE}</arg>
<arg>local_multi</arg>
<arg>${layer_tag}</arg>
<status status="PASS" start="2026-04-17T08:41:57.507819" elapsed="0.123191"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-17T08:42:15.631663" level="INFO">Slept 18 seconds.</msg>
<arg>18s</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-04-17T08:41:57.631186" elapsed="18.000591"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-17T08:42:15.634983" level="INFO">${logs} = [Entrypoint] Starting local multi pub/sub test in mode local_udp
1776415317631 ms | 6062c814edb6 | multi_publisher | 8 | info | Using built-in local time plugin.
[Publisher] Waiting for at least 2 sub...</msg>
<var>${logs}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-17T08:42:15.631944" elapsed="0.003068"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>\n[CONTAINER LOG: All Local Binarys Multi Pub/Sub]\n${logs}</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-17T08:42:15.635117" elapsed="0.000309"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T08:42:15.635913" level="INFO">
[CONTAINER LOG: All Local Binarys Multi Pub/Sub]
[Entrypoint] Starting local multi pub/sub test in mode local_udp
1776415317631 ms | 6062c814edb6 | multi_publisher | 8 | info | Using built-in local time plugin.
[Publisher] Waiting for at least 2 subscriber(s) on topic: test_topic
1776415317632 ms | 6062c814edb6 | multi_publisher | 7 | info | Using built-in local time plugin.
[Publisher] Waiting for at least 2 subscriber(s) on topic: test_topic
1776415318633 ms | 6062c814edb6 | multi_subscriber | 18 | info | Using built-in local time plugin.
[Subscriber 1] Waiting for messages...

1776415318633 ms | 6062c814edb6 | multi_subscriber | 19 | info | Using built-in local time plugin.
[Subscriber 2] Waiting for messages...
[Publisher] Found 2 subscriber(s). Proceeding to send messages.
[Publisher] Found 2 subscriber(s). Proceeding to send messages.
[Publisher 2] Started with mode=local_udp, topic=test_topic, node=multi_publisher, count=10, delay=1000ms
[Publisher 1] Started with mode=local_udp, topic=test_topic, node=multi_publisher, count=10, delay=1000ms

[Publisher 2] Finished sending messages.

[Publisher 1] Finished sending messages.

=== [Subscriber 1] Received Message Summary ===
PUB1 messages (42):--------------&gt; 10/10
PUB2 messages (43):-------------&gt; 10/10
[Subscriber 1] [✓] Received messages from both publishers.


=== [Subscriber 2] Received Message Summary ===
PUB1 messages (42):--------------&gt; 10/10
PUB2 messages (43):-------------&gt; 10/10
[Subscriber 2] [✓] Received messages from both publishers.

[Entrypoint] All subscribers received messages from both publishers.
</msg>
<arg>\n[CONTAINER LOG: All Local Binarys Multi Pub/Sub]\n${logs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T08:42:15.635577" elapsed="0.000412"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-17T08:42:15.637265" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-17T08:42:15.636097" elapsed="0.001191"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-17T08:42:15.637707" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${exit_code}</arg>
<arg>0</arg>
<arg>Local Multi Pub/Sub Test test failed!</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-04-17T08:42:15.637420" elapsed="0.000333"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-17T08:42:15.637836" elapsed="0.005268"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-17T08:42:16.643564" level="INFO">Slept 1 second.</msg>
<arg>1s</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-04-17T08:42:15.643194" elapsed="1.000493"/>
</kw>
<arg>local_udp</arg>
<status status="PASS" start="2026-04-17T08:41:57.506240" elapsed="19.137540"/>
</kw>
<tag>multi_pub_sub_local_udp</tag>
<status status="PASS" start="2026-04-17T08:41:57.505695" elapsed="19.138218"/>
</test>
<test id="s1-s2-t2" name="Multi Pub/Sub Network UDP Test" line="48">
<kw name="Run Multi Pub Sub Test Network">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:42:16.645733" level="INFO">${IMAGE} = multi_pub_sub_network_udp</msg>
<var>${IMAGE}</var>
<arg>${BASE_IMAGE}_${layer_tag}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:42:16.645406" elapsed="0.000349"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:42:16.646007" level="INFO">${TOPIC} = test_topic</msg>
<var>${TOPIC}</var>
<arg>test_topic</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:42:16.645834" elapsed="0.000192"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:42:16.646285" level="INFO">${PUB1} = pub1_network_udp</msg>
<var>${PUB1}</var>
<arg>pub1_${layer_tag}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:42:16.646096" elapsed="0.000207"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:42:16.646592" level="INFO">${PUB2} = pub2_network_udp</msg>
<var>${PUB2}</var>
<arg>pub2_${layer_tag}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:42:16.646371" elapsed="0.000239"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:42:16.646870" level="INFO">${SUB1} = sub1_network_udp</msg>
<var>${SUB1}</var>
<arg>sub1_${layer_tag}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:42:16.646680" elapsed="0.000208"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:42:16.647139" level="INFO">${SUB2} = sub2_network_udp</msg>
<var>${SUB2}</var>
<arg>sub2_${layer_tag}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:42:16.646954" elapsed="0.000202"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>\n[INFO] Starting multi pub/sub test with ${layer_tag}</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-17T08:42:16.647223" elapsed="0.000192"/>
</kw>
<kw name="Start Container" owner="DockerLibrary">
<arg>${SUB1}</arg>
<arg>${IMAGE}</arg>
<arg>multi_subscriber</arg>
<arg>${layer_tag}</arg>
<arg>${TOPIC}</arg>
<arg>network=${NETWORK}</arg>
<status status="PASS" start="2026-04-17T08:42:16.647482" elapsed="0.129931"/>
</kw>
<kw name="Start Container" owner="DockerLibrary">
<arg>${SUB2}</arg>
<arg>${IMAGE}</arg>
<arg>multi_subscriber2</arg>
<arg>${layer_tag}</arg>
<arg>${TOPIC}</arg>
<arg>network=${NETWORK}</arg>
<status status="PASS" start="2026-04-17T08:42:16.777617" elapsed="0.125645"/>
</kw>
<kw name="Start Container" owner="DockerLibrary">
<arg>${PUB1}</arg>
<arg>${IMAGE}</arg>
<arg>multi_publisher</arg>
<arg>${layer_tag}</arg>
<arg>${TOPIC}</arg>
<arg>network=${NETWORK}</arg>
<status status="PASS" start="2026-04-17T08:42:16.903491" elapsed="0.120006"/>
</kw>
<kw name="Start Container" owner="DockerLibrary">
<arg>${PUB2}</arg>
<arg>${IMAGE}</arg>
<arg>multi_publisher2</arg>
<arg>${layer_tag}</arg>
<arg>${TOPIC}</arg>
<arg>network=${NETWORK}</arg>
<status status="PASS" start="2026-04-17T08:42:17.023702" elapsed="0.124858"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-17T08:42:35.149183" level="INFO">Slept 18 seconds.</msg>
<arg>18s</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-04-17T08:42:17.148734" elapsed="18.000569"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-17T08:42:35.152468" level="INFO">${log1} = [Entrypoint] Starting multi_subscriber in mode network_udp
1776415336779 ms | cb228b48230d | multi_subscriber | 7 | info | Using built-in local time plugin.
[Subscriber 1] Waiting for messages...


==...</msg>
<var>${log1}</var>
<arg>${SUB1}</arg>
<status status="PASS" start="2026-04-17T08:42:35.149474" elapsed="0.003055"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>\n[CONTAINER LOG: SUBSCRIBER 1]\n${log1}</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-17T08:42:35.152635" elapsed="0.000286"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T08:42:35.153301" level="INFO">
[CONTAINER LOG: SUBSCRIBER 1]
[Entrypoint] Starting multi_subscriber in mode network_udp
1776415336779 ms | cb228b48230d | multi_subscriber | 7 | info | Using built-in local time plugin.
[Subscriber 1] Waiting for messages...


=== [Subscriber 1] Received Message Summary ===
PUB1 messages (42):--------------&gt; 10/10
PUB2 messages (43):-------------&gt; 10/10
[Subscriber 1] [✓] Received messages from both publishers.

</msg>
<arg>\n[CONTAINER LOG: SUBSCRIBER 1]\n${log1}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T08:42:35.153039" elapsed="0.000318"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-17T08:42:35.155808" level="INFO">${log2} = [Entrypoint] Starting multi_subscriber2 in mode network_udp
1776415336905 ms | ec5a1c79e123 | multi_subscriber | 7 | info | Using built-in local time plugin.
[Subscriber 2] Waiting for messages...

==...</msg>
<var>${log2}</var>
<arg>${SUB2}</arg>
<status status="PASS" start="2026-04-17T08:42:35.153457" elapsed="0.002375"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>\n[CONTAINER LOG: SUBSCRIBER 2]\n${log2}</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-17T08:42:35.155916" elapsed="0.000233"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T08:42:35.156477" level="INFO">
[CONTAINER LOG: SUBSCRIBER 1]
[Entrypoint] Starting multi_subscriber2 in mode network_udp
1776415336905 ms | ec5a1c79e123 | multi_subscriber | 7 | info | Using built-in local time plugin.
[Subscriber 2] Waiting for messages...

=== [Subscriber 2] Received Message Summary ===
PUB1 messages (42):--------------&gt; 10/10
PUB2 messages (43):-------------&gt; 10/10
[Subscriber 2] [✓] Received messages from both publishers.

</msg>
<arg>\n[CONTAINER LOG: SUBSCRIBER 1]\n${log2}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T08:42:35.156269" elapsed="0.000280"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${SUB1}</arg>
<status status="PASS" start="2026-04-17T08:42:35.156627" elapsed="0.001036"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${SUB2}</arg>
<status status="PASS" start="2026-04-17T08:42:35.157747" elapsed="0.000997"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${PUB1}</arg>
<status status="PASS" start="2026-04-17T08:42:35.158825" elapsed="0.000962"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${PUB2}</arg>
<status status="PASS" start="2026-04-17T08:42:35.159869" elapsed="0.001050"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-17T08:42:35.161917" level="INFO">${exit1} = 0</msg>
<var>${exit1}</var>
<arg>${SUB1}</arg>
<status status="PASS" start="2026-04-17T08:42:35.161007" elapsed="0.000934"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-17T08:42:35.162919" level="INFO">${exit2} = 0</msg>
<var>${exit2}</var>
<arg>${SUB2}</arg>
<status status="PASS" start="2026-04-17T08:42:35.162022" elapsed="0.000920"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-17T08:42:35.163248" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${exit1}</arg>
<arg>0</arg>
<arg>Subscriber 1 failed!</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-04-17T08:42:35.163023" elapsed="0.000271"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-17T08:42:35.163602" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${exit2}</arg>
<arg>0</arg>
<arg>Subscriber 2 failed!</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-04-17T08:42:35.163373" elapsed="0.000271"/>
</kw>
<kw name="Log Test Summary" owner="DockerLibrary">
<arg>Multi Pub/Sub Test ${layer_tag}</arg>
<arg>${True}</arg>
<status status="PASS" start="2026-04-17T08:42:35.163720" elapsed="0.000150"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${SUB1}</arg>
<status status="PASS" start="2026-04-17T08:42:35.163965" elapsed="0.004866"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${SUB2}</arg>
<status status="PASS" start="2026-04-17T08:42:35.168920" elapsed="0.004894"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${PUB1}</arg>
<status status="PASS" start="2026-04-17T08:42:35.173902" elapsed="0.004950"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${PUB2}</arg>
<status status="PASS" start="2026-04-17T08:42:35.178938" elapsed="0.004893"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-17T08:42:36.184316" level="INFO">Slept 1 second.</msg>
<arg>1s</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-04-17T08:42:35.183922" elapsed="1.000517"/>
</kw>
<arg>network_udp</arg>
<arg>network</arg>
<status status="PASS" start="2026-04-17T08:42:16.645174" elapsed="19.539392"/>
</kw>
<tag>multi_pub_sub_network_udp</tag>
<status status="PASS" start="2026-04-17T08:42:16.644683" elapsed="19.540027"/>
</test>
<test id="s1-s2-t3" name="Multi Pub/Sub Network TCP Test" line="52">
<kw name="Run Multi Pub Sub Test Network">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:42:36.186880" level="INFO">${IMAGE} = multi_pub_sub_network_tcp</msg>
<var>${IMAGE}</var>
<arg>${BASE_IMAGE}_${layer_tag}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:42:36.186593" elapsed="0.000310"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:42:36.187152" level="INFO">${TOPIC} = test_topic</msg>
<var>${TOPIC}</var>
<arg>test_topic</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:42:36.186981" elapsed="0.000189"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:42:36.187423" level="INFO">${PUB1} = pub1_network_tcp</msg>
<var>${PUB1}</var>
<arg>pub1_${layer_tag}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:42:36.187239" elapsed="0.000201"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:42:36.187753" level="INFO">${PUB2} = pub2_network_tcp</msg>
<var>${PUB2}</var>
<arg>pub2_${layer_tag}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:42:36.187549" elapsed="0.000222"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:42:36.188025" level="INFO">${SUB1} = sub1_network_tcp</msg>
<var>${SUB1}</var>
<arg>sub1_${layer_tag}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:42:36.187842" elapsed="0.000200"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:42:36.188288" level="INFO">${SUB2} = sub2_network_tcp</msg>
<var>${SUB2}</var>
<arg>sub2_${layer_tag}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:42:36.188107" elapsed="0.000202"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>\n[INFO] Starting multi pub/sub test with ${layer_tag}</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-17T08:42:36.188384" elapsed="0.000257"/>
</kw>
<kw name="Start Container" owner="DockerLibrary">
<arg>${SUB1}</arg>
<arg>${IMAGE}</arg>
<arg>multi_subscriber</arg>
<arg>${layer_tag}</arg>
<arg>${TOPIC}</arg>
<arg>network=${NETWORK}</arg>
<status status="PASS" start="2026-04-17T08:42:36.188743" elapsed="0.136923"/>
</kw>
<kw name="Start Container" owner="DockerLibrary">
<arg>${SUB2}</arg>
<arg>${IMAGE}</arg>
<arg>multi_subscriber2</arg>
<arg>${layer_tag}</arg>
<arg>${TOPIC}</arg>
<arg>network=${NETWORK}</arg>
<status status="PASS" start="2026-04-17T08:42:36.325875" elapsed="0.130385"/>
</kw>
<kw name="Start Container" owner="DockerLibrary">
<arg>${PUB1}</arg>
<arg>${IMAGE}</arg>
<arg>multi_publisher</arg>
<arg>${layer_tag}</arg>
<arg>${TOPIC}</arg>
<arg>network=${NETWORK}</arg>
<status status="PASS" start="2026-04-17T08:42:36.456482" elapsed="0.128690"/>
</kw>
<kw name="Start Container" owner="DockerLibrary">
<arg>${PUB2}</arg>
<arg>${IMAGE}</arg>
<arg>multi_publisher2</arg>
<arg>${layer_tag}</arg>
<arg>${TOPIC}</arg>
<arg>network=${NETWORK}</arg>
<status status="PASS" start="2026-04-17T08:42:36.585362" elapsed="0.123670"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-17T08:42:54.709725" level="INFO">Slept 18 seconds.</msg>
<arg>18s</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-04-17T08:42:36.709204" elapsed="18.000640"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-17T08:42:54.712957" level="INFO">${log1} = [Entrypoint] Starting multi_subscriber in mode network_tcp
1776415356327 ms | e8d72e5eab5a | multi_subscriber | 7 | info | Using built-in local time plugin.
[Subscriber 1] Waiting for messages...

177...</msg>
<var>${log1}</var>
<arg>${SUB1}</arg>
<status status="PASS" start="2026-04-17T08:42:54.710036" elapsed="0.002951"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>\n[CONTAINER LOG: SUBSCRIBER 1]\n${log1}</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-17T08:42:54.713102" elapsed="0.000314"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T08:42:54.713869" level="INFO">
[CONTAINER LOG: SUBSCRIBER 1]
[Entrypoint] Starting multi_subscriber in mode network_tcp
1776415356327 ms | e8d72e5eab5a | multi_subscriber | 7 | info | Using built-in local time plugin.
[Subscriber 1] Waiting for messages...

1776415369491 ms | e8d72e5eab5a | multi_subscriber | 7 | error | CTCPReaderLayer - TCPPubSub (Error) -SubscriberSession 172.18.0.2:40180-&gt;adb284719b3f:40351: Error reading header length: End of file
1776415369492 ms | e8d72e5eab5a | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:41800: Failed connecting to publisher adb284719b3f:40351: Connection refused
1776415369493 ms | e8d72e5eab5a | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:41804: Failed connecting to publisher adb284719b3f:40351: Connection refused
1776415369494 ms | e8d72e5eab5a | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:41806: Failed connecting to publisher adb284719b3f:40351: Connection refused
1776415369495 ms | e8d72e5eab5a | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:41810: Failed connecting to publisher adb284719b3f:40351: Connection refused
1776415369496 ms | e8d72e5eab5a | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:41820: Failed connecting to publisher adb284719b3f:40351: Connection refused
1776415369516 ms | e8d72e5eab5a | multi_subscriber | 7 | error | CTCPReaderLayer - TCPPubSub (Error) -SubscriberSession 172.18.0.2:50868-&gt;0817bd4c3f57:45655: Error reading header length: End of file
1776415369517 ms | e8d72e5eab5a | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:59496: Failed connecting to publisher 0817bd4c3f57:45655: Connection refused
1776415369517 ms | e8d72e5eab5a | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:59506: Failed connecting to publisher 0817bd4c3f57:45655: Connection refused
1776415369519 ms | e8d72e5eab5a | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:59512: Failed connecting to publisher 0817bd4c3f57:45655: Connection refused
1776415369519 ms | e8d72e5eab5a | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:59524: Failed connecting to publisher 0817bd4c3f57:45655: Connection refused
1776415369521 ms | e8d72e5eab5a | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:59540: Failed connecting to publisher 0817bd4c3f57:45655: Connection refused

=== [Subscriber 1] Received Message Summary ===
PUB1 messages (42):--------------&gt; 10/10
PUB2 messages (43):-------------&gt; 10/10
[Subscriber 1] [✓] Received messages from both publishers.

</msg>
<arg>\n[CONTAINER LOG: SUBSCRIBER 1]\n${log1}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T08:42:54.713557" elapsed="0.000485"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-17T08:42:54.716877" level="INFO">${log2} = [Entrypoint] Starting multi_subscriber2 in mode network_tcp
1776415356458 ms | a2fffe665201 | multi_subscriber | 7 | info | Using built-in local time plugin.
[Subscriber 2] Waiting for messages...
177...</msg>
<var>${log2}</var>
<arg>${SUB2}</arg>
<status status="PASS" start="2026-04-17T08:42:54.714145" elapsed="0.002765"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>\n[CONTAINER LOG: SUBSCRIBER 2]\n${log2}</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-17T08:42:54.717022" elapsed="0.000315"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T08:42:54.717730" level="INFO">
[CONTAINER LOG: SUBSCRIBER 1]
[Entrypoint] Starting multi_subscriber2 in mode network_tcp
1776415356458 ms | a2fffe665201 | multi_subscriber | 7 | info | Using built-in local time plugin.
[Subscriber 2] Waiting for messages...
1776415369491 ms | a2fffe665201 | multi_subscriber | 7 | error | CTCPReaderLayer - TCPPubSub (Error) -SubscriberSession 172.18.0.3:52840-&gt;adb284719b3f:40351: Error reading header length: End of file
1776415369492 ms | a2fffe665201 | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.3:38318: Failed connecting to publisher adb284719b3f:40351: Connection refused
1776415369493 ms | a2fffe665201 | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.3:38330: Failed connecting to publisher adb284719b3f:40351: Connection refused
1776415369494 ms | a2fffe665201 | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.3:38344: Failed connecting to publisher adb284719b3f:40351: Connection refused
1776415369495 ms | a2fffe665201 | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.3:38348: Failed connecting to publisher adb284719b3f:40351: Connection refused
1776415369496 ms | a2fffe665201 | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.3:38354: Failed connecting to publisher adb284719b3f:40351: Connection refused
1776415369516 ms | a2fffe665201 | multi_subscriber | 7 | error | CTCPReaderLayer - TCPPubSub (Error) -SubscriberSession 172.18.0.3:39234-&gt;0817bd4c3f57:45655: Error reading header length: End of file
1776415369516 ms | a2fffe665201 | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.3:42344: Failed connecting to publisher 0817bd4c3f57:45655: Connection refused
1776415369517 ms | a2fffe665201 | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.3:42356: Failed connecting to publisher 0817bd4c3f57:45655: Connection refused
1776415369518 ms | a2fffe665201 | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.3:42368: Failed connecting to publisher 0817bd4c3f57:45655: Connection refused
1776415369519 ms | a2fffe665201 | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.3:42374: Failed connecting to publisher 0817bd4c3f57:45655: Connection refused
1776415369520 ms | a2fffe665201 | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.3:42376: Failed connecting to publisher 0817bd4c3f57:45655: Connection refused

=== [Subscriber 2] Received Message Summary ===
PUB1 messages (42):--------------&gt; 10/10
PUB2 messages (43):-------------&gt; 10/10
[Subscriber 2] [✓] Received messages from both publishers.

</msg>
<arg>\n[CONTAINER LOG: SUBSCRIBER 1]\n${log2}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T08:42:54.717458" elapsed="0.000326"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${SUB1}</arg>
<status status="PASS" start="2026-04-17T08:42:54.717859" elapsed="0.001075"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${SUB2}</arg>
<status status="PASS" start="2026-04-17T08:42:54.719017" elapsed="0.001079"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${PUB1}</arg>
<status status="PASS" start="2026-04-17T08:42:54.720179" elapsed="0.000974"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${PUB2}</arg>
<status status="PASS" start="2026-04-17T08:42:54.721235" elapsed="0.000944"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-17T08:42:54.723136" level="INFO">${exit1} = 0</msg>
<var>${exit1}</var>
<arg>${SUB1}</arg>
<status status="PASS" start="2026-04-17T08:42:54.722263" elapsed="0.000897"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-17T08:42:54.724136" level="INFO">${exit2} = 0</msg>
<var>${exit2}</var>
<arg>${SUB2}</arg>
<status status="PASS" start="2026-04-17T08:42:54.723240" elapsed="0.000919"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-17T08:42:54.724578" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${exit1}</arg>
<arg>0</arg>
<arg>Subscriber 1 failed!</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-04-17T08:42:54.724294" elapsed="0.000337"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-17T08:42:54.725056" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${exit2}</arg>
<arg>0</arg>
<arg>Subscriber 2 failed!</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-04-17T08:42:54.724713" elapsed="0.000385"/>
</kw>
<kw name="Log Test Summary" owner="DockerLibrary">
<arg>Multi Pub/Sub Test ${layer_tag}</arg>
<arg>${True}</arg>
<status status="PASS" start="2026-04-17T08:42:54.725173" elapsed="0.000142"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${SUB1}</arg>
<status status="PASS" start="2026-04-17T08:42:54.725409" elapsed="0.005000"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${SUB2}</arg>
<status status="PASS" start="2026-04-17T08:42:54.730547" elapsed="0.005181"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${PUB1}</arg>
<status status="PASS" start="2026-04-17T08:42:54.735840" elapsed="0.005463"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${PUB2}</arg>
<status status="PASS" start="2026-04-17T08:42:54.741424" elapsed="0.005026"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-17T08:42:55.747022" level="INFO">Slept 1 second.</msg>
<arg>1s</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-04-17T08:42:54.746602" elapsed="1.000540"/>
</kw>
<arg>network_tcp</arg>
<arg>network</arg>
<status status="PASS" start="2026-04-17T08:42:36.186319" elapsed="19.560915"/>
</kw>
<tag>multi_pub_sub_network_tcp</tag>
<status status="PASS" start="2026-04-17T08:42:36.185834" elapsed="19.561538"/>
</test>
<status status="PASS" start="2026-04-17T08:41:45.075990" elapsed="70.672661"/>
</suite>
<suite id="s1-s3" name="Network Crash" source="/home/runner/work/ecal-test-suite/ecal-test-suite/integration_tests/network_crash/robottests/network_crash.robot">
<kw name="Init Test Context" type="SETUP">
<kw name="Set Test Context" owner="GlobalPathsLibrary">
<arg>network_crash</arg>
<arg>network_crash</arg>
<doc>Sets the test folder and tag prefix if it's a valid test case.
The folder must exist under integration_tests/ and contain typical test structure.</doc>
<status status="PASS" start="2026-04-17T08:42:55.752088" elapsed="0.000137"/>
</kw>
<kw name="Get Build Script Path" owner="GlobalPathsLibrary">
<msg time="2026-04-17T08:42:55.752399" level="INFO">${build} = /home/runner/work/ecal-test-suite/ecal-test-suite/integration_tests/network_crash/scripts/build_images.sh</msg>
<var>${build}</var>
<status status="PASS" start="2026-04-17T08:42:55.752303" elapsed="0.000118"/>
</kw>
<kw name="Get Network Name" owner="GlobalPathsLibrary">
<msg time="2026-04-17T08:42:55.752645" level="INFO">${net} = ecal_test_net</msg>
<var>${net}</var>
<status status="PASS" start="2026-04-17T08:42:55.752492" elapsed="0.000172"/>
</kw>
<kw name="Get Build Script Args" owner="GlobalPathsLibrary">
<msg time="2026-04-17T08:42:55.752808" level="INFO">${args} = ['network_crash']</msg>
<var>${args}</var>
<status status="PASS" start="2026-04-17T08:42:55.752728" elapsed="0.000096"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T08:42:55.753149" level="INFO">${BUILD_SCRIPT} = /home/runner/work/ecal-test-suite/ecal-test-suite/integration_tests/network_crash/scripts/build_images.sh</msg>
<arg>${BUILD_SCRIPT}</arg>
<arg>${build}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T08:42:55.752901" elapsed="0.000279"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T08:42:55.753462" level="INFO">${NETWORK} = ecal_test_net</msg>
<arg>${NETWORK}</arg>
<arg>${net}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T08:42:55.753258" elapsed="0.000232"/>
</kw>
<kw name="Get Test Description" owner="GlobalPathsLibrary">
<msg time="2026-04-17T08:42:55.753773" level="INFO">${desc} = Test Objective:
Verify that local UDP-based communication remains functional even if a separate network UDP publisher is disconnected —
simulating a network failure scenario such as a cable unplug.

T...</msg>
<var>${desc}</var>
<doc>Reads the *** Comments *** section from the .robot file and returns it as a string.</doc>
<status status="PASS" start="2026-04-17T08:42:55.753595" elapsed="0.000200"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T08:42:55.754048" level="INFO">Test Objective:
Verify that local UDP-based communication remains functional even if a separate network UDP publisher is disconnected —
simulating a network failure scenario such as a cable unplug.

Test Context:
This test validates the robustness of eCAL's UDP transport layer under fault conditions by ensuring that
local communication is not affected by network-layer interruptions.

Test Scenario:
1. A local UDP subscriber and two local UDP publishers run in the **same container** using eCAL's local mode.
- Publisher 1 sends payloads with value 42 from the beginning.
- Publisher 2 sends value 44, but only **after the network publisher is disconnected** (simulated delay).

2. A network UDP publisher runs in a **separate container**, using eCAL network mode and sends value 43.

3. All publishers run in parallel for a defined period (publisher 2 starts delayed after ~7s).

4. The test then **disconnects** the network UDP publisher from the Docker network.

Success Criteria:
- The subscriber receives:
• Messages with value 42 throughout the test.
• Messages with value 43 only **before** the disconnection.
• Messages with value 44 after the network crash (i.e., from local UDP Publisher 2).
- The subscriber container exits with code 0.
- The log confirms all expected messages have been received.

Note:
This test ensures **fault isolation** between local and network layers in eCAL middleware.</msg>
<arg>${desc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T08:42:55.753867" elapsed="0.000221"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>[SETUP] Building image...</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-17T08:42:55.754158" elapsed="0.000175"/>
</kw>
<kw name="Run Process" owner="Process">
<msg time="2026-04-17T08:42:55.754676" level="INFO">Starting process:
/home/runner/work/ecal-test-suite/ecal-test-suite/integration_tests/network_crash/scripts/build_images.sh network_crash</msg>
<msg time="2026-04-17T08:42:55.755102" level="INFO">Waiting for process to complete.</msg>
<msg time="2026-04-17T08:43:04.853021" level="INFO">Process completed.</msg>
<msg time="2026-04-17T08:43:04.853187" level="INFO">${result} = &lt;result object with rc 0&gt;</msg>
<var>${result}</var>
<arg>${BUILD_SCRIPT}</arg>
<arg>@{args}</arg>
<doc>Runs a process and waits for it to complete.</doc>
<status status="PASS" start="2026-04-17T08:42:55.754420" elapsed="9.098792"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-17T08:43:04.854049" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${result.rc}</arg>
<arg>0</arg>
<arg>Docker image build failed!</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-04-17T08:43:04.853366" elapsed="0.000735"/>
</kw>
<kw name="Create Docker Network" owner="DockerLibrary">
<arg>${NETWORK}</arg>
<status status="PASS" start="2026-04-17T08:43:04.854186" elapsed="0.007364"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-17T08:43:06.862042" level="INFO">Slept 2 seconds.</msg>
<arg>2s</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-04-17T08:43:04.861654" elapsed="2.000607"/>
</kw>
<status status="PASS" start="2026-04-17T08:42:55.751938" elapsed="11.110420"/>
</kw>
<test id="s1-s3-t1" name="Local communication survives Network crash" line="45">
<kw name="Run Network Crash Survival Test">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:43:06.863779" level="INFO">${IMAGE} = network_crash_local_udp</msg>
<var>${IMAGE}</var>
<arg>${BASE_IMAGE}_local_udp</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:43:06.863485" elapsed="0.000315"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:43:06.864049" level="INFO">${TOPIC} = test_topic</msg>
<var>${TOPIC}</var>
<arg>test_topic</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:43:06.863878" elapsed="0.000189"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:43:06.864297" level="INFO">${NET_PUB} = udp_network_pub</msg>
<var>${NET_PUB}</var>
<arg>udp_network_pub</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:43:06.864138" elapsed="0.000177"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:43:06.864566" level="INFO">${LOCAL_ALL} = udp_local_all</msg>
<var>${LOCAL_ALL}</var>
<arg>udp_local_all</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:43:06.864384" elapsed="0.000200"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>\n\n[INFO] Starting "LOCAL UDP (PUB1 + SUB + PUB3)" in one container and "NETWORK UDP (PUB2)" separately...</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-17T08:43:06.864653" elapsed="0.000169"/>
</kw>
<kw name="Start Container" owner="DockerLibrary">
<arg>${LOCAL_ALL}</arg>
<arg>${IMAGE}</arg>
<arg>udp_local_all</arg>
<arg>${TOPIC}</arg>
<arg>${LOCAL_ALL}</arg>
<arg>network=${NETWORK}</arg>
<status status="PASS" start="2026-04-17T08:43:06.864914" elapsed="0.135303"/>
</kw>
<kw name="Start Container" owner="DockerLibrary">
<arg>${NET_PUB}</arg>
<arg>${IMAGE}</arg>
<arg>udp_network_pub</arg>
<arg>${TOPIC}</arg>
<arg>${NET_PUB}</arg>
<arg>network=${NETWORK}</arg>
<status status="PASS" start="2026-04-17T08:43:07.000441" elapsed="0.122227"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>\n[INFO] Letting PUB1 and PUB2 run in parallel for 7s...</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-17T08:43:07.122839" elapsed="0.000294"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-17T08:43:14.123618" level="INFO">Slept 7 seconds.</msg>
<arg>7s</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-04-17T08:43:07.123242" elapsed="7.000499"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>\n[SIMULATION] Disconnecting NETWORK UDP Publisher..</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-17T08:43:14.123916" elapsed="0.000341"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-17T08:43:14.127070" level="INFO">${log_net} = [Entrypoint] Starting network UDP publisher...
1776415387125 ms | b18cb64f3679 | network_udp_pub_udp_network_pub | 7 | info | Using built-in local time plugin.
[Publisher] Waiting for at least 1 subsc...</msg>
<var>${log_net}</var>
<arg>${NET_PUB}</arg>
<status status="PASS" start="2026-04-17T08:43:14.124363" elapsed="0.002733"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T08:43:14.127402" level="INFO">
[LOG: NETWORK UDP PUB2 CONTAINER]
[Entrypoint] Starting network UDP publisher...
1776415387125 ms | b18cb64f3679 | network_udp_pub_udp_network_pub | 7 | info | Using built-in local time plugin.
[Publisher] Waiting for at least 1 subscriber(s) on topic: test_topic
[Publisher] Found 1 subscriber(s). Proceeding to send messages.
</msg>
<arg>\n[LOG: NETWORK UDP PUB2 CONTAINER]\n${log_net}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T08:43:14.127185" elapsed="0.000252"/>
</kw>
<kw name="Disconnect Container From Network">
<kw name="Log To Console" owner="BuiltIn">
<arg>\n[SIMULATION] Disconnecting ${container} from ${network} (simulate network failure)...</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-17T08:43:14.127841" elapsed="0.000228"/>
</kw>
<kw name="Run Process" owner="Process">
<msg time="2026-04-17T08:43:14.128648" level="INFO">Starting process:
docker network disconnect ecal_test_net udp_network_pub</msg>
<msg time="2026-04-17T08:43:14.129176" level="INFO">Waiting for process to complete.</msg>
<msg time="2026-04-17T08:43:14.176905" level="INFO">Process completed.</msg>
<msg time="2026-04-17T08:43:14.177105" level="INFO">${result} = &lt;result object with rc 0&gt;</msg>
<var>${result}</var>
<arg>docker</arg>
<arg>network</arg>
<arg>disconnect</arg>
<arg>${network}</arg>
<arg>${container}</arg>
<doc>Runs a process and waits for it to complete.</doc>
<status status="PASS" start="2026-04-17T08:43:14.128178" elapsed="0.048955"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-17T08:43:14.178027" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${result.rc}</arg>
<arg>0</arg>
<arg>Failed to disconnect ${container} from ${network}</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-04-17T08:43:14.177302" elapsed="0.000776"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-17T08:43:15.178514" level="INFO">Slept 1 second.</msg>
<arg>1s</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-04-17T08:43:14.178166" elapsed="1.000513"/>
</kw>
<arg>${NET_PUB}</arg>
<arg>${NETWORK}</arg>
<status status="PASS" start="2026-04-17T08:43:14.127600" elapsed="1.051174"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-17T08:43:48.179426" level="INFO">Slept 33 seconds.</msg>
<arg>33s</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-04-17T08:43:15.178926" elapsed="33.000666"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-17T08:43:48.182789" level="INFO">${log_local} = [Entrypoint] Starting UDP subscriber, then UDP publisher...
1776415387002 ms | 394a7ff807ec | local_udp_pub_udp_local_all | 8 | info | Using built-in local time plugin.
[Publisher] Waiting for at leas...</msg>
<var>${log_local}</var>
<arg>${LOCAL_ALL}</arg>
<status status="PASS" start="2026-04-17T08:43:48.179776" elapsed="0.003038"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>\n[LOG: LOCAL UDP PUB + SUB + PUB3 CONTAINER]\n${log_local}</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-17T08:43:48.182906" elapsed="0.000294"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T08:43:48.183628" level="INFO">
[LOG: LOCAL UDP PUB + SUB + PUB3 CONTAINER]
[Entrypoint] Starting UDP subscriber, then UDP publisher...
1776415387002 ms | 394a7ff807ec | local_udp_pub_udp_local_all | 8 | info | Using built-in local time plugin.
[Publisher] Waiting for at least 1 subscriber(s) on topic: test_topic
[Publisher] Found 1 subscriber(s). Proceeding to send messages.
1776415387002 ms | 394a7ff807ec | sub_udp_local_all | 7 | info | Using built-in local time plugin.
[Subscriber] Listening on topic 'test_topic'...
[Subscriber] Received: 42
[Subscriber] Received: 43
[Subscriber] Received: 42
[Subscriber] Received: 43
[Subscriber] Received: 42
[Subscriber] Received: 43
[Subscriber] Received: 42
[Subscriber] Received: 43
[Subscriber] Received: 42
[Subscriber] Received: 43
[Subscriber] Received: 42
[Subscriber] Received: 42
[Subscriber] Received: 42
[Subscriber] Received: 42
[Entrypoint] Starting delayed LOCAL UDP Publisher 2 after network failure...
1776415398004 ms | 394a7ff807ec | local_udp_pub_2_udp_local_all | 19 | info | Using built-in local time plugin.
[Publisher] Waiting for at least 1 subscriber(s) on topic: test_topic
[Publisher] Found 1 subscriber(s). Proceeding to send messages.
[Subscriber] Received: 42
[Subscriber] Received: 42
[Subscriber] Received: 44
[Subscriber] Received: 42
[Subscriber] Received: 44
[Subscriber] Received: 42
[Subscriber] Received: 44
[Subscriber] Received: 42
[Subscriber] Received: 44
[Subscriber] Received: 42
[Subscriber] Received: 44
[Subscriber] Received: 42
[Subscriber] Received: 44
[Subscriber] Received: 42
[Subscriber] Received: 44
[Subscriber] Received: 42
[Subscriber] Received: 44
[Subscriber] Received: 42
[Subscriber] Received: 44
[Subscriber] Received: 42
[Subscriber] Received: 44
[Subscriber] Received: 42
[Subscriber] Received: 44
[Subscriber] Received: 42
[Subscriber] Received: 44
[Subscriber] Received: 42
[Subscriber] Received: 44
[Subscriber] Received: 42
[Subscriber] Received: 44
[Subscriber] Received: 42
[Subscriber] Received: 44

=== Message Summary ===

Local UDP PUB1 messages (42):--------------&gt; 25/25
Network UDP PUB2 messages (43):-------------&gt; 5/25
Local UDP PUB3 messages after crash (44):--&gt; 15/15


[✓] All expected messages received: local before and after crash, and network.
[Entrypoint] Subscriber exited with code 0
</msg>
<arg>\n[LOG: LOCAL UDP PUB + SUB + PUB3 CONTAINER]\n${log_local}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T08:43:48.183321" elapsed="0.000410"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${LOCAL_ALL}</arg>
<status status="PASS" start="2026-04-17T08:43:48.183809" elapsed="0.001198"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-17T08:43:48.186052" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${LOCAL_ALL}</arg>
<status status="PASS" start="2026-04-17T08:43:48.185092" elapsed="0.000983"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-17T08:43:48.186382" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${exit_code}</arg>
<arg>0</arg>
<arg>LOCAL container (PUB + SUB + PUB3) failed unexpectedly!</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-04-17T08:43:48.186157" elapsed="0.000270"/>
</kw>
<kw name="Log Test Summary" owner="DockerLibrary">
<arg>Network Crash Test with Local Recovery Publisher</arg>
<arg>${True}</arg>
<status status="PASS" start="2026-04-17T08:43:48.186534" elapsed="0.000120"/>
</kw>
<status status="PASS" start="2026-04-17T08:43:06.863040" elapsed="41.323684"/>
</kw>
<tag>network_crash_test</tag>
<status status="PASS" start="2026-04-17T08:43:06.862435" elapsed="41.324394"/>
</test>
<status status="PASS" start="2026-04-17T08:42:55.749331" elapsed="52.438124"/>
</suite>
<suite id="s1-s4" name="Pub Crash" source="/home/runner/work/ecal-test-suite/ecal-test-suite/integration_tests/pub_crash/robottests/pub_crash.robot">
<kw name="Init Test Context" type="SETUP">
<kw name="Set Test Context" owner="GlobalPathsLibrary">
<arg>pub_crash</arg>
<arg>pub_crash</arg>
<doc>Sets the test folder and tag prefix if it's a valid test case.
The folder must exist under integration_tests/ and contain typical test structure.</doc>
<status status="PASS" start="2026-04-17T08:43:48.190714" elapsed="0.000123"/>
</kw>
<kw name="Get Build Script Path" owner="GlobalPathsLibrary">
<msg time="2026-04-17T08:43:48.191001" level="INFO">${build} = /home/runner/work/ecal-test-suite/ecal-test-suite/integration_tests/pub_crash/scripts/build_images.sh</msg>
<var>${build}</var>
<status status="PASS" start="2026-04-17T08:43:48.190914" elapsed="0.000107"/>
</kw>
<kw name="Get Network Name" owner="GlobalPathsLibrary">
<msg time="2026-04-17T08:43:48.191162" level="INFO">${net} = ecal_test_net</msg>
<var>${net}</var>
<status status="PASS" start="2026-04-17T08:43:48.191086" elapsed="0.000093"/>
</kw>
<kw name="Get Build Script Args" owner="GlobalPathsLibrary">
<msg time="2026-04-17T08:43:48.191313" level="INFO">${args} = ['pub_crash']</msg>
<var>${args}</var>
<status status="PASS" start="2026-04-17T08:43:48.191239" elapsed="0.000090"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T08:43:48.191667" level="INFO">${BUILD_SCRIPT} = /home/runner/work/ecal-test-suite/ecal-test-suite/integration_tests/pub_crash/scripts/build_images.sh</msg>
<arg>${BUILD_SCRIPT}</arg>
<arg>${build}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T08:43:48.191402" elapsed="0.000295"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T08:43:48.191982" level="INFO">${NETWORK} = ecal_test_net</msg>
<arg>${NETWORK}</arg>
<arg>${net}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T08:43:48.191775" elapsed="0.000236"/>
</kw>
<kw name="Get Test Description" owner="GlobalPathsLibrary">
<msg time="2026-04-17T08:43:48.192223" level="INFO">${desc} = Test Objective:
Ensure that communication to the subscriber continues even if one publisher crashes.

Test Scenario:
- Two publishers are started:
1. crash_publisher: sends a few messages (value 42) a...</msg>
<var>${desc}</var>
<doc>Reads the *** Comments *** section from the .robot file and returns it as a string.</doc>
<status status="PASS" start="2026-04-17T08:43:48.192081" elapsed="0.000162"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T08:43:48.192484" level="INFO">Test Objective:
Ensure that communication to the subscriber continues even if one publisher crashes.

Test Scenario:
- Two publishers are started:
1. crash_publisher: sends a few messages (value 42) and then crashes.
2. test_publisher: continuously sends messages (value 43).
- One subscriber receives data from both publishers.
- A monitoring process tracks process appearance.

Success Criteria:
- Subscriber receives enough messages with value 43 after crash_publisher crashes.
- Subscriber exits with code 0, indicating continued communication.
- All containers terminate cleanly.</msg>
<arg>${desc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T08:43:48.192314" elapsed="0.000227"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>[SETUP] Building Docker image...</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-17T08:43:48.192613" elapsed="0.000162"/>
</kw>
<kw name="Run Process" owner="Process">
<msg time="2026-04-17T08:43:48.193118" level="INFO">Starting process:
/home/runner/work/ecal-test-suite/ecal-test-suite/integration_tests/pub_crash/scripts/build_images.sh pub_crash</msg>
<msg time="2026-04-17T08:43:48.193546" level="INFO">Waiting for process to complete.</msg>
<msg time="2026-04-17T08:43:57.171224" level="INFO">Process completed.</msg>
<msg time="2026-04-17T08:43:57.171393" level="INFO">${result} = &lt;result object with rc 0&gt;</msg>
<var>${result}</var>
<arg>${BUILD_SCRIPT}</arg>
<arg>@{args}</arg>
<doc>Runs a process and waits for it to complete.</doc>
<status status="PASS" start="2026-04-17T08:43:48.192879" elapsed="8.978540"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-17T08:43:57.172272" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${result.rc}</arg>
<arg>0</arg>
<arg>Docker build failed!</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-04-17T08:43:57.171661" elapsed="0.000665"/>
</kw>
<kw name="Create Docker Network" owner="DockerLibrary">
<arg>${NETWORK}</arg>
<status status="PASS" start="2026-04-17T08:43:57.172412" elapsed="0.007030"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-17T08:44:00.179961" level="INFO">Slept 3 seconds.</msg>
<arg>3s</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-04-17T08:43:57.179589" elapsed="3.000466"/>
</kw>
<status status="PASS" start="2026-04-17T08:43:48.190578" elapsed="11.989552"/>
</kw>
<test id="s1-s4-t1" name="Communication Continues After Publisher Crash (UDP)" line="30">
<kw name="Run Network Communication Test">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:44:00.181495" level="INFO">${IMAGE} = pub_crash_network_udp</msg>
<var>${IMAGE}</var>
<arg>${BASE_IMAGE}_${layer_tag}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:44:00.181220" elapsed="0.000319"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:44:00.181797" level="INFO">${TOPIC} = test_topic</msg>
<var>${TOPIC}</var>
<arg>test_topic</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:44:00.181617" elapsed="0.000199"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:44:00.182081" level="INFO">${CRASH_PUB} = crash_pub_network_udp</msg>
<var>${CRASH_PUB}</var>
<arg>crash_pub_${layer_tag}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:44:00.181888" elapsed="0.000212"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:44:00.182356" level="INFO">${TEST_PUB} = test_pub_network_udp</msg>
<var>${TEST_PUB}</var>
<arg>test_pub_${layer_tag}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:44:00.182169" elapsed="0.000205"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:44:00.182670" level="INFO">${SUB_NAME} = sub_network_udp</msg>
<var>${SUB_NAME}</var>
<arg>sub_${layer_tag}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:44:00.182443" elapsed="0.000245"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>\n[INFO] Starting communication continuity test with ${layer_tag}</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-17T08:44:00.182761" elapsed="0.000204"/>
</kw>
<kw name="Start Container" owner="DockerLibrary">
<arg>${SUB_NAME}</arg>
<arg>${IMAGE}</arg>
<arg>subscriber</arg>
<arg>${layer_tag}</arg>
<arg>${TOPIC}</arg>
<arg>network=${NETWORK}</arg>
<status status="PASS" start="2026-04-17T08:44:00.183070" elapsed="0.129377"/>
</kw>
<kw name="Start Container" owner="DockerLibrary">
<arg>${CRASH_PUB}</arg>
<arg>${IMAGE}</arg>
<arg>crash_publisher</arg>
<arg>${layer_tag}</arg>
<arg>${TOPIC}</arg>
<arg>network=${NETWORK}</arg>
<status status="PASS" start="2026-04-17T08:44:00.312677" elapsed="0.122411"/>
</kw>
<kw name="Start Container" owner="DockerLibrary">
<arg>${TEST_PUB}</arg>
<arg>${IMAGE}</arg>
<arg>test_publisher</arg>
<arg>${layer_tag}</arg>
<arg>${TOPIC}</arg>
<arg>${TEST_PUB}</arg>
<arg>network=${NETWORK}</arg>
<status status="PASS" start="2026-04-17T08:44:00.435256" elapsed="0.123287"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-17T08:44:35.559213" level="INFO">Slept 35 seconds.</msg>
<arg>35s</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-04-17T08:44:00.558739" elapsed="35.000578"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-17T08:44:35.562613" level="INFO">${sub_logs} = [Entrypoint] Starting crash subscriber in mode network_udp
1776415440314 ms | 99b52bbbad49 | ./test_subscriber | 7 | info | Using built-in local time plugin.

[Subscriber] Registering callback and wai...</msg>
<var>${sub_logs}</var>
<arg>${SUB_NAME}</arg>
<status status="PASS" start="2026-04-17T08:44:35.559467" elapsed="0.003174"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>\n[SUBSCRIBER CONTAINER OUTPUT]\n${sub_logs}</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-17T08:44:35.562734" elapsed="0.000284"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T08:44:35.563416" level="INFO">
[SUBSCRIBER CONTAINER OUTPUT]
[Entrypoint] Starting crash subscriber in mode network_udp
1776415440314 ms | 99b52bbbad49 | ./test_subscriber | 7 | info | Using built-in local time plugin.

[Subscriber] Registering callback and waiting for messages...

[Subscriber] Received value: 42
[Subscriber] Received value: 43
[Subscriber] Received value: 42
[Subscriber] Received value: 43
[Subscriber] Received value: 42
[Subscriber] Received value: 43
[Subscriber] Received value: 42
[Subscriber] Received value: 43
[Subscriber] Received value: 42
[Subscriber] Received value: 43
[Subscriber] Received value: 42
[Subscriber] Received value: 43
[Subscriber] Received value: 42
[Subscriber] Received value: 43
[Subscriber] Received value: 42
[Subscriber] Received value: 43
[Subscriber] Received value: 43
[Subscriber] Received value: 43
[Subscriber] Received value: 43
[Subscriber] Received value: 43
[Subscriber] Received value: 43
[Subscriber] Received value: 43
[Subscriber] Received value: 43
[Subscriber] Received value: 43
[Subscriber] Received value: 43
[Subscriber] Received value: 43
[Subscriber] Received value: 43
[Subscriber] Received value: 43
[Subscriber] Received value: 43
[Subscriber] Received value: 43
[Subscriber] Received value: 43
[Subscriber] Received value: 43
[Subscriber] Received value: 43
[Summary] Received 8 x 42 (crash pub), 25 x 43 (test pub)

[✓] Communication continued after crash!

[✓] One Publisher crashed and no more messages received from the crashed publisher!
</msg>
<arg>\n[SUBSCRIBER CONTAINER OUTPUT]\n${sub_logs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T08:44:35.563134" elapsed="0.000348"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-17T08:44:35.566130" level="INFO">${crash_logs} = [Entrypoint] Starting crash publisher in mode network_udp
1776415440437 ms | 7a64df59557a | ./crash_publisher | 7 | info | Using built-in local time plugin.
[Publisher] Waiting for at least 1 subscrib...</msg>
<var>${crash_logs}</var>
<arg>${CRASH_PUB}</arg>
<status status="PASS" start="2026-04-17T08:44:35.563619" elapsed="0.002536"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>\n[CRASH PUBLISHER OUTPUT]\n${crash_logs}</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-17T08:44:35.566240" elapsed="0.000248"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T08:44:35.566829" level="INFO">
[CRASH PUBLISHER OUTPUT]
[Entrypoint] Starting crash publisher in mode network_udp
1776415440437 ms | 7a64df59557a | ./crash_publisher | 7 | info | Using built-in local time plugin.
[Publisher] Waiting for at least 1 subscriber(s) on topic: test_topic
[Publisher] Found 1 subscriber(s). Proceeding to send messages.
[Crash Publisher] Starting and will crash after 10 messages...
[Crash Publisher] Sent buffer with content: 42 (message 1)
[Crash Publisher] Sent buffer with content: 42 (message 2)
[Crash Publisher] Sent buffer with content: 42 (message 3)
[Crash Publisher] Sent buffer with content: 42 (message 4)
[Crash Publisher] Sent buffer with content: 42 (message 5)
[Crash Publisher] Sent buffer with content: 42 (message 6)
[Crash Publisher] Sent buffer with content: 42 (message 7)
[Crash Publisher] Sent buffer with content: 42 (message 8)
[Crash Publisher] Crashing after message 7
./entrypoint.sh: line 60:     7 Aborted                 (core dumped) ./crash_publisher $ARGS $EXTRA
</msg>
<arg>\n[CRASH PUBLISHER OUTPUT]\n${crash_logs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T08:44:35.566628" elapsed="0.000282"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${SUB_NAME}</arg>
<status status="PASS" start="2026-04-17T08:44:35.566988" elapsed="0.001265"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${CRASH_PUB}</arg>
<status status="PASS" start="2026-04-17T08:44:35.568346" elapsed="0.001008"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${TEST_PUB}</arg>
<status status="PASS" start="2026-04-17T08:44:35.569442" elapsed="0.001000"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-17T08:44:35.571473" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${SUB_NAME}</arg>
<status status="PASS" start="2026-04-17T08:44:35.570564" elapsed="0.000933"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-17T08:44:35.571849" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${exit_code}</arg>
<arg>0</arg>
<arg>Communication failed!</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-04-17T08:44:35.571617" elapsed="0.000279"/>
</kw>
<kw name="Log Test Summary" owner="DockerLibrary">
<arg>Network Communication after one Publisher crash ${layer_tag}</arg>
<arg>${True}</arg>
<status status="PASS" start="2026-04-17T08:44:35.571976" elapsed="0.000141"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${SUB_NAME}</arg>
<status status="PASS" start="2026-04-17T08:44:35.572226" elapsed="0.004840"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${CRASH_PUB}</arg>
<status status="PASS" start="2026-04-17T08:44:35.577149" elapsed="0.005558"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${TEST_PUB}</arg>
<status status="PASS" start="2026-04-17T08:44:35.582793" elapsed="0.004887"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-17T08:44:36.588071" level="INFO">Slept 1 second.</msg>
<arg>1s</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-04-17T08:44:35.587769" elapsed="1.000381"/>
</kw>
<arg>network_udp</arg>
<arg>network</arg>
<status status="PASS" start="2026-04-17T08:44:00.180733" elapsed="36.407497"/>
</kw>
<tag>pub_crash_network_udp</tag>
<status status="PASS" start="2026-04-17T08:44:00.180195" elapsed="36.408160"/>
</test>
<test id="s1-s4-t2" name="Communication Continues After Publisher Crash (TCP)" line="34">
<kw name="Run Network Communication Test">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:44:36.590171" level="INFO">${IMAGE} = pub_crash_network_tcp</msg>
<var>${IMAGE}</var>
<arg>${BASE_IMAGE}_${layer_tag}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:44:36.589910" elapsed="0.000283"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:44:36.590444" level="INFO">${TOPIC} = test_topic</msg>
<var>${TOPIC}</var>
<arg>test_topic</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:44:36.590269" elapsed="0.000194"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:44:36.590757" level="INFO">${CRASH_PUB} = crash_pub_network_tcp</msg>
<var>${CRASH_PUB}</var>
<arg>crash_pub_${layer_tag}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:44:36.590559" elapsed="0.000217"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:44:36.591031" level="INFO">${TEST_PUB} = test_pub_network_tcp</msg>
<var>${TEST_PUB}</var>
<arg>test_pub_${layer_tag}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:44:36.590845" elapsed="0.000204"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:44:36.591295" level="INFO">${SUB_NAME} = sub_network_tcp</msg>
<var>${SUB_NAME}</var>
<arg>sub_${layer_tag}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:44:36.591116" elapsed="0.000197"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>\n[INFO] Starting communication continuity test with ${layer_tag}</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-17T08:44:36.591379" elapsed="0.000219"/>
</kw>
<kw name="Start Container" owner="DockerLibrary">
<arg>${SUB_NAME}</arg>
<arg>${IMAGE}</arg>
<arg>subscriber</arg>
<arg>${layer_tag}</arg>
<arg>${TOPIC}</arg>
<arg>network=${NETWORK}</arg>
<status status="PASS" start="2026-04-17T08:44:36.591704" elapsed="0.128495"/>
</kw>
<kw name="Start Container" owner="DockerLibrary">
<arg>${CRASH_PUB}</arg>
<arg>${IMAGE}</arg>
<arg>crash_publisher</arg>
<arg>${layer_tag}</arg>
<arg>${TOPIC}</arg>
<arg>network=${NETWORK}</arg>
<status status="PASS" start="2026-04-17T08:44:36.720363" elapsed="0.119820"/>
</kw>
<kw name="Start Container" owner="DockerLibrary">
<arg>${TEST_PUB}</arg>
<arg>${IMAGE}</arg>
<arg>test_publisher</arg>
<arg>${layer_tag}</arg>
<arg>${TOPIC}</arg>
<arg>${TEST_PUB}</arg>
<arg>network=${NETWORK}</arg>
<status status="PASS" start="2026-04-17T08:44:36.840348" elapsed="0.118965"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-17T08:45:11.959991" level="INFO">Slept 35 seconds.</msg>
<arg>35s</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-04-17T08:44:36.959481" elapsed="35.000625"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-17T08:45:11.963451" level="INFO">${sub_logs} = [Entrypoint] Starting crash subscriber in mode network_tcp
1776415476722 ms | f7a7ffe9a537 | ./test_subscriber | 7 | info | Using built-in local time plugin.

[Subscriber] Registering callback and wai...</msg>
<var>${sub_logs}</var>
<arg>${SUB_NAME}</arg>
<status status="PASS" start="2026-04-17T08:45:11.960282" elapsed="0.003195"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>\n[SUBSCRIBER CONTAINER OUTPUT]\n${sub_logs}</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-17T08:45:11.963605" elapsed="0.000316"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T08:45:11.964240" level="INFO">
[SUBSCRIBER CONTAINER OUTPUT]
[Entrypoint] Starting crash subscriber in mode network_tcp
1776415476722 ms | f7a7ffe9a537 | ./test_subscriber | 7 | info | Using built-in local time plugin.

[Subscriber] Registering callback and waiting for messages...

[Subscriber] Received value: 42
[Subscriber] Received value: 43
[Subscriber] Received value: 42
[Subscriber] Received value: 43
[Subscriber] Received value: 42
[Subscriber] Received value: 43
[Subscriber] Received value: 42
[Subscriber] Received value: 43
[Subscriber] Received value: 42
[Subscriber] Received value: 43
[Subscriber] Received value: 42
[Subscriber] Received value: 43
[Subscriber] Received value: 42
[Subscriber] Received value: 43
[Subscriber] Received value: 42
[Subscriber] Received value: 43
[Subscriber] Received value: 43
1776415487751 ms | f7a7ffe9a537 | ./test_subscriber | 7 | error | CTCPReaderLayer - TCPPubSub (Error) -SubscriberSession 172.18.0.2:55904-&gt;9541274ff36e:38951: Error reading header length: End of file
1776415487752 ms | f7a7ffe9a537 | ./test_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:35994: Failed connecting to publisher 9541274ff36e:38951: Connection refused
1776415487752 ms | f7a7ffe9a537 | ./test_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:36004: Failed connecting to publisher 9541274ff36e:38951: Connection refused
1776415487753 ms | f7a7ffe9a537 | ./test_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:36012: Failed connecting to publisher 9541274ff36e:38951: Connection refused
1776415487754 ms | f7a7ffe9a537 | ./test_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:36018: Failed connecting to publisher 9541274ff36e:38951: Connection refused
1776415487756 ms | f7a7ffe9a537 | ./test_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:36022: Failed connecting to publisher 9541274ff36e:38951: Connection refused
[Subscriber] Received value: 43
[Subscriber] Received value: 43
[Subscriber] Received value: 43
[Subscriber] Received value: 43
[Subscriber] Received value: 43
[Subscriber] Received value: 43
[Subscriber] Received value: 43
[Subscriber] Received value: 43
[Subscriber] Received value: 43
[Subscriber] Received value: 43
[Subscriber] Received value: 43
[Subscriber] Received value: 43
[Subscriber] Received value: 43
[Subscriber] Received value: 43
[Subscriber] Received value: 43
[Subscriber] Received value: 43
1776415504267 ms | f7a7ffe9a537 | ./test_subscriber | 7 | error | CTCPReaderLayer - TCPPubSub (Error) -SubscriberSession 172.18.0.2:47902-&gt;903340c06b2b:44617: Error reading header length: End of file
1776415504268 ms | f7a7ffe9a537 | ./test_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:39016: Failed connecting to publisher 903340c06b2b:44617: Connection refused
1776415504268 ms | f7a7ffe9a537 | ./test_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:39028: Failed connecting to publisher 903340c06b2b:44617: Connection refused
1776415504269 ms | f7a7ffe9a537 | ./test_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:39044: Failed connecting to publisher 903340c06b2b:44617: Connection refused
1776415504270 ms | f7a7ffe9a537 | ./test_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:39058: Failed connecting to publisher 903340c06b2b:44617: Connection refused
1776415504270 ms | f7a7ffe9a537 | ./test_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:39070: Failed connecting to publisher 903340c06b2b:44617: Connection refused
[Summary] Received 8 x 42 (crash pub), 25 x 43 (test pub)

[✓] Communication continued after crash!

[✓] One Publisher crashed and no more messages received from the crashed publisher!
</msg>
<arg>\n[SUBSCRIBER CONTAINER OUTPUT]\n${sub_logs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T08:45:11.964030" elapsed="0.000320"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-17T08:45:11.966645" level="INFO">${crash_logs} = [Entrypoint] Starting crash publisher in mode network_tcp
1776415476841 ms | 9541274ff36e | ./crash_publisher | 7 | info | Using built-in local time plugin.
[Publisher] Waiting for at least 1 subscrib...</msg>
<var>${crash_logs}</var>
<arg>${CRASH_PUB}</arg>
<status status="PASS" start="2026-04-17T08:45:11.964427" elapsed="0.002243"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>\n[CRASH PUBLISHER OUTPUT]\n${crash_logs}</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-17T08:45:11.966754" elapsed="0.000244"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T08:45:11.967297" level="INFO">
[CRASH PUBLISHER OUTPUT]
[Entrypoint] Starting crash publisher in mode network_tcp
1776415476841 ms | 9541274ff36e | ./crash_publisher | 7 | info | Using built-in local time plugin.
[Publisher] Waiting for at least 1 subscriber(s) on topic: test_topic
1776415477723 ms | 9541274ff36e | ./crash_publisher | 7 | info | CTCPReaderLayer - TCPPubSub (Info) -Publisher :::0: Created publisher and waiting for clients.
1776415477724 ms | 9541274ff36e | ./crash_publisher | 7 | info | CTCPReaderLayer - TCPPubSub (Info) -Publisher :::38951: Subscriber ::ffff:172.18.0.2:55904 has connected.
[Publisher] Found 1 subscriber(s). Proceeding to send messages.
[Crash Publisher] Starting and will crash after 10 messages...
[Crash Publisher] Sent buffer with content: 42 (message 1)
[Crash Publisher] Sent buffer with content: 42 (message 2)
[Crash Publisher] Sent buffer with content: 42 (message 3)
[Crash Publisher] Sent buffer with content: 42 (message 4)
[Crash Publisher] Sent buffer with content: 42 (message 5)
[Crash Publisher] Sent buffer with content: 42 (message 6)
[Crash Publisher] Sent buffer with content: 42 (message 7)
[Crash Publisher] Sent buffer with content: 42 (message 8)
[Crash Publisher] Crashing after message 7
./entrypoint.sh: line 60:     7 Aborted                 (core dumped) ./crash_publisher $ARGS $EXTRA
</msg>
<arg>\n[CRASH PUBLISHER OUTPUT]\n${crash_logs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T08:45:11.967104" elapsed="0.000230"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${SUB_NAME}</arg>
<status status="PASS" start="2026-04-17T08:45:11.967407" elapsed="0.001108"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${CRASH_PUB}</arg>
<status status="PASS" start="2026-04-17T08:45:11.968601" elapsed="0.000975"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${TEST_PUB}</arg>
<status status="PASS" start="2026-04-17T08:45:11.969660" elapsed="0.000937"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-17T08:45:11.971562" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${SUB_NAME}</arg>
<status status="PASS" start="2026-04-17T08:45:11.970681" elapsed="0.000906"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-17T08:45:11.971895" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${exit_code}</arg>
<arg>0</arg>
<arg>Communication failed!</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-04-17T08:45:11.971669" elapsed="0.000282"/>
</kw>
<kw name="Log Test Summary" owner="DockerLibrary">
<arg>Network Communication after one Publisher crash ${layer_tag}</arg>
<arg>${True}</arg>
<status status="PASS" start="2026-04-17T08:45:11.972029" elapsed="0.000151"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${SUB_NAME}</arg>
<status status="PASS" start="2026-04-17T08:45:11.972272" elapsed="0.004972"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${CRASH_PUB}</arg>
<status status="PASS" start="2026-04-17T08:45:11.977328" elapsed="0.004867"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${TEST_PUB}</arg>
<status status="PASS" start="2026-04-17T08:45:11.982306" elapsed="0.004889"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-17T08:45:12.987623" level="INFO">Slept 1 second.</msg>
<arg>1s</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-04-17T08:45:11.987281" elapsed="1.000419"/>
</kw>
<arg>network_tcp</arg>
<arg>network</arg>
<status status="PASS" start="2026-04-17T08:44:36.589703" elapsed="36.398075"/>
</kw>
<tag>pub_crash_network_tcp</tag>
<status status="PASS" start="2026-04-17T08:44:36.589255" elapsed="36.398645"/>
</test>
<test id="s1-s4-t3" name="Communication Continues After Publisher Crash (SHM)" line="38">
<kw name="Run Local Communication Test">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:45:12.990124" level="INFO">${IMAGE} = pub_crash_local_shm</msg>
<var>${IMAGE}</var>
<arg>${BASE_IMAGE}_${layer_tag}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:45:12.989864" elapsed="0.000280"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:45:12.990415" level="INFO">${CONTAINER} = local_all_local_shm</msg>
<var>${CONTAINER}</var>
<arg>local_all_${layer_tag}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:45:12.990221" elapsed="0.000212"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>\nStarting local test container with ${layer_tag}</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-17T08:45:12.990528" elapsed="0.000207"/>
</kw>
<kw name="Start Container" owner="DockerLibrary">
<arg>${CONTAINER}</arg>
<arg>${IMAGE}</arg>
<arg>local_all</arg>
<arg>${layer_tag}</arg>
<status status="PASS" start="2026-04-17T08:45:12.990829" elapsed="0.119711"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-17T08:45:48.111172" level="INFO">Slept 35 seconds.</msg>
<arg>35s</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-04-17T08:45:13.110713" elapsed="35.000584"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-17T08:45:48.114817" level="INFO">${logs} = [Entrypoint] Starting local test (pub/sub/monitor) in mode local_shm
Shared memory monitoring is enabled (domain: ecal_mon - queue size: 1024)
1776415513110 ms | dc4c6371337c | ./crash_publisher | 7 |...</msg>
<var>${logs}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-17T08:45:48.111471" elapsed="0.003371"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>\n\n[CONTAINER LOG: LOCAL PUB+SUB]\n\n${logs}</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-17T08:45:48.114932" elapsed="0.000313"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T08:45:48.115694" level="INFO">

[CONTAINER LOG: LOCAL PUB+SUB]

[Entrypoint] Starting local test (pub/sub/monitor) in mode local_shm
Shared memory monitoring is enabled (domain: ecal_mon - queue size: 1024)
1776415513110 ms | dc4c6371337c | ./crash_publisher | 7 | info | Using built-in local time plugin.
[Publisher] Waiting for at least 1 subscriber(s) on topic: test_topic
Shared memory monitoring is enabled (domain: ecal_mon - queue size: 1024)
1776415513110 ms | dc4c6371337c | test_publisher | 8 | info | Using built-in local time plugin.
[Publisher] Waiting for at least 1 subscriber(s) on topic: test_topic
Shared memory monitoring is enabled (domain: ecal_mon - queue size: 1024)
1776415514111 ms | dc4c6371337c | ./test_subscriber | 18 | info | Using built-in local time plugin.

[Subscriber] Registering callback and waiting for messages...

[Publisher] Found 1 subscriber(s). Proceeding to send messages.
[Publisher] Found 1 subscriber(s). Proceeding to send messages.
[Crash Publisher] Starting and will crash after 10 messages...
[Crash Publisher] Sent buffer with content: 42 (message 1)
[Subscriber] Received value: 42

 [Test Publisher] Started with mode=local_shm, topic=test_topic, node=test_publisher, count=25, delay=1000ms
[Test Publisher] Sent buffer with content: 43 (message 1)
[Subscriber] Received value: 43
[Crash Publisher] Sent buffer with content: 42 (message 2)
[Subscriber] Received value: 42
[Test Publisher] Sent buffer with content: 43 (message 2)
[Subscriber] Received value: 43
[Crash Publisher] Sent buffer with content: 42 (message 3)
[Subscriber] Received value: 42
[Test Publisher] Sent buffer with content: 43 (message 3)
[Subscriber] Received value: 43
[Crash Publisher] Sent buffer with content: 42 (message 4)
[Subscriber] Received value: 42
[Test Publisher] Sent buffer with content: 43 (message 4)
[Subscriber] Received value: 43
[Crash Publisher] Sent buffer with content: 42 (message 5)
[Subscriber] Received value: 42
[Test Publisher] Sent buffer with content: 43 (message 5)
[Subscriber] Received value: 43
[Crash Publisher] Sent buffer with content: 42 (message 6)
[Subscriber] Received value: 42
[Test Publisher] Sent buffer with content: 43 (message 6)
[Subscriber] Received value: 43
[Crash Publisher] Sent buffer with content: 42 (message 7)
[Subscriber] Received value: 42
[Test Publisher] Sent buffer with content: 43 (message 7)
[Subscriber] Received value: 43
[Crash Publisher] Sent buffer with content: 42 (message 8)
[Subscriber] Received value: 42
[Test Publisher] Sent buffer with content: 43 (message 8)
[Subscriber] Received value: 43
[Crash Publisher] Crashing after message 7
[Test Publisher] Sent buffer with content: 43 (message 9)
[Subscriber] Received value: 43
[Test Publisher] Sent buffer with content: 43 (message 10)
[Subscriber] Received value: 43
[Test Publisher] Sent buffer with content: 43 (message 11)
[Subscriber] Received value: 43
[Test Publisher] Sent buffer with content: 43 (message 12)
[Subscriber] Received value: 43
[Test Publisher] Sent buffer with content: 43 (message 13)
[Subscriber] Received value: 43
[Test Publisher] Sent buffer with content: 43 (message 14)
[Subscriber] Received value: 43
[Test Publisher] Sent buffer with content: 43 (message 15)
[Subscriber] Received value: 43
[Test Publisher] Sent buffer with content: 43 (message 16)
[Subscriber] Received value: 43
[Test Publisher] Sent buffer with content: 43 (message 17)
[Subscriber] Received value: 43
[Test Publisher] Sent buffer with content: 43 (message 18)
[Subscriber] Received value: 43
[Test Publisher] Sent buffer with content: 43 (message 19)
[Subscriber] Received value: 43
[Test Publisher] Sent buffer with content: 43 (message 20)
[Subscriber] Received value: 43
[Test Publisher] Sent buffer with content: 43 (message 21)
[Subscriber] Received value: 43
[Test Publisher] Sent buffer with content: 43 (message 22)
[Subscriber] Received value: 43
[Test Publisher] Sent buffer with content: 43 (message 23)
[Subscriber] Received value: 43
[Test Publisher] Sent buffer with content: 43 (message 24)
[Subscriber] Received value: 43
[Test Publisher] Sent buffer with content: 43 (message 25)
[Subscriber] Received value: 43
[Summary] Received 8 x 42 (crash pub), 25 x 43 (test pub)

[✓] Communication continued after crash!

[✓] One Publisher crashed and no more messages received from the crashed publisher!
./entrypoint.sh: line 55:     7 Aborted                 (core dumped) ./crash_publisher $ARGS
</msg>
<arg>\n\n[CONTAINER LOG: LOCAL PUB+SUB]\n\n${logs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T08:45:48.115366" elapsed="0.000390"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-17T08:45:48.116936" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-17T08:45:48.115834" elapsed="0.001128"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-17T08:45:48.117332" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${exit_code}</arg>
<arg>0</arg>
<arg>Local test failed!</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-04-17T08:45:48.117060" elapsed="0.000321"/>
</kw>
<kw name="Log Test Summary" owner="DockerLibrary">
<arg>Local Communication after one Publisher crash ${layer_tag}</arg>
<arg>${True}</arg>
<status status="PASS" start="2026-04-17T08:45:48.117552" elapsed="0.000193"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-17T08:45:48.117857" elapsed="0.007543"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-17T08:45:49.125850" level="INFO">Slept 1 second.</msg>
<arg>1s</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-04-17T08:45:48.125486" elapsed="1.000436"/>
</kw>
<arg>local_shm</arg>
<status status="PASS" start="2026-04-17T08:45:12.989668" elapsed="36.136330"/>
</kw>
<tag>pub_crash_local_shm</tag>
<status status="PASS" start="2026-04-17T08:45:12.989242" elapsed="36.136875"/>
</test>
<status status="PASS" start="2026-04-17T08:43:48.188087" elapsed="120.938685"/>
</suite>
<suite id="s1-s5" name="Rpc N To N Test" source="/home/runner/work/ecal-test-suite/ecal-test-suite/integration_tests/rpc_n_to_n_test/robottests/rpc_n_to_n_test.robot">
<kw name="Init Test Context" type="SETUP">
<kw name="Set Test Context" owner="GlobalPathsLibrary">
<arg>rpc_n_to_n_test</arg>
<arg>rpc_n_to_n_test</arg>
<doc>Sets the test folder and tag prefix if it's a valid test case.
The folder must exist under integration_tests/ and contain typical test structure.</doc>
<status status="PASS" start="2026-04-17T08:45:49.130054" elapsed="0.000131"/>
</kw>
<kw name="Get Build Script Path" owner="GlobalPathsLibrary">
<msg time="2026-04-17T08:45:49.130349" level="INFO">${build} = /home/runner/work/ecal-test-suite/ecal-test-suite/integration_tests/rpc_n_to_n_test/scripts/build_images.sh</msg>
<var>${build}</var>
<status status="PASS" start="2026-04-17T08:45:49.130264" elapsed="0.000105"/>
</kw>
<kw name="Get Network Name" owner="GlobalPathsLibrary">
<msg time="2026-04-17T08:45:49.130539" level="INFO">${net} = ecal_test_net</msg>
<var>${net}</var>
<status status="PASS" start="2026-04-17T08:45:49.130433" elapsed="0.000128"/>
</kw>
<kw name="Get Build Script Args" owner="GlobalPathsLibrary">
<msg time="2026-04-17T08:45:49.130706" level="INFO">${args} = ['rpc_n_to_n_test']</msg>
<var>${args}</var>
<status status="PASS" start="2026-04-17T08:45:49.130627" elapsed="0.000096"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T08:45:49.131037" level="INFO">${BUILD_SCRIPT} = /home/runner/work/ecal-test-suite/ecal-test-suite/integration_tests/rpc_n_to_n_test/scripts/build_images.sh</msg>
<arg>${BUILD_SCRIPT}</arg>
<arg>${build}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T08:45:49.130796" elapsed="0.000288"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T08:45:49.131370" level="INFO">${NETWORK} = ecal_test_net</msg>
<arg>${NETWORK}</arg>
<arg>${net}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T08:45:49.131166" elapsed="0.000232"/>
</kw>
<kw name="Get Test Description" owner="GlobalPathsLibrary">
<msg time="2026-04-17T08:45:49.131649" level="INFO">${desc} = This test validates N-to-N RPC communication using eCAL, where multiple clients
send concurrent Ping requests to multiple servers.

Test Setup:
- 2 RPC servers provide a method called "Ping".
- 2 RPC ...</msg>
<var>${desc}</var>
<doc>Reads the *** Comments *** section from the .robot file and returns it as a string.</doc>
<status status="PASS" start="2026-04-17T08:45:49.131467" elapsed="0.000203"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T08:45:49.131921" level="INFO">This test validates N-to-N RPC communication using eCAL, where multiple clients
send concurrent Ping requests to multiple servers.

Test Setup:
- 2 RPC servers provide a method called "Ping".
- 2 RPC clients call this method on all available servers.
- Each client must receive a valid "PONG" response from all available servers.

Goals:
- Validate that RPC communication scales to N clients and N servers.
- Ensure all clients connect and receive correct responses from all servers.

Success Criteria:
- Each client prints the correct number of "PONG" responses.
- All clients exit with code 0.</msg>
<arg>${desc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T08:45:49.131742" elapsed="0.000212"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>[SETUP] Building Docker image...</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-17T08:45:49.132023" elapsed="0.000171"/>
</kw>
<kw name="Run Process" owner="Process">
<msg time="2026-04-17T08:45:49.132565" level="INFO">Starting process:
/home/runner/work/ecal-test-suite/ecal-test-suite/integration_tests/rpc_n_to_n_test/scripts/build_images.sh rpc_n_to_n_test</msg>
<msg time="2026-04-17T08:45:49.132954" level="INFO">Waiting for process to complete.</msg>
<msg time="2026-04-17T08:45:57.180600" level="INFO">Process completed.</msg>
<msg time="2026-04-17T08:45:57.180765" level="INFO">${result} = &lt;result object with rc 0&gt;</msg>
<var>${result}</var>
<arg>${BUILD_SCRIPT}</arg>
<arg>@{args}</arg>
<doc>Runs a process and waits for it to complete.</doc>
<status status="PASS" start="2026-04-17T08:45:49.132298" elapsed="8.048492"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-17T08:45:57.182709" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${result.rc}</arg>
<arg>0</arg>
<arg>Failed to build Docker image!</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-04-17T08:45:57.180944" elapsed="0.001820"/>
</kw>
<kw name="Create Docker Network" owner="DockerLibrary">
<arg>${NETWORK}</arg>
<status status="PASS" start="2026-04-17T08:45:57.182864" elapsed="0.007159"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-17T08:45:59.190566" level="INFO">Slept 2 seconds.</msg>
<arg>2s</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-04-17T08:45:57.190160" elapsed="2.000490"/>
</kw>
<status status="PASS" start="2026-04-17T08:45:49.129923" elapsed="10.060803"/>
</kw>
<test id="s1-s5-t1" name="RPC N-to-N Test" line="33">
<kw name="Run RPC N-to-N Test">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:45:59.191826" level="INFO">${IMAGE} = rpc_n_to_n_test_network_udp</msg>
<var>${IMAGE}</var>
<arg>${BASE_IMAGE}_network_udp</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:45:59.191565" elapsed="0.000282"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>\n[INFO] Starting ${NUM_SERVERS} servers and ${NUM_CLIENTS} clients...</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-17T08:45:59.191925" elapsed="0.000225"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:45:59.192798" level="INFO">${name} = rpc_server_0</msg>
<var>${name}</var>
<arg>rpc_server_${i}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:45:59.192590" elapsed="0.000228"/>
</kw>
<kw name="Start Container" owner="DockerLibrary">
<arg>${name}</arg>
<arg>${IMAGE}</arg>
<arg>server</arg>
<arg>network_udp</arg>
<arg>network=${NETWORK}</arg>
<status status="PASS" start="2026-04-17T08:45:59.192889" elapsed="0.138897"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-04-17T08:45:59.192489" elapsed="0.139379"/>
</iter>
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:45:59.332670" level="INFO">${name} = rpc_server_1</msg>
<var>${name}</var>
<arg>rpc_server_${i}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:45:59.332194" elapsed="0.000508"/>
</kw>
<kw name="Start Container" owner="DockerLibrary">
<arg>${name}</arg>
<arg>${IMAGE}</arg>
<arg>server</arg>
<arg>network_udp</arg>
<arg>network=${NETWORK}</arg>
<status status="PASS" start="2026-04-17T08:45:59.332882" elapsed="0.135206"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-04-17T08:45:59.332043" elapsed="0.136131"/>
</iter>
<var>${i}</var>
<value>${NUM_SERVERS}</value>
<status status="PASS" start="2026-04-17T08:45:59.192224" elapsed="0.276007"/>
</for>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-17T08:46:01.468989" level="INFO">Slept 2 seconds.</msg>
<arg>2s</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-04-17T08:45:59.468419" elapsed="2.000660"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:46:01.469886" level="INFO">${name} = rpc_client_0</msg>
<var>${name}</var>
<arg>rpc_client_${j}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:46:01.469587" elapsed="0.000321"/>
</kw>
<kw name="Start Container" owner="DockerLibrary">
<arg>${name}</arg>
<arg>${IMAGE}</arg>
<arg>client</arg>
<arg>network_udp</arg>
<arg>network=${NETWORK}</arg>
<status status="PASS" start="2026-04-17T08:46:01.469986" elapsed="0.122051"/>
</kw>
<var name="${j}">0</var>
<status status="PASS" start="2026-04-17T08:46:01.469417" elapsed="0.122685"/>
</iter>
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:46:01.592770" level="INFO">${name} = rpc_client_1</msg>
<var>${name}</var>
<arg>rpc_client_${j}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:46:01.592342" elapsed="0.000453"/>
</kw>
<kw name="Start Container" owner="DockerLibrary">
<arg>${name}</arg>
<arg>${IMAGE}</arg>
<arg>client</arg>
<arg>network_udp</arg>
<arg>network=${NETWORK}</arg>
<status status="PASS" start="2026-04-17T08:46:01.592878" elapsed="0.123443"/>
</kw>
<var name="${j}">1</var>
<status status="PASS" start="2026-04-17T08:46:01.592234" elapsed="0.124152"/>
</iter>
<var>${j}</var>
<value>${NUM_CLIENTS}</value>
<status status="PASS" start="2026-04-17T08:46:01.469161" elapsed="0.247263"/>
</for>
<for flavor="IN RANGE">
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:46:01.717153" level="INFO">${name} = rpc_client_0</msg>
<var>${name}</var>
<arg>rpc_client_${j}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:46:01.716852" elapsed="0.000324"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-17T08:46:03.152664" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${name}</arg>
<status status="PASS" start="2026-04-17T08:46:01.717260" elapsed="1.435460"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-17T08:46:03.153387" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${exit_code}</arg>
<arg>0</arg>
<arg>${name} failed!</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-04-17T08:46:03.152926" elapsed="0.000539"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-17T08:46:03.156331" level="INFO">${logs} = [Entrypoint] Starting client in mode network_udp...
[Client] Initializing eCAL with mode: network_udp
1776415561593 ms | 3c35f238e754 | rpc_client | 1 | info | Using built-in local time plugin.
[Clien...</msg>
<var>${logs}</var>
<arg>${name}</arg>
<status status="PASS" start="2026-04-17T08:46:03.153691" elapsed="0.002666"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>\n[CLIENT LOG: ${name}]\n${logs}</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-17T08:46:03.156445" elapsed="0.000325"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T08:46:03.157096" level="INFO">
[CLIENT LOG: rpc_client_0]
[Entrypoint] Starting client in mode network_udp...
[Client] Initializing eCAL with mode: network_udp
1776415561593 ms | 3c35f238e754 | rpc_client | 1 | info | Using built-in local time plugin.
[Client] Waiting for server...
[Client] Sending Ping...
[Client] Response: PONG
[Client] Response: PONG
[Client] PONG responses: 2
</msg>
<arg>\n[CLIENT LOG: ${name}]\n${logs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T08:46:03.156881" elapsed="0.000253"/>
</kw>
<var name="${j}">0</var>
<status status="PASS" start="2026-04-17T08:46:01.716745" elapsed="1.440415"/>
</iter>
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:46:03.157583" level="INFO">${name} = rpc_client_1</msg>
<var>${name}</var>
<arg>rpc_client_${j}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:46:03.157336" elapsed="0.000268"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-17T08:46:03.284274" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${name}</arg>
<status status="PASS" start="2026-04-17T08:46:03.157681" elapsed="0.126649"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-17T08:46:03.285076" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${exit_code}</arg>
<arg>0</arg>
<arg>${name} failed!</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-04-17T08:46:03.284585" elapsed="0.000567"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-17T08:46:03.287759" level="INFO">${logs} = [Entrypoint] Starting client in mode network_udp...
[Client] Initializing eCAL with mode: network_udp
1776415561718 ms | ed350055f449 | rpc_client | 1 | info | Using built-in local time plugin.
[Clien...</msg>
<var>${logs}</var>
<arg>${name}</arg>
<status status="PASS" start="2026-04-17T08:46:03.285254" elapsed="0.002531"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>\n[CLIENT LOG: ${name}]\n${logs}</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-17T08:46:03.287874" elapsed="0.000271"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T08:46:03.288486" level="INFO">
[CLIENT LOG: rpc_client_1]
[Entrypoint] Starting client in mode network_udp...
[Client] Initializing eCAL with mode: network_udp
1776415561718 ms | ed350055f449 | rpc_client | 1 | info | Using built-in local time plugin.
[Client] Waiting for server...
[Client] Sending Ping...
[Client] Response: PONG
[Client] Response: PONG
[Client] PONG responses: 2
</msg>
<arg>\n[CLIENT LOG: ${name}]\n${logs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T08:46:03.288256" elapsed="0.000306"/>
</kw>
<var name="${j}">1</var>
<status status="PASS" start="2026-04-17T08:46:03.157267" elapsed="0.131327"/>
</iter>
<var>${j}</var>
<value>${NUM_CLIENTS}</value>
<status status="PASS" start="2026-04-17T08:46:01.716492" elapsed="1.572133"/>
</for>
<for flavor="IN RANGE">
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:46:03.289137" level="INFO">${name} = rpc_server_0</msg>
<var>${name}</var>
<arg>rpc_server_${i}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:46:03.288923" elapsed="0.000234"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-17T08:46:03.291436" level="INFO">${logs} = [Entrypoint] Starting server in mode network_udp...
[1;33m[Server] Initializing eCAL with mode: network_udp[0m
1776415559333 ms | a8c8dd5ce119 | rpc_n_to_n_server | 1 | info | Using built-in local t...</msg>
<var>${logs}</var>
<arg>${name}</arg>
<status status="PASS" start="2026-04-17T08:46:03.289230" elapsed="0.002233"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>\n[SERVER LOG: ${name}]\n${logs}</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-17T08:46:03.291630" elapsed="0.000261"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T08:46:03.292228" level="INFO">
[SERVER LOG: rpc_server_0]
[Entrypoint] Starting server in mode network_udp...
[1;33m[Server] Initializing eCAL with mode: network_udp[0m
1776415559333 ms | a8c8dd5ce119 | rpc_n_to_n_server | 1 | info | Using built-in local time plugin.
[1;32m[Server] Ready for RPC (method: Ping)[0m
[1;32m[Server] Received RPC: PING[0m
[1;32m[Server] Responded with: PONG[0m
[1;32m[Server] Received RPC: PING[0m
[1;32m[Server] Responded with: PONG[0m
</msg>
<arg>\n[SERVER LOG: ${name}]\n${logs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T08:46:03.292004" elapsed="0.000264"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${name}</arg>
<status status="PASS" start="2026-04-17T08:46:03.292342" elapsed="10.082490"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-04-17T08:46:03.288856" elapsed="10.086033"/>
</iter>
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:46:13.375434" level="INFO">${name} = rpc_server_1</msg>
<var>${name}</var>
<arg>rpc_server_${i}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:46:13.375130" elapsed="0.000326"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-17T08:46:13.377793" level="INFO">${logs} = [Entrypoint] Starting server in mode network_udp...
[1;33m[Server] Initializing eCAL with mode: network_udp[0m
1776415559468 ms | 4ec0591df1f9 | rpc_n_to_n_server | 1 | info | Using built-in local t...</msg>
<var>${logs}</var>
<arg>${name}</arg>
<status status="PASS" start="2026-04-17T08:46:13.375582" elapsed="0.002238"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>\n[SERVER LOG: ${name}]\n${logs}</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-17T08:46:13.377906" elapsed="0.000261"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T08:46:13.378652" level="INFO">
[SERVER LOG: rpc_server_1]
[Entrypoint] Starting server in mode network_udp...
[1;33m[Server] Initializing eCAL with mode: network_udp[0m
1776415559468 ms | 4ec0591df1f9 | rpc_n_to_n_server | 1 | info | Using built-in local time plugin.
[1;32m[Server] Ready for RPC (method: Ping)[0m
[1;32m[Server] Received RPC: PING[0m
[1;32m[Server] Responded with: PONG[0m
[1;32m[Server] Received RPC: PING[0m
[1;32m[Server] Responded with: PONG[0m
</msg>
<arg>\n[SERVER LOG: ${name}]\n${logs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T08:46:13.378286" elapsed="0.000422"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${name}</arg>
<status status="PASS" start="2026-04-17T08:46:13.378808" elapsed="10.076453"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-04-17T08:46:13.375025" elapsed="10.080292"/>
</iter>
<var>${i}</var>
<value>${NUM_SERVERS}</value>
<status status="PASS" start="2026-04-17T08:46:03.288677" elapsed="20.166676"/>
</for>
<for flavor="IN RANGE">
<iter>
<kw name="Stop Container" owner="DockerLibrary">
<arg>rpc_client_${j}</arg>
<status status="PASS" start="2026-04-17T08:46:23.455812" elapsed="0.004849"/>
</kw>
<var name="${j}">0</var>
<status status="PASS" start="2026-04-17T08:46:23.455714" elapsed="0.004982"/>
</iter>
<iter>
<kw name="Stop Container" owner="DockerLibrary">
<arg>rpc_client_${j}</arg>
<status status="PASS" start="2026-04-17T08:46:23.460845" elapsed="0.004547"/>
</kw>
<var name="${j}">1</var>
<status status="PASS" start="2026-04-17T08:46:23.460778" elapsed="0.004647"/>
</iter>
<var>${j}</var>
<value>${NUM_CLIENTS}</value>
<status status="PASS" start="2026-04-17T08:46:23.455414" elapsed="0.010038"/>
</for>
<kw name="Log Test Summary" owner="DockerLibrary">
<arg>RPC N-to-N Test</arg>
<arg>${True}</arg>
<status status="PASS" start="2026-04-17T08:46:23.465566" elapsed="0.000141"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-17T08:46:24.466219" level="INFO">Slept 1 second.</msg>
<arg>1s</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-04-17T08:46:23.465817" elapsed="1.000475"/>
</kw>
<status status="PASS" start="2026-04-17T08:45:59.191345" elapsed="25.275023"/>
</kw>
<tag>rpc_n_to_n_test</tag>
<status status="PASS" start="2026-04-17T08:45:59.190796" elapsed="25.275687"/>
</test>
<status status="PASS" start="2026-04-17T08:45:49.127375" elapsed="35.340346"/>
</suite>
<suite id="s1-s6" name="Rpc Ping Test" source="/home/runner/work/ecal-test-suite/ecal-test-suite/integration_tests/rpc_ping_test/robottests/rpc_ping_test.robot">
<kw name="Init Test Context" type="SETUP">
<kw name="Set Test Context" owner="GlobalPathsLibrary">
<arg>rpc_ping_test</arg>
<arg>rpc_ping_test</arg>
<doc>Sets the test folder and tag prefix if it's a valid test case.
The folder must exist under integration_tests/ and contain typical test structure.</doc>
<status status="PASS" start="2026-04-17T08:46:24.470966" elapsed="0.000125"/>
</kw>
<kw name="Get Build Script Path" owner="GlobalPathsLibrary">
<msg time="2026-04-17T08:46:24.471260" level="INFO">${build} = /home/runner/work/ecal-test-suite/ecal-test-suite/integration_tests/rpc_ping_test/scripts/build_images.sh</msg>
<var>${build}</var>
<status status="PASS" start="2026-04-17T08:46:24.471170" elapsed="0.000110"/>
</kw>
<kw name="Get Network Name" owner="GlobalPathsLibrary">
<msg time="2026-04-17T08:46:24.471418" level="INFO">${net} = ecal_test_net</msg>
<var>${net}</var>
<status status="PASS" start="2026-04-17T08:46:24.471343" elapsed="0.000092"/>
</kw>
<kw name="Get Build Script Args" owner="GlobalPathsLibrary">
<msg time="2026-04-17T08:46:24.471598" level="INFO">${args} = ['rpc_ping_test']</msg>
<var>${args}</var>
<status status="PASS" start="2026-04-17T08:46:24.471496" elapsed="0.000119"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T08:46:24.471927" level="INFO">${BUILD_SCRIPT} = /home/runner/work/ecal-test-suite/ecal-test-suite/integration_tests/rpc_ping_test/scripts/build_images.sh</msg>
<arg>${BUILD_SCRIPT}</arg>
<arg>${build}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T08:46:24.471688" elapsed="0.000271"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T08:46:24.472240" level="INFO">${NETWORK} = ecal_test_net</msg>
<arg>${NETWORK}</arg>
<arg>${net}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T08:46:24.472035" elapsed="0.000233"/>
</kw>
<kw name="Get Test Description" owner="GlobalPathsLibrary">
<msg time="2026-04-17T08:46:24.472482" level="INFO">${desc} = This test checks a basic RPC communication between a client and a server.

Test Setup:
- The server provides a method called "Ping".
- The client sends one "PING" request to this method.

Goals:
- Ens...</msg>
<var>${desc}</var>
<doc>Reads the *** Comments *** section from the .robot file and returns it as a string.</doc>
<status status="PASS" start="2026-04-17T08:46:24.472337" elapsed="0.000201"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T08:46:24.472785" level="INFO">This test checks a basic RPC communication between a client and a server.

Test Setup:
- The server provides a method called "Ping".
- The client sends one "PING" request to this method.

Goals:
- Ensure RPC client-server interaction works over network UDP.
- Validate that the server responds with "PONG".
- The client must connect, call the method, and receive a valid response.

Success Criteria:
- The server receives a call and returns a response.
- The client prints the response and exits with code 0.</msg>
<arg>${desc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T08:46:24.472615" elapsed="0.000202"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>[SETUP] Building Docker image...</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-17T08:46:24.472929" elapsed="0.000168"/>
</kw>
<kw name="Run Process" owner="Process">
<msg time="2026-04-17T08:46:24.473442" level="INFO">Starting process:
/home/runner/work/ecal-test-suite/ecal-test-suite/integration_tests/rpc_ping_test/scripts/build_images.sh rpc_ping_test</msg>
<msg time="2026-04-17T08:46:24.473816" level="INFO">Waiting for process to complete.</msg>
<msg time="2026-04-17T08:46:32.506664" level="INFO">Process completed.</msg>
<msg time="2026-04-17T08:46:32.506837" level="INFO">${result} = &lt;result object with rc 0&gt;</msg>
<var>${result}</var>
<arg>${BUILD_SCRIPT}</arg>
<arg>@{args}</arg>
<doc>Runs a process and waits for it to complete.</doc>
<status status="PASS" start="2026-04-17T08:46:24.473203" elapsed="8.033658"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-17T08:46:32.507685" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${result.rc}</arg>
<arg>0</arg>
<arg>Failed to build Docker image!</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-04-17T08:46:32.507021" elapsed="0.000718"/>
</kw>
<kw name="Create Docker Network" owner="DockerLibrary">
<arg>${NETWORK}</arg>
<status status="PASS" start="2026-04-17T08:46:32.507826" elapsed="0.007116"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-17T08:46:34.515423" level="INFO">Slept 2 seconds.</msg>
<arg>2s</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-04-17T08:46:32.515049" elapsed="2.000515"/>
</kw>
<status status="PASS" start="2026-04-17T08:46:24.470830" elapsed="10.044827"/>
</kw>
<test id="s1-s6-t1" name="RPC Ping Test" line="30">
<kw name="Run RPC Test Network UDP">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:46:34.517012" level="INFO">${IMAGE} = rpc_ping_test_network_udp</msg>
<var>${IMAGE}</var>
<arg>${BASE_IMAGE}_network_udp</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:46:34.516745" elapsed="0.000289"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:46:34.517288" level="INFO">${CLIENT_NAME} = rpc_client</msg>
<var>${CLIENT_NAME}</var>
<arg>rpc_client</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:46:34.517116" elapsed="0.000191"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:46:34.517566" level="INFO">${SERVER_NAME} = rpc_server</msg>
<var>${SERVER_NAME}</var>
<arg>rpc_server</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:46:34.517377" elapsed="0.000208"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>\n[INFO] Running RPC test (network UDP mode)...</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-17T08:46:34.517657" elapsed="0.000183"/>
</kw>
<kw name="Start Container" owner="DockerLibrary">
<arg>${SERVER_NAME}</arg>
<arg>${IMAGE}</arg>
<arg>server</arg>
<arg>network_udp</arg>
<arg>network=${NETWORK}</arg>
<status status="PASS" start="2026-04-17T08:46:34.517943" elapsed="0.137070"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-17T08:46:35.655548" level="INFO">Slept 1 second.</msg>
<arg>1s</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-04-17T08:46:34.655180" elapsed="1.000461"/>
</kw>
<kw name="Start Container" owner="DockerLibrary">
<arg>${CLIENT_NAME}</arg>
<arg>${IMAGE}</arg>
<arg>client</arg>
<arg>network_udp</arg>
<arg>network=${NETWORK}</arg>
<status status="PASS" start="2026-04-17T08:46:35.655790" elapsed="0.126155"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-17T08:46:37.344198" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${CLIENT_NAME}</arg>
<status status="PASS" start="2026-04-17T08:46:35.782110" elapsed="1.562181"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-17T08:46:37.345149" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${exit_code}</arg>
<arg>0</arg>
<arg>Client failed!</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-04-17T08:46:37.344575" elapsed="0.000672"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-17T08:46:37.348590" level="INFO">${server_logs} = [Entrypoint] Starting server in mode network_udp...
[1;33m[Server] Initializing eCAL with mode: network_udp[0m
1776415594656 ms | 569219ee8360 | rpc_ping_server | 1 | info | Using built-in local tim...</msg>
<var>${server_logs}</var>
<arg>${SERVER_NAME}</arg>
<status status="PASS" start="2026-04-17T08:46:37.345410" elapsed="0.003210"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-17T08:46:37.351282" level="INFO">${client_logs} = [Entrypoint] Starting client in mode network_udp...
[1;33m[Client] Initializing eCAL with mode: network_udp[0m
1776415595783 ms | 39a9b95c6592 | rpc_ping_client | 1 | info | Using built-in local tim...</msg>
<var>${client_logs}</var>
<arg>${CLIENT_NAME}</arg>
<status status="PASS" start="2026-04-17T08:46:37.348730" elapsed="0.002579"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>\n[CONTAINER LOG: SERVER]\n${server_logs}</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-17T08:46:37.351397" elapsed="0.000347"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T08:46:37.352121" level="INFO">
[CONTAINER LOG: SERVER]
[Entrypoint] Starting server in mode network_udp...
[1;33m[Server] Initializing eCAL with mode: network_udp[0m
1776415594656 ms | 569219ee8360 | rpc_ping_server | 1 | info | Using built-in local time plugin.
[1;32m[Server] Waiting for RPC calls (method: Ping)[0m
[1;32m[Server] Received RPC request: PING[0m
[1;32m[Server] Responding with: PONG[0m
</msg>
<arg>\n[CONTAINER LOG: SERVER]\n${server_logs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T08:46:37.351854" elapsed="0.000320"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>\n[CONTAINER LOG: CLIENT]\n${client_logs}</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-17T08:46:37.352272" elapsed="0.000302"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T08:46:37.352879" level="INFO">
[CONTAINER LOG: CLIENT]
[Entrypoint] Starting client in mode network_udp...
[1;33m[Client] Initializing eCAL with mode: network_udp[0m
1776415595783 ms | 39a9b95c6592 | rpc_ping_client | 1 | info | Using built-in local time plugin.
[1;33m[Client] Waiting for server connection...[0m
[1;32m[Client] Connected. Calling 'Ping'...[0m
[1;32m[Client] Server response: PONG[0m
</msg>
<arg>\n[CONTAINER LOG: CLIENT]\n${client_logs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T08:46:37.352684" elapsed="0.000232"/>
</kw>
<kw name="Log Test Summary" owner="DockerLibrary">
<arg>RPC Ping Test (UDP)</arg>
<arg>${True}</arg>
<status status="PASS" start="2026-04-17T08:46:37.352987" elapsed="0.000110"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${CLIENT_NAME}</arg>
<status status="PASS" start="2026-04-17T08:46:37.353193" elapsed="0.004839"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${SERVER_NAME}</arg>
<status status="PASS" start="2026-04-17T08:46:37.358117" elapsed="10.079768"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-17T08:46:48.438427" level="INFO">Slept 1 second.</msg>
<arg>1s</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-04-17T08:46:47.438040" elapsed="1.000527"/>
</kw>
<status status="PASS" start="2026-04-17T08:46:34.516268" elapsed="13.922459"/>
</kw>
<tag>rpc_server_client_ping_test</tag>
<status status="PASS" start="2026-04-17T08:46:34.515732" elapsed="13.923128"/>
</test>
<status status="PASS" start="2026-04-17T08:46:24.468350" elapsed="23.971633"/>
</suite>
<suite id="s1-s7" name="Rpc Reconnect Test" source="/home/runner/work/ecal-test-suite/ecal-test-suite/integration_tests/rpc_reconnect_test/robottests/rpc_reconnect_test.robot">
<kw name="Init Test Context" type="SETUP">
<kw name="Set Test Context" owner="GlobalPathsLibrary">
<arg>rpc_reconnect_test</arg>
<arg>rpc_reconnect_test</arg>
<doc>Sets the test folder and tag prefix if it's a valid test case.
The folder must exist under integration_tests/ and contain typical test structure.</doc>
<status status="PASS" start="2026-04-17T08:46:48.443398" elapsed="0.000179"/>
</kw>
<kw name="Get Build Script Path" owner="GlobalPathsLibrary">
<msg time="2026-04-17T08:46:48.443753" level="INFO">${build} = /home/runner/work/ecal-test-suite/ecal-test-suite/integration_tests/rpc_reconnect_test/scripts/build_images.sh</msg>
<var>${build}</var>
<status status="PASS" start="2026-04-17T08:46:48.443660" elapsed="0.000113"/>
</kw>
<kw name="Get Build Script Args" owner="GlobalPathsLibrary">
<msg time="2026-04-17T08:46:48.443916" level="INFO">${args} = ['rpc_reconnect_test']</msg>
<var>${args}</var>
<status status="PASS" start="2026-04-17T08:46:48.443838" elapsed="0.000095"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T08:46:48.444253" level="INFO">${BUILD_SCRIPT} = /home/runner/work/ecal-test-suite/ecal-test-suite/integration_tests/rpc_reconnect_test/scripts/build_images.sh</msg>
<arg>${BUILD_SCRIPT}</arg>
<arg>${build}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T08:46:48.444009" elapsed="0.000274"/>
</kw>
<kw name="Create Docker Network With Subnet" owner="DockerLibrary">
<arg>${NETWORK}</arg>
<arg>172.28.0.0/16</arg>
<doc>Creates a Docker bridge network with a given subnet if it does not already exist.</doc>
<status status="PASS" start="2026-04-17T08:46:48.444354" elapsed="0.066412"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>[SETUP] Building Docker image...</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-17T08:46:48.510951" elapsed="0.000311"/>
</kw>
<kw name="Run Process" owner="Process">
<msg time="2026-04-17T08:46:48.511698" level="INFO">Starting process:
/home/runner/work/ecal-test-suite/ecal-test-suite/integration_tests/rpc_reconnect_test/scripts/build_images.sh rpc_reconnect_test</msg>
<msg time="2026-04-17T08:46:48.512019" level="INFO">Waiting for process to complete.</msg>
<msg time="2026-04-17T08:46:56.574105" level="INFO">Process completed.</msg>
<msg time="2026-04-17T08:46:56.574278" level="INFO">${result} = &lt;result object with rc 0&gt;</msg>
<var>${result}</var>
<arg>${BUILD_SCRIPT}</arg>
<arg>@{args}</arg>
<doc>Runs a process and waits for it to complete.</doc>
<status status="PASS" start="2026-04-17T08:46:48.511371" elapsed="8.062941"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-17T08:46:56.575149" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${result.rc}</arg>
<arg>0</arg>
<arg>Failed to build Docker image!</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-04-17T08:46:56.574471" elapsed="0.000737"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-17T08:46:59.575745" level="INFO">Slept 3 seconds.</msg>
<arg>3s</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-04-17T08:46:56.575319" elapsed="3.000530"/>
</kw>
<status status="PASS" start="2026-04-17T08:46:48.443252" elapsed="11.132676"/>
</kw>
<test id="s1-s7-t1" name="RPC Reconnect Test" line="28">
<kw name="Run RPC Reconnect Test">
<kw name="Log To Console" owner="BuiltIn">
<arg>\n[INFO] Starting RPC Reconnect Test...</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-17T08:46:59.576719" elapsed="0.000252"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:46:59.577302" level="INFO">${IMAGE} = rpc_reconnect_test_network_udp</msg>
<var>${IMAGE}</var>
<arg>${BASE_IMAGE}_network_udp</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:46:59.577081" elapsed="0.000240"/>
</kw>
<kw name="Start Container With Ip" owner="DockerLibrary">
<arg>rpc_server</arg>
<arg>${IMAGE}</arg>
<arg>server</arg>
<arg>network_udp</arg>
<arg>network=${NETWORK}</arg>
<arg>ip=${SERVER_IP}</arg>
<status status="PASS" start="2026-04-17T08:46:59.577393" elapsed="0.146850"/>
</kw>
<kw name="Start Container With Ip" owner="DockerLibrary">
<arg>rpc_client</arg>
<arg>${IMAGE}</arg>
<arg>client</arg>
<arg>network_udp</arg>
<arg>network=${NETWORK}</arg>
<arg>ip=${CLIENT_IP}</arg>
<status status="PASS" start="2026-04-17T08:46:59.724460" elapsed="0.130651"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-17T08:47:01.855787" level="INFO">Slept 2 seconds.</msg>
<arg>2s</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-04-17T08:46:59.855301" elapsed="2.000594"/>
</kw>
<kw name="Disconnect Container From Network" owner="DockerLibrary">
<arg>rpc_client</arg>
<arg>${NETWORK}</arg>
<status status="PASS" start="2026-04-17T08:47:01.856056" elapsed="0.026725"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-17T08:47:07.884107" level="INFO">Slept 6 seconds.</msg>
<arg>6s</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-04-17T08:47:01.883589" elapsed="6.000634"/>
</kw>
<kw name="Reconnect Container To Network With Ip" owner="DockerLibrary">
<arg>rpc_client</arg>
<arg>${NETWORK}</arg>
<arg>${CLIENT_IP}</arg>
<status status="PASS" start="2026-04-17T08:47:07.884400" elapsed="0.015708"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-17T08:47:09.900850" level="INFO">Slept 2 seconds.</msg>
<arg>2s</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-04-17T08:47:07.900301" elapsed="2.000663"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-17T08:47:09.903908" level="INFO">${log_cli} = [Entrypoint] Starting client in mode network_udp...
[Client] Initializing eCAL with mode: network_udp
1776415619830 ms | 57ba3f887daa | rpc_client | 1 | info | Using built-in local time plugin.
[Clien...</msg>
<var>${log_cli}</var>
<arg>rpc_client</arg>
<status status="PASS" start="2026-04-17T08:47:09.901143" elapsed="0.002792"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-17T08:47:09.906262" level="INFO">${log_srv} = [Entrypoint] Starting server in mode network_udp...
[1;33m[Server] Initializing eCAL with mode: network_udp[0m
1776415619698 ms | 3fab89c14531 | rpc_ping_server | 1 | info | Using built-in local tim...</msg>
<var>${log_srv}</var>
<arg>rpc_server</arg>
<status status="PASS" start="2026-04-17T08:47:09.904023" elapsed="0.002266"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>\n[CONTAINER LOG: CLIENT]\n${log_cli}</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-17T08:47:09.906377" elapsed="0.000329"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>\n[CONTAINER LOG: SERVER]\n${log_srv}</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-17T08:47:09.906822" elapsed="0.000232"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T08:47:09.907372" level="INFO">
[CONTAINER LOG: CLIENT]
[Entrypoint] Starting client in mode network_udp...
[Client] Initializing eCAL with mode: network_udp
1776415619830 ms | 57ba3f887daa | rpc_client | 1 | info | Using built-in local time plugin.
[Client] Waiting for server...
[Client][Initial] Calling RPC 'Ping'...
[Client][Initial] Response: PONG
[Client] Trying to reconnect and call again...
[Client][Reconnect] Calling RPC 'Ping'...
[Client][Reconnect] Response: PONG
[Client] Total PONGs received: 2
[Client]  Reconnect test passed.
</msg>
<arg>\n[CONTAINER LOG: CLIENT]\n${log_cli}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T08:47:09.907170" elapsed="0.000283"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T08:47:09.907757" level="INFO">
[CONTAINER LOG: SERVER]
[Entrypoint] Starting server in mode network_udp...
[1;33m[Server] Initializing eCAL with mode: network_udp[0m
1776415619698 ms | 3fab89c14531 | rpc_ping_server | 1 | info | Using built-in local time plugin.
[1;32m[Server] Waiting for RPC calls (method: Ping)[0m
[1;32m[Server] Received RPC request: PING[0m
[1;32m[Server] Responding with: PONG[0m
[1;32m[Server] Received RPC request: PING[0m
[1;32m[Server] Responding with: PONG[0m
</msg>
<arg>\n[CONTAINER LOG: SERVER]\n${log_srv}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T08:47:09.907570" elapsed="0.000223"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-17T08:47:09.908907" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>rpc_client</arg>
<status status="PASS" start="2026-04-17T08:47:09.907867" elapsed="0.001066"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-17T08:47:09.909248" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${exit_code}</arg>
<arg>0</arg>
<arg>Client failed after reconnect!</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-04-17T08:47:09.909018" elapsed="0.000277"/>
</kw>
<kw name="Log Test Summary" owner="DockerLibrary">
<arg>RPC Reconnect Test</arg>
<arg>${True}</arg>
<status status="PASS" start="2026-04-17T08:47:09.909374" elapsed="0.000149"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>rpc_client</arg>
<status status="PASS" start="2026-04-17T08:47:09.909608" elapsed="0.004958"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>rpc_server</arg>
<status status="PASS" start="2026-04-17T08:47:09.914651" elapsed="10.113064"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-17T08:47:21.028287" level="INFO">Slept 1 second.</msg>
<arg>1s</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-04-17T08:47:20.027871" elapsed="1.000501"/>
</kw>
<status status="PASS" start="2026-04-17T08:46:59.576475" elapsed="21.451977"/>
</kw>
<tag>rpc_reconnect</tag>
<status status="PASS" start="2026-04-17T08:46:59.575994" elapsed="21.452628"/>
</test>
<test id="s1-s7-t2" name="RPC Reconnect Test2" line="32">
<kw name="Run RPC Reconnect Test2">
<kw name="Log To Console" owner="BuiltIn">
<arg>\n[INFO] Starting RPC Reconnect Test...</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-17T08:47:21.030427" elapsed="0.000266"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:47:21.031038" level="INFO">${IMAGE} = rpc_reconnect_test_network_udp</msg>
<var>${IMAGE}</var>
<arg>${BASE_IMAGE}_network_udp</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:47:21.030807" elapsed="0.000251"/>
</kw>
<kw name="Start Container With Ip" owner="DockerLibrary">
<arg>rpc_server</arg>
<arg>${IMAGE}</arg>
<arg>server</arg>
<arg>network_udp</arg>
<arg>network=${NETWORK}</arg>
<arg>ip=${SERVER_IP}</arg>
<status status="PASS" start="2026-04-17T08:47:21.031130" elapsed="0.143465"/>
</kw>
<kw name="Start Container With Ip" owner="DockerLibrary">
<arg>rpc_client</arg>
<arg>${IMAGE}</arg>
<arg>client</arg>
<arg>network_udp</arg>
<arg>network=${NETWORK}</arg>
<arg>ip=${CLIENT_IP}</arg>
<status status="PASS" start="2026-04-17T08:47:21.174797" elapsed="0.147765"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-17T08:47:23.323196" level="INFO">Slept 2 seconds.</msg>
<arg>2s</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-04-17T08:47:21.322765" elapsed="2.000528"/>
</kw>
<kw name="Disconnect Container From Network" owner="DockerLibrary">
<arg>rpc_server</arg>
<arg>${NETWORK}</arg>
<status status="PASS" start="2026-04-17T08:47:23.323441" elapsed="0.019993"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-17T08:47:29.344122" level="INFO">Slept 6 seconds.</msg>
<arg>6s</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-04-17T08:47:23.343633" elapsed="6.000602"/>
</kw>
<kw name="Reconnect Container To Network With Ip" owner="DockerLibrary">
<arg>rpc_server</arg>
<arg>${NETWORK}</arg>
<arg>${SERVER_IP}</arg>
<status status="PASS" start="2026-04-17T08:47:29.344402" elapsed="0.010976"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-17T08:47:31.356211" level="INFO">Slept 2 seconds.</msg>
<arg>2s</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-04-17T08:47:29.355743" elapsed="2.000577"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-17T08:47:31.359180" level="INFO">${log_cli} = [Entrypoint] Starting client in mode network_udp...
[Client] Initializing eCAL with mode: network_udp
1776415641294 ms | 994c5f4820da | rpc_client | 1 | info | Using built-in local time plugin.
[Clien...</msg>
<var>${log_cli}</var>
<arg>rpc_client</arg>
<status status="PASS" start="2026-04-17T08:47:31.356476" elapsed="0.002740"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-17T08:47:31.361303" level="INFO">${log_srv} = [Entrypoint] Starting server in mode network_udp...
[1;33m[Server] Initializing eCAL with mode: network_udp[0m
1776415641147 ms | c2f3f9471356 | rpc_ping_server | 1 | info | Using built-in local tim...</msg>
<var>${log_srv}</var>
<arg>rpc_server</arg>
<status status="PASS" start="2026-04-17T08:47:31.359313" elapsed="0.002016"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>\n[CONTAINER LOG: CLIENT]\n${log_cli}</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-17T08:47:31.361414" elapsed="0.000325"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>\n[CONTAINER LOG: SERVER]\n${log_srv}</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-17T08:47:31.361846" elapsed="0.000245"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T08:47:31.362386" level="INFO">
[CONTAINER LOG: CLIENT]
[Entrypoint] Starting client in mode network_udp...
[Client] Initializing eCAL with mode: network_udp
1776415641294 ms | 994c5f4820da | rpc_client | 1 | info | Using built-in local time plugin.
[Client] Waiting for server...
[Client][Initial] Calling RPC 'Ping'...
[Client][Initial] Response: PONG
[Client] Trying to reconnect and call again...
[Client][Reconnect] Calling RPC 'Ping'...
[Client][Reconnect] Response: PONG
[Client] Total PONGs received: 2
[Client]  Reconnect test passed.
</msg>
<arg>\n[CONTAINER LOG: CLIENT]\n${log_cli}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T08:47:31.362199" elapsed="0.000221"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T08:47:31.362702" level="INFO">
[CONTAINER LOG: SERVER]
[Entrypoint] Starting server in mode network_udp...
[1;33m[Server] Initializing eCAL with mode: network_udp[0m
1776415641147 ms | c2f3f9471356 | rpc_ping_server | 1 | info | Using built-in local time plugin.
[1;32m[Server] Waiting for RPC calls (method: Ping)[0m
[1;32m[Server] Received RPC request: PING[0m
[1;32m[Server] Responding with: PONG[0m
[1;32m[Server] Received RPC request: PING[0m
[1;32m[Server] Responding with: PONG[0m
</msg>
<arg>\n[CONTAINER LOG: SERVER]\n${log_srv}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T08:47:31.362492" elapsed="0.000289"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-17T08:47:31.363836" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>rpc_client</arg>
<status status="PASS" start="2026-04-17T08:47:31.362856" elapsed="0.001003"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-17T08:47:31.364159" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${exit_code}</arg>
<arg>0</arg>
<arg>Client failed after reconnect!</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-04-17T08:47:31.363939" elapsed="0.000266"/>
</kw>
<kw name="Log Test Summary" owner="DockerLibrary">
<arg>RPC Reconnect Test</arg>
<arg>${True}</arg>
<status status="PASS" start="2026-04-17T08:47:31.364282" elapsed="0.000114"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>rpc_client</arg>
<status status="PASS" start="2026-04-17T08:47:31.364493" elapsed="0.005054"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>rpc_server</arg>
<status status="PASS" start="2026-04-17T08:47:31.369633" elapsed="10.120299"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-17T08:47:42.490544" level="INFO">Slept 1 second.</msg>
<arg>1s</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-04-17T08:47:41.490089" elapsed="1.000622"/>
</kw>
<status status="PASS" start="2026-04-17T08:47:21.030239" elapsed="21.460572"/>
</kw>
<tag>rpc_reconnect</tag>
<status status="PASS" start="2026-04-17T08:47:21.029863" elapsed="21.461085"/>
</test>
<status status="PASS" start="2026-04-17T08:46:48.440683" elapsed="54.051614"/>
</suite>
<suite id="s1-s8" name="Sub Crash" source="/home/runner/work/ecal-test-suite/ecal-test-suite/integration_tests/sub_crash/robottests/sub_crash.robot">
<kw name="Init Test Context" type="SETUP">
<kw name="Set Test Context" owner="GlobalPathsLibrary">
<arg>sub_crash</arg>
<arg>sub_crash</arg>
<doc>Sets the test folder and tag prefix if it's a valid test case.
The folder must exist under integration_tests/ and contain typical test structure.</doc>
<status status="PASS" start="2026-04-17T08:47:42.495799" elapsed="0.000149"/>
</kw>
<kw name="Get Build Script Path" owner="GlobalPathsLibrary">
<msg time="2026-04-17T08:47:42.496149" level="INFO">${build} = /home/runner/work/ecal-test-suite/ecal-test-suite/integration_tests/sub_crash/scripts/build_images.sh</msg>
<var>${build}</var>
<status status="PASS" start="2026-04-17T08:47:42.496053" elapsed="0.000116"/>
</kw>
<kw name="Get Network Name" owner="GlobalPathsLibrary">
<msg time="2026-04-17T08:47:42.496313" level="INFO">${net} = ecal_test_net</msg>
<var>${net}</var>
<status status="PASS" start="2026-04-17T08:47:42.496236" elapsed="0.000094"/>
</kw>
<kw name="Get Build Script Args" owner="GlobalPathsLibrary">
<msg time="2026-04-17T08:47:42.496465" level="INFO">${args} = ['sub_crash']</msg>
<var>${args}</var>
<status status="PASS" start="2026-04-17T08:47:42.496391" elapsed="0.000090"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T08:47:42.496851" level="INFO">${BUILD_SCRIPT} = /home/runner/work/ecal-test-suite/ecal-test-suite/integration_tests/sub_crash/scripts/build_images.sh</msg>
<arg>${BUILD_SCRIPT}</arg>
<arg>${build}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T08:47:42.496595" elapsed="0.000287"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T08:47:42.497167" level="INFO">${NETWORK} = ecal_test_net</msg>
<arg>${NETWORK}</arg>
<arg>${net}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T08:47:42.496960" elapsed="0.000235"/>
</kw>
<kw name="Get Test Description" owner="GlobalPathsLibrary">
<msg time="2026-04-17T08:47:42.497415" level="INFO">${desc} = Test Objective:
Ensure that a second subscriber continues to receive messages even if one subscriber crashes.

Test Scenario:
- One publisher (`test_publisher`) sends continuous messages (value 43).
-...</msg>
<var>${desc}</var>
<doc>Reads the *** Comments *** section from the .robot file and returns it as a string.</doc>
<status status="PASS" start="2026-04-17T08:47:42.497265" elapsed="0.000170"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T08:47:42.497713" level="INFO">Test Objective:
Ensure that a second subscriber continues to receive messages even if one subscriber crashes.

Test Scenario:
- One publisher (`test_publisher`) sends continuous messages (value 43).
- Two subscribers are started:
1. `crash_subscriber`: receives a few messages and then crashes.
2. `test_subscriber`: receives messages throughout the test duration.
- A monitoring process tracks all components.

Success Criteria:
- `test_subscriber` must receive a number of messages.
- `test_subscriber` must exit with code 0.
- The crash of one subscriber does not affect the continued communication of the other.</msg>
<arg>${desc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T08:47:42.497535" elapsed="0.000211"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>[SETUP] Building Docker image...</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-17T08:47:42.497815" elapsed="0.000168"/>
</kw>
<kw name="Run Process" owner="Process">
<msg time="2026-04-17T08:47:42.498342" level="INFO">Starting process:
/home/runner/work/ecal-test-suite/ecal-test-suite/integration_tests/sub_crash/scripts/build_images.sh sub_crash</msg>
<msg time="2026-04-17T08:47:42.498791" level="INFO">Waiting for process to complete.</msg>
<msg time="2026-04-17T08:47:51.660414" level="INFO">Process completed.</msg>
<msg time="2026-04-17T08:47:51.660640" level="INFO">${result} = &lt;result object with rc 0&gt;</msg>
<var>${result}</var>
<arg>${BUILD_SCRIPT}</arg>
<arg>@{args}</arg>
<doc>Runs a process and waits for it to complete.</doc>
<status status="PASS" start="2026-04-17T08:47:42.498092" elapsed="9.162575"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-17T08:47:51.661460" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${result.rc}</arg>
<arg>0</arg>
<arg>Docker build failed!</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-04-17T08:47:51.660834" elapsed="0.000720"/>
</kw>
<kw name="Create Docker Network" owner="DockerLibrary">
<arg>${NETWORK}</arg>
<status status="PASS" start="2026-04-17T08:47:51.661645" elapsed="0.008490"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-17T08:47:54.670566" level="INFO">Slept 3 seconds.</msg>
<arg>3s</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-04-17T08:47:51.670243" elapsed="3.000427"/>
</kw>
<status status="PASS" start="2026-04-17T08:47:42.495637" elapsed="12.175114"/>
</kw>
<test id="s1-s8-t1" name="Network Communication Continues After Subscriber Crash (UDP)" line="30">
<kw name="Run Network Communication Test">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:47:54.672221" level="INFO">${IMAGE} = sub_crash_network_udp</msg>
<var>${IMAGE}</var>
<arg>${BASE_IMAGE}_${layer_tag}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:47:54.671938" elapsed="0.000304"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:47:54.672576" level="INFO">${TOPIC} = test_topic</msg>
<var>${TOPIC}</var>
<arg>test_topic</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:47:54.672356" elapsed="0.000240"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:47:54.672873" level="INFO">${CRASH_SUB} = crash_sub_network_udp</msg>
<var>${CRASH_SUB}</var>
<arg>crash_sub_${layer_tag}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:47:54.672673" elapsed="0.000218"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:47:54.673152" level="INFO">${TEST_SUB} = test_sub_network_udp</msg>
<var>${TEST_SUB}</var>
<arg>test_sub_${layer_tag}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:47:54.672964" elapsed="0.000205"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:47:54.673420" level="INFO">${TEST_PUB} = test_pub_network_udp</msg>
<var>${TEST_PUB}</var>
<arg>test_pub_${layer_tag}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:47:54.673240" elapsed="0.000197"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>\n[INFO] Starting subscriber crash continuity test with ${layer_tag}</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-17T08:47:54.673530" elapsed="0.000212"/>
</kw>
<kw name="Create Docker Network" owner="DockerLibrary">
<arg>${NETWORK}</arg>
<status status="PASS" start="2026-04-17T08:47:54.673850" elapsed="0.007282"/>
</kw>
<kw name="Start Container" owner="DockerLibrary">
<arg>${CRASH_SUB}</arg>
<arg>${IMAGE}</arg>
<arg>crash_subscriber</arg>
<arg>${layer_tag}</arg>
<arg>${TOPIC}</arg>
<arg>${CRASH_SUB}</arg>
<arg>network=${NETWORK}</arg>
<status status="PASS" start="2026-04-17T08:47:54.681227" elapsed="0.120398"/>
</kw>
<kw name="Start Container" owner="DockerLibrary">
<arg>${TEST_SUB}</arg>
<arg>${IMAGE}</arg>
<arg>test_subscriber</arg>
<arg>${layer_tag}</arg>
<arg>${TOPIC}</arg>
<arg>${TEST_SUB}</arg>
<arg>network=${NETWORK}</arg>
<status status="PASS" start="2026-04-17T08:47:54.801800" elapsed="0.119361"/>
</kw>
<kw name="Start Container" owner="DockerLibrary">
<arg>${TEST_PUB}</arg>
<arg>${IMAGE}</arg>
<arg>test_publisher</arg>
<arg>${layer_tag}</arg>
<arg>${TOPIC}</arg>
<arg>${TEST_PUB}</arg>
<arg>network=${NETWORK}</arg>
<status status="PASS" start="2026-04-17T08:47:54.921342" elapsed="0.116370"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${CRASH_SUB}</arg>
<status status="PASS" start="2026-04-17T08:47:55.037877" elapsed="7.063450"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${TEST_SUB}</arg>
<status status="PASS" start="2026-04-17T08:48:02.101592" elapsed="26.877674"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${TEST_PUB}</arg>
<status status="PASS" start="2026-04-17T08:48:28.979477" elapsed="0.001864"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-17T08:48:28.984186" level="INFO">${test_sub_logs} = [Entrypoint] Starting crash publisher in mode network_udp
1776415674922 ms | f9abd9b191bf | ./test_subscriber | 7 | info | Using built-in local time plugin.

[Test_Subscriber] Waiting for messages...
...</msg>
<var>${test_sub_logs}</var>
<arg>${TEST_SUB}</arg>
<status status="PASS" start="2026-04-17T08:48:28.981467" elapsed="0.002760"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>\n[SUBSCRIBER CONTAINER OUTPUT]\n${test_sub_logs}</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-17T08:48:28.984352" elapsed="0.000434"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T08:48:28.985271" level="INFO">
[SUBSCRIBER CONTAINER OUTPUT]
[Entrypoint] Starting crash publisher in mode network_udp
1776415674922 ms | f9abd9b191bf | ./test_subscriber | 7 | info | Using built-in local time plugin.

[Test_Subscriber] Waiting for messages...
[Test_Subscriber] Received value: 43
[Test_Subscriber] Received value: 43
[Test_Subscriber] Received value: 43
[Test_Subscriber] Received value: 43
[Test_Subscriber] Received value: 43
[Test_Subscriber] Received value: 43
[Test_Subscriber] Received value: 43
[Test_Subscriber] Received value: 43
[Test_Subscriber] Received value: 43
[Test_Subscriber] Received value: 43
[Test_Subscriber] Received value: 43
[Test_Subscriber] Received value: 43
[Test_Subscriber] Received value: 43
[Test_Subscriber] Received value: 43
[Test_Subscriber] Received value: 43
[Test_Subscriber] Received value: 43
[Test_Subscriber] Received value: 43
[Test_Subscriber] Received value: 43
[Test_Subscriber] Received value: 43
[Test_Subscriber] Received value: 43
[Test_Subscriber] Received value: 43
[Test_Subscriber] Received value: 43
[Test_Subscriber] Received value: 43
[Test_Subscriber] Received value: 43
[Test_Subscriber] Received value: 43
[Test_Subscriber] Received value: 43
[Test_Subscriber] Received value: 43
[Test_Subscriber] Received value: 43
[Test_Subscriber] Received value: 43
[Test_Subscriber] Received value: 43

[✓] Communication successful, received 30 messages.
</msg>
<arg>\n[SUBSCRIBER CONTAINER OUTPUT]\n${test_sub_logs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T08:48:28.984924" elapsed="0.000413"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-17T08:48:28.988110" level="INFO">${crash_sub_logs} = [Entrypoint] Starting crash subscriber in mode network_udp
1776415674805 ms | c93273b34db9 | ./crash_subscriber | 7 | info | Using built-in local time plugin.

[Crash Subscriber] Registered and sleepi...</msg>
<var>${crash_sub_logs}</var>
<arg>${CRASH_SUB}</arg>
<status status="PASS" start="2026-04-17T08:48:28.985455" elapsed="0.002680"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>\n[CRASH SUBSCRIBER CONTAINER OUTPUT]\n${crash_sub_logs}</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-17T08:48:28.988221" elapsed="0.000251"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T08:48:28.988800" level="INFO">
[CRASH SUBSCRIBER CONTAINER OUTPUT]
[Entrypoint] Starting crash subscriber in mode network_udp
1776415674805 ms | c93273b34db9 | ./crash_subscriber | 7 | info | Using built-in local time plugin.

[Crash Subscriber] Registered and sleeping before crash...

[Crash_Subscriber] Received value: 43
[Crash_Subscriber] Received value: 43
[Crash_Subscriber] Received value: 43
[Crash_Subscriber] Received value: 43
[Crash_Subscriber] Received value: 43

[Crash Subscriber] Simulating crash now.


[Crash Subscriber] Received 5 messages before crash.
./entrypoint.sh: line 61:     7 Aborted                 (core dumped) ./crash_subscriber $ARGS $EXTRA
</msg>
<arg>\n[CRASH SUBSCRIBER CONTAINER OUTPUT]\n${crash_sub_logs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T08:48:28.988601" elapsed="0.000235"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-17T08:48:28.989811" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${TEST_SUB}</arg>
<status status="PASS" start="2026-04-17T08:48:28.988911" elapsed="0.000923"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-17T08:48:28.990135" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${exit_code}</arg>
<arg>0</arg>
<arg>Communication failed!</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-04-17T08:48:28.989914" elapsed="0.000279"/>
</kw>
<kw name="Log Test Summary" owner="DockerLibrary">
<arg>Network Communication after one Subscriber crash ${layer_tag}</arg>
<arg>${True}</arg>
<status status="PASS" start="2026-04-17T08:48:28.990269" elapsed="0.000148"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${CRASH_SUB}</arg>
<status status="PASS" start="2026-04-17T08:48:28.990569" elapsed="0.004821"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${TEST_SUB}</arg>
<status status="PASS" start="2026-04-17T08:48:28.995476" elapsed="0.004877"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${TEST_PUB}</arg>
<status status="PASS" start="2026-04-17T08:48:29.000438" elapsed="0.004750"/>
</kw>
<arg>network_udp</arg>
<arg>network</arg>
<status status="PASS" start="2026-04-17T08:47:54.671366" elapsed="34.333883"/>
</kw>
<tag>sub_crash_network_udp</tag>
<status status="PASS" start="2026-04-17T08:47:54.670815" elapsed="34.334530"/>
</test>
<test id="s1-s8-t2" name="Network Communication Continues After Publisher Crash (TCP)" line="34">
<kw name="Run Network Communication Test">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:48:29.007077" level="INFO">${IMAGE} = sub_crash_network_tcp</msg>
<var>${IMAGE}</var>
<arg>${BASE_IMAGE}_${layer_tag}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:48:29.006825" elapsed="0.000273"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:48:29.007354" level="INFO">${TOPIC} = test_topic</msg>
<var>${TOPIC}</var>
<arg>test_topic</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:48:29.007178" elapsed="0.000195"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:48:29.007693" level="INFO">${CRASH_SUB} = crash_sub_network_tcp</msg>
<var>${CRASH_SUB}</var>
<arg>crash_sub_${layer_tag}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:48:29.007444" elapsed="0.000270"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:48:29.007981" level="INFO">${TEST_SUB} = test_sub_network_tcp</msg>
<var>${TEST_SUB}</var>
<arg>test_sub_${layer_tag}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:48:29.007789" elapsed="0.000211"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:48:29.008255" level="INFO">${TEST_PUB} = test_pub_network_tcp</msg>
<var>${TEST_PUB}</var>
<arg>test_pub_${layer_tag}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:48:29.008069" elapsed="0.000204"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>\n[INFO] Starting subscriber crash continuity test with ${layer_tag}</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-17T08:48:29.008340" elapsed="0.000230"/>
</kw>
<kw name="Create Docker Network" owner="DockerLibrary">
<arg>${NETWORK}</arg>
<status status="PASS" start="2026-04-17T08:48:29.008675" elapsed="0.007042"/>
</kw>
<kw name="Start Container" owner="DockerLibrary">
<arg>${CRASH_SUB}</arg>
<arg>${IMAGE}</arg>
<arg>crash_subscriber</arg>
<arg>${layer_tag}</arg>
<arg>${TOPIC}</arg>
<arg>${CRASH_SUB}</arg>
<arg>network=${NETWORK}</arg>
<status status="PASS" start="2026-04-17T08:48:29.015837" elapsed="0.127311"/>
</kw>
<kw name="Start Container" owner="DockerLibrary">
<arg>${TEST_SUB}</arg>
<arg>${IMAGE}</arg>
<arg>test_subscriber</arg>
<arg>${layer_tag}</arg>
<arg>${TOPIC}</arg>
<arg>${TEST_SUB}</arg>
<arg>network=${NETWORK}</arg>
<status status="PASS" start="2026-04-17T08:48:29.143319" elapsed="0.119154"/>
</kw>
<kw name="Start Container" owner="DockerLibrary">
<arg>${TEST_PUB}</arg>
<arg>${IMAGE}</arg>
<arg>test_publisher</arg>
<arg>${layer_tag}</arg>
<arg>${TOPIC}</arg>
<arg>${TEST_PUB}</arg>
<arg>network=${NETWORK}</arg>
<status status="PASS" start="2026-04-17T08:48:29.262683" elapsed="0.120792"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${CRASH_SUB}</arg>
<status status="PASS" start="2026-04-17T08:48:29.383684" elapsed="7.194552"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${TEST_SUB}</arg>
<status status="PASS" start="2026-04-17T08:48:36.578399" elapsed="26.736374"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${TEST_PUB}</arg>
<status status="PASS" start="2026-04-17T08:49:03.314982" elapsed="0.004766"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-17T08:49:03.322361" level="INFO">${test_sub_logs} = [Entrypoint] Starting crash publisher in mode network_tcp
1776415709263 ms | b25411e10d37 | ./test_subscriber | 7 | info | Using built-in local time plugin.

[Test_Subscriber] Waiting for messages...
...</msg>
<var>${test_sub_logs}</var>
<arg>${TEST_SUB}</arg>
<status status="PASS" start="2026-04-17T08:49:03.319849" elapsed="0.002540"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>\n[SUBSCRIBER CONTAINER OUTPUT]\n${test_sub_logs}</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-17T08:49:03.322478" elapsed="0.000335"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T08:49:03.323226" level="INFO">
[SUBSCRIBER CONTAINER OUTPUT]
[Entrypoint] Starting crash publisher in mode network_tcp
1776415709263 ms | b25411e10d37 | ./test_subscriber | 7 | info | Using built-in local time plugin.

[Test_Subscriber] Waiting for messages...
[Test_Subscriber] Received value: 43
[Test_Subscriber] Received value: 43
[Test_Subscriber] Received value: 43
[Test_Subscriber] Received value: 43
[Test_Subscriber] Received value: 43
[Test_Subscriber] Received value: 43
[Test_Subscriber] Received value: 43
[Test_Subscriber] Received value: 43
[Test_Subscriber] Received value: 43
[Test_Subscriber] Received value: 43
[Test_Subscriber] Received value: 43
[Test_Subscriber] Received value: 43
[Test_Subscriber] Received value: 43
[Test_Subscriber] Received value: 43
[Test_Subscriber] Received value: 43
[Test_Subscriber] Received value: 43
[Test_Subscriber] Received value: 43
[Test_Subscriber] Received value: 43
[Test_Subscriber] Received value: 43
[Test_Subscriber] Received value: 43
[Test_Subscriber] Received value: 43
[Test_Subscriber] Received value: 43
[Test_Subscriber] Received value: 43
[Test_Subscriber] Received value: 43
[Test_Subscriber] Received value: 43
[Test_Subscriber] Received value: 43
[Test_Subscriber] Received value: 43
[Test_Subscriber] Received value: 43
[Test_Subscriber] Received value: 43
[Test_Subscriber] Received value: 43
1776415741793 ms | b25411e10d37 | ./test_subscriber | 7 | error | CTCPReaderLayer - TCPPubSub (Error) -SubscriberSession 172.18.0.3:47322-&gt;e42f0e4c6362:37809: Error reading header length: End of file
1776415741794 ms | b25411e10d37 | ./test_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.3:55046: Failed connecting to publisher e42f0e4c6362:37809: Connection refused
1776415741794 ms | b25411e10d37 | ./test_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.3:55058: Failed connecting to publisher e42f0e4c6362:37809: Connection refused
1776415741795 ms | b25411e10d37 | ./test_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.3:55070: Failed connecting to publisher e42f0e4c6362:37809: Connection refused
1776415741796 ms | b25411e10d37 | ./test_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.3:55074: Failed connecting to publisher e42f0e4c6362:37809: Connection refused
1776415741797 ms | b25411e10d37 | ./test_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.3:55084: Failed connecting to publisher e42f0e4c6362:37809: Connection refused

[✓] Communication successful, received 30 messages.
</msg>
<arg>\n[SUBSCRIBER CONTAINER OUTPUT]\n${test_sub_logs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T08:49:03.322934" elapsed="0.000384"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-17T08:49:03.326220" level="INFO">${crash_sub_logs} = [Entrypoint] Starting crash subscriber in mode network_tcp
1776415709145 ms | c2a378c721b5 | ./crash_subscriber | 7 | info | Using built-in local time plugin.

[Crash Subscriber] Registered and sleepi...</msg>
<var>${crash_sub_logs}</var>
<arg>${CRASH_SUB}</arg>
<status status="PASS" start="2026-04-17T08:49:03.323437" elapsed="0.002816"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>\n[CRASH SUBSCRIBER CONTAINER OUTPUT]\n${crash_sub_logs}</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-17T08:49:03.326362" elapsed="0.000327"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T08:49:03.326997" level="INFO">
[CRASH SUBSCRIBER CONTAINER OUTPUT]
[Entrypoint] Starting crash subscriber in mode network_tcp
1776415709145 ms | c2a378c721b5 | ./crash_subscriber | 7 | info | Using built-in local time plugin.

[Crash Subscriber] Registered and sleeping before crash...

[Crash_Subscriber] Received value: 43
[Crash_Subscriber] Received value: 43
[Crash_Subscriber] Received value: 43
[Crash_Subscriber] Received value: 43
[Crash_Subscriber] Received value: 43

[Crash Subscriber] Simulating crash now.


[Crash Subscriber] Received 5 messages before crash.
./entrypoint.sh: line 61:     7 Aborted                 (core dumped) ./crash_subscriber $ARGS $EXTRA
</msg>
<arg>\n[CRASH SUBSCRIBER CONTAINER OUTPUT]\n${crash_sub_logs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T08:49:03.326797" elapsed="0.000238"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-17T08:49:03.327996" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${TEST_SUB}</arg>
<status status="PASS" start="2026-04-17T08:49:03.327112" elapsed="0.000907"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-17T08:49:03.328321" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${exit_code}</arg>
<arg>0</arg>
<arg>Communication failed!</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-04-17T08:49:03.328101" elapsed="0.000266"/>
</kw>
<kw name="Log Test Summary" owner="DockerLibrary">
<arg>Network Communication after one Subscriber crash ${layer_tag}</arg>
<arg>${True}</arg>
<status status="PASS" start="2026-04-17T08:49:03.328445" elapsed="0.000196"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${CRASH_SUB}</arg>
<status status="PASS" start="2026-04-17T08:49:03.328727" elapsed="0.004627"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${TEST_SUB}</arg>
<status status="PASS" start="2026-04-17T08:49:03.333447" elapsed="0.004675"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${TEST_PUB}</arg>
<status status="PASS" start="2026-04-17T08:49:03.338207" elapsed="0.004629"/>
</kw>
<arg>network_tcp</arg>
<arg>network</arg>
<status status="PASS" start="2026-04-17T08:48:29.006548" elapsed="34.336347"/>
</kw>
<tag>pub_crash_network_tcp</tag>
<status status="PASS" start="2026-04-17T08:48:29.006112" elapsed="34.336877"/>
</test>
<test id="s1-s8-t3" name="Local Communication Continues After Subscriber Crash (SHM)" line="38">
<kw name="Run Local Communication Test">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:49:03.344636" level="INFO">${IMAGE} = sub_crash_local_shm</msg>
<var>${IMAGE}</var>
<arg>${BASE_IMAGE}_${layer_tag}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:49:03.344347" elapsed="0.000311"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:49:03.344941" level="INFO">${CONTAINER} = local_all_local_shm</msg>
<var>${CONTAINER}</var>
<arg>local_all_${layer_tag}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:49:03.344737" elapsed="0.000223"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>\n[INFO] Starting local test container with ${layer_tag}</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-17T08:49:03.345031" elapsed="0.000209"/>
</kw>
<kw name="Create Docker Network" owner="DockerLibrary">
<arg>${NETWORK}</arg>
<status status="PASS" start="2026-04-17T08:49:03.345326" elapsed="0.006547"/>
</kw>
<kw name="Start Container" owner="DockerLibrary">
<arg>${CONTAINER}</arg>
<arg>${IMAGE}</arg>
<arg>local_all</arg>
<arg>${layer_tag}</arg>
<status status="PASS" start="2026-04-17T08:49:03.351965" elapsed="0.113100"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-17T08:49:37.524214" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-17T08:49:03.465288" elapsed="34.058981"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-17T08:49:37.526104" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${exit_code}</arg>
<arg>0</arg>
<arg>Local test failed!</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-04-17T08:49:37.524469" elapsed="0.001706"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-17T08:49:37.531176" level="INFO">${logs} = [Entrypoint] Starting local test (pub/sub/monitor) in mode local_shm
Shared memory monitoring is enabled (domain: ecal_mon - queue size: 1024)
1776415743465 ms | 5b85d313ae10 | test_publisher | 9 | in...</msg>
<var>${logs}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-17T08:49:37.526288" elapsed="0.004916"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>\n\n[LOCAL TEST CONTAINER OUTPUT]\n\n${logs}</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-17T08:49:37.531321" elapsed="0.000360"/>
</kw>
<kw name="Log Test Summary" owner="DockerLibrary">
<arg>Local Communication after one Subscriber crash ${layer_tag}</arg>
<arg>${True}</arg>
<status status="PASS" start="2026-04-17T08:49:37.531785" elapsed="0.000141"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-17T08:49:37.532003" elapsed="0.005336"/>
</kw>
<arg>local_shm</arg>
<status status="PASS" start="2026-04-17T08:49:03.344156" elapsed="34.193243"/>
</kw>
<tag>sub_crash_local_shm</tag>
<status status="PASS" start="2026-04-17T08:49:03.343779" elapsed="34.193712"/>
</test>
<test id="s1-s8-t4" name="Local Communication Continues After Subscriber Crash (UDP)" line="42">
<kw name="Run Local Communication Test">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:49:37.538867" level="INFO">${IMAGE} = sub_crash_local_udp</msg>
<var>${IMAGE}</var>
<arg>${BASE_IMAGE}_${layer_tag}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:49:37.538605" elapsed="0.000283"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:49:37.539174" level="INFO">${CONTAINER} = local_all_local_udp</msg>
<var>${CONTAINER}</var>
<arg>local_all_${layer_tag}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:49:37.538968" elapsed="0.000225"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>\n[INFO] Starting local test container with ${layer_tag}</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-17T08:49:37.539265" elapsed="0.000202"/>
</kw>
<kw name="Create Docker Network" owner="DockerLibrary">
<arg>${NETWORK}</arg>
<status status="PASS" start="2026-04-17T08:49:37.539595" elapsed="0.006863"/>
</kw>
<kw name="Start Container" owner="DockerLibrary">
<arg>${CONTAINER}</arg>
<arg>${IMAGE}</arg>
<arg>local_all</arg>
<arg>${layer_tag}</arg>
<status status="PASS" start="2026-04-17T08:49:37.546585" elapsed="0.115693"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-17T08:50:11.718082" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-17T08:49:37.662495" elapsed="34.055641"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-17T08:50:11.718688" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${exit_code}</arg>
<arg>0</arg>
<arg>Local test failed!</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-04-17T08:50:11.718292" elapsed="0.000469"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-17T08:50:11.724475" level="INFO">${logs} = [Entrypoint] Starting local test (pub/sub/monitor) in mode local_udp
1776415777664 ms | 23f2ddb7ec68 | ./crash_subscriber | 7 | info | Using built-in local time plugin.

[Crash Subscriber] Registered ...</msg>
<var>${logs}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-17T08:50:11.718863" elapsed="0.005675"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>\n\n[LOCAL TEST CONTAINER OUTPUT]\n\n${logs}</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-17T08:50:11.724662" elapsed="0.000370"/>
</kw>
<kw name="Log Test Summary" owner="DockerLibrary">
<arg>Local Communication after one Subscriber crash ${layer_tag}</arg>
<arg>${True}</arg>
<status status="PASS" start="2026-04-17T08:50:11.725147" elapsed="0.000211"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-17T08:50:11.725476" elapsed="0.005755"/>
</kw>
<arg>local_udp</arg>
<status status="PASS" start="2026-04-17T08:49:37.538376" elapsed="34.192917"/>
</kw>
<tag>sub_crash_local_udp</tag>
<status status="PASS" start="2026-04-17T08:49:37.538014" elapsed="34.193372"/>
</test>
<test id="s1-s8-t5" name="Local Communication Continues After Subscriber Crash (TCP)" line="46">
<kw name="Run Local Communication Test">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:50:11.732766" level="INFO">${IMAGE} = sub_crash_local_tcp</msg>
<var>${IMAGE}</var>
<arg>${BASE_IMAGE}_${layer_tag}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:50:11.732485" elapsed="0.000302"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:50:11.733070" level="INFO">${CONTAINER} = local_all_local_tcp</msg>
<var>${CONTAINER}</var>
<arg>local_all_${layer_tag}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:50:11.732866" elapsed="0.000223"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>\n[INFO] Starting local test container with ${layer_tag}</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-17T08:50:11.733162" elapsed="0.000215"/>
</kw>
<kw name="Create Docker Network" owner="DockerLibrary">
<arg>${NETWORK}</arg>
<status status="PASS" start="2026-04-17T08:50:11.733483" elapsed="0.006772"/>
</kw>
<kw name="Start Container" owner="DockerLibrary">
<arg>${CONTAINER}</arg>
<arg>${IMAGE}</arg>
<arg>local_all</arg>
<arg>${layer_tag}</arg>
<status status="PASS" start="2026-04-17T08:50:11.740371" elapsed="0.105453"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-17T08:50:45.902956" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-17T08:50:11.846031" elapsed="34.056979"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-17T08:50:45.904868" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${exit_code}</arg>
<arg>0</arg>
<arg>Local test failed!</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-04-17T08:50:45.903204" elapsed="0.001744"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-17T08:50:45.910822" level="INFO">${logs} = [Entrypoint] Starting local test (pub/sub/monitor) in mode local_tcp
1776415811848 ms | 62a955bf240d | test_publisher | 9 | info | Using built-in local time plugin.
[Publisher] Waiting for at least 2 ...</msg>
<var>${logs}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-17T08:50:45.905076" elapsed="0.005771"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>\n\n[LOCAL TEST CONTAINER OUTPUT]\n\n${logs}</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-17T08:50:45.910940" elapsed="0.000266"/>
</kw>
<kw name="Log Test Summary" owner="DockerLibrary">
<arg>Local Communication after one Subscriber crash ${layer_tag}</arg>
<arg>${True}</arg>
<status status="PASS" start="2026-04-17T08:50:45.911314" elapsed="0.000298"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-17T08:50:45.911723" elapsed="0.005371"/>
</kw>
<arg>local_tcp</arg>
<status status="PASS" start="2026-04-17T08:50:11.732294" elapsed="34.184864"/>
</kw>
<tag>sub_crash_local_tcp</tag>
<status status="PASS" start="2026-04-17T08:50:11.731927" elapsed="34.185325"/>
</test>
<status status="PASS" start="2026-04-17T08:47:42.492888" elapsed="183.424893"/>
</suite>
<suite id="s1-s9" name="Sub Send Crash" source="/home/runner/work/ecal-test-suite/ecal-test-suite/integration_tests/sub_send_crash/robottests/sub_send_crash.robot">
<kw name="Init Test Context" type="SETUP">
<kw name="Set Test Context" owner="GlobalPathsLibrary">
<arg>sub_send_crash</arg>
<arg>sub_send_crash</arg>
<doc>Sets the test folder and tag prefix if it's a valid test case.
The folder must exist under integration_tests/ and contain typical test structure.</doc>
<status status="PASS" start="2026-04-17T08:50:45.921332" elapsed="0.000131"/>
</kw>
<kw name="Get Build Script Path" owner="GlobalPathsLibrary">
<msg time="2026-04-17T08:50:45.921674" level="INFO">${build} = /home/runner/work/ecal-test-suite/ecal-test-suite/integration_tests/sub_send_crash/scripts/build_images.sh</msg>
<var>${build}</var>
<status status="PASS" start="2026-04-17T08:50:45.921579" elapsed="0.000116"/>
</kw>
<kw name="Get Network Name" owner="GlobalPathsLibrary">
<msg time="2026-04-17T08:50:45.921845" level="INFO">${net} = ecal_test_net</msg>
<var>${net}</var>
<status status="PASS" start="2026-04-17T08:50:45.921764" elapsed="0.000099"/>
</kw>
<kw name="Get Build Script Args" owner="GlobalPathsLibrary">
<msg time="2026-04-17T08:50:45.922003" level="INFO">${args} = ['sub_send_crash']</msg>
<var>${args}</var>
<status status="PASS" start="2026-04-17T08:50:45.921926" elapsed="0.000094"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T08:50:45.922341" level="INFO">${BUILD_SCRIPT} = /home/runner/work/ecal-test-suite/ecal-test-suite/integration_tests/sub_send_crash/scripts/build_images.sh</msg>
<arg>${BUILD_SCRIPT}</arg>
<arg>${build}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T08:50:45.922097" elapsed="0.000275"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T08:50:45.922706" level="INFO">${NETWORK} = ecal_test_net</msg>
<arg>${NETWORK}</arg>
<arg>${net}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T08:50:45.922449" elapsed="0.000287"/>
</kw>
<kw name="Get Test Description" owner="GlobalPathsLibrary">
<msg time="2026-04-17T08:50:45.922958" level="INFO">${desc} = Test Objective:
This test verifies that if one subscriber crashes during the reception of a large message,
other subscribers or the publisher remain unaffected and stable.

Test Scenario:
- A `large_p...</msg>
<var>${desc}</var>
<doc>Reads the *** Comments *** section from the .robot file and returns it as a string.</doc>
<status status="PASS" start="2026-04-17T08:50:45.922809" elapsed="0.000170"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T08:50:45.923276" level="INFO">Test Objective:
This test verifies that if one subscriber crashes during the reception of a large message,
other subscribers or the publisher remain unaffected and stable.

Test Scenario:
- A `large_publisher` sends very large messages (~50MB+).
- One `crash_subscriber` is designed to crash during message reception (e.g., via simulated failure during callback).
- One `test_subscriber` continues running and must successfully receive all messages.
- In an additional test case, a variant with `zero_copy_mode` enabled is used to evaluate the performance and fault tolerance in a high-throughput configuration.

Success Criteria:
- The `test_subscriber` must receive messages without crashing and exit with code 0.
- The `crash_subscriber` should crash as intended.
- The `large_publisher` must remain operational and not be blocked or destabilized.
- In SHM mode with `zero_copy`, the system should handle the shared memory access without affecting other subscribers or the pubisher.

Notes:
- Zero-Copy mode is only applicable to Shared Memory (SHM) transport.
- The Local UDP test is skipped for large messages because of message size limitations.
- This test failes because of SHM with zero copy mode, which is a known issue in the current implementation.</msg>
<arg>${desc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T08:50:45.923053" elapsed="0.000262"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>[SETUP] Building image...</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-17T08:50:45.923386" elapsed="0.000206"/>
</kw>
<kw name="Run Process" owner="Process">
<msg time="2026-04-17T08:50:45.923962" level="INFO">Starting process:
/home/runner/work/ecal-test-suite/ecal-test-suite/integration_tests/sub_send_crash/scripts/build_images.sh sub_send_crash</msg>
<msg time="2026-04-17T08:50:45.924287" level="INFO">Waiting for process to complete.</msg>
<msg time="2026-04-17T08:50:55.017715" level="INFO">Process completed.</msg>
<msg time="2026-04-17T08:50:55.017876" level="INFO">${result} = &lt;result object with rc 0&gt;</msg>
<var>${result}</var>
<arg>${BUILD_SCRIPT}</arg>
<arg>@{args}</arg>
<doc>Runs a process and waits for it to complete.</doc>
<status status="PASS" start="2026-04-17T08:50:45.923705" elapsed="9.094196"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-17T08:50:55.018669" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${result.rc}</arg>
<arg>0</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-04-17T08:50:55.018053" elapsed="0.000670"/>
</kw>
<kw name="Create Docker Network" owner="DockerLibrary">
<arg>${NETWORK}</arg>
<status status="PASS" start="2026-04-17T08:50:55.018809" elapsed="0.008936"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-17T08:50:58.028181" level="INFO">Slept 3 seconds.</msg>
<arg>3s</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-04-17T08:50:55.027850" elapsed="3.000435"/>
</kw>
<status status="PASS" start="2026-04-17T08:50:45.921175" elapsed="12.107192"/>
</kw>
<test id="s1-s9-t1" name="Crash During Reception (SHM)" line="36">
<kw name="Run Local Crash Receive Test">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:50:58.029477" level="INFO">${IMAGE} = sub_send_crash_local_shm</msg>
<var>${IMAGE}</var>
<arg>${BASE_IMAGE}_${layer_tag}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:50:58.029189" elapsed="0.000335"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:50:58.029826" level="INFO">${CONTAINER} = local_all_local_shm</msg>
<var>${CONTAINER}</var>
<arg>local_all_${layer_tag}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:50:58.029615" elapsed="0.000230"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>\n[INFO] Starting crash test in LOCAL mode: ${layer_tag}</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-17T08:50:58.029921" elapsed="0.000221"/>
</kw>
<kw name="Start Container" owner="DockerLibrary">
<arg>${CONTAINER}</arg>
<arg>${IMAGE}</arg>
<arg>local_all</arg>
<arg>${layer_tag}</arg>
<arg>test_topic</arg>
<arg>${CONTAINER}</arg>
<arg>network=${NETWORK}</arg>
<status status="PASS" start="2026-04-17T08:50:58.030232" elapsed="0.137530"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-17T08:51:33.168484" level="INFO">Slept 35 seconds.</msg>
<arg>35s</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-04-17T08:50:58.167967" elapsed="35.000672"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-17T08:51:33.171852" level="INFO">${logs} = [Entrypoint] Starting all processes locally in one container (mode local_shm)
Shared memory monitoring is enabled (domain: ecal_mon - queue size: 1024)
1776415858169 ms | 83629efeb0ac | large_publishe...</msg>
<var>${logs}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-17T08:51:33.168809" elapsed="0.003068"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>\n[LOCAL TEST CONTAINER OUTPUT]\n${logs}</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-17T08:51:33.171968" elapsed="0.000287"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T08:51:33.172610" level="INFO">
[LOCAL TEST CONTAINER OUTPUT]
[Entrypoint] Starting all processes locally in one container (mode local_shm)
Shared memory monitoring is enabled (domain: ecal_mon - queue size: 1024)
1776415858169 ms | 83629efeb0ac | large_publisher | 7 | info | Using built-in local time plugin.
[Publisher] Prepared 50MB message.
[Publisher] Waiting for at least 2 subscriber(s) on topic: test_topic
[Publisher] Found 2 subscriber(s). Proceeding to send messages.
Shared memory monitoring is enabled (domain: ecal_mon - queue size: 1024)
1776415859170 ms | 83629efeb0ac | crash_send_sub | 14 | info | Using built-in local time plugin.
[Crash_Sub] Listening to topic 'test_topic' in mode 'local_shm'
[Crash_Sub] Simulating crash after 2 seconds during active reception
[Crash_Sub] Received 52428800 bytes
[Publisher] Subscriber detected. Starting to send.
[Publisher] Send result: ✓, size: 52428800 bytes
[Publisher] Send result: ✓, size: 52428800 bytes
[Publisher] Send result: ✓, size: 52428800 bytes
[Publisher] Finished sending.
Shared memory monitoring is enabled (domain: ecal_mon - queue size: 1024)
1776415859170 ms | 83629efeb0ac | test_sub | 13 | info | Using built-in local time plugin.
[Test_Sub] Ready and waiting...
[Test_Sub] Received 52428800 bytes (message 1)
[Test_Sub] Received 52428800 bytes (message 2)
[Test_Sub] Received 52428800 bytes (message 3)
[✓] Received 3 messages.
./entrypoint.sh: line 45:    14 Aborted                 (core dumped) ./crash_send_subscriber $ARGS
</msg>
<arg>\n[LOCAL TEST CONTAINER OUTPUT]\n${logs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T08:51:33.172371" elapsed="0.000284"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-17T08:51:33.173833" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-17T08:51:33.172732" elapsed="0.001124"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-17T08:51:33.174158" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${exit_code}</arg>
<arg>0</arg>
<arg>Local container failed!</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-04-17T08:51:33.173937" elapsed="0.000268"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-17T08:51:33.176353" level="INFO">${logs} = [Entrypoint] Starting all processes locally in one container (mode local_shm)
Shared memory monitoring is enabled (domain: ecal_mon - queue size: 1024)
1776415858169 ms | 83629efeb0ac | large_publishe...</msg>
<var>${logs}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-17T08:51:33.174283" elapsed="0.002132"/>
</kw>
<kw name="Log Test Summary" owner="DockerLibrary">
<arg>Local Crash Receive Test ${layer_tag}</arg>
<arg>${True}</arg>
<status status="PASS" start="2026-04-17T08:51:33.176530" elapsed="0.000166"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-17T08:51:33.176799" elapsed="0.005118"/>
</kw>
<arg>local_shm</arg>
<status status="PASS" start="2026-04-17T08:50:58.028953" elapsed="35.153022"/>
</kw>
<tag>crash_receive_local_shm</tag>
<status status="PASS" start="2026-04-17T08:50:58.028434" elapsed="35.153627"/>
</test>
<test id="s1-s9-t2" name="Crash During Reception (TCP)" line="50">
<kw name="Run Local Crash Receive Test">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:51:33.183433" level="INFO">${IMAGE} = sub_send_crash_local_tcp</msg>
<var>${IMAGE}</var>
<arg>${BASE_IMAGE}_${layer_tag}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:51:33.183192" elapsed="0.000262"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:51:33.183783" level="INFO">${CONTAINER} = local_all_local_tcp</msg>
<var>${CONTAINER}</var>
<arg>local_all_${layer_tag}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:51:33.183568" elapsed="0.000234"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>\n[INFO] Starting crash test in LOCAL mode: ${layer_tag}</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-17T08:51:33.183875" elapsed="0.000208"/>
</kw>
<kw name="Start Container" owner="DockerLibrary">
<arg>${CONTAINER}</arg>
<arg>${IMAGE}</arg>
<arg>local_all</arg>
<arg>${layer_tag}</arg>
<arg>test_topic</arg>
<arg>${CONTAINER}</arg>
<arg>network=${NETWORK}</arg>
<status status="PASS" start="2026-04-17T08:51:33.184179" elapsed="0.130920"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-17T08:52:08.315824" level="INFO">Slept 35 seconds.</msg>
<arg>35s</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-04-17T08:51:33.315271" elapsed="35.000664"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-17T08:52:08.319030" level="INFO">${logs} = [Entrypoint] Starting all processes locally in one container (mode local_tcp)
1776415893316 ms | c7934f2104de | large_publisher | 7 | info | Using built-in local time plugin.
[Publisher] Prepared 50MB...</msg>
<var>${logs}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-17T08:52:08.316088" elapsed="0.002967"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>\n[LOCAL TEST CONTAINER OUTPUT]\n${logs}</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-17T08:52:08.319150" elapsed="0.000289"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T08:52:08.319873" level="INFO">
[LOCAL TEST CONTAINER OUTPUT]
[Entrypoint] Starting all processes locally in one container (mode local_tcp)
1776415893316 ms | c7934f2104de | large_publisher | 7 | info | Using built-in local time plugin.
[Publisher] Prepared 50MB message.
[Publisher] Waiting for at least 2 subscriber(s) on topic: test_topic
1776415895318 ms | c7934f2104de | large_publisher | 7 | info | CTCPReaderLayer - TCPPubSub (Info) -Publisher :::0: Created publisher and waiting for clients.
1776415895318 ms | c7934f2104de | large_publisher | 7 | info | CTCPReaderLayer - TCPPubSub (Info) -Publisher :::41093: Subscriber ::ffff:172.18.0.2:33440 has connected.
1776415895318 ms | c7934f2104de | large_publisher | 7 | info | CTCPReaderLayer - TCPPubSub (Info) -Publisher :::41093: Subscriber ::ffff:172.18.0.2:33444 has connected.
[Publisher] Found 2 subscriber(s). Proceeding to send messages.
[Crash_Sub] Simulating crash after 2 seconds during active reception
1776415894317 ms | c7934f2104de | crash_send_sub | 14 | info | Using built-in local time plugin.
[Crash_Sub] Listening to topic 'test_topic' in mode 'local_tcp'
[Crash_Sub] Received 52428800 bytes
[Publisher] Subscriber detected. Starting to send.
[Publisher] Send result: ✓, size: 52428800 bytes
[Publisher] Send result: ✓, size: 52428800 bytes
1776415897869 ms | c7934f2104de | large_publisher | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -PublisherSession ::ffff:172.18.0.2:41093-&gt;?: Failed sending data: Broken pipe
[Publisher] Send result: ✓, size: 52428800 bytes
[Publisher] Finished sending.
1776415899886 ms | c7934f2104de | large_publisher | 7 | error | CTCPReaderLayer - TCPPubSub (Error) -Publisher ?: Error while waiting for subsriber: Operation aborted.
1776415894317 ms | c7934f2104de | test_sub | 13 | info | Using built-in local time plugin.
[Test_Sub] Ready and waiting...
[Test_Sub] Received 52428800 bytes (message 1)
[Test_Sub] Received 52428800 bytes (message 2)
[Test_Sub] Received 52428800 bytes (message 3)
1776415899886 ms | c7934f2104de | test_sub | 13 | error | CTCPReaderLayer - TCPPubSub (Error) -SubscriberSession 172.18.0.2:33440-&gt;c7934f2104de:41093: Error reading header length: End of file
1776415899887 ms | c7934f2104de | test_sub | 13 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:33456: Failed connecting to publisher c7934f2104de:41093: Connection refused
1776415899887 ms | c7934f2104de | test_sub | 13 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:33460: Failed connecting to publisher c7934f2104de:41093: Connection refused
1776415899887 ms | c7934f2104de | test_sub | 13 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:33468: Failed connecting to publisher c7934f2104de:41093: Connection refused
1776415899888 ms | c7934f2104de | test_sub | 13 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:33482: Failed connecting to publisher c7934f2104de:41093: Connection refused
1776415899888 ms | c7934f2104de | test_sub | 13 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:33486: Failed connecting to publisher c7934f2104de:41093: Connection refused
[✓] Received 3 messages.
./entrypoint.sh: line 45:    14 Aborted                 (core dumped) ./crash_send_subscriber $ARGS
</msg>
<arg>\n[LOCAL TEST CONTAINER OUTPUT]\n${logs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T08:52:08.319589" elapsed="0.000346"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-17T08:52:08.321132" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-17T08:52:08.320013" elapsed="0.001142"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-17T08:52:08.321456" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${exit_code}</arg>
<arg>0</arg>
<arg>Local container failed!</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-04-17T08:52:08.321237" elapsed="0.000292"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-17T08:52:08.323735" level="INFO">${logs} = [Entrypoint] Starting all processes locally in one container (mode local_tcp)
1776415893316 ms | c7934f2104de | large_publisher | 7 | info | Using built-in local time plugin.
[Publisher] Prepared 50MB...</msg>
<var>${logs}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-17T08:52:08.321610" elapsed="0.002150"/>
</kw>
<kw name="Log Test Summary" owner="DockerLibrary">
<arg>Local Crash Receive Test ${layer_tag}</arg>
<arg>${True}</arg>
<status status="PASS" start="2026-04-17T08:52:08.323839" elapsed="0.000144"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-17T08:52:08.324085" elapsed="0.005110"/>
</kw>
<arg>local_tcp</arg>
<status status="PASS" start="2026-04-17T08:51:33.183004" elapsed="35.146249"/>
</kw>
<tag>crash_receive_local_tcp</tag>
<status status="PASS" start="2026-04-17T08:51:33.182647" elapsed="35.146691"/>
</test>
<test id="s1-s9-t3" name="Crash During Reception (Network UDP)" line="54">
<kw name="Run Network Crash Receive Test">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:52:08.330716" level="INFO">${IMAGE} = sub_send_crash_network_udp</msg>
<var>${IMAGE}</var>
<arg>${BASE_IMAGE}_${layer_tag}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:52:08.330394" elapsed="0.000345"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:52:08.330998" level="INFO">${TOPIC} = test_topic</msg>
<var>${TOPIC}</var>
<arg>test_topic</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:52:08.330819" elapsed="0.000198"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:52:08.331280" level="INFO">${SUB_OK} = sub_ok_network_udp</msg>
<var>${SUB_OK}</var>
<arg>sub_ok_${layer_tag}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:52:08.331088" elapsed="0.000212"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:52:08.331603" level="INFO">${SUB_CRASH} = sub_crash_network_udp</msg>
<var>${SUB_CRASH}</var>
<arg>sub_crash_${layer_tag}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:52:08.331371" elapsed="0.000252"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:52:08.331887" level="INFO">${PUBLISHER} = pub_network_udp</msg>
<var>${PUBLISHER}</var>
<arg>pub_${layer_tag}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:52:08.331697" elapsed="0.000208"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>\n[INFO] Starting crash test in NETWORK mode: ${layer_tag}</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-17T08:52:08.331973" elapsed="0.000190"/>
</kw>
<kw name="Start Container" owner="DockerLibrary">
<arg>${SUB_OK}</arg>
<arg>${IMAGE}</arg>
<arg>test_subscriber</arg>
<arg>${layer_tag}</arg>
<arg>${TOPIC}</arg>
<arg>${SUB_OK}</arg>
<arg>network=${NETWORK}</arg>
<status status="PASS" start="2026-04-17T08:52:08.332262" elapsed="0.142030"/>
</kw>
<kw name="Start Container" owner="DockerLibrary">
<arg>${SUB_CRASH}</arg>
<arg>${IMAGE}</arg>
<arg>crash_subscriber</arg>
<arg>${layer_tag}</arg>
<arg>${TOPIC}</arg>
<arg>${SUB_CRASH}</arg>
<arg>network=${NETWORK}</arg>
<status status="PASS" start="2026-04-17T08:52:08.474457" elapsed="0.120124"/>
</kw>
<kw name="Start Container" owner="DockerLibrary">
<arg>${PUBLISHER}</arg>
<arg>${IMAGE}</arg>
<arg>large_publisher</arg>
<arg>${layer_tag}</arg>
<arg>${TOPIC}</arg>
<arg>${PUBLISHER}</arg>
<arg>network=${NETWORK}</arg>
<status status="PASS" start="2026-04-17T08:52:08.594750" elapsed="0.126723"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${SUB_OK}</arg>
<status status="PASS" start="2026-04-17T08:52:08.721765" elapsed="30.822610"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${SUB_CRASH}</arg>
<status status="PASS" start="2026-04-17T08:52:39.545686" elapsed="0.002514"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${PUBLISHER}</arg>
<status status="PASS" start="2026-04-17T08:52:39.548302" elapsed="0.001001"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-17T08:52:39.551469" level="INFO">${log1} = [Entrypoint] Starting stable subscriber in mode network_udp
1776415928476 ms | b633446f5967 | test_sub | 7 | info | Using built-in local time plugin.
[Test_Sub] Ready and waiting...
[Test_Sub] Receive...</msg>
<var>${log1}</var>
<arg>${SUB_OK}</arg>
<status status="PASS" start="2026-04-17T08:52:39.549392" elapsed="0.002103"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-17T08:52:39.553598" level="INFO">${log2} = [Entrypoint] Starting crashing subscriber in mode network_udp
1776415928596 ms | bd7b17800d2b | crash_send_sub | 7 | info | Using built-in local time plugin.
[Crash_Sub] Listening to topic 'test_topic...</msg>
<var>${log2}</var>
<arg>${SUB_CRASH}</arg>
<status status="PASS" start="2026-04-17T08:52:39.551617" elapsed="0.002011"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-17T08:52:39.555883" level="INFO">${log3} = [Entrypoint] Starting large publisher in mode network_udp
1776415928723 ms | cba92c4a0076 | large_publisher | 7 | info | Using built-in local time plugin.
[Publisher] Prepared 50MB message.
[Publisher...</msg>
<var>${log3}</var>
<arg>${PUBLISHER}</arg>
<status status="PASS" start="2026-04-17T08:52:39.553718" elapsed="0.002190"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>\n[LOG: SUBSCRIBER]\n${log1}</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-17T08:52:39.555996" elapsed="0.000296"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>\n[LOG: CRASH_SUBSCRIBER]\n${log2}</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-17T08:52:39.556398" elapsed="0.000272"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>\n[LOG: PUBLISHER]\n${log3}</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-17T08:52:39.556761" elapsed="0.000277"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T08:52:39.557423" level="INFO">
[LOG: SUBSCRIBER]
[Entrypoint] Starting stable subscriber in mode network_udp
1776415928476 ms | b633446f5967 | test_sub | 7 | info | Using built-in local time plugin.
[Test_Sub] Ready and waiting...
[Test_Sub] Received 52428800 bytes (message 1)
[Test_Sub] Received 52428800 bytes (message 2)
[Test_Sub] Received 52428800 bytes (message 3)
[✓] Received 3 messages.
</msg>
<arg>\n[LOG: SUBSCRIBER]\n${log1}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T08:52:39.557150" elapsed="0.000329"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T08:52:39.557902" level="INFO">
[LOG: CRASH_SUBSCRIBER]
[Entrypoint] Starting crashing subscriber in mode network_udp
1776415928596 ms | bd7b17800d2b | crash_send_sub | 7 | info | Using built-in local time plugin.
[Crash_Sub] Listening to topic 'test_topic' in mode 'network_udp'
[Crash_Sub] Received 52428800 bytes
[Crash_Sub] Simulating crash after 2 seconds during active reception
./entrypoint.sh: line 62:     7 Aborted                 (core dumped) ./crash_send_subscriber $ARGS $EXTRA
</msg>
<arg>\n[LOG: CRASH_SUBSCRIBER]\n${log2}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T08:52:39.557609" elapsed="0.000343"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T08:52:39.558295" level="INFO">
[LOG: PUBLISHER]
[Entrypoint] Starting large publisher in mode network_udp
1776415928723 ms | cba92c4a0076 | large_publisher | 7 | info | Using built-in local time plugin.
[Publisher] Prepared 50MB message.
[Publisher] Waiting for at least 2 subscriber(s) on topic: test_topic
[Publisher] Found 2 subscriber(s). Proceeding to send messages.
[Publisher] Subscriber detected. Starting to send.
[Publisher] Send result: ✓, size: 52428800 bytes
[Publisher] Send result: ✓, size: 52428800 bytes
[Publisher] Send result: ✓, size: 52428800 bytes
[Publisher] Finished sending.
</msg>
<arg>\n[LOG: PUBLISHER]\n${log3}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T08:52:39.558053" elapsed="0.000279"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-17T08:52:39.559304" level="INFO">${exit1} = 0</msg>
<var>${exit1}</var>
<arg>${SUB_OK}</arg>
<status status="PASS" start="2026-04-17T08:52:39.558405" elapsed="0.000962"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-17T08:52:39.559718" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${exit1}</arg>
<arg>0</arg>
<arg>Stable subscriber failed unexpectedly!</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-04-17T08:52:39.559451" elapsed="0.000314"/>
</kw>
<kw name="Log Test Summary" owner="DockerLibrary">
<arg>Network Crash Receive Test ${layer_tag}</arg>
<arg>${True}</arg>
<status status="PASS" start="2026-04-17T08:52:39.559843" elapsed="0.000149"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${SUB_OK}</arg>
<status status="PASS" start="2026-04-17T08:52:39.560088" elapsed="0.005237"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${SUB_CRASH}</arg>
<status status="PASS" start="2026-04-17T08:52:39.565416" elapsed="0.004702"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${PUBLISHER}</arg>
<status status="PASS" start="2026-04-17T08:52:39.570206" elapsed="0.004738"/>
</kw>
<arg>network_udp</arg>
<arg>network</arg>
<status status="PASS" start="2026-04-17T08:52:08.330194" elapsed="31.244809"/>
</kw>
<tag>crash_receive_network_udp</tag>
<status status="PASS" start="2026-04-17T08:52:08.329806" elapsed="31.245292"/>
</test>
<test id="s1-s9-t4" name="Crash During Reception (Network TCP)" line="58">
<kw name="Run Network Crash Receive Test">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:52:39.576885" level="INFO">${IMAGE} = sub_send_crash_network_tcp</msg>
<var>${IMAGE}</var>
<arg>${BASE_IMAGE}_${layer_tag}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:52:39.576622" elapsed="0.000284"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:52:39.577162" level="INFO">${TOPIC} = test_topic</msg>
<var>${TOPIC}</var>
<arg>test_topic</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:52:39.576983" elapsed="0.000198"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:52:39.577444" level="INFO">${SUB_OK} = sub_ok_network_tcp</msg>
<var>${SUB_OK}</var>
<arg>sub_ok_${layer_tag}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:52:39.577251" elapsed="0.000213"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:52:39.577777" level="INFO">${SUB_CRASH} = sub_crash_network_tcp</msg>
<var>${SUB_CRASH}</var>
<arg>sub_crash_${layer_tag}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:52:39.577570" elapsed="0.000225"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T08:52:39.578067" level="INFO">${PUBLISHER} = pub_network_tcp</msg>
<var>${PUBLISHER}</var>
<arg>pub_${layer_tag}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T08:52:39.577876" elapsed="0.000209"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>\n[INFO] Starting crash test in NETWORK mode: ${layer_tag}</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-17T08:52:39.578154" elapsed="0.000200"/>
</kw>
<kw name="Start Container" owner="DockerLibrary">
<arg>${SUB_OK}</arg>
<arg>${IMAGE}</arg>
<arg>test_subscriber</arg>
<arg>${layer_tag}</arg>
<arg>${TOPIC}</arg>
<arg>${SUB_OK}</arg>
<arg>network=${NETWORK}</arg>
<status status="PASS" start="2026-04-17T08:52:39.578459" elapsed="0.141980"/>
</kw>
<kw name="Start Container" owner="DockerLibrary">
<arg>${SUB_CRASH}</arg>
<arg>${IMAGE}</arg>
<arg>crash_subscriber</arg>
<arg>${layer_tag}</arg>
<arg>${TOPIC}</arg>
<arg>${SUB_CRASH}</arg>
<arg>network=${NETWORK}</arg>
<status status="PASS" start="2026-04-17T08:52:39.720649" elapsed="0.118803"/>
</kw>
<kw name="Start Container" owner="DockerLibrary">
<arg>${PUBLISHER}</arg>
<arg>${IMAGE}</arg>
<arg>large_publisher</arg>
<arg>${layer_tag}</arg>
<arg>${TOPIC}</arg>
<arg>${PUBLISHER}</arg>
<arg>network=${NETWORK}</arg>
<status status="PASS" start="2026-04-17T08:52:39.839701" elapsed="0.125964"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${SUB_OK}</arg>
<status status="PASS" start="2026-04-17T08:52:39.965876" elapsed="30.819906"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${SUB_CRASH}</arg>
<status status="PASS" start="2026-04-17T08:53:10.786000" elapsed="0.001920"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${PUBLISHER}</arg>
<status status="PASS" start="2026-04-17T08:53:10.788048" elapsed="0.001552"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-17T08:53:10.792399" level="INFO">${log1} = [Entrypoint] Starting stable subscriber in mode network_tcp
1776415959723 ms | 9fd87fec3862 | test_sub | 7 | info | Using built-in local time plugin.
[Test_Sub] Ready and waiting...
[Test_Sub] Receive...</msg>
<var>${log1}</var>
<arg>${SUB_OK}</arg>
<status status="PASS" start="2026-04-17T08:53:10.789729" elapsed="0.002696"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-17T08:53:10.794692" level="INFO">${log2} = [Entrypoint] Starting crashing subscriber in mode network_tcp
1776415959841 ms | 84b587022c57 | crash_send_sub | 7 | info | Using built-in local time plugin.
[Crash_Sub] Listening to topic 'test_topic...</msg>
<var>${log2}</var>
<arg>${SUB_CRASH}</arg>
<status status="PASS" start="2026-04-17T08:53:10.792564" elapsed="0.002153"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-17T08:53:10.796933" level="INFO">${log3} = [Entrypoint] Starting large publisher in mode network_tcp
1776415959967 ms | 83721cab3685 | large_publisher | 7 | info | Using built-in local time plugin.
[Publisher] Prepared 50MB message.
[Publisher...</msg>
<var>${log3}</var>
<arg>${PUBLISHER}</arg>
<status status="PASS" start="2026-04-17T08:53:10.794803" elapsed="0.002156"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>\n[LOG: SUBSCRIBER]\n${log1}</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-17T08:53:10.797048" elapsed="0.000294"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>\n[LOG: CRASH_SUBSCRIBER]\n${log2}</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-17T08:53:10.797455" elapsed="0.000328"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>\n[LOG: PUBLISHER]\n${log3}</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-17T08:53:10.797889" elapsed="0.000287"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T08:53:10.798487" level="INFO">
[LOG: SUBSCRIBER]
[Entrypoint] Starting stable subscriber in mode network_tcp
1776415959723 ms | 9fd87fec3862 | test_sub | 7 | info | Using built-in local time plugin.
[Test_Sub] Ready and waiting...
[Test_Sub] Received 52428800 bytes (message 1)
[Test_Sub] Received 52428800 bytes (message 2)
[Test_Sub] Received 52428800 bytes (message 3)
1776415965436 ms | 9fd87fec3862 | test_sub | 7 | error | CTCPReaderLayer - TCPPubSub (Error) -SubscriberSession 172.18.0.2:53850-&gt;83721cab3685:41515: Error reading header length: End of file
1776415965437 ms | 9fd87fec3862 | test_sub | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:40800: Failed connecting to publisher 83721cab3685:41515: Connection refused
1776415965438 ms | 9fd87fec3862 | test_sub | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:40810: Failed connecting to publisher 83721cab3685:41515: Connection refused
1776415965439 ms | 9fd87fec3862 | test_sub | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:40820: Failed connecting to publisher 83721cab3685:41515: Connection refused
1776415965439 ms | 9fd87fec3862 | test_sub | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:40822: Failed connecting to publisher 83721cab3685:41515: Connection refused
1776415965440 ms | 9fd87fec3862 | test_sub | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:40824: Failed connecting to publisher 83721cab3685:41515: Connection refused
[✓] Received 3 messages.
</msg>
<arg>\n[LOG: SUBSCRIBER]\n${log1}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T08:53:10.798285" elapsed="0.000350"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T08:53:10.798911" level="INFO">
[LOG: CRASH_SUBSCRIBER]
[Entrypoint] Starting crashing subscriber in mode network_tcp
1776415959841 ms | 84b587022c57 | crash_send_sub | 7 | info | Using built-in local time plugin.
[Crash_Sub] Listening to topic 'test_topic' in mode 'network_tcp'
[Crash_Sub] Received 52428800 bytes
[Crash_Sub] Simulating crash after 2 seconds during active reception
./entrypoint.sh: line 62:     7 Aborted                 (core dumped) ./crash_send_subscriber $ARGS $EXTRA
</msg>
<arg>\n[LOG: CRASH_SUBSCRIBER]\n${log2}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T08:53:10.798720" elapsed="0.000226"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T08:53:10.799197" level="INFO">
[LOG: PUBLISHER]
[Entrypoint] Starting large publisher in mode network_tcp
1776415959967 ms | 83721cab3685 | large_publisher | 7 | info | Using built-in local time plugin.
[Publisher] Prepared 50MB message.
[Publisher] Waiting for at least 2 subscriber(s) on topic: test_topic
1776415960724 ms | 83721cab3685 | large_publisher | 7 | info | CTCPReaderLayer - TCPPubSub (Info) -Publisher :::0: Created publisher and waiting for clients.
1776415960725 ms | 83721cab3685 | large_publisher | 7 | info | CTCPReaderLayer - TCPPubSub (Info) -Publisher :::41515: Subscriber ::ffff:172.18.0.2:53850 has connected.
1776415960725 ms | 83721cab3685 | large_publisher | 7 | info | CTCPReaderLayer - TCPPubSub (Info) -Publisher :::41515: Subscriber ::ffff:172.18.0.3:50490 has connected.
[Publisher] Found 2 subscriber(s). Proceeding to send messages.
[Publisher] Subscriber detected. Starting to send.
[Publisher] Send result: ✓, size: 52428800 bytes
[Publisher] Send result: ✓, size: 52428800 bytes
1776415963420 ms | 83721cab3685 | large_publisher | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -PublisherSession ::ffff:172.18.0.4:41515-&gt;?: Failed sending data: Broken pipe
[Publisher] Send result: ✓, size: 52428800 bytes
[Publisher] Finished sending.
1776415965436 ms | 83721cab3685 | large_publisher | 7 | error | CTCPReaderLayer - TCPPubSub (Error) -Publisher ?: Error while waiting for subsriber: Operation aborted.
</msg>
<arg>\n[LOG: PUBLISHER]\n${log3}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T08:53:10.799020" elapsed="0.000219"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-17T08:53:10.800262" level="INFO">${exit1} = 0</msg>
<var>${exit1}</var>
<arg>${SUB_OK}</arg>
<status status="PASS" start="2026-04-17T08:53:10.799309" elapsed="0.000977"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-17T08:53:10.800680" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${exit1}</arg>
<arg>0</arg>
<arg>Stable subscriber failed unexpectedly!</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-04-17T08:53:10.800388" elapsed="0.000353"/>
</kw>
<kw name="Log Test Summary" owner="DockerLibrary">
<arg>Network Crash Receive Test ${layer_tag}</arg>
<arg>${True}</arg>
<status status="PASS" start="2026-04-17T08:53:10.800830" elapsed="0.000174"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${SUB_OK}</arg>
<status status="PASS" start="2026-04-17T08:53:10.801106" elapsed="0.005035"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${SUB_CRASH}</arg>
<status status="PASS" start="2026-04-17T08:53:10.806224" elapsed="0.005016"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${PUBLISHER}</arg>
<status status="PASS" start="2026-04-17T08:53:10.811323" elapsed="0.005113"/>
</kw>
<arg>network_tcp</arg>
<arg>network</arg>
<status status="PASS" start="2026-04-17T08:52:39.576375" elapsed="31.240144"/>
</kw>
<tag>crash_receive_network_tcp</tag>
<status status="PASS" start="2026-04-17T08:52:39.575986" elapsed="31.240635"/>
</test>
<status status="PASS" start="2026-04-17T08:50:45.918368" elapsed="144.898996"/>
</suite>
<status status="PASS" start="2026-04-17T08:40:26.144009" elapsed="764.674128"/>
</suite>
<statistics>
<total>
<stat pass="25" fail="0" skip="0">All Tests</stat>
</total>
<tag>
<stat pass="1" fail="0" skip="0">basic_pub_sub_local_shm</stat>
<stat pass="1" fail="0" skip="0">basic_pub_sub_local_tcp</stat>
<stat pass="1" fail="0" skip="0">basic_pub_sub_local_udp</stat>
<stat pass="1" fail="0" skip="0">basic_pub_sub_network_tcp</stat>
<stat pass="1" fail="0" skip="0">basic_pub_sub_network_udp</stat>
<stat pass="1" fail="0" skip="0">crash_receive_local_shm</stat>
<stat pass="1" fail="0" skip="0">crash_receive_local_tcp</stat>
<stat pass="1" fail="0" skip="0">crash_receive_network_tcp</stat>
<stat pass="1" fail="0" skip="0">crash_receive_network_udp</stat>
<stat pass="1" fail="0" skip="0">multi_pub_sub_local_udp</stat>
<stat pass="1" fail="0" skip="0">multi_pub_sub_network_tcp</stat>
<stat pass="1" fail="0" skip="0">multi_pub_sub_network_udp</stat>
<stat pass="1" fail="0" skip="0">network_crash_test</stat>
<stat pass="1" fail="0" skip="0">pub_crash_local_shm</stat>
<stat pass="2" fail="0" skip="0">pub_crash_network_tcp</stat>
<stat pass="1" fail="0" skip="0">pub_crash_network_udp</stat>
<stat pass="1" fail="0" skip="0">rpc_n_to_n_test</stat>
<stat pass="2" fail="0" skip="0">rpc_reconnect</stat>
<stat pass="1" fail="0" skip="0">rpc_server_client_ping_test</stat>
<stat pass="1" fail="0" skip="0">sub_crash_local_shm</stat>
<stat pass="1" fail="0" skip="0">sub_crash_local_tcp</stat>
<stat pass="1" fail="0" skip="0">sub_crash_local_udp</stat>
<stat pass="1" fail="0" skip="0">sub_crash_network_udp</stat>
</tag>
<suite>
<stat name="Basic Pub Sub &amp; Multi Pub Sub &amp; Network Crash &amp; Pub Crash &amp; Rpc N To N Test &amp; Rpc Ping Test &amp; Rpc Reconnect Test &amp; Sub Crash &amp; Sub Send Crash" id="s1" pass="25" fail="0" skip="0">Basic Pub Sub &amp; Multi Pub Sub &amp; Network Crash &amp; Pub Crash &amp; Rpc N To N Test &amp; Rpc Ping Test &amp; Rpc Reconnect Test &amp; Sub Crash &amp; Sub Send Crash</stat>
<stat name="Basic Pub Sub" id="s1-s1" pass="5" fail="0" skip="0">Basic Pub Sub &amp; Multi Pub Sub &amp; Network Crash &amp; Pub Crash &amp; Rpc N To N Test &amp; Rpc Ping Test &amp; Rpc Reconnect Test &amp; Sub Crash &amp; Sub Send Crash.Basic Pub Sub</stat>
<stat name="Multi Pub Sub" id="s1-s2" pass="3" fail="0" skip="0">Basic Pub Sub &amp; Multi Pub Sub &amp; Network Crash &amp; Pub Crash &amp; Rpc N To N Test &amp; Rpc Ping Test &amp; Rpc Reconnect Test &amp; Sub Crash &amp; Sub Send Crash.Multi Pub Sub</stat>
<stat name="Network Crash" id="s1-s3" pass="1" fail="0" skip="0">Basic Pub Sub &amp; Multi Pub Sub &amp; Network Crash &amp; Pub Crash &amp; Rpc N To N Test &amp; Rpc Ping Test &amp; Rpc Reconnect Test &amp; Sub Crash &amp; Sub Send Crash.Network Crash</stat>
<stat name="Pub Crash" id="s1-s4" pass="3" fail="0" skip="0">Basic Pub Sub &amp; Multi Pub Sub &amp; Network Crash &amp; Pub Crash &amp; Rpc N To N Test &amp; Rpc Ping Test &amp; Rpc Reconnect Test &amp; Sub Crash &amp; Sub Send Crash.Pub Crash</stat>
<stat name="Rpc N To N Test" id="s1-s5" pass="1" fail="0" skip="0">Basic Pub Sub &amp; Multi Pub Sub &amp; Network Crash &amp; Pub Crash &amp; Rpc N To N Test &amp; Rpc Ping Test &amp; Rpc Reconnect Test &amp; Sub Crash &amp; Sub Send Crash.Rpc N To N Test</stat>
<stat name="Rpc Ping Test" id="s1-s6" pass="1" fail="0" skip="0">Basic Pub Sub &amp; Multi Pub Sub &amp; Network Crash &amp; Pub Crash &amp; Rpc N To N Test &amp; Rpc Ping Test &amp; Rpc Reconnect Test &amp; Sub Crash &amp; Sub Send Crash.Rpc Ping Test</stat>
<stat name="Rpc Reconnect Test" id="s1-s7" pass="2" fail="0" skip="0">Basic Pub Sub &amp; Multi Pub Sub &amp; Network Crash &amp; Pub Crash &amp; Rpc N To N Test &amp; Rpc Ping Test &amp; Rpc Reconnect Test &amp; Sub Crash &amp; Sub Send Crash.Rpc Reconnect Test</stat>
<stat name="Sub Crash" id="s1-s8" pass="5" fail="0" skip="0">Basic Pub Sub &amp; Multi Pub Sub &amp; Network Crash &amp; Pub Crash &amp; Rpc N To N Test &amp; Rpc Ping Test &amp; Rpc Reconnect Test &amp; Sub Crash &amp; Sub Send Crash.Sub Crash</stat>
<stat name="Sub Send Crash" id="s1-s9" pass="4" fail="0" skip="0">Basic Pub Sub &amp; Multi Pub Sub &amp; Network Crash &amp; Pub Crash &amp; Rpc N To N Test &amp; Rpc Ping Test &amp; Rpc Reconnect Test &amp; Sub Crash &amp; Sub Send Crash.Sub Send Crash</stat>
</suite>
</statistics>
<errors>
</errors>
</robot>
