<?xml version="1.0" encoding="UTF-8"?>
<robot generator="Robot 7.4.2 (Python 3.12.3 on linux)" generated="2026-04-22T13:25:45.149510" 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-22T13:25:45.269957" elapsed="0.000191"/>
</kw>
<kw name="Get Build Script Path" owner="GlobalPathsLibrary">
<msg time="2026-04-22T13:25:45.270449" 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-22T13:25:45.270312" elapsed="0.000163"/>
</kw>
<kw name="Get Network Name" owner="GlobalPathsLibrary">
<msg time="2026-04-22T13:25:45.270723" level="INFO">${net} = ecal_test_net</msg>
<var>${net}</var>
<status status="PASS" start="2026-04-22T13:25:45.270551" elapsed="0.000190"/>
</kw>
<kw name="Get Build Script Args" owner="GlobalPathsLibrary">
<msg time="2026-04-22T13:25:45.270882" level="INFO">${args} = ['basic_pub_sub']</msg>
<var>${args}</var>
<status status="PASS" start="2026-04-22T13:25:45.270803" elapsed="0.000094"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-22T13:25:45.271296" 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-22T13:25:45.270973" elapsed="0.000359"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-22T13:25:45.271638" 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-22T13:25:45.271419" elapsed="0.000246"/>
</kw>
<kw name="Get Test Description" owner="GlobalPathsLibrary">
<msg time="2026-04-22T13:25:45.271878" 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-22T13:25:45.271731" elapsed="0.000164"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-22T13:25:45.272121" 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-22T13:25:45.271964" elapsed="0.000184"/>
</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-22T13:25:45.272208" elapsed="0.000178"/>
</kw>
<kw name="Run Process" owner="Process">
<msg time="2026-04-22T13:25:45.272720" 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-22T13:25:45.273155" level="INFO">Waiting for process to complete.</msg>
<msg time="2026-04-22T13:26:00.048309" level="INFO">Process completed.</msg>
<msg time="2026-04-22T13:26:00.048490" 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-22T13:25:45.272476" elapsed="14.776038"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-22T13:26:00.049349" 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-22T13:26:00.048681" elapsed="0.000725"/>
</kw>
<kw name="Create Docker Network" owner="DockerLibrary">
<arg>${NETWORK}</arg>
<status status="PASS" start="2026-04-22T13:26:00.049496" elapsed="0.047618"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-22T13:26:03.097786" 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-22T13:26:00.097344" elapsed="3.000564"/>
</kw>
<status status="PASS" start="2026-04-22T13:25:45.269492" elapsed="17.828514"/>
</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-22T13:26:03.099237" 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-22T13:26:03.098945" elapsed="0.000329"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-22T13:26:03.099534" 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-22T13:26:03.099352" elapsed="0.000198"/>
</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-22T13:26:03.099616" elapsed="0.000193"/>
</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-22T13:26:03.099885" elapsed="0.122839"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-22T13:26:12.223392" 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-22T13:26:03.222926" elapsed="9.000586"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-22T13:26:12.226851" level="INFO">${logs} = [Entrypoint] Starting subscriber and publisher in mode local_shm
Shared memory monitoring is enabled (domain: ecal_mon - queue size: 1024)
1776864363226 ms | 5852fc8deb58 | pub_test | 7 | info | Using...</msg>
<var>${logs}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-22T13:26:12.223687" elapsed="0.003196"/>
</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-22T13:26:12.226996" elapsed="0.000329"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-22T13:26:12.227649" 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)
1776864363226 ms | 5852fc8deb58 | 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.
Shared memory monitoring is enabled (domain: ecal_mon - queue size: 1024)
1776864364227 ms | 5852fc8deb58 | 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-22T13:26:12.227436" elapsed="0.000306"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-22T13:26:12.228901" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-22T13:26:12.227818" elapsed="0.001106"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-22T13:26:12.229219" 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-22T13:26:12.229005" elapsed="0.000280"/>
</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-22T13:26:12.229360" elapsed="0.000128"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-22T13:26:12.229581" elapsed="0.004996"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-22T13:26:13.235020" 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-22T13:26:12.234672" elapsed="1.000471"/>
</kw>
<arg>local_shm</arg>
<status status="PASS" start="2026-04-22T13:26:03.098696" elapsed="10.136544"/>
</kw>
<tag>basic_pub_sub_local_shm</tag>
<status status="PASS" start="2026-04-22T13:26:03.098091" elapsed="10.137322"/>
</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-22T13:26:13.236965" 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-22T13:26:13.236684" elapsed="0.000301"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-22T13:26:13.237229" 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-22T13:26:13.237057" elapsed="0.000188"/>
</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-22T13:26:13.237335" elapsed="0.000206"/>
</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-22T13:26:13.237639" elapsed="0.116486"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-22T13:26:22.354852" 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-22T13:26:13.354380" elapsed="9.000595"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-22T13:26:22.358311" level="INFO">${logs} = [Entrypoint] Starting subscriber and publisher in mode local_udp
1776864373356 ms | 3d46747e220d | 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-22T13:26:22.355144" elapsed="0.003201"/>
</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-22T13:26:22.358453" elapsed="0.000300"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-22T13:26:22.359062" level="INFO">
[CONTAINER LOG: LOCAL PUB+SUB]
[Entrypoint] Starting subscriber and publisher in mode local_udp
1776864373356 ms | 3d46747e220d | 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.
1776864374358 ms | 3d46747e220d | 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-22T13:26:22.358851" elapsed="0.000248"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-22T13:26:22.360279" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-22T13:26:22.359167" elapsed="0.001138"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-22T13:26:22.360611" 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-22T13:26:22.360388" elapsed="0.000266"/>
</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-22T13:26:22.360728" elapsed="0.000125"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-22T13:26:22.360937" elapsed="0.004839"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-22T13:26:23.366245" 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-22T13:26:22.365874" elapsed="1.000524"/>
</kw>
<arg>local_udp</arg>
<status status="PASS" start="2026-04-22T13:26:13.236450" elapsed="10.130038"/>
</kw>
<tag>basic_pub_sub_local_udp</tag>
<status status="PASS" start="2026-04-22T13:26:13.236007" elapsed="10.130622"/>
</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-22T13:26:23.368274" 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-22T13:26:23.367973" elapsed="0.000322"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-22T13:26:23.368589" 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-22T13:26:23.368409" elapsed="0.000195"/>
</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-22T13:26:23.368671" elapsed="0.000169"/>
</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-22T13:26:23.368932" elapsed="0.119184"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-22T13:26:32.488927" 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-22T13:26:23.488380" elapsed="9.000670"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-22T13:26:32.492233" level="INFO">${logs} = [Entrypoint] Starting subscriber and publisher in mode local_tcp
1776864383490 ms | 9093708e28d2 | 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-22T13:26:32.489219" elapsed="0.003065"/>
</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-22T13:26:32.492399" elapsed="0.000308"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-22T13:26:32.493065" level="INFO">
[CONTAINER LOG: LOCAL PUB+SUB]
[Entrypoint] Starting subscriber and publisher in mode local_tcp
1776864383490 ms | 9093708e28d2 | pub_test | 7 | info | Using built-in local time plugin.
[Publisher] Waiting for at least 1 subscriber(s) on topic: test_topic
1776864385492 ms | 9093708e28d2 | pub_test | 7 | info | CTCPReaderLayer - TCPPubSub (Info) -Publisher :::0: Created publisher and waiting for clients.
[Publisher] Found 1 subscriber(s). Proceeding to send messages.
1776864385493 ms | 9093708e28d2 | pub_test | 7 | info | CTCPReaderLayer - TCPPubSub (Info) -Publisher :::32895: Subscriber ::ffff:172.17.0.3:58878 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.
1776864388994 ms | 9093708e28d2 | pub_test | 7 | error | CTCPReaderLayer - TCPPubSub (Error) -Publisher ?: Error while waiting for subsriber: Operation aborted.
1776864384491 ms | 9093708e28d2 | 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)
1776864388994 ms | 9093708e28d2 | sub_test | 13 | error | CTCPReaderLayer - TCPPubSub (Error) -SubscriberSession 172.17.0.3:58878-&gt;9093708e28d2:32895: Error reading header length: End of file
1776864388995 ms | 9093708e28d2 | sub_test | 13 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.17.0.3:51634: Failed connecting to publisher 9093708e28d2:32895: Connection refused
1776864388995 ms | 9093708e28d2 | sub_test | 13 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.17.0.3:51638: Failed connecting to publisher 9093708e28d2:32895: Connection refused
1776864388995 ms | 9093708e28d2 | sub_test | 13 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.17.0.3:51642: Failed connecting to publisher 9093708e28d2:32895: Connection refused
1776864388995 ms | 9093708e28d2 | sub_test | 13 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.17.0.3:51648: Failed connecting to publisher 9093708e28d2:32895: Connection refused
1776864388995 ms | 9093708e28d2 | sub_test | 13 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.17.0.3:51652: Failed connecting to publisher 9093708e28d2:32895: 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-22T13:26:32.492818" elapsed="0.000318"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-22T13:26:32.494496" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-22T13:26:32.493228" elapsed="0.001292"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-22T13:26:32.494834" 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-22T13:26:32.494609" elapsed="0.000267"/>
</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-22T13:26:32.494951" elapsed="0.000135"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-22T13:26:32.495198" elapsed="0.004695"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-22T13:26:33.500327" 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-22T13:26:32.499986" elapsed="1.000564"/>
</kw>
<arg>local_tcp</arg>
<status status="PASS" start="2026-04-22T13:26:23.367684" elapsed="10.132956"/>
</kw>
<tag>basic_pub_sub_local_tcp</tag>
<status status="PASS" start="2026-04-22T13:26:23.367221" elapsed="10.133656"/>
</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-22T13:26:33.503577" 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-22T13:26:33.503122" elapsed="0.000475"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-22T13:26:33.503904" 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-22T13:26:33.503735" elapsed="0.000190"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-22T13:26:33.504226" 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-22T13:26:33.504069" elapsed="0.000171"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-22T13:26:33.504570" 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-22T13:26:33.504418" elapsed="0.000193"/>
</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-22T13:26:33.504748" elapsed="0.000271"/>
</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-22T13:26:33.505110" elapsed="0.160804"/>
</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-22T13:26:33.666161" elapsed="0.154193"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-22T13:26:42.821076" 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-22T13:26:33.820581" elapsed="9.000619"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-22T13:26:42.824172" level="INFO">${log_sub} = [Entrypoint] Starting subscriber in mode network_udp
1776864393668 ms | 158c694af8f1 | 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-22T13:26:42.821398" elapsed="0.002804"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-22T13:26:42.826400" level="INFO">${log_pub} = [Entrypoint] Starting publisher in mode network_udp
1776864393822 ms | 1027f221e36a | 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-22T13:26:42.824318" elapsed="0.002109"/>
</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-22T13:26:42.826515" elapsed="0.000296"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-22T13:26:42.827101" level="INFO">
[CONTAINER LOG: PUBLISHER]
[Entrypoint] Starting publisher in mode network_udp
1776864393822 ms | 1027f221e36a | 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-22T13:26:42.826917" elapsed="0.000220"/>
</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-22T13:26:42.827207" elapsed="0.000221"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-22T13:26:42.827668" level="INFO">
[CONTAINER LOG: SUBSCRIBER]
[Entrypoint] Starting subscriber in mode network_udp
1776864393668 ms | 158c694af8f1 | 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-22T13:26:42.827514" elapsed="0.000182"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-22T13:26:42.828785" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${SUB_NAME}</arg>
<status status="PASS" start="2026-04-22T13:26:42.827760" elapsed="0.001049"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-22T13:26:42.829126" 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-22T13:26:42.828890" elapsed="0.000278"/>
</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-22T13:26:42.829238" elapsed="0.000158"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${SUB_NAME}</arg>
<status status="PASS" start="2026-04-22T13:26:42.829474" elapsed="0.004915"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${PUB_NAME}</arg>
<status status="PASS" start="2026-04-22T13:26:42.834477" elapsed="0.005971"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-22T13:26:43.840920" 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-22T13:26:42.840549" elapsed="1.000497"/>
</kw>
<arg>network_udp</arg>
<arg>network</arg>
<status status="PASS" start="2026-04-22T13:26:33.502618" elapsed="10.338521"/>
</kw>
<tag>basic_pub_sub_network_udp</tag>
<status status="PASS" start="2026-04-22T13:26:33.501963" elapsed="10.339340"/>
</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-22T13:26:43.843147" 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-22T13:26:43.842863" elapsed="0.000305"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-22T13:26:43.843439" 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-22T13:26:43.843240" elapsed="0.000215"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-22T13:26:43.843674" 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-22T13:26:43.843518" elapsed="0.000170"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-22T13:26:43.843894" 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-22T13:26:43.843746" elapsed="0.000162"/>
</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-22T13:26:43.843965" elapsed="0.000168"/>
</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-22T13:26:43.844213" elapsed="0.133033"/>
</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-22T13:26:43.977519" elapsed="0.127649"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-22T13:26:53.105819" 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-22T13:26:44.105376" elapsed="9.000565"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-22T13:26:53.109159" level="INFO">${log_sub} = [Entrypoint] Starting subscriber in mode network_tcp
1776864403981 ms | f1b4c0d93280 | 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-22T13:26:53.106110" elapsed="0.003074"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-22T13:26:53.111414" level="INFO">${log_pub} = [Entrypoint] Starting publisher in mode network_tcp
1776864404107 ms | 072ba1a1c2a8 | 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-22T13:26:53.109349" elapsed="0.002092"/>
</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-22T13:26:53.111528" elapsed="0.000284"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-22T13:26:53.112144" level="INFO">
[CONTAINER LOG: PUBLISHER]
[Entrypoint] Starting publisher in mode network_tcp
1776864404107 ms | 072ba1a1c2a8 | pub_network_tcp | 7 | info | Using built-in local time plugin.
[Publisher] Waiting for at least 1 subscriber(s) on topic: topic_network_tcp
1776864404982 ms | 072ba1a1c2a8 | pub_network_tcp | 7 | info | CTCPReaderLayer - TCPPubSub (Info) -Publisher :::0: Created publisher and waiting for clients.
1776864404984 ms | 072ba1a1c2a8 | pub_network_tcp | 7 | info | CTCPReaderLayer - TCPPubSub (Info) -Publisher :::38373: Subscriber ::ffff:172.18.0.2:33348 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.
1776864408510 ms | 072ba1a1c2a8 | 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-22T13:26:53.111925" elapsed="0.000257"/>
</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-22T13:26:53.112251" elapsed="0.000208"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-22T13:26:53.112759" level="INFO">
[CONTAINER LOG: SUBSCRIBER]
[Entrypoint] Starting subscriber in mode network_tcp
1776864403981 ms | f1b4c0d93280 | 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)
1776864408510 ms | f1b4c0d93280 | sub_network_tcp | 7 | error | CTCPReaderLayer - TCPPubSub (Error) -SubscriberSession 172.18.0.2:33348-&gt;072ba1a1c2a8:38373: Error reading header length: End of file
1776864408511 ms | f1b4c0d93280 | sub_network_tcp | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:44790: Failed connecting to publisher 072ba1a1c2a8:38373: Connection refused
1776864408511 ms | f1b4c0d93280 | sub_network_tcp | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:44804: Failed connecting to publisher 072ba1a1c2a8:38373: Connection refused
1776864408512 ms | f1b4c0d93280 | sub_network_tcp | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:44820: Failed connecting to publisher 072ba1a1c2a8:38373: Connection refused
1776864408512 ms | f1b4c0d93280 | sub_network_tcp | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:44836: Failed connecting to publisher 072ba1a1c2a8:38373: Connection refused
1776864408513 ms | f1b4c0d93280 | sub_network_tcp | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:44846: Failed connecting to publisher 072ba1a1c2a8:38373: 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-22T13:26:53.112555" elapsed="0.000251"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-22T13:26:53.113944" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${SUB_NAME}</arg>
<status status="PASS" start="2026-04-22T13:26:53.112888" elapsed="0.001078"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-22T13:26:53.114313" 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-22T13:26:53.114047" elapsed="0.000308"/>
</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-22T13:26:53.114428" elapsed="0.000123"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${SUB_NAME}</arg>
<status status="PASS" start="2026-04-22T13:26:53.114633" elapsed="0.004921"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${PUB_NAME}</arg>
<status status="PASS" start="2026-04-22T13:26:53.119644" elapsed="0.004737"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-22T13:26:54.124823" 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-22T13:26:53.124475" elapsed="1.000471"/>
</kw>
<arg>network_tcp</arg>
<arg>network</arg>
<status status="PASS" start="2026-04-22T13:26:43.842616" elapsed="10.282420"/>
</kw>
<tag>basic_pub_sub_network_tcp</tag>
<status status="PASS" start="2026-04-22T13:26:43.842159" elapsed="10.283002"/>
</test>
<status status="PASS" start="2026-04-22T13:25:45.173401" elapsed="68.952655"/>
</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-22T13:26:54.129352" elapsed="0.000138"/>
</kw>
<kw name="Get Build Script Path" owner="GlobalPathsLibrary">
<msg time="2026-04-22T13:26:54.129645" 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-22T13:26:54.129565" elapsed="0.000097"/>
</kw>
<kw name="Get Network Name" owner="GlobalPathsLibrary">
<msg time="2026-04-22T13:26:54.129778" level="INFO">${net} = ecal_test_net</msg>
<var>${net}</var>
<status status="PASS" start="2026-04-22T13:26:54.129716" elapsed="0.000075"/>
</kw>
<kw name="Get Build Script Args" owner="GlobalPathsLibrary">
<msg time="2026-04-22T13:26:54.129901" level="INFO">${args} = ['multi_pub_sub']</msg>
<var>${args}</var>
<status status="PASS" start="2026-04-22T13:26:54.129839" elapsed="0.000075"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-22T13:26:54.130210" 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-22T13:26:54.129980" elapsed="0.000256"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-22T13:26:54.130528" 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-22T13:26:54.130336" elapsed="0.000216"/>
</kw>
<kw name="Get Test Description" owner="GlobalPathsLibrary">
<msg time="2026-04-22T13:26:54.130825" 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-22T13:26:54.130657" elapsed="0.000188"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-22T13:26:54.131063" 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-22T13:26:54.130910" elapsed="0.000188"/>
</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-22T13:26:54.131161" elapsed="0.000170"/>
</kw>
<kw name="Run Process" owner="Process">
<msg time="2026-04-22T13:26:54.131671" 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-22T13:26:54.132148" level="INFO">Waiting for process to complete.</msg>
<msg time="2026-04-22T13:27:03.355493" level="INFO">Process completed.</msg>
<msg time="2026-04-22T13:27:03.355678" 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-22T13:26:54.131424" elapsed="9.224279"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-22T13:27:03.356541" 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-22T13:27:03.355872" elapsed="0.000720"/>
</kw>
<kw name="Create Docker Network" owner="DockerLibrary">
<arg>${NETWORK}</arg>
<status status="PASS" start="2026-04-22T13:27:03.356681" elapsed="0.007890"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-22T13:27:06.365145" 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-22T13:27:03.364732" elapsed="3.000563"/>
</kw>
<status status="PASS" start="2026-04-22T13:26:54.129181" elapsed="12.236208"/>
</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-22T13:27:06.366789" 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-22T13:27:06.366510" elapsed="0.000299"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-22T13:27:06.367047" 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-22T13:27:06.366882" elapsed="0.000180"/>
</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-22T13:27:06.367126" elapsed="0.000193"/>
</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-22T13:27:06.367394" elapsed="0.119620"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-22T13:27:24.487730" 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-22T13:27:06.487201" elapsed="18.000650"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-22T13:27:24.491033" level="INFO">${logs} = [Entrypoint] Starting local multi pub/sub test in mode local_udp
1776864426489 ms | 4fc327a53465 | multi_publisher | 7 | 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-22T13:27:24.488022" elapsed="0.003037"/>
</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-22T13:27:24.491151" elapsed="0.000311"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-22T13:27:24.491767" level="INFO">
[CONTAINER LOG: All Local Binarys Multi Pub/Sub]
[Entrypoint] Starting local multi pub/sub test in mode local_udp
1776864426489 ms | 4fc327a53465 | multi_publisher | 7 | info | Using built-in local time plugin.
[Publisher] Waiting for at least 2 subscriber(s) on topic: test_topic
1776864426489 ms | 4fc327a53465 | multi_publisher | 8 | info | Using built-in local time plugin.
[Publisher] Waiting for at least 2 subscriber(s) on topic: test_topic
1776864427490 ms | 4fc327a53465 | multi_subscriber | 18 | info | Using built-in local time plugin.
[Subscriber 1] Waiting for messages...

1776864427490 ms | 4fc327a53465 | 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 2] Received Message Summary ===
PUB1 messages (42):--------------&gt; 10/10
PUB2 messages (43):-------------&gt; 10/10
[Subscriber 2] [✓] Received messages from both publishers.


=== [Subscriber 1] Received Message Summary ===
PUB1 messages (42):--------------&gt; 10/10
PUB2 messages (43):-------------&gt; 10/10
[Subscriber 1] [✓] 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-22T13:27:24.491564" elapsed="0.000246"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-22T13:27:24.492954" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-22T13:27:24.491880" elapsed="0.001102"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-22T13:27:24.493401" 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-22T13:27:24.493126" elapsed="0.000330"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-22T13:27:24.493545" elapsed="0.004930"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-22T13:27:25.498915" 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-22T13:27:24.498569" elapsed="1.000467"/>
</kw>
<arg>local_udp</arg>
<status status="PASS" start="2026-04-22T13:27:06.365961" elapsed="19.133163"/>
</kw>
<tag>multi_pub_sub_local_udp</tag>
<status status="PASS" start="2026-04-22T13:27:06.365466" elapsed="19.133782"/>
</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-22T13:27:25.500882" 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-22T13:27:25.500608" elapsed="0.000293"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-22T13:27:25.501123" 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-22T13:27:25.500973" elapsed="0.000165"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-22T13:27:25.501375" 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-22T13:27:25.501198" elapsed="0.000192"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-22T13:27:25.501606" 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-22T13:27:25.501450" elapsed="0.000169"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-22T13:27:25.501849" 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-22T13:27:25.501678" elapsed="0.000187"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-22T13:27:25.502088" 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-22T13:27:25.501927" elapsed="0.000175"/>
</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-22T13:27:25.502162" elapsed="0.000178"/>
</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-22T13:27:25.502431" elapsed="0.133878"/>
</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-22T13:27:25.636494" elapsed="0.116420"/>
</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-22T13:27:25.753130" elapsed="0.117697"/>
</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-22T13:27:25.871028" elapsed="0.120653"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-22T13:27:43.992325" 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-22T13:27:25.991860" elapsed="18.000591"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-22T13:27:43.995478" level="INFO">${log1} = [Entrypoint] Starting multi_subscriber in mode network_udp
1776864445639 ms | a46b8d3bd2e9 | multi_subscriber | 8 | 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-22T13:27:43.992621" elapsed="0.002885"/>
</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-22T13:27:43.995595" elapsed="0.000286"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-22T13:27:43.996214" level="INFO">
[CONTAINER LOG: SUBSCRIBER 1]
[Entrypoint] Starting multi_subscriber in mode network_udp
1776864445639 ms | a46b8d3bd2e9 | multi_subscriber | 8 | 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-22T13:27:43.995984" elapsed="0.000304"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-22T13:27:43.998673" level="INFO">${log2} = [Entrypoint] Starting multi_subscriber2 in mode network_udp
1776864445754 ms | d463fafd8ad5 | 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-22T13:27:43.996384" elapsed="0.002314"/>
</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-22T13:27:43.998782" elapsed="0.000226"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-22T13:27:43.999334" level="INFO">
[CONTAINER LOG: SUBSCRIBER 1]
[Entrypoint] Starting multi_subscriber2 in mode network_udp
1776864445754 ms | d463fafd8ad5 | 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-22T13:27:43.999108" elapsed="0.000265"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${SUB1}</arg>
<status status="PASS" start="2026-04-22T13:27:43.999447" elapsed="0.001016"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${SUB2}</arg>
<status status="PASS" start="2026-04-22T13:27:44.000548" elapsed="0.000989"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${PUB1}</arg>
<status status="PASS" start="2026-04-22T13:27:44.001622" elapsed="0.001008"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${PUB2}</arg>
<status status="PASS" start="2026-04-22T13:27:44.002714" elapsed="0.000995"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-22T13:27:44.004626" level="INFO">${exit1} = 0</msg>
<var>${exit1}</var>
<arg>${SUB1}</arg>
<status status="PASS" start="2026-04-22T13:27:44.003795" elapsed="0.000854"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-22T13:27:44.005592" level="INFO">${exit2} = 0</msg>
<var>${exit2}</var>
<arg>${SUB2}</arg>
<status status="PASS" start="2026-04-22T13:27:44.004724" elapsed="0.000891"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-22T13:27:44.005913" 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-22T13:27:44.005695" elapsed="0.000259"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-22T13:27:44.006197" 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-22T13:27:44.006027" elapsed="0.000204"/>
</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-22T13:27:44.006328" elapsed="0.000125"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${SUB1}</arg>
<status status="PASS" start="2026-04-22T13:27:44.006533" elapsed="0.004793"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${SUB2}</arg>
<status status="PASS" start="2026-04-22T13:27:44.011416" elapsed="0.004609"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${PUB1}</arg>
<status status="PASS" start="2026-04-22T13:27:44.016116" elapsed="0.004715"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${PUB2}</arg>
<status status="PASS" start="2026-04-22T13:27:44.020920" elapsed="0.004923"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-22T13:27:45.026312" 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-22T13:27:44.025936" elapsed="1.000501"/>
</kw>
<arg>network_udp</arg>
<arg>network</arg>
<status status="PASS" start="2026-04-22T13:27:25.500360" elapsed="19.526165"/>
</kw>
<tag>multi_pub_sub_network_udp</tag>
<status status="PASS" start="2026-04-22T13:27:25.499861" elapsed="19.526792"/>
</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-22T13:27:45.028589" 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-22T13:27:45.028287" elapsed="0.000328"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-22T13:27:45.028856" 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-22T13:27:45.028699" elapsed="0.000173"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-22T13:27:45.029090" 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-22T13:27:45.028934" elapsed="0.000169"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-22T13:27:45.029339" 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-22T13:27:45.029162" elapsed="0.000192"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-22T13:27:45.029567" 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-22T13:27:45.029416" elapsed="0.000165"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-22T13:27:45.029779" 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-22T13:27:45.029638" elapsed="0.000155"/>
</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-22T13:27:45.029848" elapsed="0.000162"/>
</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-22T13:27:45.030091" elapsed="0.131867"/>
</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-22T13:27:45.162131" elapsed="0.121946"/>
</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-22T13:27:45.284315" elapsed="0.120183"/>
</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-22T13:27:45.404677" elapsed="0.123108"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-22T13:28:03.528418" 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-22T13:27:45.527965" elapsed="18.000581"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-22T13:28:03.531585" level="INFO">${log1} = [Entrypoint] Starting multi_subscriber in mode network_tcp
1776864465164 ms | dedbab635846 | 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-22T13:28:03.528718" elapsed="0.002893"/>
</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-22T13:28:03.531705" elapsed="0.000306"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-22T13:28:03.532349" level="INFO">
[CONTAINER LOG: SUBSCRIBER 1]
[Entrypoint] Starting multi_subscriber in mode network_tcp
1776864465164 ms | dedbab635846 | multi_subscriber | 7 | info | Using built-in local time plugin.
[Subscriber 1] Waiting for messages...

1776864478311 ms | dedbab635846 | multi_subscriber | 7 | error | CTCPReaderLayer - TCPPubSub (Error) -SubscriberSession 172.18.0.2:54436-&gt;078c4b0180d3:36313: Error reading header length: End of file
1776864478312 ms | dedbab635846 | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:37264: Failed connecting to publisher 078c4b0180d3:36313: Connection refused
1776864478313 ms | dedbab635846 | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:37278: Failed connecting to publisher 078c4b0180d3:36313: Connection refused
1776864478313 ms | dedbab635846 | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:37288: Failed connecting to publisher 078c4b0180d3:36313: Connection refused
1776864478314 ms | dedbab635846 | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:37304: Failed connecting to publisher 078c4b0180d3:36313: Connection refused
1776864478315 ms | dedbab635846 | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:37320: Failed connecting to publisher 078c4b0180d3:36313: Connection refused
1776864478333 ms | dedbab635846 | multi_subscriber | 7 | error | CTCPReaderLayer - TCPPubSub (Error) -SubscriberSession 172.18.0.2:52724-&gt;79f14a0de1d8:42589: Error reading header length: End of file
1776864478334 ms | dedbab635846 | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:45820: Failed connecting to publisher 79f14a0de1d8:42589: Connection refused
1776864478335 ms | dedbab635846 | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:45832: Failed connecting to publisher 79f14a0de1d8:42589: Connection refused
1776864478337 ms | dedbab635846 | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:45846: Failed connecting to publisher 79f14a0de1d8:42589: Connection refused
1776864478337 ms | dedbab635846 | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:45854: Failed connecting to publisher 79f14a0de1d8:42589: Connection refused
1776864478338 ms | dedbab635846 | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:45860: Failed connecting to publisher 79f14a0de1d8:42589: 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-22T13:28:03.532111" elapsed="0.000335"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-22T13:28:03.534782" level="INFO">${log2} = [Entrypoint] Starting multi_subscriber2 in mode network_tcp
1776864465286 ms | 0a14fe54abcb | 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-22T13:28:03.532517" elapsed="0.002293"/>
</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-22T13:28:03.534897" elapsed="0.000276"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-22T13:28:03.535564" level="INFO">
[CONTAINER LOG: SUBSCRIBER 1]
[Entrypoint] Starting multi_subscriber2 in mode network_tcp
1776864465286 ms | 0a14fe54abcb | multi_subscriber | 7 | info | Using built-in local time plugin.
[Subscriber 2] Waiting for messages...
1776864478311 ms | 0a14fe54abcb | multi_subscriber | 7 | error | CTCPReaderLayer - TCPPubSub (Error) -SubscriberSession 172.18.0.3:47936-&gt;078c4b0180d3:36313: Error reading header length: End of file
1776864478312 ms | 0a14fe54abcb | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.3:33030: Failed connecting to publisher 078c4b0180d3:36313: Connection refused
1776864478312 ms | 0a14fe54abcb | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.3:33044: Failed connecting to publisher 078c4b0180d3:36313: Connection refused
1776864478313 ms | 0a14fe54abcb | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.3:33052: Failed connecting to publisher 078c4b0180d3:36313: Connection refused
1776864478314 ms | 0a14fe54abcb | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.3:33056: Failed connecting to publisher 078c4b0180d3:36313: Connection refused
1776864478314 ms | 0a14fe54abcb | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.3:33064: Failed connecting to publisher 078c4b0180d3:36313: Connection refused
1776864478333 ms | 0a14fe54abcb | multi_subscriber | 7 | error | CTCPReaderLayer - TCPPubSub (Error) -SubscriberSession 172.18.0.3:59250-&gt;79f14a0de1d8:42589: Error reading header length: End of file
1776864478335 ms | 0a14fe54abcb | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.3:36178: Failed connecting to publisher 79f14a0de1d8:42589: Connection refused
1776864478336 ms | 0a14fe54abcb | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.3:36194: Failed connecting to publisher 79f14a0de1d8:42589: Connection refused
1776864478337 ms | 0a14fe54abcb | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.3:36204: Failed connecting to publisher 79f14a0de1d8:42589: Connection refused
1776864478337 ms | 0a14fe54abcb | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.3:36206: Failed connecting to publisher 79f14a0de1d8:42589: Connection refused
1776864478338 ms | 0a14fe54abcb | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.3:36212: Failed connecting to publisher 79f14a0de1d8:42589: 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-22T13:28:03.535296" elapsed="0.000348"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${SUB1}</arg>
<status status="PASS" start="2026-04-22T13:28:03.535736" elapsed="0.001300"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${SUB2}</arg>
<status status="PASS" start="2026-04-22T13:28:03.537149" elapsed="0.001260"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${PUB1}</arg>
<status status="PASS" start="2026-04-22T13:28:03.538500" elapsed="0.001019"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${PUB2}</arg>
<status status="PASS" start="2026-04-22T13:28:03.539605" elapsed="0.000976"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-22T13:28:03.541517" level="INFO">${exit1} = 0</msg>
<var>${exit1}</var>
<arg>${SUB1}</arg>
<status status="PASS" start="2026-04-22T13:28:03.540666" elapsed="0.000875"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-22T13:28:03.542502" level="INFO">${exit2} = 0</msg>
<var>${exit2}</var>
<arg>${SUB2}</arg>
<status status="PASS" start="2026-04-22T13:28:03.541619" elapsed="0.000908"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-22T13:28:03.542877" 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-22T13:28:03.542646" elapsed="0.000275"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-22T13:28:03.543345" 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-22T13:28:03.542998" elapsed="0.000387"/>
</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-22T13:28:03.543459" elapsed="0.000126"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${SUB1}</arg>
<status status="PASS" start="2026-04-22T13:28:03.543678" elapsed="0.004825"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${SUB2}</arg>
<status status="PASS" start="2026-04-22T13:28:03.548596" elapsed="0.004634"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${PUB1}</arg>
<status status="PASS" start="2026-04-22T13:28:03.553358" elapsed="0.004840"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${PUB2}</arg>
<status status="PASS" start="2026-04-22T13:28:03.558318" elapsed="0.006288"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-22T13:28:04.565069" 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-22T13:28:03.564710" elapsed="1.000480"/>
</kw>
<arg>network_tcp</arg>
<arg>network</arg>
<status status="PASS" start="2026-04-22T13:27:45.028025" elapsed="19.537274"/>
</kw>
<tag>multi_pub_sub_network_tcp</tag>
<status status="PASS" start="2026-04-22T13:27:45.027575" elapsed="19.537856"/>
</test>
<status status="PASS" start="2026-04-22T13:26:54.126719" elapsed="70.439926"/>
</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-22T13:28:04.569893" elapsed="0.000140"/>
</kw>
<kw name="Get Build Script Path" owner="GlobalPathsLibrary">
<msg time="2026-04-22T13:28:04.570188" 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-22T13:28:04.570108" elapsed="0.000097"/>
</kw>
<kw name="Get Network Name" owner="GlobalPathsLibrary">
<msg time="2026-04-22T13:28:04.570360" level="INFO">${net} = ecal_test_net</msg>
<var>${net}</var>
<status status="PASS" start="2026-04-22T13:28:04.570288" elapsed="0.000087"/>
</kw>
<kw name="Get Build Script Args" owner="GlobalPathsLibrary">
<msg time="2026-04-22T13:28:04.570491" level="INFO">${args} = ['network_crash']</msg>
<var>${args}</var>
<status status="PASS" start="2026-04-22T13:28:04.570429" elapsed="0.000074"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-22T13:28:04.570793" 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-22T13:28:04.570566" elapsed="0.000252"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-22T13:28:04.571059" 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-22T13:28:04.570885" elapsed="0.000197"/>
</kw>
<kw name="Get Test Description" owner="GlobalPathsLibrary">
<msg time="2026-04-22T13:28:04.571365" 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-22T13:28:04.571139" elapsed="0.000248"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-22T13:28:04.571620" 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-22T13:28:04.571457" elapsed="0.000197"/>
</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-22T13:28:04.571716" elapsed="0.000145"/>
</kw>
<kw name="Run Process" owner="Process">
<msg time="2026-04-22T13:28:04.572189" 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-22T13:28:04.572678" level="INFO">Waiting for process to complete.</msg>
<msg time="2026-04-22T13:28:13.575217" level="INFO">Process completed.</msg>
<msg time="2026-04-22T13:28:13.575420" 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-22T13:28:04.571954" elapsed="9.003497"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-22T13:28:13.576240" 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-22T13:28:13.575611" elapsed="0.000706"/>
</kw>
<kw name="Create Docker Network" owner="DockerLibrary">
<arg>${NETWORK}</arg>
<status status="PASS" start="2026-04-22T13:28:13.576401" elapsed="0.007449"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-22T13:28:15.584389" 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-22T13:28:13.583976" elapsed="2.000627"/>
</kw>
<status status="PASS" start="2026-04-22T13:28:04.569733" elapsed="11.014960"/>
</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-22T13:28:15.586061" 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-22T13:28:15.585788" elapsed="0.000293"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-22T13:28:15.586322" 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-22T13:28:15.586154" elapsed="0.000183"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-22T13:28:15.586541" 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-22T13:28:15.586402" elapsed="0.000153"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-22T13:28:15.586748" 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-22T13:28:15.586616" elapsed="0.000146"/>
</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-22T13:28:15.586822" elapsed="0.000157"/>
</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-22T13:28:15.587036" elapsed="0.134822"/>
</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-22T13:28:15.722082" elapsed="0.122380"/>
</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-22T13:28:15.844645" elapsed="0.000306"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-22T13:28:22.845440" 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-22T13:28:15.845046" elapsed="7.000513"/>
</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-22T13:28:22.845733" elapsed="0.000333"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-22T13:28:22.848882" level="INFO">${log_net} = [Entrypoint] Starting network UDP publisher...
1776864495846 ms | 852b5672257c | 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-22T13:28:22.846170" elapsed="0.002738"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-22T13:28:22.849207" level="INFO">
[LOG: NETWORK UDP PUB2 CONTAINER]
[Entrypoint] Starting network UDP publisher...
1776864495846 ms | 852b5672257c | 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-22T13:28:22.848999" elapsed="0.000240"/>
</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-22T13:28:22.849637" elapsed="0.000215"/>
</kw>
<kw name="Run Process" owner="Process">
<msg time="2026-04-22T13:28:22.850406" level="INFO">Starting process:
docker network disconnect ecal_test_net udp_network_pub</msg>
<msg time="2026-04-22T13:28:22.850955" level="INFO">Waiting for process to complete.</msg>
<msg time="2026-04-22T13:28:22.896386" level="INFO">Process completed.</msg>
<msg time="2026-04-22T13:28:22.896588" 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-22T13:28:22.849950" elapsed="0.046670"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-22T13:28:22.897776" 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-22T13:28:22.896827" elapsed="0.001015"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-22T13:28:23.898349" 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-22T13:28:22.897958" elapsed="1.000511"/>
</kw>
<arg>${NET_PUB}</arg>
<arg>${NETWORK}</arg>
<status status="PASS" start="2026-04-22T13:28:22.849409" elapsed="1.049146"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-22T13:28:56.899145" 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-22T13:28:23.898696" elapsed="33.000597"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-22T13:28:56.902592" level="INFO">${log_local} = [Entrypoint] Starting UDP subscriber, then UDP publisher...
1776864495724 ms | 8c8ecd8388b6 | 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-22T13:28:56.899468" elapsed="0.003150"/>
</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-22T13:28:56.902709" elapsed="0.000299"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-22T13:28:56.903366" level="INFO">
[LOG: LOCAL UDP PUB + SUB + PUB3 CONTAINER]
[Entrypoint] Starting UDP subscriber, then UDP publisher...
1776864495724 ms | 8c8ecd8388b6 | 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.
1776864495722 ms | 8c8ecd8388b6 | 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...
1776864506723 ms | 8c8ecd8388b6 | 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-22T13:28:56.903110" elapsed="0.000395"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${LOCAL_ALL}</arg>
<status status="PASS" start="2026-04-22T13:28:56.903610" elapsed="0.001117"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-22T13:28:56.905757" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${LOCAL_ALL}</arg>
<status status="PASS" start="2026-04-22T13:28:56.904816" elapsed="0.000964"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-22T13:28:56.906084" 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-22T13:28:56.905864" elapsed="0.000262"/>
</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-22T13:28:56.906200" elapsed="0.000141"/>
</kw>
<status status="PASS" start="2026-04-22T13:28:15.585299" elapsed="41.321106"/>
</kw>
<tag>network_crash_test</tag>
<status status="PASS" start="2026-04-22T13:28:15.584763" elapsed="41.321721"/>
</test>
<status status="PASS" start="2026-04-22T13:28:04.567233" elapsed="52.339948"/>
</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-22T13:28:56.910182" elapsed="0.000149"/>
</kw>
<kw name="Get Build Script Path" owner="GlobalPathsLibrary">
<msg time="2026-04-22T13:28:56.910489" 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-22T13:28:56.910410" elapsed="0.000096"/>
</kw>
<kw name="Get Network Name" owner="GlobalPathsLibrary">
<msg time="2026-04-22T13:28:56.910624" level="INFO">${net} = ecal_test_net</msg>
<var>${net}</var>
<status status="PASS" start="2026-04-22T13:28:56.910561" elapsed="0.000076"/>
</kw>
<kw name="Get Build Script Args" owner="GlobalPathsLibrary">
<msg time="2026-04-22T13:28:56.910746" level="INFO">${args} = ['pub_crash']</msg>
<var>${args}</var>
<status status="PASS" start="2026-04-22T13:28:56.910686" elapsed="0.000072"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-22T13:28:56.911034" 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-22T13:28:56.910819" elapsed="0.000239"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-22T13:28:56.911323" 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-22T13:28:56.911125" elapsed="0.000225"/>
</kw>
<kw name="Get Test Description" owner="GlobalPathsLibrary">
<msg time="2026-04-22T13:28:56.911550" 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-22T13:28:56.911414" elapsed="0.000153"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-22T13:28:56.911776" 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-22T13:28:56.911629" elapsed="0.000174"/>
</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-22T13:28:56.911861" elapsed="0.000139"/>
</kw>
<kw name="Run Process" owner="Process">
<msg time="2026-04-22T13:28:56.912309" 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-22T13:28:56.912719" level="INFO">Waiting for process to complete.</msg>
<msg time="2026-04-22T13:29:05.895378" level="INFO">Process completed.</msg>
<msg time="2026-04-22T13:29:05.895564" 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-22T13:28:56.912079" elapsed="8.983511"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-22T13:29:05.896449" 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-22T13:29:05.895791" elapsed="0.000708"/>
</kw>
<kw name="Create Docker Network" owner="DockerLibrary">
<arg>${NETWORK}</arg>
<status status="PASS" start="2026-04-22T13:29:05.896583" elapsed="0.007396"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-22T13:29:08.904473" 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-22T13:29:05.904099" elapsed="3.000497"/>
</kw>
<status status="PASS" start="2026-04-22T13:28:56.910052" elapsed="11.994632"/>
</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-22T13:29:08.906150" 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-22T13:29:08.905873" elapsed="0.000296"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-22T13:29:08.906431" 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-22T13:29:08.906242" elapsed="0.000205"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-22T13:29:08.906672" 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-22T13:29:08.906512" elapsed="0.000175"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-22T13:29:08.906895" 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-22T13:29:08.906746" elapsed="0.000163"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-22T13:29:08.907115" 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-22T13:29:08.906967" elapsed="0.000162"/>
</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-22T13:29:08.907186" elapsed="0.000210"/>
</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-22T13:29:08.907481" elapsed="0.136029"/>
</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-22T13:29:09.043689" elapsed="0.122345"/>
</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-22T13:29:09.166221" elapsed="0.122879"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-22T13:29:44.289745" 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-22T13:29:09.289299" elapsed="35.000571"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-22T13:29:44.293051" level="INFO">${sub_logs} = [Entrypoint] Starting crash subscriber in mode network_udp
1776864549045 ms | 489501ab5f38 | ./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-22T13:29:44.290044" elapsed="0.003040"/>
</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-22T13:29:44.293188" elapsed="0.000328"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-22T13:29:44.293826" level="INFO">
[SUBSCRIBER CONTAINER OUTPUT]
[Entrypoint] Starting crash subscriber in mode network_udp
1776864549045 ms | 489501ab5f38 | ./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-22T13:29:44.293615" elapsed="0.000251"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-22T13:29:44.296143" level="INFO">${crash_logs} = [Entrypoint] Starting crash publisher in mode network_udp
1776864549168 ms | ef6fffdeabfe | ./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-22T13:29:44.293937" elapsed="0.002233"/>
</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-22T13:29:44.296273" elapsed="0.000242"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-22T13:29:44.296858" level="INFO">
[CRASH PUBLISHER OUTPUT]
[Entrypoint] Starting crash publisher in mode network_udp
1776864549168 ms | ef6fffdeabfe | ./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-22T13:29:44.296616" elapsed="0.000348"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${SUB_NAME}</arg>
<status status="PASS" start="2026-04-22T13:29:44.297064" elapsed="0.001101"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${CRASH_PUB}</arg>
<status status="PASS" start="2026-04-22T13:29:44.298253" elapsed="0.000947"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${TEST_PUB}</arg>
<status status="PASS" start="2026-04-22T13:29:44.299322" elapsed="0.000991"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-22T13:29:44.301288" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${SUB_NAME}</arg>
<status status="PASS" start="2026-04-22T13:29:44.300402" elapsed="0.000910"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-22T13:29:44.301619" 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-22T13:29:44.301396" elapsed="0.000266"/>
</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-22T13:29:44.301735" elapsed="0.000133"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${SUB_NAME}</arg>
<status status="PASS" start="2026-04-22T13:29:44.301948" elapsed="0.005196"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${CRASH_PUB}</arg>
<status status="PASS" start="2026-04-22T13:29:44.307236" elapsed="0.004879"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${TEST_PUB}</arg>
<status status="PASS" start="2026-04-22T13:29:44.312206" elapsed="0.004872"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-22T13:29:45.317548" 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-22T13:29:44.317172" elapsed="1.000497"/>
</kw>
<arg>network_udp</arg>
<arg>network</arg>
<status status="PASS" start="2026-04-22T13:29:08.905329" elapsed="36.412431"/>
</kw>
<tag>pub_crash_network_udp</tag>
<status status="PASS" start="2026-04-22T13:29:08.904755" elapsed="36.413127"/>
</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-22T13:29:45.320015" 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-22T13:29:45.319720" elapsed="0.000314"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-22T13:29:45.320285" 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-22T13:29:45.320107" elapsed="0.000197"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-22T13:29:45.320545" 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-22T13:29:45.320371" elapsed="0.000189"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-22T13:29:45.320780" 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-22T13:29:45.320622" elapsed="0.000172"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-22T13:29:45.320998" 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-22T13:29:45.320852" elapsed="0.000161"/>
</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-22T13:29:45.321072" elapsed="0.000162"/>
</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-22T13:29:45.321338" elapsed="0.129822"/>
</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-22T13:29:45.451409" elapsed="0.119511"/>
</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-22T13:29:45.571095" elapsed="0.119594"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-22T13:30:20.691332" 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-22T13:29:45.690880" elapsed="35.000576"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-22T13:30:20.694729" level="INFO">${sub_logs} = [Entrypoint] Starting crash subscriber in mode network_tcp
1776864585452 ms | d4977aea7f07 | ./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-22T13:30:20.691628" elapsed="0.003129"/>
</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-22T13:30:20.694849" elapsed="0.000316"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-22T13:30:20.695540" level="INFO">
[SUBSCRIBER CONTAINER OUTPUT]
[Entrypoint] Starting crash subscriber in mode network_tcp
1776864585452 ms | d4977aea7f07 | ./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
1776864596417 ms | d4977aea7f07 | ./test_subscriber | 7 | error | CTCPReaderLayer - TCPPubSub (Error) -SubscriberSession 172.18.0.2:39506-&gt;bb9766cfe6b7:40085: Error reading header length: End of file
1776864596418 ms | d4977aea7f07 | ./test_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:55468: Failed connecting to publisher bb9766cfe6b7:40085: Connection refused
1776864596419 ms | d4977aea7f07 | ./test_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:55472: Failed connecting to publisher bb9766cfe6b7:40085: Connection refused
1776864596420 ms | d4977aea7f07 | ./test_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:55478: Failed connecting to publisher bb9766cfe6b7:40085: Connection refused
1776864596420 ms | d4977aea7f07 | ./test_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:55492: Failed connecting to publisher bb9766cfe6b7:40085: Connection refused
1776864596421 ms | d4977aea7f07 | ./test_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:55508: Failed connecting to publisher bb9766cfe6b7:40085: 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
1776864613000 ms | d4977aea7f07 | ./test_subscriber | 7 | error | CTCPReaderLayer - TCPPubSub (Error) -SubscriberSession 172.18.0.2:60190-&gt;05d89c237093:46115: Error reading header length: End of file
1776864613001 ms | d4977aea7f07 | ./test_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:34244: Failed connecting to publisher 05d89c237093:46115: Connection refused
1776864613001 ms | d4977aea7f07 | ./test_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:34246: Failed connecting to publisher 05d89c237093:46115: Connection refused
1776864613002 ms | d4977aea7f07 | ./test_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:34262: Failed connecting to publisher 05d89c237093:46115: Connection refused
1776864613003 ms | d4977aea7f07 | ./test_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:34274: Failed connecting to publisher 05d89c237093:46115: Connection refused
1776864613004 ms | d4977aea7f07 | ./test_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:34286: Failed connecting to publisher 05d89c237093:46115: 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-22T13:30:20.695285" elapsed="0.000397"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-22T13:30:20.698206" level="INFO">${crash_logs} = [Entrypoint] Starting crash publisher in mode network_tcp
1776864585573 ms | bb9766cfe6b7 | ./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-22T13:30:20.695759" elapsed="0.002477"/>
</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-22T13:30:20.698369" elapsed="0.000291"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-22T13:30:20.698998" level="INFO">
[CRASH PUBLISHER OUTPUT]
[Entrypoint] Starting crash publisher in mode network_tcp
1776864585573 ms | bb9766cfe6b7 | ./crash_publisher | 7 | info | Using built-in local time plugin.
[Publisher] Waiting for at least 1 subscriber(s) on topic: test_topic
1776864586454 ms | bb9766cfe6b7 | ./crash_publisher | 7 | info | CTCPReaderLayer - TCPPubSub (Info) -Publisher :::0: Created publisher and waiting for clients.
1776864586455 ms | bb9766cfe6b7 | ./crash_publisher | 7 | info | CTCPReaderLayer - TCPPubSub (Info) -Publisher :::40085: Subscriber ::ffff:172.18.0.2:39506 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-22T13:30:20.698784" elapsed="0.000260"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${SUB_NAME}</arg>
<status status="PASS" start="2026-04-22T13:30:20.699128" elapsed="0.001182"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${CRASH_PUB}</arg>
<status status="PASS" start="2026-04-22T13:30:20.700416" elapsed="0.001081"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${TEST_PUB}</arg>
<status status="PASS" start="2026-04-22T13:30:20.701580" elapsed="0.000960"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-22T13:30:20.703562" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${SUB_NAME}</arg>
<status status="PASS" start="2026-04-22T13:30:20.702631" elapsed="0.000956"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-22T13:30:20.703902" 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-22T13:30:20.703670" elapsed="0.000275"/>
</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-22T13:30:20.704020" elapsed="0.000127"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${SUB_NAME}</arg>
<status status="PASS" start="2026-04-22T13:30:20.704238" elapsed="0.005163"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${CRASH_PUB}</arg>
<status status="PASS" start="2026-04-22T13:30:20.709492" elapsed="0.004840"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${TEST_PUB}</arg>
<status status="PASS" start="2026-04-22T13:30:20.714457" elapsed="0.004545"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-22T13:30:21.719477" 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-22T13:30:20.719095" elapsed="1.000501"/>
</kw>
<arg>network_tcp</arg>
<arg>network</arg>
<status status="PASS" start="2026-04-22T13:29:45.319481" elapsed="36.400206"/>
</kw>
<tag>pub_crash_network_tcp</tag>
<status status="PASS" start="2026-04-22T13:29:45.319010" elapsed="36.400800"/>
</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-22T13:30:21.721737" 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-22T13:30:21.721455" elapsed="0.000302"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-22T13:30:21.721994" 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-22T13:30:21.721828" elapsed="0.000181"/>
</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-22T13:30:21.722070" elapsed="0.000180"/>
</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-22T13:30:21.722355" elapsed="0.115736"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-22T13:30:56.839060" 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-22T13:30:21.838382" elapsed="35.000803"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-22T13:30:56.842601" 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)
1776864621841 ms | c660bdf38835 | ./crash_publisher | 7 |...</msg>
<var>${logs}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-22T13:30:56.839386" elapsed="0.003241"/>
</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-22T13:30:56.842716" elapsed="0.000333"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-22T13:30:56.843427" 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)
1776864621841 ms | c660bdf38835 | ./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)
1776864621841 ms | c660bdf38835 | 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)
1776864622842 ms | c660bdf38835 | ./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.

 [Test Publisher] Started with mode=local_shm, topic=test_topic, node=test_publisher, count=25, delay=1000ms
[Crash Publisher] Starting and will crash after 10 messages...
[Crash Publisher] Sent buffer with content: 42 (message 1)
[Test Publisher] Sent buffer with content: 43 (message 1)
[Subscriber] Received value: 42
[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)
[Test Publisher] Sent buffer with content: 43 (message 5)
[Subscriber] Received value: 42
[Subscriber] Received value: 43
[Test Publisher] Sent buffer with content: 43 (message 6)
[Crash Publisher] Sent buffer with content: 42 (message 6)
[Subscriber] Received value: 42
[Subscriber] Received value: 43
[Test Publisher] Sent buffer with content: 43 (message 7)
[Crash Publisher] Sent buffer with content: 42 (message 7)
[Subscriber] Received value: 43
[Subscriber] Received value: 42
[Test Publisher] Sent buffer with content: 43 (message 8)
[Crash Publisher] Sent buffer with content: 42 (message 8)
[Subscriber] Received value: 43
[Subscriber] Received value: 42
[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-22T13:30:56.843150" elapsed="0.000367"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-22T13:30:56.844883" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-22T13:30:56.843635" elapsed="0.001270"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-22T13:30:56.845201" 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-22T13:30:56.844987" elapsed="0.000255"/>
</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-22T13:30:56.845395" elapsed="0.000151"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-22T13:30:56.845643" elapsed="0.004774"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-22T13:30:57.850864" 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-22T13:30:56.850512" elapsed="1.000476"/>
</kw>
<arg>local_shm</arg>
<status status="PASS" start="2026-04-22T13:30:21.721199" elapsed="36.129878"/>
</kw>
<tag>pub_crash_local_shm</tag>
<status status="PASS" start="2026-04-22T13:30:21.720763" elapsed="36.130437"/>
</test>
<status status="PASS" start="2026-04-22T13:28:56.907753" elapsed="120.944121"/>
</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-22T13:30:57.855157" elapsed="0.000177"/>
</kw>
<kw name="Get Build Script Path" owner="GlobalPathsLibrary">
<msg time="2026-04-22T13:30:57.855498" 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-22T13:30:57.855415" elapsed="0.000101"/>
</kw>
<kw name="Get Network Name" owner="GlobalPathsLibrary">
<msg time="2026-04-22T13:30:57.855636" level="INFO">${net} = ecal_test_net</msg>
<var>${net}</var>
<status status="PASS" start="2026-04-22T13:30:57.855574" elapsed="0.000076"/>
</kw>
<kw name="Get Build Script Args" owner="GlobalPathsLibrary">
<msg time="2026-04-22T13:30:57.855762" level="INFO">${args} = ['rpc_n_to_n_test']</msg>
<var>${args}</var>
<status status="PASS" start="2026-04-22T13:30:57.855702" elapsed="0.000073"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-22T13:30:57.856073" 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-22T13:30:57.855841" elapsed="0.000258"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-22T13:30:57.856376" 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-22T13:30:57.856169" elapsed="0.000233"/>
</kw>
<kw name="Get Test Description" owner="GlobalPathsLibrary">
<msg time="2026-04-22T13:30:57.856623" 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-22T13:30:57.856466" elapsed="0.000174"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-22T13:30:57.856860" 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-22T13:30:57.856705" elapsed="0.000183"/>
</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-22T13:30:57.856949" elapsed="0.000145"/>
</kw>
<kw name="Run Process" owner="Process">
<msg time="2026-04-22T13:30:57.857411" 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-22T13:30:57.857907" level="INFO">Waiting for process to complete.</msg>
<msg time="2026-04-22T13:31:06.131283" level="INFO">Process completed.</msg>
<msg time="2026-04-22T13:31:06.131467" 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-22T13:30:57.857174" elapsed="8.274319"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-22T13:31:06.133459" 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-22T13:31:06.131657" elapsed="0.001863"/>
</kw>
<kw name="Create Docker Network" owner="DockerLibrary">
<arg>${NETWORK}</arg>
<status status="PASS" start="2026-04-22T13:31:06.133625" elapsed="0.007717"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-22T13:31:08.141896" 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-22T13:31:06.141483" elapsed="2.000526"/>
</kw>
<status status="PASS" start="2026-04-22T13:30:57.855006" elapsed="10.287087"/>
</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-22T13:31:08.143224" 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-22T13:31:08.142961" elapsed="0.000283"/>
</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-22T13:31:08.143334" elapsed="0.000208"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-22T13:31:08.144069" 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-22T13:31:08.143873" elapsed="0.000214"/>
</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-22T13:31:08.144149" elapsed="0.135388"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-04-22T13:31:08.143808" elapsed="0.135803"/>
</iter>
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-22T13:31:08.280203" 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-22T13:31:08.279882" elapsed="0.000346"/>
</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-22T13:31:08.280404" elapsed="0.135481"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-04-22T13:31:08.279764" elapsed="0.136197"/>
</iter>
<var>${i}</var>
<value>${NUM_SERVERS}</value>
<status status="PASS" start="2026-04-22T13:31:08.143600" elapsed="0.272403"/>
</for>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-22T13:31:10.416600" 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-22T13:31:08.416149" elapsed="2.000574"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-22T13:31:10.417525" 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-22T13:31:10.417193" elapsed="0.000352"/>
</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-22T13:31:10.417620" elapsed="0.119442"/>
</kw>
<var name="${j}">0</var>
<status status="PASS" start="2026-04-22T13:31:10.417079" elapsed="0.120059"/>
</iter>
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-22T13:31:10.537744" 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-22T13:31:10.537427" elapsed="0.000338"/>
</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-22T13:31:10.537841" elapsed="0.119279"/>
</kw>
<var name="${j}">1</var>
<status status="PASS" start="2026-04-22T13:31:10.537304" elapsed="0.119910"/>
</iter>
<var>${j}</var>
<value>${NUM_CLIENTS}</value>
<status status="PASS" start="2026-04-22T13:31:10.416815" elapsed="0.240490"/>
</for>
<for flavor="IN RANGE">
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-22T13:31:10.658224" 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-22T13:31:10.657854" elapsed="0.000397"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-22T13:31:12.100664" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${name}</arg>
<status status="PASS" start="2026-04-22T13:31:10.658374" elapsed="1.442351"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-22T13:31:12.101553" 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-22T13:31:12.100933" elapsed="0.000674"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-22T13:31:12.104509" level="INFO">${logs} = [Entrypoint] Starting client in mode network_udp...
[Client] Initializing eCAL with mode: network_udp
1776864670539 ms | e57459b13adb | rpc_client | 1 | info | Using built-in local time plugin.
[Clien...</msg>
<var>${logs}</var>
<arg>${name}</arg>
<status status="PASS" start="2026-04-22T13:31:12.101702" elapsed="0.002839"/>
</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-22T13:31:12.104635" elapsed="0.000266"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-22T13:31:12.105247" level="INFO">
[CLIENT LOG: rpc_client_0]
[Entrypoint] Starting client in mode network_udp...
[Client] Initializing eCAL with mode: network_udp
1776864670539 ms | e57459b13adb | 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-22T13:31:12.105000" elapsed="0.000322"/>
</kw>
<var name="${j}">0</var>
<status status="PASS" start="2026-04-22T13:31:10.657706" elapsed="1.447650"/>
</iter>
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-22T13:31:12.105844" 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-22T13:31:12.105578" elapsed="0.000292"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-22T13:31:12.213147" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${name}</arg>
<status status="PASS" start="2026-04-22T13:31:12.105963" elapsed="0.107243"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-22T13:31:12.213877" 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-22T13:31:12.213485" elapsed="0.000442"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-22T13:31:12.217775" level="INFO">${logs} = [Entrypoint] Starting client in mode network_udp...
[Client] Initializing eCAL with mode: network_udp
1776864670660 ms | f7c968cad231 | rpc_client | 1 | info | Using built-in local time plugin.
[Clien...</msg>
<var>${logs}</var>
<arg>${name}</arg>
<status status="PASS" start="2026-04-22T13:31:12.214012" elapsed="0.003799"/>
</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-22T13:31:12.217928" elapsed="0.000383"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-22T13:31:12.218708" level="INFO">
[CLIENT LOG: rpc_client_1]
[Entrypoint] Starting client in mode network_udp...
[Client] Initializing eCAL with mode: network_udp
1776864670660 ms | f7c968cad231 | 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-22T13:31:12.218432" elapsed="0.000323"/>
</kw>
<var name="${j}">1</var>
<status status="PASS" start="2026-04-22T13:31:12.105495" elapsed="0.113292"/>
</iter>
<var>${j}</var>
<value>${NUM_CLIENTS}</value>
<status status="PASS" start="2026-04-22T13:31:10.657397" elapsed="1.561426"/>
</for>
<for flavor="IN RANGE">
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-22T13:31:12.219584" 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-22T13:31:12.219215" elapsed="0.000390"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-22T13:31:12.223633" level="INFO">${logs} = [Entrypoint] Starting server in mode network_udp...
[1;33m[Server] Initializing eCAL with mode: network_udp[0m
1776864668282 ms | a0642988b75b | 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-22T13:31:12.219747" elapsed="0.003914"/>
</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-22T13:31:12.223800" elapsed="0.000259"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-22T13:31:12.224456" level="INFO">
[SERVER LOG: rpc_server_0]
[Entrypoint] Starting server in mode network_udp...
[1;33m[Server] Initializing eCAL with mode: network_udp[0m
1776864668282 ms | a0642988b75b | 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-22T13:31:12.224170" elapsed="0.000334"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${name}</arg>
<status status="PASS" start="2026-04-22T13:31:12.224592" elapsed="10.081639"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-04-22T13:31:12.219129" elapsed="10.087201"/>
</iter>
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-22T13:31:22.307251" 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-22T13:31:22.306817" elapsed="0.000482"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-22T13:31:22.310377" level="INFO">${logs} = [Entrypoint] Starting server in mode network_udp...
[1;33m[Server] Initializing eCAL with mode: network_udp[0m
1776864668418 ms | d6b9004c912c | 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-22T13:31:22.307411" elapsed="0.002995"/>
</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-22T13:31:22.310498" elapsed="0.000286"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-22T13:31:22.311104" level="INFO">
[SERVER LOG: rpc_server_1]
[Entrypoint] Starting server in mode network_udp...
[1;33m[Server] Initializing eCAL with mode: network_udp[0m
1776864668418 ms | d6b9004c912c | 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-22T13:31:22.310894" elapsed="0.000260"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${name}</arg>
<status status="PASS" start="2026-04-22T13:31:22.311223" elapsed="10.083256"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-04-22T13:31:22.306670" elapsed="10.087893"/>
</iter>
<var>${i}</var>
<value>${NUM_SERVERS}</value>
<status status="PASS" start="2026-04-22T13:31:12.218891" elapsed="20.175720"/>
</for>
<for flavor="IN RANGE">
<iter>
<kw name="Stop Container" owner="DockerLibrary">
<arg>rpc_client_${j}</arg>
<status status="PASS" start="2026-04-22T13:31:32.395032" elapsed="0.004940"/>
</kw>
<var name="${j}">0</var>
<status status="PASS" start="2026-04-22T13:31:32.394931" elapsed="0.005081"/>
</iter>
<iter>
<kw name="Stop Container" owner="DockerLibrary">
<arg>rpc_client_${j}</arg>
<status status="PASS" start="2026-04-22T13:31:32.400167" elapsed="0.004499"/>
</kw>
<var name="${j}">1</var>
<status status="PASS" start="2026-04-22T13:31:32.400097" elapsed="0.004607"/>
</iter>
<var>${j}</var>
<value>${NUM_CLIENTS}</value>
<status status="PASS" start="2026-04-22T13:31:32.394691" elapsed="0.010040"/>
</for>
<kw name="Log Test Summary" owner="DockerLibrary">
<arg>RPC N-to-N Test</arg>
<arg>${True}</arg>
<status status="PASS" start="2026-04-22T13:31:32.404816" elapsed="0.000146"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-22T13:31:33.405449" 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-22T13:31:32.405052" elapsed="1.000515"/>
</kw>
<status status="PASS" start="2026-04-22T13:31:08.142753" elapsed="25.262904"/>
</kw>
<tag>rpc_n_to_n_test</tag>
<status status="PASS" start="2026-04-22T13:31:08.142164" elapsed="25.263615"/>
</test>
<status status="PASS" start="2026-04-22T13:30:57.852486" elapsed="35.554334"/>
</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-22T13:31:33.410066" elapsed="0.000134"/>
</kw>
<kw name="Get Build Script Path" owner="GlobalPathsLibrary">
<msg time="2026-04-22T13:31:33.410412" 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-22T13:31:33.410325" elapsed="0.000105"/>
</kw>
<kw name="Get Network Name" owner="GlobalPathsLibrary">
<msg time="2026-04-22T13:31:33.410549" level="INFO">${net} = ecal_test_net</msg>
<var>${net}</var>
<status status="PASS" start="2026-04-22T13:31:33.410486" elapsed="0.000076"/>
</kw>
<kw name="Get Build Script Args" owner="GlobalPathsLibrary">
<msg time="2026-04-22T13:31:33.410671" level="INFO">${args} = ['rpc_ping_test']</msg>
<var>${args}</var>
<status status="PASS" start="2026-04-22T13:31:33.410612" elapsed="0.000071"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-22T13:31:33.410977" 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-22T13:31:33.410747" elapsed="0.000255"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-22T13:31:33.411248" 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-22T13:31:33.411073" elapsed="0.000214"/>
</kw>
<kw name="Get Test Description" owner="GlobalPathsLibrary">
<msg time="2026-04-22T13:31:33.411497" 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-22T13:31:33.411352" elapsed="0.000162"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-22T13:31:33.411730" 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-22T13:31:33.411579" elapsed="0.000177"/>
</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-22T13:31:33.411871" elapsed="0.000156"/>
</kw>
<kw name="Run Process" owner="Process">
<msg time="2026-04-22T13:31:33.412393" 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-22T13:31:33.412831" level="INFO">Waiting for process to complete.</msg>
<msg time="2026-04-22T13:31:41.576493" level="INFO">Process completed.</msg>
<msg time="2026-04-22T13:31:41.576674" 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-22T13:31:33.412124" elapsed="8.164575"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-22T13:31:41.577561" 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-22T13:31:41.576865" elapsed="0.000753"/>
</kw>
<kw name="Create Docker Network" owner="DockerLibrary">
<arg>${NETWORK}</arg>
<status status="PASS" start="2026-04-22T13:31:41.577717" elapsed="0.007724"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-22T13:31:43.585965" 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-22T13:31:41.585573" elapsed="2.000512"/>
</kw>
<status status="PASS" start="2026-04-22T13:31:33.409904" elapsed="10.176271"/>
</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-22T13:31:43.587531" 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-22T13:31:43.587243" elapsed="0.000308"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-22T13:31:43.587781" 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-22T13:31:43.587625" elapsed="0.000172"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-22T13:31:43.587988" 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-22T13:31:43.587858" elapsed="0.000144"/>
</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-22T13:31:43.588062" elapsed="0.000143"/>
</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-22T13:31:43.588288" elapsed="0.134742"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-22T13:31:44.723674" 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-22T13:31:43.723207" elapsed="1.000597"/>
</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-22T13:31:44.723969" elapsed="0.135111"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-22T13:31:46.420699" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${CLIENT_NAME}</arg>
<status status="PASS" start="2026-04-22T13:31:44.859294" elapsed="1.561460"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-22T13:31:46.421389" 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-22T13:31:46.420932" elapsed="0.000520"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-22T13:31:46.424231" level="INFO">${server_logs} = [Entrypoint] Starting server in mode network_udp...
[1;33m[Server] Initializing eCAL with mode: network_udp[0m
1776864703724 ms | 535ea939cab7 | 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-22T13:31:46.421576" elapsed="0.002752"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-22T13:31:46.427142" level="INFO">${client_logs} = [Entrypoint] Starting client in mode network_udp...
[1;33m[Client] Initializing eCAL with mode: network_udp[0m
1776864704861 ms | cb41db0ba13c | 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-22T13:31:46.424449" elapsed="0.002721"/>
</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-22T13:31:46.427287" elapsed="0.000297"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-22T13:31:46.427872" level="INFO">
[CONTAINER LOG: SERVER]
[Entrypoint] Starting server in mode network_udp...
[1;33m[Server] Initializing eCAL with mode: network_udp[0m
1776864703724 ms | 535ea939cab7 | 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-22T13:31:46.427686" elapsed="0.000219"/>
</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-22T13:31:46.428001" elapsed="0.000197"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-22T13:31:46.428572" level="INFO">
[CONTAINER LOG: CLIENT]
[Entrypoint] Starting client in mode network_udp...
[1;33m[Client] Initializing eCAL with mode: network_udp[0m
1776864704861 ms | cb41db0ba13c | 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-22T13:31:46.428316" elapsed="0.000306"/>
</kw>
<kw name="Log Test Summary" owner="DockerLibrary">
<arg>RPC Ping Test (UDP)</arg>
<arg>${True}</arg>
<status status="PASS" start="2026-04-22T13:31:46.428717" elapsed="0.000208"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${CLIENT_NAME}</arg>
<status status="PASS" start="2026-04-22T13:31:46.429078" elapsed="0.004944"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${SERVER_NAME}</arg>
<status status="PASS" start="2026-04-22T13:31:46.434114" elapsed="10.081019"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-22T13:31:57.515717" 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-22T13:31:56.515323" elapsed="1.000507"/>
</kw>
<status status="PASS" start="2026-04-22T13:31:43.586745" elapsed="13.929230"/>
</kw>
<tag>rpc_server_client_ping_test</tag>
<status status="PASS" start="2026-04-22T13:31:43.586245" elapsed="13.929849"/>
</test>
<status status="PASS" start="2026-04-22T13:31:33.407404" elapsed="24.109592"/>
</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-22T13:31:57.520116" elapsed="0.000131"/>
</kw>
<kw name="Get Build Script Path" owner="GlobalPathsLibrary">
<msg time="2026-04-22T13:31:57.520439" 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-22T13:31:57.520353" elapsed="0.000103"/>
</kw>
<kw name="Get Build Script Args" owner="GlobalPathsLibrary">
<msg time="2026-04-22T13:31:57.520577" level="INFO">${args} = ['rpc_reconnect_test']</msg>
<var>${args}</var>
<status status="PASS" start="2026-04-22T13:31:57.520512" elapsed="0.000078"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-22T13:31:57.520890" 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-22T13:31:57.520656" elapsed="0.000259"/>
</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-22T13:31:57.520978" elapsed="0.066381"/>
</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-22T13:31:57.587559" elapsed="0.000311"/>
</kw>
<kw name="Run Process" owner="Process">
<msg time="2026-04-22T13:31:57.588322" 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-22T13:31:57.588683" level="INFO">Waiting for process to complete.</msg>
<msg time="2026-04-22T13:32:05.845187" level="INFO">Process completed.</msg>
<msg time="2026-04-22T13:32:05.845403" 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-22T13:31:57.587989" elapsed="8.257440"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-22T13:32:05.846224" 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-22T13:32:05.845593" elapsed="0.000709"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-22T13:32:08.846709" 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-22T13:32:05.846400" elapsed="3.000415"/>
</kw>
<status status="PASS" start="2026-04-22T13:31:57.519951" elapsed="11.326949"/>
</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-22T13:32:08.847704" elapsed="0.000246"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-22T13:32:08.848283" 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-22T13:32:08.848057" elapsed="0.000248"/>
</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-22T13:32:08.848374" elapsed="0.157009"/>
</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-22T13:32:09.005575" elapsed="0.135870"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-22T13:32:11.142088" 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-22T13:32:09.141659" elapsed="2.000551"/>
</kw>
<kw name="Disconnect Container From Network" owner="DockerLibrary">
<arg>rpc_client</arg>
<arg>${NETWORK}</arg>
<status status="PASS" start="2026-04-22T13:32:11.142401" elapsed="0.018073"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-22T13:32:17.161119" 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-22T13:32:11.160654" elapsed="6.000589"/>
</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-22T13:32:17.161436" elapsed="0.010610"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-22T13:32:19.172741" 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-22T13:32:17.172215" elapsed="2.000649"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-22T13:32:19.175805" level="INFO">${log_cli} = [Entrypoint] Starting client in mode network_udp...
[Client] Initializing eCAL with mode: network_udp
1776864729119 ms | dd010b1de5ae | 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-22T13:32:19.173036" elapsed="0.002796"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-22T13:32:19.178068" level="INFO">${log_srv} = [Entrypoint] Starting server in mode network_udp...
[1;33m[Server] Initializing eCAL with mode: network_udp[0m
1776864728975 ms | b66487399021 | 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-22T13:32:19.175919" elapsed="0.002176"/>
</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-22T13:32:19.178182" elapsed="0.000326"/>
</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-22T13:32:19.178603" elapsed="0.000228"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-22T13:32:19.179146" level="INFO">
[CONTAINER LOG: CLIENT]
[Entrypoint] Starting client in mode network_udp...
[Client] Initializing eCAL with mode: network_udp
1776864729119 ms | dd010b1de5ae | 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-22T13:32:19.178934" elapsed="0.000312"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-22T13:32:19.179509" level="INFO">
[CONTAINER LOG: SERVER]
[Entrypoint] Starting server in mode network_udp...
[1;33m[Server] Initializing eCAL with mode: network_udp[0m
1776864728975 ms | b66487399021 | 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-22T13:32:19.179352" elapsed="0.000188"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-22T13:32:19.180645" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>rpc_client</arg>
<status status="PASS" start="2026-04-22T13:32:19.179604" elapsed="0.001065"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-22T13:32:19.180964" 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-22T13:32:19.180751" elapsed="0.000253"/>
</kw>
<kw name="Log Test Summary" owner="DockerLibrary">
<arg>RPC Reconnect Test</arg>
<arg>${True}</arg>
<status status="PASS" start="2026-04-22T13:32:19.181076" elapsed="0.000102"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>rpc_client</arg>
<status status="PASS" start="2026-04-22T13:32:19.181286" elapsed="0.004941"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>rpc_server</arg>
<status status="PASS" start="2026-04-22T13:32:19.186342" elapsed="10.139079"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-22T13:32:30.326156" 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-22T13:32:29.325628" elapsed="1.000673"/>
</kw>
<status status="PASS" start="2026-04-22T13:32:08.847491" elapsed="21.478900"/>
</kw>
<tag>rpc_reconnect</tag>
<status status="PASS" start="2026-04-22T13:32:08.846972" elapsed="21.479542"/>
</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-22T13:32:30.328213" elapsed="0.000292"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-22T13:32:30.328874" 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-22T13:32:30.328617" elapsed="0.000280"/>
</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-22T13:32:30.328969" elapsed="0.161466"/>
</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-22T13:32:30.490913" elapsed="0.129814"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-22T13:32:32.621467" 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-22T13:32:30.620983" elapsed="2.000607"/>
</kw>
<kw name="Disconnect Container From Network" owner="DockerLibrary">
<arg>rpc_server</arg>
<arg>${NETWORK}</arg>
<status status="PASS" start="2026-04-22T13:32:32.621756" elapsed="0.021693"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-22T13:32:38.644180" 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-22T13:32:32.643674" elapsed="6.000649"/>
</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-22T13:32:38.644492" elapsed="0.010873"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-22T13:32:40.656004" 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-22T13:32:38.655539" elapsed="2.000586"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-22T13:32:40.658996" level="INFO">${log_cli} = [Entrypoint] Starting client in mode network_udp...
[Client] Initializing eCAL with mode: network_udp
1776864750596 ms | a79614658f0a | 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-22T13:32:40.656320" elapsed="0.002702"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-22T13:32:40.661087" level="INFO">${log_srv} = [Entrypoint] Starting server in mode network_udp...
[1;33m[Server] Initializing eCAL with mode: network_udp[0m
1776864750463 ms | 047d6a30dfed | 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-22T13:32:40.659114" elapsed="0.002000"/>
</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-22T13:32:40.661204" 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-22T13:32:40.661624" elapsed="0.000230"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-22T13:32:40.662176" level="INFO">
[CONTAINER LOG: CLIENT]
[Entrypoint] Starting client in mode network_udp...
[Client] Initializing eCAL with mode: network_udp
1776864750596 ms | a79614658f0a | 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-22T13:32:40.661954" elapsed="0.000268"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-22T13:32:40.662557" level="INFO">
[CONTAINER LOG: SERVER]
[Entrypoint] Starting server in mode network_udp...
[1;33m[Server] Initializing eCAL with mode: network_udp[0m
1776864750463 ms | 047d6a30dfed | 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-22T13:32:40.662338" elapsed="0.000326"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-22T13:32:40.663807" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>rpc_client</arg>
<status status="PASS" start="2026-04-22T13:32:40.662735" elapsed="0.001096"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-22T13:32:40.664144" 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-22T13:32:40.663915" elapsed="0.000273"/>
</kw>
<kw name="Log Test Summary" owner="DockerLibrary">
<arg>RPC Reconnect Test</arg>
<arg>${True}</arg>
<status status="PASS" start="2026-04-22T13:32:40.664289" elapsed="0.000112"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>rpc_client</arg>
<status status="PASS" start="2026-04-22T13:32:40.664494" elapsed="0.004745"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>rpc_server</arg>
<status status="PASS" start="2026-04-22T13:32:40.669358" elapsed="10.119813"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-22T13:32:51.789864" 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-22T13:32:50.789372" elapsed="1.000636"/>
</kw>
<status status="PASS" start="2026-04-22T13:32:30.327995" elapsed="21.462102"/>
</kw>
<tag>rpc_reconnect</tag>
<status status="PASS" start="2026-04-22T13:32:30.327503" elapsed="21.462712"/>
</test>
<status status="PASS" start="2026-04-22T13:31:57.517576" elapsed="54.273817"/>
</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-22T13:32:51.794537" elapsed="0.000134"/>
</kw>
<kw name="Get Build Script Path" owner="GlobalPathsLibrary">
<msg time="2026-04-22T13:32:51.794827" 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-22T13:32:51.794747" elapsed="0.000098"/>
</kw>
<kw name="Get Network Name" owner="GlobalPathsLibrary">
<msg time="2026-04-22T13:32:51.794962" level="INFO">${net} = ecal_test_net</msg>
<var>${net}</var>
<status status="PASS" start="2026-04-22T13:32:51.794899" elapsed="0.000077"/>
</kw>
<kw name="Get Build Script Args" owner="GlobalPathsLibrary">
<msg time="2026-04-22T13:32:51.795087" level="INFO">${args} = ['sub_crash']</msg>
<var>${args}</var>
<status status="PASS" start="2026-04-22T13:32:51.795026" elapsed="0.000074"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-22T13:32:51.795435" 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-22T13:32:51.795165" elapsed="0.000298"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-22T13:32:51.795719" 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-22T13:32:51.795536" elapsed="0.000206"/>
</kw>
<kw name="Get Test Description" owner="GlobalPathsLibrary">
<msg time="2026-04-22T13:32:51.795952" 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-22T13:32:51.795802" elapsed="0.000166"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-22T13:32:51.796178" 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-22T13:32:51.796031" elapsed="0.000173"/>
</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-22T13:32:51.796293" elapsed="0.000152"/>
</kw>
<kw name="Run Process" owner="Process">
<msg time="2026-04-22T13:32:51.796729" 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-22T13:32:51.797208" level="INFO">Waiting for process to complete.</msg>
<msg time="2026-04-22T13:33:01.303726" level="INFO">Process completed.</msg>
<msg time="2026-04-22T13:33:01.303908" 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-22T13:32:51.796524" elapsed="9.507409"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-22T13:33:01.304770" 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-22T13:33:01.304099" elapsed="0.000722"/>
</kw>
<kw name="Create Docker Network" owner="DockerLibrary">
<arg>${NETWORK}</arg>
<status status="PASS" start="2026-04-22T13:33:01.304908" elapsed="0.007954"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-22T13:33:04.313447" 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-22T13:33:01.313025" elapsed="3.000540"/>
</kw>
<status status="PASS" start="2026-04-22T13:32:51.794387" elapsed="12.519266"/>
</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-22T13:33:04.315135" 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-22T13:33:04.314855" elapsed="0.000300"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-22T13:33:04.315450" 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-22T13:33:04.315286" elapsed="0.000180"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-22T13:33:04.315690" 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-22T13:33:04.315532" elapsed="0.000174"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-22T13:33:04.315926" 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-22T13:33:04.315767" elapsed="0.000173"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-22T13:33:04.316151" 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-22T13:33:04.316002" elapsed="0.000162"/>
</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-22T13:33:04.316223" elapsed="0.000210"/>
</kw>
<kw name="Create Docker Network" owner="DockerLibrary">
<arg>${NETWORK}</arg>
<status status="PASS" start="2026-04-22T13:33:04.316519" elapsed="0.008089"/>
</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-22T13:33:04.324755" elapsed="0.125643"/>
</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-22T13:33:04.450577" elapsed="0.124123"/>
</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-22T13:33:04.574880" elapsed="0.125846"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${CRASH_SUB}</arg>
<status status="PASS" start="2026-04-22T13:33:04.700949" elapsed="7.028052"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${TEST_SUB}</arg>
<status status="PASS" start="2026-04-22T13:33:11.729239" elapsed="26.901448"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${TEST_PUB}</arg>
<status status="PASS" start="2026-04-22T13:33:38.630930" elapsed="0.001953"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-22T13:33:38.637420" level="INFO">${test_sub_logs} = [Entrypoint] Starting crash publisher in mode network_udp
1776864784577 ms | f070faf096bd | ./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-22T13:33:38.633018" elapsed="0.004430"/>
</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-22T13:33:38.637541" elapsed="0.000309"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-22T13:33:38.638180" level="INFO">
[SUBSCRIBER CONTAINER OUTPUT]
[Entrypoint] Starting crash publisher in mode network_udp
1776864784577 ms | f070faf096bd | ./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-22T13:33:38.637955" elapsed="0.000267"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-22T13:33:38.641085" level="INFO">${crash_sub_logs} = [Entrypoint] Starting crash subscriber in mode network_udp
1776864784453 ms | c85bb58d640b | ./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-22T13:33:38.638518" elapsed="0.002592"/>
</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-22T13:33:38.641197" elapsed="0.000285"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-22T13:33:38.641783" level="INFO">
[CRASH SUBSCRIBER CONTAINER OUTPUT]
[Entrypoint] Starting crash subscriber in mode network_udp
1776864784453 ms | c85bb58d640b | ./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] Received 5 messages before crash.

[Crash Subscriber] Simulating crash now.

./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-22T13:33:38.641590" elapsed="0.000243"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-22T13:33:38.643007" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${TEST_SUB}</arg>
<status status="PASS" start="2026-04-22T13:33:38.641925" elapsed="0.001113"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-22T13:33:38.643497" 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-22T13:33:38.643160" elapsed="0.000390"/>
</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-22T13:33:38.643632" elapsed="0.000141"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${CRASH_SUB}</arg>
<status status="PASS" start="2026-04-22T13:33:38.643903" elapsed="0.005020"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${TEST_SUB}</arg>
<status status="PASS" start="2026-04-22T13:33:38.649017" elapsed="0.004879"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${TEST_PUB}</arg>
<status status="PASS" start="2026-04-22T13:33:38.653988" elapsed="0.004955"/>
</kw>
<arg>network_udp</arg>
<arg>network</arg>
<status status="PASS" start="2026-04-22T13:33:04.314283" elapsed="34.344726"/>
</kw>
<tag>sub_crash_network_udp</tag>
<status status="PASS" start="2026-04-22T13:33:04.313723" elapsed="34.345382"/>
</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-22T13:33:38.660791" 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-22T13:33:38.660547" elapsed="0.000264"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-22T13:33:38.661041" 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-22T13:33:38.660887" elapsed="0.000170"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-22T13:33:38.661322" 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-22T13:33:38.661134" elapsed="0.000206"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-22T13:33:38.661562" 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-22T13:33:38.661403" elapsed="0.000174"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-22T13:33:38.661784" 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-22T13:33:38.661636" elapsed="0.000162"/>
</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-22T13:33:38.661854" elapsed="0.000155"/>
</kw>
<kw name="Create Docker Network" owner="DockerLibrary">
<arg>${NETWORK}</arg>
<status status="PASS" start="2026-04-22T13:33:38.662088" elapsed="0.007109"/>
</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-22T13:33:38.669338" elapsed="0.126019"/>
</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-22T13:33:38.795537" elapsed="0.121196"/>
</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-22T13:33:38.916920" elapsed="0.127129"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${CRASH_SUB}</arg>
<status status="PASS" start="2026-04-22T13:33:39.044232" elapsed="7.125795"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${TEST_SUB}</arg>
<status status="PASS" start="2026-04-22T13:33:46.170251" elapsed="26.808336"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${TEST_PUB}</arg>
<status status="PASS" start="2026-04-22T13:34:12.978809" elapsed="0.001705"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-22T13:34:12.983587" level="INFO">${test_sub_logs} = [Entrypoint] Starting crash publisher in mode network_tcp
1776864818919 ms | 597cdbdcacd5 | ./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-22T13:34:12.980650" elapsed="0.002968"/>
</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-22T13:34:12.983711" elapsed="0.000342"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-22T13:34:12.984431" level="INFO">
[SUBSCRIBER CONTAINER OUTPUT]
[Entrypoint] Starting crash publisher in mode network_tcp
1776864818919 ms | 597cdbdcacd5 | ./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
1776864851455 ms | 597cdbdcacd5 | ./test_subscriber | 7 | error | CTCPReaderLayer - TCPPubSub (Error) -SubscriberSession 172.18.0.3:44430-&gt;a236c8cada11:42995: Error reading header length: End of file
1776864851456 ms | 597cdbdcacd5 | ./test_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.3:57466: Failed connecting to publisher a236c8cada11:42995: Connection refused
1776864851456 ms | 597cdbdcacd5 | ./test_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.3:57470: Failed connecting to publisher a236c8cada11:42995: Connection refused
1776864851457 ms | 597cdbdcacd5 | ./test_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.3:57480: Failed connecting to publisher a236c8cada11:42995: Connection refused
1776864851458 ms | 597cdbdcacd5 | ./test_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.3:57486: Failed connecting to publisher a236c8cada11:42995: Connection refused
1776864851458 ms | 597cdbdcacd5 | ./test_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.3:57488: Failed connecting to publisher a236c8cada11:42995: 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-22T13:34:12.984160" elapsed="0.000323"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-22T13:34:12.987247" level="INFO">${crash_sub_logs} = [Entrypoint] Starting crash subscriber in mode network_tcp
1776864818797 ms | 798da1108177 | ./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-22T13:34:12.984558" elapsed="0.002822"/>
</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-22T13:34:12.987473" elapsed="0.000241"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-22T13:34:12.987985" level="INFO">
[CRASH SUBSCRIBER CONTAINER OUTPUT]
[Entrypoint] Starting crash subscriber in mode network_tcp
1776864818797 ms | 798da1108177 | ./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] Received 5 messages before crash.
[Crash Subscriber] Simulating crash now.

./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-22T13:34:12.987802" elapsed="0.000217"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-22T13:34:12.989062" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${TEST_SUB}</arg>
<status status="PASS" start="2026-04-22T13:34:12.988087" elapsed="0.000999"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-22T13:34:12.989425" 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-22T13:34:12.989171" elapsed="0.000299"/>
</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-22T13:34:12.989548" elapsed="0.000128"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${CRASH_SUB}</arg>
<status status="PASS" start="2026-04-22T13:34:12.989744" elapsed="0.005021"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${TEST_SUB}</arg>
<status status="PASS" start="2026-04-22T13:34:12.994859" elapsed="0.004723"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${TEST_PUB}</arg>
<status status="PASS" start="2026-04-22T13:34:12.999674" elapsed="0.004938"/>
</kw>
<arg>network_tcp</arg>
<arg>network</arg>
<status status="PASS" start="2026-04-22T13:33:38.660220" elapsed="34.344458"/>
</kw>
<tag>pub_crash_network_tcp</tag>
<status status="PASS" start="2026-04-22T13:33:38.659804" elapsed="34.344970"/>
</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-22T13:34:13.006368" 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-22T13:34:13.006099" elapsed="0.000289"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-22T13:34:13.006635" 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-22T13:34:13.006462" elapsed="0.000188"/>
</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-22T13:34:13.006712" elapsed="0.000163"/>
</kw>
<kw name="Create Docker Network" owner="DockerLibrary">
<arg>${NETWORK}</arg>
<status status="PASS" start="2026-04-22T13:34:13.006958" elapsed="0.007332"/>
</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-22T13:34:13.014409" elapsed="0.108827"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-22T13:34:47.183961" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-22T13:34:13.123536" elapsed="34.060478"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-22T13:34:47.184646" 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-22T13:34:47.184215" elapsed="0.000498"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-22T13:34:47.190841" 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)
1776864853125 ms | 2e181077d441 | ./test_subscriber | 9 |...</msg>
<var>${logs}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-22T13:34:47.184825" elapsed="0.006044"/>
</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-22T13:34:47.190963" elapsed="0.000263"/>
</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-22T13:34:47.191343" elapsed="0.000158"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-22T13:34:47.191592" elapsed="0.005139"/>
</kw>
<arg>local_shm</arg>
<status status="PASS" start="2026-04-22T13:34:13.005913" elapsed="34.190882"/>
</kw>
<tag>sub_crash_local_shm</tag>
<status status="PASS" start="2026-04-22T13:34:13.005551" elapsed="34.191339"/>
</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-22T13:34:47.198058" 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-22T13:34:47.197828" elapsed="0.000249"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-22T13:34:47.198485" 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-22T13:34:47.198151" elapsed="0.000354"/>
</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-22T13:34:47.198593" elapsed="0.000194"/>
</kw>
<kw name="Create Docker Network" owner="DockerLibrary">
<arg>${NETWORK}</arg>
<status status="PASS" start="2026-04-22T13:34:47.198869" elapsed="0.007278"/>
</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-22T13:34:47.206244" elapsed="0.106849"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-22T13:35:21.375424" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-22T13:34:47.313335" elapsed="34.062148"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-22T13:35:21.376184" 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-22T13:35:21.375740" elapsed="0.000535"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-22T13:35:21.380383" level="INFO">${logs} = [Entrypoint] Starting local test (pub/sub/monitor) in mode local_udp
1776864887316 ms | 80057e172234 | 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-22T13:35:21.376396" elapsed="0.004013"/>
</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-22T13:35:21.380503" 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-22T13:35:21.380861" elapsed="0.000157"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-22T13:35:21.381110" elapsed="0.005236"/>
</kw>
<arg>local_udp</arg>
<status status="PASS" start="2026-04-22T13:34:47.197643" elapsed="34.188769"/>
</kw>
<tag>sub_crash_local_udp</tag>
<status status="PASS" start="2026-04-22T13:34:47.197248" elapsed="34.189257"/>
</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-22T13:35:21.387739" 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-22T13:35:21.387507" elapsed="0.000251"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-22T13:35:21.387993" 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-22T13:35:21.387829" elapsed="0.000179"/>
</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-22T13:35:21.388069" elapsed="0.000175"/>
</kw>
<kw name="Create Docker Network" owner="DockerLibrary">
<arg>${NETWORK}</arg>
<status status="PASS" start="2026-04-22T13:35:21.388463" elapsed="0.007099"/>
</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-22T13:35:21.395668" elapsed="0.106069"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-22T13:35:55.563117" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-22T13:35:21.501972" elapsed="34.061201"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-22T13:35:55.563835" 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-22T13:35:55.563397" elapsed="0.000505"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-22T13:35:55.568758" level="INFO">${logs} = [Entrypoint] Starting local test (pub/sub/monitor) in mode local_tcp
1776864921502 ms | a7f0ab0019d9 | 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-22T13:35:55.564020" elapsed="0.004764"/>
</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-22T13:35:55.568877" elapsed="0.000471"/>
</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-22T13:35:55.569456" elapsed="0.000141"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-22T13:35:55.569667" elapsed="0.005388"/>
</kw>
<arg>local_tcp</arg>
<status status="PASS" start="2026-04-22T13:35:21.387316" elapsed="34.187806"/>
</kw>
<tag>sub_crash_local_tcp</tag>
<status status="PASS" start="2026-04-22T13:35:21.386918" elapsed="34.188299"/>
</test>
<status status="PASS" start="2026-04-22T13:32:51.791942" elapsed="183.783935"/>
</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-22T13:35:55.579479" elapsed="0.000127"/>
</kw>
<kw name="Get Build Script Path" owner="GlobalPathsLibrary">
<msg time="2026-04-22T13:35:55.579759" 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-22T13:35:55.579679" elapsed="0.000098"/>
</kw>
<kw name="Get Network Name" owner="GlobalPathsLibrary">
<msg time="2026-04-22T13:35:55.579897" level="INFO">${net} = ecal_test_net</msg>
<var>${net}</var>
<status status="PASS" start="2026-04-22T13:35:55.579833" elapsed="0.000077"/>
</kw>
<kw name="Get Build Script Args" owner="GlobalPathsLibrary">
<msg time="2026-04-22T13:35:55.580022" level="INFO">${args} = ['sub_send_crash']</msg>
<var>${args}</var>
<status status="PASS" start="2026-04-22T13:35:55.579961" elapsed="0.000073"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-22T13:35:55.580350" 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-22T13:35:55.580099" elapsed="0.000282"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-22T13:35:55.580644" 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-22T13:35:55.580461" elapsed="0.000207"/>
</kw>
<kw name="Get Test Description" owner="GlobalPathsLibrary">
<msg time="2026-04-22T13:35:55.580870" 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-22T13:35:55.580729" elapsed="0.000157"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-22T13:35:55.581144" 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-22T13:35:55.580949" elapsed="0.000226"/>
</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-22T13:35:55.581237" elapsed="0.000202"/>
</kw>
<kw name="Run Process" owner="Process">
<msg time="2026-04-22T13:35:55.581734" 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-22T13:35:55.582098" level="INFO">Waiting for process to complete.</msg>
<msg time="2026-04-22T13:36:04.946674" level="INFO">Process completed.</msg>
<msg time="2026-04-22T13:36:04.946857" 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-22T13:35:55.581523" elapsed="9.365358"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-22T13:36:04.947682" 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-22T13:36:04.947047" elapsed="0.000687"/>
</kw>
<kw name="Create Docker Network" owner="DockerLibrary">
<arg>${NETWORK}</arg>
<status status="PASS" start="2026-04-22T13:36:04.947818" elapsed="0.008667"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-22T13:36:07.956956" 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-22T13:36:04.956609" elapsed="3.000454"/>
</kw>
<status status="PASS" start="2026-04-22T13:35:55.579341" elapsed="12.377811"/>
</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-22T13:36:07.958359" 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-22T13:36:07.958048" elapsed="0.000334"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-22T13:36:07.958635" 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-22T13:36:07.958460" elapsed="0.000191"/>
</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-22T13:36:07.958716" elapsed="0.000178"/>
</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-22T13:36:07.958969" elapsed="0.134855"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-22T13:36:43.094613" 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-22T13:36:08.094046" elapsed="35.000688"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-22T13:36:43.097865" 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)
1776864968096 ms | 5341164f8def | large_publishe...</msg>
<var>${logs}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-22T13:36:43.094906" elapsed="0.002988"/>
</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-22T13:36:43.097996" elapsed="0.000312"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-22T13:36:43.098618" 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)
1776864968096 ms | 5341164f8def | 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.
[Crash_Sub] Simulating crash after 2 seconds during active reception
Shared memory monitoring is enabled (domain: ecal_mon - queue size: 1024)
1776864969097 ms | 5341164f8def | crash_send_sub | 14 | info | Using built-in local time plugin.
[Crash_Sub] Listening to topic 'test_topic' in mode 'local_shm'
[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)
1776864969097 ms | 5341164f8def | 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-22T13:36:43.098407" elapsed="0.000251"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-22T13:36:43.099823" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-22T13:36:43.098728" elapsed="0.001118"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-22T13:36:43.100140" 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-22T13:36:43.099927" elapsed="0.000255"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-22T13:36:43.102290" 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)
1776864968096 ms | 5341164f8def | large_publishe...</msg>
<var>${logs}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-22T13:36:43.100254" elapsed="0.002110"/>
</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-22T13:36:43.102449" elapsed="0.000153"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-22T13:36:43.102686" elapsed="0.004948"/>
</kw>
<arg>local_shm</arg>
<status status="PASS" start="2026-04-22T13:36:07.957802" elapsed="35.149895"/>
</kw>
<tag>crash_receive_local_shm</tag>
<status status="PASS" start="2026-04-22T13:36:07.957222" elapsed="35.150563"/>
</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-22T13:36:43.109089" 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-22T13:36:43.108853" elapsed="0.000257"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-22T13:36:43.109388" 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-22T13:36:43.109183" elapsed="0.000223"/>
</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-22T13:36:43.109473" elapsed="0.000171"/>
</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-22T13:36:43.109727" elapsed="0.132598"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-22T13:37:18.243105" 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-22T13:36:43.242560" elapsed="35.000668"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-22T13:37:18.246455" level="INFO">${logs} = [Entrypoint] Starting all processes locally in one container (mode local_tcp)
1776865003246 ms | dd7753987682 | 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-22T13:37:18.243434" elapsed="0.003056"/>
</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-22T13:37:18.246608" elapsed="0.000313"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-22T13:37:18.247246" level="INFO">
[LOCAL TEST CONTAINER OUTPUT]
[Entrypoint] Starting all processes locally in one container (mode local_tcp)
1776865003246 ms | dd7753987682 | 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
1776865005247 ms | dd7753987682 | large_publisher | 7 | info | CTCPReaderLayer - TCPPubSub (Info) -Publisher :::0: Created publisher and waiting for clients.
1776865005248 ms | dd7753987682 | large_publisher | 7 | info | CTCPReaderLayer - TCPPubSub (Info) -Publisher :::34395: Subscriber ::ffff:172.18.0.2:50346 has connected.
1776865005248 ms | dd7753987682 | large_publisher | 7 | info | CTCPReaderLayer - TCPPubSub (Info) -Publisher :::34395: Subscriber ::ffff:172.18.0.2:50344 has connected.
[Publisher] Found 2 subscriber(s). Proceeding to send messages.
1776865004247 ms | dd7753987682 | crash_send_sub | 14 | info | Using built-in local time plugin.
[Crash_Sub] Listening to topic 'test_topic' in mode 'local_tcp'
[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
1776865007772 ms | dd7753987682 | large_publisher | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -PublisherSession ::ffff:172.18.0.2:34395-&gt;?: Failed sending data: Broken pipe
[Publisher] Send result: ✓, size: 52428800 bytes
[Publisher] Finished sending.
1776865009782 ms | dd7753987682 | large_publisher | 7 | error | CTCPReaderLayer - TCPPubSub (Error) -Publisher ?: Error while waiting for subsriber: Operation aborted.
1776865004247 ms | dd7753987682 | 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)
1776865009782 ms | dd7753987682 | test_sub | 13 | error | CTCPReaderLayer - TCPPubSub (Error) -SubscriberSession 172.18.0.2:50344-&gt;dd7753987682:34395: Error reading header length: End of file
1776865009782 ms | dd7753987682 | test_sub | 13 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:40868: Failed connecting to publisher dd7753987682:34395: Connection refused
1776865009782 ms | dd7753987682 | test_sub | 13 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:40884: Failed connecting to publisher dd7753987682:34395: Connection refused
1776865009782 ms | dd7753987682 | test_sub | 13 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:40898: Failed connecting to publisher dd7753987682:34395: Connection refused
1776865009783 ms | dd7753987682 | test_sub | 13 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:40902: Failed connecting to publisher dd7753987682:34395: Connection refused
1776865009783 ms | dd7753987682 | test_sub | 13 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:40914: Failed connecting to publisher dd7753987682:34395: 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-22T13:37:18.247020" elapsed="0.000307"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-22T13:37:18.248561" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-22T13:37:18.247403" elapsed="0.001182"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-22T13:37:18.248885" 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-22T13:37:18.248668" elapsed="0.000259"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-22T13:37:18.251214" level="INFO">${logs} = [Entrypoint] Starting all processes locally in one container (mode local_tcp)
1776865003246 ms | dd7753987682 | 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-22T13:37:18.249001" elapsed="0.002242"/>
</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-22T13:37:18.251358" elapsed="0.000154"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-22T13:37:18.251612" elapsed="0.005047"/>
</kw>
<arg>local_tcp</arg>
<status status="PASS" start="2026-04-22T13:36:43.108668" elapsed="35.148062"/>
</kw>
<tag>crash_receive_local_tcp</tag>
<status status="PASS" start="2026-04-22T13:36:43.108309" elapsed="35.148515"/>
</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-22T13:37:18.258176" 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-22T13:37:18.257937" elapsed="0.000260"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-22T13:37:18.258457" 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-22T13:37:18.258296" elapsed="0.000178"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-22T13:37:18.258699" 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-22T13:37:18.258538" elapsed="0.000178"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-22T13:37:18.258932" 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-22T13:37:18.258778" elapsed="0.000169"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-22T13:37:18.259153" 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-22T13:37:18.259006" elapsed="0.000160"/>
</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-22T13:37:18.259224" elapsed="0.000204"/>
</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-22T13:37:18.259516" elapsed="0.136208"/>
</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-22T13:37:18.395936" elapsed="0.121654"/>
</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-22T13:37:18.517770" elapsed="0.121188"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${SUB_OK}</arg>
<status status="PASS" start="2026-04-22T13:37:18.639151" elapsed="30.827488"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${SUB_CRASH}</arg>
<status status="PASS" start="2026-04-22T13:37:49.466878" elapsed="0.003700"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${PUBLISHER}</arg>
<status status="PASS" start="2026-04-22T13:37:49.470777" elapsed="0.001651"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-22T13:37:49.475500" level="INFO">${log1} = [Entrypoint] Starting stable subscriber in mode network_udp
1776865038398 ms | f5ff81d67328 | 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-22T13:37:49.472565" elapsed="0.002969"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-22T13:37:49.477805" level="INFO">${log2} = [Entrypoint] Starting crashing subscriber in mode network_udp
1776865038520 ms | fbad588f893e | 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-22T13:37:49.475647" elapsed="0.002186"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-22T13:37:49.480349" level="INFO">${log3} = [Entrypoint] Starting large publisher in mode network_udp
1776865038641 ms | ef27132816a2 | 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-22T13:37:49.477925" elapsed="0.002453"/>
</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-22T13:37:49.480476" elapsed="0.000311"/>
</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-22T13:37:49.480888" elapsed="0.000211"/>
</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-22T13:37:49.481182" elapsed="0.000237"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-22T13:37:49.481742" level="INFO">
[LOG: SUBSCRIBER]
[Entrypoint] Starting stable subscriber in mode network_udp
1776865038398 ms | f5ff81d67328 | 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-22T13:37:49.481525" elapsed="0.000266"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-22T13:37:49.482086" level="INFO">
[LOG: CRASH_SUBSCRIBER]
[Entrypoint] Starting crashing subscriber in mode network_udp
1776865038520 ms | fbad588f893e | 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-22T13:37:49.481882" elapsed="0.000233"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-22T13:37:49.482368" level="INFO">
[LOG: PUBLISHER]
[Entrypoint] Starting large publisher in mode network_udp
1776865038641 ms | ef27132816a2 | 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-22T13:37:49.482181" elapsed="0.000220"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-22T13:37:49.483406" level="INFO">${exit1} = 0</msg>
<var>${exit1}</var>
<arg>${SUB_OK}</arg>
<status status="PASS" start="2026-04-22T13:37:49.482467" elapsed="0.001004"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-22T13:37:49.483762" 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-22T13:37:49.483552" elapsed="0.000251"/>
</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-22T13:37:49.483873" elapsed="0.000129"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${SUB_OK}</arg>
<status status="PASS" start="2026-04-22T13:37:49.484081" elapsed="0.005256"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${SUB_CRASH}</arg>
<status status="PASS" start="2026-04-22T13:37:49.489432" elapsed="0.004775"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${PUBLISHER}</arg>
<status status="PASS" start="2026-04-22T13:37:49.494324" elapsed="0.004722"/>
</kw>
<arg>network_udp</arg>
<arg>network</arg>
<status status="PASS" start="2026-04-22T13:37:18.257734" elapsed="31.241382"/>
</kw>
<tag>crash_receive_network_udp</tag>
<status status="PASS" start="2026-04-22T13:37:18.257321" elapsed="31.241898"/>
</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-22T13:37:49.501090" 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-22T13:37:49.500826" elapsed="0.000284"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-22T13:37:49.501374" 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-22T13:37:49.501183" elapsed="0.000209"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-22T13:37:49.501620" 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-22T13:37:49.501458" elapsed="0.000179"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-22T13:37:49.501849" 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-22T13:37:49.501697" elapsed="0.000166"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-22T13:37:49.502074" 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-22T13:37:49.501922" elapsed="0.000167"/>
</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-22T13:37:49.502146" elapsed="0.000204"/>
</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-22T13:37:49.502435" elapsed="0.133585"/>
</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-22T13:37:49.636367" elapsed="0.127803"/>
</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-22T13:37:49.764400" elapsed="0.125655"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${SUB_OK}</arg>
<status status="PASS" start="2026-04-22T13:37:49.890386" elapsed="30.813759"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${SUB_CRASH}</arg>
<status status="PASS" start="2026-04-22T13:38:20.704420" elapsed="0.001958"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${PUBLISHER}</arg>
<status status="PASS" start="2026-04-22T13:38:20.706568" elapsed="0.001809"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-22T13:38:20.711478" level="INFO">${log1} = [Entrypoint] Starting stable subscriber in mode network_tcp
1776865069639 ms | e88f4911d03b | 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-22T13:38:20.708567" elapsed="0.002945"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-22T13:38:20.713961" level="INFO">${log2} = [Entrypoint] Starting crashing subscriber in mode network_tcp
1776865069766 ms | 138d9abdd210 | 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-22T13:38:20.711650" elapsed="0.002342"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-22T13:38:20.716570" level="INFO">${log3} = [Entrypoint] Starting large publisher in mode network_tcp
1776865069892 ms | 61ccda68d887 | 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-22T13:38:20.714116" elapsed="0.002484"/>
</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-22T13:38:20.716718" elapsed="0.000312"/>
</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-22T13:38:20.717131" elapsed="0.000265"/>
</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-22T13:38:20.717486" elapsed="0.000179"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-22T13:38:20.717896" level="INFO">
[LOG: SUBSCRIBER]
[Entrypoint] Starting stable subscriber in mode network_tcp
1776865069639 ms | e88f4911d03b | 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)
1776865075326 ms | e88f4911d03b | test_sub | 7 | error | CTCPReaderLayer - TCPPubSub (Error) -SubscriberSession 172.18.0.2:50544-&gt;61ccda68d887:37771: Error reading header length: End of file
1776865075327 ms | e88f4911d03b | test_sub | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:50546: Failed connecting to publisher 61ccda68d887:37771: Connection refused
1776865075327 ms | e88f4911d03b | test_sub | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:50554: Failed connecting to publisher 61ccda68d887:37771: Connection refused
1776865075328 ms | e88f4911d03b | test_sub | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:50556: Failed connecting to publisher 61ccda68d887:37771: Connection refused
1776865075328 ms | e88f4911d03b | test_sub | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:50560: Failed connecting to publisher 61ccda68d887:37771: Connection refused
1776865075329 ms | e88f4911d03b | test_sub | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:50566: Failed connecting to publisher 61ccda68d887:37771: 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-22T13:38:20.717737" elapsed="0.000245"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-22T13:38:20.718196" level="INFO">
[LOG: CRASH_SUBSCRIBER]
[Entrypoint] Starting crashing subscriber in mode network_tcp
1776865069766 ms | 138d9abdd210 | 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-22T13:38:20.718050" elapsed="0.000173"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-22T13:38:20.718549" level="INFO">
[LOG: PUBLISHER]
[Entrypoint] Starting large publisher in mode network_tcp
1776865069892 ms | 61ccda68d887 | 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
1776865070640 ms | 61ccda68d887 | large_publisher | 7 | info | CTCPReaderLayer - TCPPubSub (Info) -Publisher :::0: Created publisher and waiting for clients.
1776865070641 ms | 61ccda68d887 | large_publisher | 7 | info | CTCPReaderLayer - TCPPubSub (Info) -Publisher :::37771: Subscriber ::ffff:172.18.0.3:36566 has connected.
1776865070641 ms | 61ccda68d887 | large_publisher | 7 | info | CTCPReaderLayer - TCPPubSub (Info) -Publisher :::37771: Subscriber ::ffff:172.18.0.2:50544 has connected.
[Publisher] Found 2 subscriber(s). Proceeding to send messages.
[Publisher] Subscriber detected. Starting to send.
[Publisher] Send result: ✓, size: 52428800 bytes
1776865073318 ms | 61ccda68d887 | large_publisher | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -PublisherSession ::ffff:172.18.0.4:37771-&gt;?: Failed sending data: Broken pipe
[Publisher] Send result: ✓, size: 52428800 bytes
[Publisher] Send result: ✓, size: 52428800 bytes
[Publisher] Finished sending.
1776865075326 ms | 61ccda68d887 | 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-22T13:38:20.718358" elapsed="0.000231"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-22T13:38:20.719738" level="INFO">${exit1} = 0</msg>
<var>${exit1}</var>
<arg>${SUB_OK}</arg>
<status status="PASS" start="2026-04-22T13:38:20.718655" elapsed="0.001113"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-22T13:38:20.720154" 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-22T13:38:20.719878" elapsed="0.000330"/>
</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-22T13:38:20.720343" elapsed="0.000178"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${SUB_OK}</arg>
<status status="PASS" start="2026-04-22T13:38:20.720617" elapsed="0.006028"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${SUB_CRASH}</arg>
<status status="PASS" start="2026-04-22T13:38:20.726802" elapsed="0.005334"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${PUBLISHER}</arg>
<status status="PASS" start="2026-04-22T13:38:20.732360" elapsed="0.005072"/>
</kw>
<arg>network_tcp</arg>
<arg>network</arg>
<status status="PASS" start="2026-04-22T13:37:49.500601" elapsed="31.236908"/>
</kw>
<tag>crash_receive_network_tcp</tag>
<status status="PASS" start="2026-04-22T13:37:49.499975" elapsed="31.237641"/>
</test>
<status status="PASS" start="2026-04-22T13:35:55.576444" elapsed="145.162138"/>
</suite>
<status status="PASS" start="2026-04-22T13:25:45.150291" elapsed="755.589064"/>
</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>
