<?xml version="1.0" encoding="UTF-8"?>
<robot generator="Robot 7.4.2 (Python 3.12.3 on linux)" generated="2026-04-10T08:14:09.579432" 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-10T08:14:09.675205" elapsed="0.000146"/>
</kw>
<kw name="Get Build Script Path" owner="GlobalPathsLibrary">
<msg time="2026-04-10T08:14:09.675518" 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-10T08:14:09.675437" elapsed="0.000098"/>
</kw>
<kw name="Get Network Name" owner="GlobalPathsLibrary">
<msg time="2026-04-10T08:14:09.675706" level="INFO">${net} = ecal_test_net</msg>
<var>${net}</var>
<status status="PASS" start="2026-04-10T08:14:09.675584" elapsed="0.000152"/>
</kw>
<kw name="Get Build Script Args" owner="GlobalPathsLibrary">
<msg time="2026-04-10T08:14:09.675855" level="INFO">${args} = ['basic_pub_sub']</msg>
<var>${args}</var>
<status status="PASS" start="2026-04-10T08:14:09.675792" elapsed="0.000075"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-10T08:14:09.676146" 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-10T08:14:09.675924" elapsed="0.000243"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-10T08:14:09.676377" 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-10T08:14:09.676227" elapsed="0.000169"/>
</kw>
<kw name="Get Test Description" owner="GlobalPathsLibrary">
<msg time="2026-04-10T08:14:09.676555" 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-10T08:14:09.676445" elapsed="0.000122"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-10T08:14:09.676770" 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-10T08:14:09.676619" elapsed="0.000175"/>
</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-10T08:14:09.676844" elapsed="0.000115"/>
</kw>
<kw name="Run Process" owner="Process">
<msg time="2026-04-10T08:14:09.677209" 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-10T08:14:09.677548" level="INFO">Waiting for process to complete.</msg>
<msg time="2026-04-10T08:14:21.665661" level="INFO">Process completed.</msg>
<msg time="2026-04-10T08:14:21.665843" 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-10T08:14:09.677026" elapsed="11.988836"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-10T08:14:21.666539" 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-10T08:14:21.666007" elapsed="0.000575"/>
</kw>
<kw name="Create Docker Network" owner="DockerLibrary">
<arg>${NETWORK}</arg>
<status status="PASS" start="2026-04-10T08:14:21.666647" elapsed="0.036914"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-10T08:14:24.704104" 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-10T08:14:21.703705" elapsed="3.000508"/>
</kw>
<status status="PASS" start="2026-04-10T08:14:09.674863" elapsed="15.029434"/>
</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-10T08:14:24.705327" 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-10T08:14:24.705089" elapsed="0.000254"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-10T08:14:24.705535" 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-10T08:14:24.705398" elapsed="0.000149"/>
</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-10T08:14:24.705599" elapsed="0.000163"/>
</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-10T08:14:24.705825" elapsed="0.100425"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-10T08:14:33.806950" 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-10T08:14:24.806439" elapsed="9.000619"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-10T08:14:33.809803" level="INFO">${logs} = [Entrypoint] Starting subscriber and publisher in mode local_shm
Shared memory monitoring is enabled (domain: ecal_mon - queue size: 1024)
1775808864806 ms | 764132f89b9f | pub_test | 7 | info | Using...</msg>
<var>${logs}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-10T08:14:33.807205" elapsed="0.002617"/>
</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-10T08:14:33.809892" elapsed="0.000241"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-10T08:14:33.810402" 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)
1775808864806 ms | 764132f89b9f | 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)
1775808865844 ms | 764132f89b9f | 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-10T08:14:33.810213" elapsed="0.000294"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-10T08:14:33.811557" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-10T08:14:33.810584" elapsed="0.000992"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-10T08:14:33.811838" 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-10T08:14:33.811641" elapsed="0.000237"/>
</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-10T08:14:33.811937" elapsed="0.000104"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-10T08:14:33.812101" elapsed="0.004211"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-10T08:14:34.816667" 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-10T08:14:33.816384" elapsed="1.000412"/>
</kw>
<arg>local_shm</arg>
<status status="PASS" start="2026-04-10T08:14:24.704883" elapsed="10.111996"/>
</kw>
<tag>basic_pub_sub_local_shm</tag>
<status status="PASS" start="2026-04-10T08:14:24.704372" elapsed="10.112632"/>
</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-10T08:14:34.818300" 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-10T08:14:34.818075" elapsed="0.000241"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-10T08:14:34.818509" 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-10T08:14:34.818374" elapsed="0.000147"/>
</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-10T08:14:34.818573" elapsed="0.000182"/>
</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-10T08:14:34.818816" elapsed="0.095522"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-10T08:14:43.914930" 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-10T08:14:34.914492" elapsed="9.000546"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-10T08:14:43.917781" level="INFO">${logs} = [Entrypoint] Starting subscriber and publisher in mode local_udp
1775808874915 ms | 829573ad5a3c | 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-10T08:14:43.915186" elapsed="0.002616"/>
</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-10T08:14:43.917872" elapsed="0.000240"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-10T08:14:43.918350" level="INFO">
[CONTAINER LOG: LOCAL PUB+SUB]
[Entrypoint] Starting subscriber and publisher in mode local_udp
1775808874915 ms | 829573ad5a3c | 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.
1775808875917 ms | 829573ad5a3c | 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-10T08:14:43.918192" elapsed="0.000187"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-10T08:14:43.919242" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-10T08:14:43.918432" elapsed="0.000828"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-10T08:14:43.919489" 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-10T08:14:43.919321" elapsed="0.000202"/>
</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-10T08:14:43.919578" elapsed="0.000101"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-10T08:14:43.919758" elapsed="0.004523"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-10T08:14:44.924641" 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-10T08:14:43.924354" elapsed="1.000415"/>
</kw>
<arg>local_udp</arg>
<status status="PASS" start="2026-04-10T08:14:34.817883" elapsed="10.106962"/>
</kw>
<tag>basic_pub_sub_local_udp</tag>
<status status="PASS" start="2026-04-10T08:14:34.817513" elapsed="10.107450"/>
</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-10T08:14:44.926221" 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-10T08:14:44.925997" elapsed="0.000239"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-10T08:14:44.926493" 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-10T08:14:44.926358" elapsed="0.000147"/>
</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-10T08:14:44.926555" elapsed="0.000141"/>
</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-10T08:14:44.926780" elapsed="0.090887"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-10T08:14:54.018238" 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-10T08:14:45.017873" elapsed="9.000472"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-10T08:14:54.020923" level="INFO">${logs} = [Entrypoint] Starting subscriber and publisher in mode local_tcp
1775808885019 ms | 9e89675fad26 | 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-10T08:14:54.018491" elapsed="0.002452"/>
</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-10T08:14:54.021011" elapsed="0.000237"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-10T08:14:54.021488" level="INFO">
[CONTAINER LOG: LOCAL PUB+SUB]
[Entrypoint] Starting subscriber and publisher in mode local_tcp
1775808885019 ms | 9e89675fad26 | pub_test | 7 | info | Using built-in local time plugin.
[Publisher] Waiting for at least 1 subscriber(s) on topic: test_topic
1775808887021 ms | 9e89675fad26 | pub_test | 7 | info | CTCPReaderLayer - TCPPubSub (Info) -Publisher :::0: Created publisher and waiting for clients.
[Publisher] Found 1 subscriber(s). Proceeding to send messages.
1775808887022 ms | 9e89675fad26 | pub_test | 7 | info | CTCPReaderLayer - TCPPubSub (Info) -Publisher :::34093: Subscriber ::ffff:172.17.0.3:51900 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.
1775808890523 ms | 9e89675fad26 | pub_test | 7 | error | CTCPReaderLayer - TCPPubSub (Error) -Publisher ?: Error while waiting for subsriber: Operation aborted.
1775808886020 ms | 9e89675fad26 | 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)
1775808890523 ms | 9e89675fad26 | sub_test | 13 | error | CTCPReaderLayer - TCPPubSub (Error) -SubscriberSession 172.17.0.3:51900-&gt;9e89675fad26:34093: Error reading header length: End of file
1775808890523 ms | 9e89675fad26 | sub_test | 13 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.17.0.3:58422: Failed connecting to publisher 9e89675fad26:34093: Connection refused
1775808890523 ms | 9e89675fad26 | sub_test | 13 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.17.0.3:58424: Failed connecting to publisher 9e89675fad26:34093: Connection refused
1775808890524 ms | 9e89675fad26 | sub_test | 13 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.17.0.3:58432: Failed connecting to publisher 9e89675fad26:34093: Connection refused
1775808890524 ms | 9e89675fad26 | sub_test | 13 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.17.0.3:58448: Failed connecting to publisher 9e89675fad26:34093: Connection refused
1775808890524 ms | 9e89675fad26 | sub_test | 13 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.17.0.3:58450: Failed connecting to publisher 9e89675fad26:34093: 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-10T08:14:54.021328" elapsed="0.000200"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-10T08:14:54.022407" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-10T08:14:54.021582" elapsed="0.000842"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-10T08:14:54.022645" 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-10T08:14:54.022485" elapsed="0.000191"/>
</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-10T08:14:54.022748" elapsed="0.000097"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-10T08:14:54.022908" elapsed="0.004195"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-10T08:14:55.027450" 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-10T08:14:54.027171" elapsed="1.000401"/>
</kw>
<arg>local_tcp</arg>
<status status="PASS" start="2026-04-10T08:14:44.925807" elapsed="10.101841"/>
</kw>
<tag>basic_pub_sub_local_tcp</tag>
<status status="PASS" start="2026-04-10T08:14:44.925462" elapsed="10.102316"/>
</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-10T08:14:55.029022" 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-10T08:14:55.028791" elapsed="0.000246"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-10T08:14:55.029219" 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-10T08:14:55.029091" elapsed="0.000144"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-10T08:14:55.029401" 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-10T08:14:55.029283" elapsed="0.000130"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-10T08:14:55.029568" 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-10T08:14:55.029456" elapsed="0.000122"/>
</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-10T08:14:55.029621" elapsed="0.000147"/>
</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-10T08:14:55.029832" elapsed="0.113140"/>
</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-10T08:14:55.143158" elapsed="0.137972"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-10T08:15:04.281784" 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-10T08:14:55.281323" elapsed="9.000573"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-10T08:15:04.284353" level="INFO">${log_sub} = [Entrypoint] Starting subscriber in mode network_udp
1775808895140 ms | 62e2ed4f84cc | 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-10T08:15:04.282039" elapsed="0.002333"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-10T08:15:04.286088" level="INFO">${log_pub} = [Entrypoint] Starting publisher in mode network_udp
1775808895283 ms | 85bffe6bdb3e | 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-10T08:15:04.284436" elapsed="0.001673"/>
</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-10T08:15:04.286175" elapsed="0.000235"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-10T08:15:04.286667" level="INFO">
[CONTAINER LOG: PUBLISHER]
[Entrypoint] Starting publisher in mode network_udp
1775808895283 ms | 85bffe6bdb3e | 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-10T08:15:04.286490" elapsed="0.000215"/>
</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-10T08:15:04.286791" elapsed="0.000187"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-10T08:15:04.287200" level="INFO">
[CONTAINER LOG: SUBSCRIBER]
[Entrypoint] Starting subscriber in mode network_udp
1775808895140 ms | 62e2ed4f84cc | 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-10T08:15:04.287050" elapsed="0.000180"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-10T08:15:04.288111" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${SUB_NAME}</arg>
<status status="PASS" start="2026-04-10T08:15:04.287294" elapsed="0.000834"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-10T08:15:04.288364" 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-10T08:15:04.288187" elapsed="0.000209"/>
</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-10T08:15:04.288449" elapsed="0.000091"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${SUB_NAME}</arg>
<status status="PASS" start="2026-04-10T08:15:04.288610" elapsed="0.004357"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${PUB_NAME}</arg>
<status status="PASS" start="2026-04-10T08:15:04.293035" elapsed="0.004930"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-10T08:15:05.298324" 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-10T08:15:04.298036" elapsed="1.000397"/>
</kw>
<arg>network_udp</arg>
<arg>network</arg>
<status status="PASS" start="2026-04-10T08:14:55.028572" elapsed="10.269937"/>
</kw>
<tag>basic_pub_sub_network_udp</tag>
<status status="PASS" start="2026-04-10T08:14:55.028229" elapsed="10.270382"/>
</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-10T08:15:05.300078" 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-10T08:15:05.299853" elapsed="0.000240"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-10T08:15:05.300279" 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-10T08:15:05.300150" elapsed="0.000142"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-10T08:15:05.300465" 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-10T08:15:05.300341" elapsed="0.000135"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-10T08:15:05.300631" 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-10T08:15:05.300520" elapsed="0.000122"/>
</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-10T08:15:05.300687" elapsed="0.000157"/>
</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-10T08:15:05.300911" elapsed="0.107322"/>
</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-10T08:15:05.408384" elapsed="0.104022"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-10T08:15:14.512973" 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-10T08:15:05.512562" elapsed="9.000518"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-10T08:15:14.515862" level="INFO">${log_sub} = [Entrypoint] Starting subscriber in mode network_tcp
1775808905409 ms | e08f06038c27 | 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-10T08:15:14.513230" elapsed="0.002652"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-10T08:15:14.517569" level="INFO">${log_pub} = [Entrypoint] Starting publisher in mode network_tcp
1775808905514 ms | 764cc1707e33 | 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-10T08:15:14.515997" elapsed="0.001591"/>
</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-10T08:15:14.517652" elapsed="0.000260"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-10T08:15:14.518125" level="INFO">
[CONTAINER LOG: PUBLISHER]
[Entrypoint] Starting publisher in mode network_tcp
1775808905514 ms | 764cc1707e33 | pub_network_tcp | 7 | info | Using built-in local time plugin.
[Publisher] Waiting for at least 1 subscriber(s) on topic: topic_network_tcp
1775808906410 ms | 764cc1707e33 | pub_network_tcp | 7 | info | CTCPReaderLayer - TCPPubSub (Info) -Publisher :::0: Created publisher and waiting for clients.
1775808906411 ms | 764cc1707e33 | pub_network_tcp | 7 | info | CTCPReaderLayer - TCPPubSub (Info) -Publisher :::43867: Subscriber ::ffff:172.18.0.2:34912 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.
1775808909916 ms | 764cc1707e33 | 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-10T08:15:14.517985" elapsed="0.000168"/>
</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-10T08:15:14.518203" elapsed="0.000139"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-10T08:15:14.518559" level="INFO">
[CONTAINER LOG: SUBSCRIBER]
[Entrypoint] Starting subscriber in mode network_tcp
1775808905409 ms | e08f06038c27 | 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)
1775808909916 ms | e08f06038c27 | sub_network_tcp | 7 | error | CTCPReaderLayer - TCPPubSub (Error) -SubscriberSession 172.18.0.2:34912-&gt;764cc1707e33:43867: Error reading header length: End of file
1775808909917 ms | e08f06038c27 | sub_network_tcp | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:51576: Failed connecting to publisher 764cc1707e33:43867: Connection refused
1775808909917 ms | e08f06038c27 | sub_network_tcp | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:51590: Failed connecting to publisher 764cc1707e33:43867: Connection refused
1775808909918 ms | e08f06038c27 | sub_network_tcp | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:51598: Failed connecting to publisher 764cc1707e33:43867: Connection refused
1775808909918 ms | e08f06038c27 | sub_network_tcp | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:51600: Failed connecting to publisher 764cc1707e33:43867: Connection refused
1775808909919 ms | e08f06038c27 | sub_network_tcp | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:51608: Failed connecting to publisher 764cc1707e33:43867: 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-10T08:15:14.518411" elapsed="0.000189"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-10T08:15:14.519538" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${SUB_NAME}</arg>
<status status="PASS" start="2026-04-10T08:15:14.518669" elapsed="0.000885"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-10T08:15:14.519824" 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-10T08:15:14.519614" elapsed="0.000243"/>
</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-10T08:15:14.519913" elapsed="0.000097"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${SUB_NAME}</arg>
<status status="PASS" start="2026-04-10T08:15:14.520067" elapsed="0.004217"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${PUB_NAME}</arg>
<status status="PASS" start="2026-04-10T08:15:14.524351" elapsed="0.003932"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-10T08:15:15.528635" 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-10T08:15:14.528352" elapsed="1.000435"/>
</kw>
<arg>network_tcp</arg>
<arg>network</arg>
<status status="PASS" start="2026-04-10T08:15:05.299627" elapsed="10.229239"/>
</kw>
<tag>basic_pub_sub_network_tcp</tag>
<status status="PASS" start="2026-04-10T08:15:05.299284" elapsed="10.229688"/>
</test>
<status status="PASS" start="2026-04-10T08:14:09.597906" elapsed="65.931940"/>
</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-10T08:15:15.532540" elapsed="0.000107"/>
</kw>
<kw name="Get Build Script Path" owner="GlobalPathsLibrary">
<msg time="2026-04-10T08:15:15.532797" 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-10T08:15:15.532703" elapsed="0.000107"/>
</kw>
<kw name="Get Network Name" owner="GlobalPathsLibrary">
<msg time="2026-04-10T08:15:15.532903" level="INFO">${net} = ecal_test_net</msg>
<var>${net}</var>
<status status="PASS" start="2026-04-10T08:15:15.532854" elapsed="0.000060"/>
</kw>
<kw name="Get Build Script Args" owner="GlobalPathsLibrary">
<msg time="2026-04-10T08:15:15.532998" level="INFO">${args} = ['multi_pub_sub']</msg>
<var>${args}</var>
<status status="PASS" start="2026-04-10T08:15:15.532952" elapsed="0.000055"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-10T08:15:15.533233" 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-10T08:15:15.533058" elapsed="0.000194"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-10T08:15:15.533435" 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-10T08:15:15.533304" elapsed="0.000147"/>
</kw>
<kw name="Get Test Description" owner="GlobalPathsLibrary">
<msg time="2026-04-10T08:15:15.533692" 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-10T08:15:15.533559" elapsed="0.000148"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-10T08:15:15.533906" 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-10T08:15:15.533782" elapsed="0.000152"/>
</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-10T08:15:15.533983" elapsed="0.000104"/>
</kw>
<kw name="Run Process" owner="Process">
<msg time="2026-04-10T08:15:15.534333" 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-10T08:15:15.534761" level="INFO">Waiting for process to complete.</msg>
<msg time="2026-04-10T08:15:22.788425" level="INFO">Process completed.</msg>
<msg time="2026-04-10T08:15:22.788582" 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-10T08:15:15.534152" elapsed="7.254449"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-10T08:15:22.789312" 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-10T08:15:22.788773" elapsed="0.000586"/>
</kw>
<kw name="Create Docker Network" owner="DockerLibrary">
<arg>${NETWORK}</arg>
<status status="PASS" start="2026-04-10T08:15:22.789424" elapsed="0.006197"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-10T08:15:25.796036" 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-10T08:15:22.795716" elapsed="3.000430"/>
</kw>
<status status="PASS" start="2026-04-10T08:15:15.532423" elapsed="10.263802"/>
</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-10T08:15:25.797438" 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-10T08:15:25.797211" elapsed="0.000242"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-10T08:15:25.797637" 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-10T08:15:25.797509" elapsed="0.000139"/>
</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-10T08:15:25.797697" elapsed="0.000148"/>
</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-10T08:15:25.797911" elapsed="0.105673"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-10T08:15:43.904211" 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-10T08:15:25.903823" elapsed="18.000496"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-10T08:15:43.906914" level="INFO">${logs} = [Entrypoint] Starting local multi pub/sub test in mode local_udp
1775808925906 ms | 45b40e4bcc9d | 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-10T08:15:43.904465" elapsed="0.002468"/>
</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-10T08:15:43.907006" elapsed="0.000239"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-10T08:15:43.907469" level="INFO">
[CONTAINER LOG: All Local Binarys Multi Pub/Sub]
[Entrypoint] Starting local multi pub/sub test in mode local_udp
1775808925906 ms | 45b40e4bcc9d | multi_publisher | 7 | info | Using built-in local time plugin.
[Publisher] Waiting for at least 2 subscriber(s) on topic: test_topic
1775808925906 ms | 45b40e4bcc9d | multi_publisher | 8 | info | Using built-in local time plugin.
[Publisher] Waiting for at least 2 subscriber(s) on topic: test_topic
1775808926907 ms | 45b40e4bcc9d | multi_subscriber | 19 | info | Using built-in local time plugin.
[Subscriber 2] Waiting for messages...
1775808926907 ms | 45b40e4bcc9d | multi_subscriber | 18 | info | Using built-in local time plugin.
[Subscriber 1] Waiting for messages...

[Publisher] Found 2 subscriber(s). Proceeding to send messages.
[Publisher] Found 2 subscriber(s). Proceeding to send messages.
[Publisher 2] Started with mode=local_udp, topic=test_topic, node=multi_publisher, count=10, delay=1000ms
[Publisher 1] Started with mode=local_udp, topic=test_topic, node=multi_publisher, count=10, delay=1000ms

[Publisher 2] Finished sending messages.

[Publisher 1] Finished sending messages.

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


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

[Entrypoint] All subscribers received messages from both publishers.
</msg>
<arg>\n[CONTAINER LOG: All Local Binarys Multi Pub/Sub]\n${logs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-10T08:15:43.907324" elapsed="0.000179"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-10T08:15:43.908380" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-10T08:15:43.907556" elapsed="0.000842"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-10T08:15:43.908670" 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-10T08:15:43.908497" elapsed="0.000207"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-10T08:15:43.908786" elapsed="0.004495"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-10T08:15:44.913641" 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-10T08:15:43.913353" elapsed="1.000419"/>
</kw>
<arg>local_udp</arg>
<status status="PASS" start="2026-04-10T08:15:25.796749" elapsed="19.117100"/>
</kw>
<tag>multi_pub_sub_local_udp</tag>
<status status="PASS" start="2026-04-10T08:15:25.796289" elapsed="19.117666"/>
</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-10T08:15:44.915268" 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-10T08:15:44.915038" elapsed="0.000244"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-10T08:15:44.915457" 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-10T08:15:44.915341" elapsed="0.000127"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-10T08:15:44.915633" 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-10T08:15:44.915515" elapsed="0.000129"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-10T08:15:44.915832" 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-10T08:15:44.915688" elapsed="0.000156"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-10T08:15:44.916008" 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-10T08:15:44.915891" elapsed="0.000128"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-10T08:15:44.916178" 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-10T08:15:44.916063" elapsed="0.000125"/>
</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-10T08:15:44.916233" elapsed="0.000127"/>
</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-10T08:15:44.916419" elapsed="0.110820"/>
</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-10T08:15:45.027394" elapsed="0.096954"/>
</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-10T08:15:45.124507" elapsed="0.107680"/>
</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-10T08:15:45.232356" elapsed="0.577836"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-10T08:16:03.810761" 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-10T08:15:45.810352" elapsed="18.000520"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-10T08:16:03.813382" level="INFO">${log1} = [Entrypoint] Starting multi_subscriber in mode network_udp
1775808945029 ms | e97a41387355 | multi_subscriber | 7 | info | Using built-in local time plugin.
[Subscriber 1] Waiting for messages...


==...</msg>
<var>${log1}</var>
<arg>${SUB1}</arg>
<status status="PASS" start="2026-04-10T08:16:03.811018" elapsed="0.002384"/>
</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-10T08:16:03.813473" elapsed="0.000236"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-10T08:16:03.813937" level="INFO">
[CONTAINER LOG: SUBSCRIBER 1]
[Entrypoint] Starting multi_subscriber in mode network_udp
1775808945029 ms | e97a41387355 | multi_subscriber | 7 | info | Using built-in local time plugin.
[Subscriber 1] Waiting for messages...


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

</msg>
<arg>\n[CONTAINER LOG: SUBSCRIBER 1]\n${log1}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-10T08:16:03.813800" elapsed="0.000166"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-10T08:16:03.815792" level="INFO">${log2} = [Entrypoint] Starting multi_subscriber2 in mode network_udp
1775808945126 ms | 0e0156da6509 | 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-10T08:16:03.814019" elapsed="0.001796"/>
</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-10T08:16:03.815884" elapsed="0.000175"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-10T08:16:03.816283" level="INFO">
[CONTAINER LOG: SUBSCRIBER 1]
[Entrypoint] Starting multi_subscriber2 in mode network_udp
1775808945126 ms | 0e0156da6509 | 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-10T08:16:03.816136" elapsed="0.000175"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${SUB1}</arg>
<status status="PASS" start="2026-04-10T08:16:03.816365" elapsed="0.000783"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${SUB2}</arg>
<status status="PASS" start="2026-04-10T08:16:03.817212" elapsed="0.000738"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${PUB1}</arg>
<status status="PASS" start="2026-04-10T08:16:03.818013" elapsed="0.000696"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${PUB2}</arg>
<status status="PASS" start="2026-04-10T08:16:03.818790" elapsed="0.000745"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-10T08:16:03.820351" level="INFO">${exit1} = 0</msg>
<var>${exit1}</var>
<arg>${SUB1}</arg>
<status status="PASS" start="2026-04-10T08:16:03.819606" elapsed="0.000764"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-10T08:16:03.821120" level="INFO">${exit2} = 0</msg>
<var>${exit2}</var>
<arg>${SUB2}</arg>
<status status="PASS" start="2026-04-10T08:16:03.820431" elapsed="0.000708"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-10T08:16:03.821374" 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-10T08:16:03.821200" elapsed="0.000206"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-10T08:16:03.821593" 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-10T08:16:03.821463" elapsed="0.000156"/>
</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-10T08:16:03.821671" elapsed="0.000116"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${SUB1}</arg>
<status status="PASS" start="2026-04-10T08:16:03.821848" elapsed="0.023027"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${SUB2}</arg>
<status status="PASS" start="2026-04-10T08:16:03.844960" elapsed="0.004016"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${PUB1}</arg>
<status status="PASS" start="2026-04-10T08:16:03.849042" elapsed="0.004031"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${PUB2}</arg>
<status status="PASS" start="2026-04-10T08:16:03.853139" elapsed="0.003887"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-10T08:16:04.857407" 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-10T08:16:03.857104" elapsed="1.000410"/>
</kw>
<arg>network_udp</arg>
<arg>network</arg>
<status status="PASS" start="2026-04-10T08:15:44.914834" elapsed="19.942755"/>
</kw>
<tag>multi_pub_sub_network_udp</tag>
<status status="PASS" start="2026-04-10T08:15:44.914442" elapsed="19.943251"/>
</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-10T08:16:04.859350" 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-10T08:16:04.859130" elapsed="0.000236"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-10T08:16:04.859532" 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-10T08:16:04.859421" elapsed="0.000123"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-10T08:16:04.859712" 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-10T08:16:04.859590" elapsed="0.000151"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-10T08:16:04.859910" 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-10T08:16:04.859791" elapsed="0.000130"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-10T08:16:04.860076" 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-10T08:16:04.859965" elapsed="0.000121"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-10T08:16:04.860235" 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-10T08:16:04.860127" elapsed="0.000118"/>
</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-10T08:16:04.860289" elapsed="0.000127"/>
</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-10T08:16:04.860478" elapsed="0.117596"/>
</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-10T08:16:04.978228" elapsed="0.127244"/>
</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-10T08:16:05.105622" elapsed="1.087695"/>
</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-10T08:16:06.193509" elapsed="0.106585"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-10T08:16:24.300714" 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-10T08:16:06.300272" elapsed="18.000571"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-10T08:16:24.303369" level="INFO">${log1} = [Entrypoint] Starting multi_subscriber in mode network_tcp
1775808964980 ms | 7a5f76ad7fb1 | 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-10T08:16:24.300991" elapsed="0.002398"/>
</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-10T08:16:24.303455" elapsed="0.000240"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-10T08:16:24.303956" level="INFO">
[CONTAINER LOG: SUBSCRIBER 1]
[Entrypoint] Starting multi_subscriber in mode network_tcp
1775808964980 ms | 7a5f76ad7fb1 | multi_subscriber | 7 | info | Using built-in local time plugin.
[Subscriber 1] Waiting for messages...

1775808979199 ms | 7a5f76ad7fb1 | multi_subscriber | 7 | error | CTCPReaderLayer - TCPPubSub (Error) -SubscriberSession 172.18.0.2:52514-&gt;a7dcdc7108e9:33615: Error reading header length: End of file
1775808979200 ms | 7a5f76ad7fb1 | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:44060: Failed connecting to publisher a7dcdc7108e9:33615: Connection refused
1775808979200 ms | 7a5f76ad7fb1 | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:44070: Failed connecting to publisher a7dcdc7108e9:33615: Connection refused
1775808979201 ms | 7a5f76ad7fb1 | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:44078: Failed connecting to publisher a7dcdc7108e9:33615: Connection refused
1775808979201 ms | 7a5f76ad7fb1 | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:44090: Failed connecting to publisher a7dcdc7108e9:33615: Connection refused
1775808979202 ms | 7a5f76ad7fb1 | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:44098: Failed connecting to publisher a7dcdc7108e9:33615: Connection refused
1775808979204 ms | 7a5f76ad7fb1 | multi_subscriber | 7 | error | CTCPReaderLayer - TCPPubSub (Error) -SubscriberSession 172.18.0.2:60484-&gt;09ff091008ab:34599: Error reading header length: End of file
1775808979205 ms | 7a5f76ad7fb1 | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:36116: Failed connecting to publisher 09ff091008ab:34599: Connection refused
1775808979205 ms | 7a5f76ad7fb1 | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:36130: Failed connecting to publisher 09ff091008ab:34599: Connection refused
1775808979206 ms | 7a5f76ad7fb1 | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:36136: Failed connecting to publisher 09ff091008ab:34599: Connection refused
1775808979206 ms | 7a5f76ad7fb1 | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:36146: Failed connecting to publisher 09ff091008ab:34599: Connection refused
1775808979207 ms | 7a5f76ad7fb1 | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:36150: Failed connecting to publisher 09ff091008ab:34599: 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-10T08:16:24.303791" elapsed="0.000251"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-10T08:16:24.305825" level="INFO">${log2} = [Entrypoint] Starting multi_subscriber2 in mode network_tcp
1775808965107 ms | 22fdc6d4f152 | 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-10T08:16:24.304095" elapsed="0.001749"/>
</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-10T08:16:24.305909" elapsed="0.000188"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-10T08:16:24.306363" level="INFO">
[CONTAINER LOG: SUBSCRIBER 1]
[Entrypoint] Starting multi_subscriber2 in mode network_tcp
1775808965107 ms | 22fdc6d4f152 | multi_subscriber | 7 | info | Using built-in local time plugin.
[Subscriber 2] Waiting for messages...
1775808979199 ms | 22fdc6d4f152 | multi_subscriber | 7 | error | CTCPReaderLayer - TCPPubSub (Error) -SubscriberSession 172.18.0.3:60212-&gt;a7dcdc7108e9:33615: Error reading header length: End of file
1775808979200 ms | 22fdc6d4f152 | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.3:55562: Failed connecting to publisher a7dcdc7108e9:33615: Connection refused
1775808979200 ms | 22fdc6d4f152 | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.3:55564: Failed connecting to publisher a7dcdc7108e9:33615: Connection refused
1775808979201 ms | 22fdc6d4f152 | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.3:55570: Failed connecting to publisher a7dcdc7108e9:33615: Connection refused
1775808979201 ms | 22fdc6d4f152 | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.3:55578: Failed connecting to publisher a7dcdc7108e9:33615: Connection refused
1775808979202 ms | 22fdc6d4f152 | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.3:55582: Failed connecting to publisher a7dcdc7108e9:33615: Connection refused
1775808979204 ms | 22fdc6d4f152 | multi_subscriber | 7 | error | CTCPReaderLayer - TCPPubSub (Error) -SubscriberSession 172.18.0.3:36342-&gt;09ff091008ab:34599: Error reading header length: End of file
1775808979205 ms | 22fdc6d4f152 | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.3:55534: Failed connecting to publisher 09ff091008ab:34599: Connection refused
1775808979205 ms | 22fdc6d4f152 | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.3:55536: Failed connecting to publisher 09ff091008ab:34599: Connection refused
1775808979206 ms | 22fdc6d4f152 | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.3:55546: Failed connecting to publisher 09ff091008ab:34599: Connection refused
1775808979206 ms | 22fdc6d4f152 | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.3:55562: Failed connecting to publisher 09ff091008ab:34599: Connection refused
1775808979207 ms | 22fdc6d4f152 | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.3:55574: Failed connecting to publisher 09ff091008ab:34599: 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-10T08:16:24.306173" elapsed="0.000247"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${SUB1}</arg>
<status status="PASS" start="2026-04-10T08:16:24.306488" elapsed="0.000922"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${SUB2}</arg>
<status status="PASS" start="2026-04-10T08:16:24.307479" elapsed="0.000822"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${PUB1}</arg>
<status status="PASS" start="2026-04-10T08:16:24.308363" elapsed="0.000766"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${PUB2}</arg>
<status status="PASS" start="2026-04-10T08:16:24.309196" elapsed="0.000707"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-10T08:16:24.310587" level="INFO">${exit1} = 0</msg>
<var>${exit1}</var>
<arg>${SUB1}</arg>
<status status="PASS" start="2026-04-10T08:16:24.309966" elapsed="0.000639"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-10T08:16:24.311277" level="INFO">${exit2} = 0</msg>
<var>${exit2}</var>
<arg>${SUB2}</arg>
<status status="PASS" start="2026-04-10T08:16:24.310664" elapsed="0.000629"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-10T08:16:24.311545" 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-10T08:16:24.311373" elapsed="0.000204"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-10T08:16:24.311903" 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-10T08:16:24.311632" elapsed="0.000300"/>
</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-10T08:16:24.311987" elapsed="0.000102"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${SUB1}</arg>
<status status="PASS" start="2026-04-10T08:16:24.312152" elapsed="0.415681"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${SUB2}</arg>
<status status="PASS" start="2026-04-10T08:16:24.727977" elapsed="0.004500"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${PUB1}</arg>
<status status="PASS" start="2026-04-10T08:16:24.732546" elapsed="0.003885"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${PUB2}</arg>
<status status="PASS" start="2026-04-10T08:16:24.736505" elapsed="0.004105"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-10T08:16:25.741024" 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-10T08:16:24.740679" elapsed="1.000453"/>
</kw>
<arg>network_tcp</arg>
<arg>network</arg>
<status status="PASS" start="2026-04-10T08:16:04.858933" elapsed="20.882275"/>
</kw>
<tag>multi_pub_sub_network_tcp</tag>
<status status="PASS" start="2026-04-10T08:16:04.858535" elapsed="20.882780"/>
</test>
<status status="PASS" start="2026-04-10T08:15:15.530394" elapsed="70.211856"/>
</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-10T08:16:25.744887" elapsed="0.000111"/>
</kw>
<kw name="Get Build Script Path" owner="GlobalPathsLibrary">
<msg time="2026-04-10T08:16:25.745117" 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-10T08:16:25.745055" elapsed="0.000075"/>
</kw>
<kw name="Get Network Name" owner="GlobalPathsLibrary">
<msg time="2026-04-10T08:16:25.745215" level="INFO">${net} = ecal_test_net</msg>
<var>${net}</var>
<status status="PASS" start="2026-04-10T08:16:25.745169" elapsed="0.000056"/>
</kw>
<kw name="Get Build Script Args" owner="GlobalPathsLibrary">
<msg time="2026-04-10T08:16:25.745314" level="INFO">${args} = ['network_crash']</msg>
<var>${args}</var>
<status status="PASS" start="2026-04-10T08:16:25.745268" elapsed="0.000055"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-10T08:16:25.745561" 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-10T08:16:25.745375" elapsed="0.000206"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-10T08:16:25.745797" 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-10T08:16:25.745633" elapsed="0.000185"/>
</kw>
<kw name="Get Test Description" owner="GlobalPathsLibrary">
<msg time="2026-04-10T08:16:25.746003" 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-10T08:16:25.745868" elapsed="0.000151"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-10T08:16:25.746186" 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-10T08:16:25.746068" elapsed="0.000145"/>
</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-10T08:16:25.746259" elapsed="0.000104"/>
</kw>
<kw name="Run Process" owner="Process">
<msg time="2026-04-10T08:16:25.746623" 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-10T08:16:25.747035" level="INFO">Waiting for process to complete.</msg>
<msg time="2026-04-10T08:16:32.835458" level="INFO">Process completed.</msg>
<msg time="2026-04-10T08:16:32.835614" 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-10T08:16:25.746436" elapsed="7.089197"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-10T08:16:32.836326" 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-10T08:16:32.835795" elapsed="0.000570"/>
</kw>
<kw name="Create Docker Network" owner="DockerLibrary">
<arg>${NETWORK}</arg>
<status status="PASS" start="2026-04-10T08:16:32.836426" elapsed="0.006240"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-10T08:16:34.843087" 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-10T08:16:32.842781" elapsed="2.000501"/>
</kw>
<status status="PASS" start="2026-04-10T08:16:25.744740" elapsed="9.098619"/>
</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-10T08:16:34.844487" 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-10T08:16:34.844267" elapsed="0.000235"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-10T08:16:34.844669" 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-10T08:16:34.844557" elapsed="0.000123"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-10T08:16:34.844855" 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-10T08:16:34.844742" elapsed="0.000125"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-10T08:16:34.845014" 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-10T08:16:34.844913" elapsed="0.000112"/>
</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-10T08:16:34.845070" elapsed="0.000114"/>
</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-10T08:16:34.845238" elapsed="0.109428"/>
</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-10T08:16:34.954854" elapsed="0.096930"/>
</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-10T08:16:35.051941" elapsed="0.000258"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-10T08:16:42.052569" 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-10T08:16:35.052273" elapsed="7.000403"/>
</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-10T08:16:42.052861" elapsed="0.000268"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-10T08:16:42.055461" level="INFO">${log_net} = [Entrypoint] Starting network UDP publisher...
1775808995053 ms | f2da437dcf1c | 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-10T08:16:42.053200" elapsed="0.002280"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-10T08:16:42.055707" level="INFO">
[LOG: NETWORK UDP PUB2 CONTAINER]
[Entrypoint] Starting network UDP publisher...
1775808995053 ms | f2da437dcf1c | 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-10T08:16:42.055549" elapsed="0.000197"/>
</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-10T08:16:42.056030" elapsed="0.000155"/>
</kw>
<kw name="Run Process" owner="Process">
<msg time="2026-04-10T08:16:42.056632" level="INFO">Starting process:
docker network disconnect ecal_test_net udp_network_pub</msg>
<msg time="2026-04-10T08:16:42.057124" level="INFO">Waiting for process to complete.</msg>
<msg time="2026-04-10T08:16:42.098238" level="INFO">Process completed.</msg>
<msg time="2026-04-10T08:16:42.098391" 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-10T08:16:42.056263" elapsed="0.042151"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-10T08:16:42.099311" 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-10T08:16:42.098565" elapsed="0.000799"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-10T08:16:43.099787" 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-10T08:16:42.099433" elapsed="1.000461"/>
</kw>
<arg>${NET_PUB}</arg>
<arg>${NETWORK}</arg>
<status status="PASS" start="2026-04-10T08:16:42.055854" elapsed="1.044116"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-10T08:17:16.100488" 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-10T08:16:43.100090" elapsed="33.000512"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-10T08:17:16.103450" level="INFO">${log_local} = [Entrypoint] Starting UDP subscriber, then UDP publisher...
1775808994956 ms | e83b630e6b07 | 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-10T08:17:16.100784" elapsed="0.002686"/>
</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-10T08:17:16.103538" elapsed="0.000271"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-10T08:17:16.104071" level="INFO">
[LOG: LOCAL UDP PUB + SUB + PUB3 CONTAINER]
[Entrypoint] Starting UDP subscriber, then UDP publisher...
1775808994956 ms | e83b630e6b07 | 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.
1775808994956 ms | e83b630e6b07 | 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...
1775809005959 ms | e83b630e6b07 | 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
[Subscriber] Received: 42
[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: 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-10T08:17:16.103887" elapsed="0.000297"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${LOCAL_ALL}</arg>
<status status="PASS" start="2026-04-10T08:17:16.104263" elapsed="0.000982"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-10T08:17:16.106062" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${LOCAL_ALL}</arg>
<status status="PASS" start="2026-04-10T08:17:16.105309" elapsed="0.000770"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-10T08:17:16.106310" 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-10T08:17:16.106140" elapsed="0.000202"/>
</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-10T08:17:16.106399" elapsed="0.000083"/>
</kw>
<status status="PASS" start="2026-04-10T08:16:34.843868" elapsed="41.262662"/>
</kw>
<tag>network_crash_test</tag>
<status status="PASS" start="2026-04-10T08:16:34.843419" elapsed="41.263189"/>
</test>
<status status="PASS" start="2026-04-10T08:16:25.742703" elapsed="50.364429"/>
</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-10T08:17:16.109508" elapsed="0.000094"/>
</kw>
<kw name="Get Build Script Path" owner="GlobalPathsLibrary">
<msg time="2026-04-10T08:17:16.109715" 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-10T08:17:16.109657" elapsed="0.000093"/>
</kw>
<kw name="Get Network Name" owner="GlobalPathsLibrary">
<msg time="2026-04-10T08:17:16.109850" level="INFO">${net} = ecal_test_net</msg>
<var>${net}</var>
<status status="PASS" start="2026-04-10T08:17:16.109798" elapsed="0.000063"/>
</kw>
<kw name="Get Build Script Args" owner="GlobalPathsLibrary">
<msg time="2026-04-10T08:17:16.109948" level="INFO">${args} = ['pub_crash']</msg>
<var>${args}</var>
<status status="PASS" start="2026-04-10T08:17:16.109901" elapsed="0.000056"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-10T08:17:16.110175" 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-10T08:17:16.110008" elapsed="0.000186"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-10T08:17:16.110377" 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-10T08:17:16.110246" elapsed="0.000148"/>
</kw>
<kw name="Get Test Description" owner="GlobalPathsLibrary">
<msg time="2026-04-10T08:17:16.110544" 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-10T08:17:16.110440" elapsed="0.000117"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-10T08:17:16.110712" 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-10T08:17:16.110602" elapsed="0.000144"/>
</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-10T08:17:16.110791" elapsed="0.000102"/>
</kw>
<kw name="Run Process" owner="Process">
<msg time="2026-04-10T08:17:16.111156" 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-10T08:17:16.111520" level="INFO">Waiting for process to complete.</msg>
<msg time="2026-04-10T08:17:23.328168" level="INFO">Process completed.</msg>
<msg time="2026-04-10T08:17:23.328325" 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-10T08:17:16.110972" elapsed="7.217372"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-10T08:17:23.329059" 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-10T08:17:23.328515" elapsed="0.000586"/>
</kw>
<kw name="Create Docker Network" owner="DockerLibrary">
<arg>${NETWORK}</arg>
<status status="PASS" start="2026-04-10T08:17:23.329166" elapsed="0.006330"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-10T08:17:26.335910" 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-10T08:17:23.335583" elapsed="3.000438"/>
</kw>
<status status="PASS" start="2026-04-10T08:17:16.109395" elapsed="10.226702"/>
</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-10T08:17:26.337315" 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-10T08:17:26.337091" elapsed="0.000238"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-10T08:17:26.337497" 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-10T08:17:26.337385" elapsed="0.000124"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-10T08:17:26.337671" 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-10T08:17:26.337555" elapsed="0.000127"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-10T08:17:26.337863" 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-10T08:17:26.337740" elapsed="0.000135"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-10T08:17:26.338037" 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-10T08:17:26.337921" elapsed="0.000126"/>
</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-10T08:17:26.338092" elapsed="0.000149"/>
</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-10T08:17:26.338304" elapsed="0.102942"/>
</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-10T08:17:26.441396" elapsed="0.099622"/>
</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-10T08:17:26.541166" elapsed="0.098635"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-10T08:18:01.640335" 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-10T08:17:26.639952" elapsed="35.000493"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-10T08:18:01.643067" level="INFO">${sub_logs} = [Entrypoint] Starting crash subscriber in mode network_udp
1775809046442 ms | c080fd680281 | ./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-10T08:18:01.640592" elapsed="0.002495"/>
</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-10T08:18:01.643156" elapsed="0.000238"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-10T08:18:01.643633" level="INFO">
[SUBSCRIBER CONTAINER OUTPUT]
[Entrypoint] Starting crash subscriber in mode network_udp
1775809046442 ms | c080fd680281 | ./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-10T08:18:01.643461" elapsed="0.000206"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-10T08:18:01.645417" level="INFO">${crash_logs} = [Entrypoint] Starting crash publisher in mode network_udp
1775809046543 ms | 16086895d050 | ./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-10T08:18:01.643737" elapsed="0.001701"/>
</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-10T08:18:01.645501" elapsed="0.000183"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-10T08:18:01.645906" level="INFO">
[CRASH PUBLISHER OUTPUT]
[Entrypoint] Starting crash publisher in mode network_udp
1775809046543 ms | 16086895d050 | ./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-10T08:18:01.645771" elapsed="0.000196"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${SUB_NAME}</arg>
<status status="PASS" start="2026-04-10T08:18:01.646020" elapsed="0.000792"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${CRASH_PUB}</arg>
<status status="PASS" start="2026-04-10T08:18:01.646878" elapsed="0.000725"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${TEST_PUB}</arg>
<status status="PASS" start="2026-04-10T08:18:01.647663" elapsed="0.000758"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-10T08:18:01.649291" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${SUB_NAME}</arg>
<status status="PASS" start="2026-04-10T08:18:01.648495" elapsed="0.000815"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-10T08:18:01.649552" 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-10T08:18:01.649375" elapsed="0.000211"/>
</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-10T08:18:01.649644" elapsed="0.000120"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${SUB_NAME}</arg>
<status status="PASS" start="2026-04-10T08:18:01.649834" elapsed="0.004371"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${CRASH_PUB}</arg>
<status status="PASS" start="2026-04-10T08:18:01.654277" elapsed="0.003976"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${TEST_PUB}</arg>
<status status="PASS" start="2026-04-10T08:18:01.658324" elapsed="0.003909"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-10T08:18:02.662622" 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-10T08:18:01.662315" elapsed="1.000437"/>
</kw>
<arg>network_udp</arg>
<arg>network</arg>
<status status="PASS" start="2026-04-10T08:17:26.336620" elapsed="36.326214"/>
</kw>
<tag>pub_crash_network_udp</tag>
<status status="PASS" start="2026-04-10T08:17:26.336160" elapsed="36.326781"/>
</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-10T08:18:02.664652" 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-10T08:18:02.664416" elapsed="0.000252"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-10T08:18:02.664861" 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-10T08:18:02.664740" elapsed="0.000133"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-10T08:18:02.665043" 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-10T08:18:02.664922" elapsed="0.000132"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-10T08:18:02.665209" 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-10T08:18:02.665098" elapsed="0.000121"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-10T08:18:02.665372" 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-10T08:18:02.665262" elapsed="0.000122"/>
</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-10T08:18:02.665429" elapsed="0.000129"/>
</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-10T08:18:02.665618" elapsed="0.110243"/>
</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-10T08:18:02.776010" elapsed="0.101228"/>
</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-10T08:18:02.877429" elapsed="0.106634"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-10T08:18:37.984585" 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-10T08:18:02.984214" elapsed="35.000478"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-10T08:18:37.987373" level="INFO">${sub_logs} = [Entrypoint] Starting crash subscriber in mode network_tcp
1775809082777 ms | 1f20f9f0fac4 | ./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-10T08:18:37.984859" elapsed="0.002534"/>
</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-10T08:18:37.987463" elapsed="0.000252"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-10T08:18:37.988018" level="INFO">
[SUBSCRIBER CONTAINER OUTPUT]
[Entrypoint] Starting crash subscriber in mode network_tcp
1775809082777 ms | 1f20f9f0fac4 | ./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
1775809093632 ms | 1f20f9f0fac4 | ./test_subscriber | 7 | error | CTCPReaderLayer - TCPPubSub (Error) -SubscriberSession 172.18.0.2:42422-&gt;7d4b20540e56:35725: Error reading header length: End of file
1775809093633 ms | 1f20f9f0fac4 | ./test_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:46854: Failed connecting to publisher 7d4b20540e56:35725: Connection refused
1775809093633 ms | 1f20f9f0fac4 | ./test_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:46860: Failed connecting to publisher 7d4b20540e56:35725: Connection refused
1775809093634 ms | 1f20f9f0fac4 | ./test_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:46868: Failed connecting to publisher 7d4b20540e56:35725: Connection refused
1775809093634 ms | 1f20f9f0fac4 | ./test_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:46884: Failed connecting to publisher 7d4b20540e56:35725: Connection refused
1775809093635 ms | 1f20f9f0fac4 | ./test_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:46896: Failed connecting to publisher 7d4b20540e56:35725: 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
1775809110292 ms | 1f20f9f0fac4 | ./test_subscriber | 7 | error | CTCPReaderLayer - TCPPubSub (Error) -SubscriberSession 172.18.0.2:37076-&gt;788085fb5f72:36757: Error reading header length: End of file
1775809110293 ms | 1f20f9f0fac4 | ./test_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:47648: Failed connecting to publisher 788085fb5f72:36757: Connection refused
1775809110293 ms | 1f20f9f0fac4 | ./test_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:47652: Failed connecting to publisher 788085fb5f72:36757: Connection refused
1775809110293 ms | 1f20f9f0fac4 | ./test_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:47660: Failed connecting to publisher 788085fb5f72:36757: Connection refused
1775809110294 ms | 1f20f9f0fac4 | ./test_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:47676: Failed connecting to publisher 788085fb5f72:36757: Connection refused
1775809110295 ms | 1f20f9f0fac4 | ./test_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:47680: Failed connecting to publisher 788085fb5f72:36757: 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-10T08:18:37.987812" elapsed="0.000314"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-10T08:18:37.990234" level="INFO">${crash_logs} = [Entrypoint] Starting crash publisher in mode network_tcp
1775809082879 ms | 7d4b20540e56 | ./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-10T08:18:37.988201" elapsed="0.002053"/>
</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-10T08:18:37.990319" elapsed="0.000183"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-10T08:18:37.990759" level="INFO">
[CRASH PUBLISHER OUTPUT]
[Entrypoint] Starting crash publisher in mode network_tcp
1775809082879 ms | 7d4b20540e56 | ./crash_publisher | 7 | info | Using built-in local time plugin.
[Publisher] Waiting for at least 1 subscriber(s) on topic: test_topic
1775809083778 ms | 7d4b20540e56 | ./crash_publisher | 7 | info | CTCPReaderLayer - TCPPubSub (Info) -Publisher :::0: Created publisher and waiting for clients.
1775809083779 ms | 7d4b20540e56 | ./crash_publisher | 7 | info | CTCPReaderLayer - TCPPubSub (Info) -Publisher :::35725: Subscriber ::ffff:172.18.0.2:42422 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-10T08:18:37.990602" elapsed="0.000185"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${SUB_NAME}</arg>
<status status="PASS" start="2026-04-10T08:18:37.990840" elapsed="0.000754"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${CRASH_PUB}</arg>
<status status="PASS" start="2026-04-10T08:18:37.991656" elapsed="0.000723"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${TEST_PUB}</arg>
<status status="PASS" start="2026-04-10T08:18:37.992438" elapsed="0.000758"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-10T08:18:37.993947" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${SUB_NAME}</arg>
<status status="PASS" start="2026-04-10T08:18:37.993265" elapsed="0.000700"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-10T08:18:37.994200" 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-10T08:18:37.994026" elapsed="0.000208"/>
</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-10T08:18:37.994289" elapsed="0.000096"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${SUB_NAME}</arg>
<status status="PASS" start="2026-04-10T08:18:37.994457" elapsed="0.004500"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${CRASH_PUB}</arg>
<status status="PASS" start="2026-04-10T08:18:37.999021" elapsed="0.004155"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${TEST_PUB}</arg>
<status status="PASS" start="2026-04-10T08:18:38.003273" elapsed="0.004041"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-10T08:18:39.007670" 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-10T08:18:38.007382" elapsed="1.000422"/>
</kw>
<arg>network_tcp</arg>
<arg>network</arg>
<status status="PASS" start="2026-04-10T08:18:02.664223" elapsed="36.343655"/>
</kw>
<tag>pub_crash_network_tcp</tag>
<status status="PASS" start="2026-04-10T08:18:02.663850" elapsed="36.344135"/>
</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-10T08:18:39.009580" 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-10T08:18:39.009358" elapsed="0.000237"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-10T08:18:39.009795" 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-10T08:18:39.009650" elapsed="0.000157"/>
</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-10T08:18:39.009855" elapsed="0.000133"/>
</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-10T08:18:39.010056" elapsed="0.105393"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-10T08:19:14.116120" 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-10T08:18:39.115653" elapsed="35.000574"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-10T08:19:14.118991" 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)
1775809119117 ms | 42a8ff490f45 | ./crash_publisher | 7 |...</msg>
<var>${logs}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-10T08:19:14.116375" elapsed="0.002635"/>
</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-10T08:19:14.119077" elapsed="0.000269"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-10T08:19:14.119610" 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)
1775809119117 ms | 42a8ff490f45 | ./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)
1775809119117 ms | 42a8ff490f45 | 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)
1775809120120 ms | 42a8ff490f45 | ./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
[Subscriber] Received value: 43
[Test Publisher] Sent buffer with content: 43 (message 4)
[Crash Publisher] Sent buffer with content: 42 (message 5)
[Subscriber] Received value: 42
[Test Publisher] Sent buffer with content: 43 (message 5)
[Subscriber] Received value: 43
[Crash Publisher] Sent buffer with content: 42 (message 6)
[Subscriber] Received value: 42
[Test Publisher] Sent buffer with content: 43 (message 6)
[Subscriber] Received value: 43
[Crash Publisher] Sent buffer with content: 42 (message 7)
[Test Publisher] Sent buffer with content: 43 (message 7)
[Subscriber] Received value: 42
[Subscriber] Received value: 43
[Test Publisher] Sent buffer with content: 43 (message 8)
[Subscriber] Received value: 43
[Crash Publisher] Sent buffer with content: 42 (message 8)
[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-10T08:19:14.119423" elapsed="0.000250"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-10T08:19:14.120703" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-10T08:19:14.119759" elapsed="0.000980"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-10T08:19:14.120986" 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-10T08:19:14.120809" elapsed="0.000211"/>
</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-10T08:19:14.121111" elapsed="0.000104"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-10T08:19:14.121287" elapsed="0.004276"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-10T08:19:15.125916" 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-10T08:19:14.125632" elapsed="1.000392"/>
</kw>
<arg>local_shm</arg>
<status status="PASS" start="2026-04-10T08:18:39.009173" elapsed="36.116929"/>
</kw>
<tag>pub_crash_local_shm</tag>
<status status="PASS" start="2026-04-10T08:18:39.008825" elapsed="36.117379"/>
</test>
<status status="PASS" start="2026-04-10T08:17:16.107556" elapsed="119.019218"/>
</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-10T08:19:15.129322" elapsed="0.000121"/>
</kw>
<kw name="Get Build Script Path" owner="GlobalPathsLibrary">
<msg time="2026-04-10T08:19:15.129563" 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-10T08:19:15.129501" elapsed="0.000074"/>
</kw>
<kw name="Get Network Name" owner="GlobalPathsLibrary">
<msg time="2026-04-10T08:19:15.129665" level="INFO">${net} = ecal_test_net</msg>
<var>${net}</var>
<status status="PASS" start="2026-04-10T08:19:15.129618" elapsed="0.000058"/>
</kw>
<kw name="Get Build Script Args" owner="GlobalPathsLibrary">
<msg time="2026-04-10T08:19:15.129779" level="INFO">${args} = ['rpc_n_to_n_test']</msg>
<var>${args}</var>
<status status="PASS" start="2026-04-10T08:19:15.129715" elapsed="0.000074"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-10T08:19:15.130021" 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-10T08:19:15.129842" elapsed="0.000200"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-10T08:19:15.130228" 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-10T08:19:15.130095" elapsed="0.000150"/>
</kw>
<kw name="Get Test Description" owner="GlobalPathsLibrary">
<msg time="2026-04-10T08:19:15.130415" 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-10T08:19:15.130291" elapsed="0.000137"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-10T08:19:15.130594" 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-10T08:19:15.130476" elapsed="0.000139"/>
</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-10T08:19:15.130662" elapsed="0.000121"/>
</kw>
<kw name="Run Process" owner="Process">
<msg time="2026-04-10T08:19:15.131029" 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-10T08:19:15.131437" level="INFO">Waiting for process to complete.</msg>
<msg time="2026-04-10T08:19:21.694663" level="INFO">Process completed.</msg>
<msg time="2026-04-10T08:19:21.694844" 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-10T08:19:15.130853" elapsed="6.564011"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-10T08:19:21.696514" 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-10T08:19:21.695005" elapsed="0.001552"/>
</kw>
<kw name="Create Docker Network" owner="DockerLibrary">
<arg>${NETWORK}</arg>
<status status="PASS" start="2026-04-10T08:19:21.696632" elapsed="0.006632"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-10T08:19:23.703754" 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-10T08:19:21.703369" elapsed="2.000507"/>
</kw>
<status status="PASS" start="2026-04-10T08:19:15.129202" elapsed="8.574749"/>
</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-10T08:19:23.704892" 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-10T08:19:23.704656" elapsed="0.000251"/>
</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-10T08:19:23.704964" elapsed="0.000158"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-10T08:19:23.705576" 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-10T08:19:23.705426" elapsed="0.000163"/>
</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-10T08:19:23.705640" elapsed="0.112710"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-04-10T08:19:23.705362" elapsed="0.113048"/>
</iter>
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-10T08:19:23.818954" 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-10T08:19:23.818646" elapsed="0.000325"/>
</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-10T08:19:23.819070" elapsed="0.108001"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-04-10T08:19:23.818545" elapsed="0.108588"/>
</iter>
<var>${i}</var>
<value>${NUM_SERVERS}</value>
<status status="PASS" start="2026-04-10T08:19:23.705180" elapsed="0.221993"/>
</for>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-10T08:19:25.927659" 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-10T08:19:23.927299" elapsed="2.000498"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-10T08:19:25.928458" 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-10T08:19:25.928212" elapsed="0.000260"/>
</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-10T08:19:25.928530" elapsed="0.101085"/>
</kw>
<var name="${j}">0</var>
<status status="PASS" start="2026-04-10T08:19:25.928111" elapsed="0.101566"/>
</iter>
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-10T08:19:26.030233" 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-10T08:19:26.029972" elapsed="0.000278"/>
</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-10T08:19:26.030308" elapsed="0.100400"/>
</kw>
<var name="${j}">1</var>
<status status="PASS" start="2026-04-10T08:19:26.029869" elapsed="0.100938"/>
</iter>
<var>${j}</var>
<value>${NUM_CLIENTS}</value>
<status status="PASS" start="2026-04-10T08:19:25.927879" elapsed="0.202975"/>
</for>
<for flavor="IN RANGE">
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-10T08:19:26.131602" 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-10T08:19:26.131303" elapsed="0.000320"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-10T08:19:27.585604" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${name}</arg>
<status status="PASS" start="2026-04-10T08:19:26.131697" elapsed="1.453953"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-10T08:19:27.586224" 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-10T08:19:27.585824" elapsed="0.000456"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-10T08:19:27.588337" level="INFO">${logs} = [Entrypoint] Starting client in mode network_udp...
[Client] Initializing eCAL with mode: network_udp
1775809166031 ms | 21682c7b9261 | rpc_client | 1 | info | Using built-in local time plugin.
[Clien...</msg>
<var>${logs}</var>
<arg>${name}</arg>
<status status="PASS" start="2026-04-10T08:19:27.586357" elapsed="0.002001"/>
</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-10T08:19:27.588425" elapsed="0.000199"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-10T08:19:27.588934" level="INFO">
[CLIENT LOG: rpc_client_0]
[Entrypoint] Starting client in mode network_udp...
[Client] Initializing eCAL with mode: network_udp
1775809166031 ms | 21682c7b9261 | 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-10T08:19:27.588695" elapsed="0.000266"/>
</kw>
<var name="${j}">0</var>
<status status="PASS" start="2026-04-10T08:19:26.131185" elapsed="1.457796"/>
</iter>
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-10T08:19:27.589257" 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-10T08:19:27.589117" elapsed="0.000152"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-10T08:19:27.685218" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${name}</arg>
<status status="PASS" start="2026-04-10T08:19:27.589317" elapsed="0.095950"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-10T08:19:27.685838" 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-10T08:19:27.685442" elapsed="0.000446"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-10T08:19:27.688287" level="INFO">${logs} = [Entrypoint] Starting client in mode network_udp...
[Client] Initializing eCAL with mode: network_udp
1775809166133 ms | 83309f87704c | rpc_client | 1 | info | Using built-in local time plugin.
[Clien...</msg>
<var>${logs}</var>
<arg>${name}</arg>
<status status="PASS" start="2026-04-10T08:19:27.685973" elapsed="0.002334"/>
</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-10T08:19:27.688373" elapsed="0.000204"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-10T08:19:27.688869" level="INFO">
[CLIENT LOG: rpc_client_1]
[Entrypoint] Starting client in mode network_udp...
[Client] Initializing eCAL with mode: network_udp
1775809166133 ms | 83309f87704c | 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-10T08:19:27.688651" elapsed="0.000253"/>
</kw>
<var name="${j}">1</var>
<status status="PASS" start="2026-04-10T08:19:27.589066" elapsed="0.099865"/>
</iter>
<var>${j}</var>
<value>${NUM_CLIENTS}</value>
<status status="PASS" start="2026-04-10T08:19:26.130930" elapsed="1.558035"/>
</for>
<for flavor="IN RANGE">
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-10T08:19:27.689418" 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-10T08:19:27.689217" elapsed="0.000221"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-10T08:19:27.691561" level="INFO">${logs} = [Entrypoint] Starting server in mode network_udp...
[1;33m[Server] Initializing eCAL with mode: network_udp[0m
1775809163821 ms | 52cef1097245 | 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-10T08:19:27.689508" elapsed="0.002080"/>
</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-10T08:19:27.691715" elapsed="0.000267"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-10T08:19:27.692289" level="INFO">
[SERVER LOG: rpc_server_0]
[Entrypoint] Starting server in mode network_udp...
[1;33m[Server] Initializing eCAL with mode: network_udp[0m
1775809163821 ms | 52cef1097245 | 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-10T08:19:27.692087" elapsed="0.000242"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${name}</arg>
<status status="PASS" start="2026-04-10T08:19:27.692407" elapsed="10.070502"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-04-10T08:19:27.689151" elapsed="10.073811"/>
</iter>
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-10T08:19:37.763431" 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-10T08:19:37.763181" elapsed="0.000266"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-10T08:19:37.765265" level="INFO">${logs} = [Entrypoint] Starting server in mode network_udp...
[1;33m[Server] Initializing eCAL with mode: network_udp[0m
1775809163928 ms | 0d7a00b11f69 | 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-10T08:19:37.763504" elapsed="0.001782"/>
</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-10T08:19:37.765350" elapsed="0.000195"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-10T08:19:37.765804" level="INFO">
[SERVER LOG: rpc_server_1]
[Entrypoint] Starting server in mode network_udp...
[1;33m[Server] Initializing eCAL with mode: network_udp[0m
1775809163928 ms | 0d7a00b11f69 | 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-10T08:19:37.765612" elapsed="0.000219"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${name}</arg>
<status status="PASS" start="2026-04-10T08:19:37.765881" elapsed="10.067264"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-04-10T08:19:37.763085" elapsed="10.070114"/>
</iter>
<var>${i}</var>
<value>${NUM_SERVERS}</value>
<status status="PASS" start="2026-04-10T08:19:27.689008" elapsed="20.144223"/>
</for>
<for flavor="IN RANGE">
<iter>
<kw name="Stop Container" owner="DockerLibrary">
<arg>rpc_client_${j}</arg>
<status status="PASS" start="2026-04-10T08:19:47.833543" elapsed="0.004000"/>
</kw>
<var name="${j}">0</var>
<status status="PASS" start="2026-04-10T08:19:47.833460" elapsed="0.004112"/>
</iter>
<iter>
<kw name="Stop Container" owner="DockerLibrary">
<arg>rpc_client_${j}</arg>
<status status="PASS" start="2026-04-10T08:19:47.837682" elapsed="0.003960"/>
</kw>
<var name="${j}">1</var>
<status status="PASS" start="2026-04-10T08:19:47.837634" elapsed="0.004037"/>
</iter>
<var>${j}</var>
<value>${NUM_CLIENTS}</value>
<status status="PASS" start="2026-04-10T08:19:47.833284" elapsed="0.008408"/>
</for>
<kw name="Log Test Summary" owner="DockerLibrary">
<arg>RPC N-to-N Test</arg>
<arg>${True}</arg>
<status status="PASS" start="2026-04-10T08:19:47.841785" elapsed="0.000111"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-10T08:19:48.842266" 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-10T08:19:47.841961" elapsed="1.000406"/>
</kw>
<status status="PASS" start="2026-04-10T08:19:23.704487" elapsed="25.137955"/>
</kw>
<tag>rpc_n_to_n_test</tag>
<status status="PASS" start="2026-04-10T08:19:23.704014" elapsed="25.138529"/>
</test>
<status status="PASS" start="2026-04-10T08:19:15.127211" elapsed="33.716250"/>
</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-10T08:19:48.846103" elapsed="0.000106"/>
</kw>
<kw name="Get Build Script Path" owner="GlobalPathsLibrary">
<msg time="2026-04-10T08:19:48.846329" 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-10T08:19:48.846266" elapsed="0.000076"/>
</kw>
<kw name="Get Network Name" owner="GlobalPathsLibrary">
<msg time="2026-04-10T08:19:48.846431" level="INFO">${net} = ecal_test_net</msg>
<var>${net}</var>
<status status="PASS" start="2026-04-10T08:19:48.846383" elapsed="0.000058"/>
</kw>
<kw name="Get Build Script Args" owner="GlobalPathsLibrary">
<msg time="2026-04-10T08:19:48.846529" level="INFO">${args} = ['rpc_ping_test']</msg>
<var>${args}</var>
<status status="PASS" start="2026-04-10T08:19:48.846481" elapsed="0.000057"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-10T08:19:48.846787" 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-10T08:19:48.846590" elapsed="0.000218"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-10T08:19:48.846999" 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-10T08:19:48.846863" elapsed="0.000153"/>
</kw>
<kw name="Get Test Description" owner="GlobalPathsLibrary">
<msg time="2026-04-10T08:19:48.847178" 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-10T08:19:48.847063" elapsed="0.000128"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-10T08:19:48.847356" 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-10T08:19:48.847242" elapsed="0.000135"/>
</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-10T08:19:48.847464" elapsed="0.000120"/>
</kw>
<kw name="Run Process" owner="Process">
<msg time="2026-04-10T08:19:48.847860" 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-10T08:19:48.848221" level="INFO">Waiting for process to complete.</msg>
<msg time="2026-04-10T08:19:55.473269" level="INFO">Process completed.</msg>
<msg time="2026-04-10T08:19:55.473425" 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-10T08:19:48.847658" elapsed="6.625786"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-10T08:19:55.474136" 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-10T08:19:55.473587" elapsed="0.000589"/>
</kw>
<kw name="Create Docker Network" owner="DockerLibrary">
<arg>${NETWORK}</arg>
<status status="PASS" start="2026-04-10T08:19:55.474239" elapsed="0.006457"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-10T08:19:57.481140" 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-10T08:19:55.480821" elapsed="2.000427"/>
</kw>
<status status="PASS" start="2026-04-10T08:19:48.845977" elapsed="8.635351"/>
</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-10T08:19:57.482492" 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-10T08:19:57.482270" elapsed="0.000237"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-10T08:19:57.482673" 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-10T08:19:57.482562" elapsed="0.000123"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-10T08:19:57.482870" 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-10T08:19:57.482752" elapsed="0.000130"/>
</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-10T08:19:57.482931" elapsed="0.000116"/>
</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-10T08:19:57.483094" elapsed="0.114033"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-10T08:19:58.597650" 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-10T08:19:57.597278" elapsed="1.000506"/>
</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-10T08:19:58.597925" elapsed="0.105643"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-10T08:20:00.258546" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${CLIENT_NAME}</arg>
<status status="PASS" start="2026-04-10T08:19:58.703718" elapsed="1.554871"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-10T08:20:00.259134" 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-10T08:20:00.258785" elapsed="0.000395"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-10T08:20:00.261360" level="INFO">${server_logs} = [Entrypoint] Starting server in mode network_udp...
[1;33m[Server] Initializing eCAL with mode: network_udp[0m
1775809197598 ms | 8454db8076ba | 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-10T08:20:00.259272" elapsed="0.002109"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-10T08:20:00.263182" level="INFO">${client_logs} = [Entrypoint] Starting client in mode network_udp...
[1;33m[Client] Initializing eCAL with mode: network_udp[0m
1775809198705 ms | ddff1c311445 | 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-10T08:20:00.261447" elapsed="0.001756"/>
</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-10T08:20:00.263269" elapsed="0.000191"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-10T08:20:00.263702" level="INFO">
[CONTAINER LOG: SERVER]
[Entrypoint] Starting server in mode network_udp...
[1;33m[Server] Initializing eCAL with mode: network_udp[0m
1775809197598 ms | 8454db8076ba | 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-10T08:20:00.263536" elapsed="0.000220"/>
</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-10T08:20:00.263828" elapsed="0.000196"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-10T08:20:00.264257" level="INFO">
[CONTAINER LOG: CLIENT]
[Entrypoint] Starting client in mode network_udp...
[1;33m[Client] Initializing eCAL with mode: network_udp[0m
1775809198705 ms | ddff1c311445 | 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-10T08:20:00.264097" elapsed="0.000193"/>
</kw>
<kw name="Log Test Summary" owner="DockerLibrary">
<arg>RPC Ping Test (UDP)</arg>
<arg>${True}</arg>
<status status="PASS" start="2026-04-10T08:20:00.264354" elapsed="0.000094"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${CLIENT_NAME}</arg>
<status status="PASS" start="2026-04-10T08:20:00.264519" elapsed="0.004254"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${SERVER_NAME}</arg>
<status status="PASS" start="2026-04-10T08:20:00.268843" elapsed="10.067778"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-10T08:20:11.337131" 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-10T08:20:10.336784" elapsed="1.000450"/>
</kw>
<status status="PASS" start="2026-04-10T08:19:57.481839" elapsed="13.855555"/>
</kw>
<tag>rpc_server_client_ping_test</tag>
<status status="PASS" start="2026-04-10T08:19:57.481386" elapsed="13.856112"/>
</test>
<status status="PASS" start="2026-04-10T08:19:48.843935" elapsed="22.494270"/>
</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-10T08:20:11.340688" elapsed="0.000126"/>
</kw>
<kw name="Get Build Script Path" owner="GlobalPathsLibrary">
<msg time="2026-04-10T08:20:11.340936" 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-10T08:20:11.340872" elapsed="0.000076"/>
</kw>
<kw name="Get Build Script Args" owner="GlobalPathsLibrary">
<msg time="2026-04-10T08:20:11.341037" level="INFO">${args} = ['rpc_reconnect_test']</msg>
<var>${args}</var>
<status status="PASS" start="2026-04-10T08:20:11.340989" elapsed="0.000058"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-10T08:20:11.341278" 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-10T08:20:11.341099" elapsed="0.000198"/>
</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-10T08:20:11.341345" elapsed="0.054370"/>
</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-10T08:20:11.395897" elapsed="0.000254"/>
</kw>
<kw name="Run Process" owner="Process">
<msg time="2026-04-10T08:20:11.396438" 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-10T08:20:11.396800" level="INFO">Waiting for process to complete.</msg>
<msg time="2026-04-10T08:20:17.944043" level="INFO">Process completed.</msg>
<msg time="2026-04-10T08:20:17.944197" 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-10T08:20:11.396220" elapsed="6.547995"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-10T08:20:17.944911" 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-10T08:20:17.944360" elapsed="0.000591"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-10T08:20:20.945274" 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-10T08:20:17.945016" elapsed="3.000365"/>
</kw>
<status status="PASS" start="2026-04-10T08:20:11.340571" elapsed="9.604892"/>
</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-10T08:20:20.946136" elapsed="0.000198"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-10T08:20:20.946606" 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-10T08:20:20.946413" elapsed="0.000212"/>
</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-10T08:20:20.946681" elapsed="0.129286"/>
</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-10T08:20:21.076115" elapsed="0.116519"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-10T08:20:23.193169" 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-10T08:20:21.192808" elapsed="2.000470"/>
</kw>
<kw name="Disconnect Container From Network" owner="DockerLibrary">
<arg>rpc_client</arg>
<arg>${NETWORK}</arg>
<status status="PASS" start="2026-04-10T08:20:23.193419" elapsed="0.020702"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-10T08:20:29.214685" 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-10T08:20:23.214254" elapsed="6.000563"/>
</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-10T08:20:29.214963" elapsed="0.010194"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-10T08:20:31.225647" 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-10T08:20:29.225273" elapsed="2.000511"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-10T08:20:31.228240" level="INFO">${log_cli} = [Entrypoint] Starting client in mode network_udp...
[Client] Initializing eCAL with mode: network_udp
1775809221172 ms | 445acc443d86 | 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-10T08:20:31.225932" elapsed="0.002328"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-10T08:20:31.230054" level="INFO">${log_srv} = [Entrypoint] Starting server in mode network_udp...
[1;33m[Server] Initializing eCAL with mode: network_udp[0m
1775809221054 ms | a698f9dd4268 | 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-10T08:20:31.228323" elapsed="0.001752"/>
</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-10T08:20:31.230144" elapsed="0.000235"/>
</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-10T08:20:31.230452" elapsed="0.000184"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-10T08:20:31.230898" level="INFO">
[CONTAINER LOG: CLIENT]
[Entrypoint] Starting client in mode network_udp...
[Client] Initializing eCAL with mode: network_udp
1775809221172 ms | 445acc443d86 | 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-10T08:20:31.230711" elapsed="0.000276"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-10T08:20:31.231210" level="INFO">
[CONTAINER LOG: SERVER]
[Entrypoint] Starting server in mode network_udp...
[1;33m[Server] Initializing eCAL with mode: network_udp[0m
1775809221054 ms | a698f9dd4268 | 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-10T08:20:31.231053" elapsed="0.000189"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-10T08:20:31.232120" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>rpc_client</arg>
<status status="PASS" start="2026-04-10T08:20:31.231307" elapsed="0.000831"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-10T08:20:31.232365" 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-10T08:20:31.232199" elapsed="0.000198"/>
</kw>
<kw name="Log Test Summary" owner="DockerLibrary">
<arg>RPC Reconnect Test</arg>
<arg>${True}</arg>
<status status="PASS" start="2026-04-10T08:20:31.232452" elapsed="0.000079"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>rpc_client</arg>
<status status="PASS" start="2026-04-10T08:20:31.232602" elapsed="0.004592"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>rpc_server</arg>
<status status="PASS" start="2026-04-10T08:20:31.237265" elapsed="10.103525"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-10T08:20:42.341291" 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-10T08:20:41.340933" elapsed="1.000463"/>
</kw>
<status status="PASS" start="2026-04-10T08:20:20.945962" elapsed="21.395511"/>
</kw>
<tag>rpc_reconnect</tag>
<status status="PASS" start="2026-04-10T08:20:20.945524" elapsed="21.396051"/>
</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-10T08:20:42.342870" elapsed="0.000199"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-10T08:20:42.343314" 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-10T08:20:42.343148" elapsed="0.000179"/>
</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-10T08:20:42.343378" elapsed="0.121476"/>
</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-10T08:20:42.465035" elapsed="0.112109"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-10T08:20:44.577634" 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-10T08:20:42.577291" elapsed="2.000475"/>
</kw>
<kw name="Disconnect Container From Network" owner="DockerLibrary">
<arg>rpc_server</arg>
<arg>${NETWORK}</arg>
<status status="PASS" start="2026-04-10T08:20:44.577907" elapsed="0.031695"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-10T08:20:50.610119" 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-10T08:20:44.609753" elapsed="6.000474"/>
</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-10T08:20:50.610367" elapsed="0.394221"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-10T08:20:53.005155" 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-10T08:20:51.004782" elapsed="2.000480"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-10T08:20:53.007624" level="INFO">${log_cli} = [Entrypoint] Starting client in mode network_udp...
[Client] Initializing eCAL with mode: network_udp
1775809242555 ms | 080f9dda2376 | 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-10T08:20:53.005406" elapsed="0.002238"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-10T08:20:53.009152" level="INFO">${log_srv} = [Entrypoint] Starting server in mode network_udp...
[1;33m[Server] Initializing eCAL with mode: network_udp[0m
1775809242444 ms | 9f28ecef5b9f | 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-10T08:20:53.007707" elapsed="0.001464"/>
</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-10T08:20:53.009237" elapsed="0.000238"/>
</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-10T08:20:53.009548" elapsed="0.000165"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-10T08:20:53.009923" level="INFO">
[CONTAINER LOG: CLIENT]
[Entrypoint] Starting client in mode network_udp...
[Client] Initializing eCAL with mode: network_udp
1775809242555 ms | 080f9dda2376 | 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-10T08:20:53.009796" elapsed="0.000149"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-10T08:20:53.010102" level="INFO">
[CONTAINER LOG: SERVER]
[Entrypoint] Starting server in mode network_udp...
[1;33m[Server] Initializing eCAL with mode: network_udp[0m
1775809242444 ms | 9f28ecef5b9f | 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-10T08:20:53.009996" elapsed="0.000165"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-10T08:20:53.010994" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>rpc_client</arg>
<status status="PASS" start="2026-04-10T08:20:53.010212" elapsed="0.000799"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-10T08:20:53.011237" 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-10T08:20:53.011071" elapsed="0.000200"/>
</kw>
<kw name="Log Test Summary" owner="DockerLibrary">
<arg>RPC Reconnect Test</arg>
<arg>${True}</arg>
<status status="PASS" start="2026-04-10T08:20:53.011325" elapsed="0.000086"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>rpc_client</arg>
<status status="PASS" start="2026-04-10T08:20:53.011471" elapsed="0.004451"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>rpc_server</arg>
<status status="PASS" start="2026-04-10T08:20:53.015988" elapsed="14.691616"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-10T08:21:08.708133" 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-10T08:21:07.707768" elapsed="1.000472"/>
</kw>
<status status="PASS" start="2026-04-10T08:20:42.342682" elapsed="26.365634"/>
</kw>
<tag>rpc_reconnect</tag>
<status status="PASS" start="2026-04-10T08:20:42.342355" elapsed="26.366060"/>
</test>
<status status="PASS" start="2026-04-10T08:20:11.338682" elapsed="57.370526"/>
</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-10T08:21:08.711770" elapsed="0.000113"/>
</kw>
<kw name="Get Build Script Path" owner="GlobalPathsLibrary">
<msg time="2026-04-10T08:21:08.712004" 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-10T08:21:08.711942" elapsed="0.000074"/>
</kw>
<kw name="Get Network Name" owner="GlobalPathsLibrary">
<msg time="2026-04-10T08:21:08.712106" level="INFO">${net} = ecal_test_net</msg>
<var>${net}</var>
<status status="PASS" start="2026-04-10T08:21:08.712058" elapsed="0.000058"/>
</kw>
<kw name="Get Build Script Args" owner="GlobalPathsLibrary">
<msg time="2026-04-10T08:21:08.712202" level="INFO">${args} = ['sub_crash']</msg>
<var>${args}</var>
<status status="PASS" start="2026-04-10T08:21:08.712155" elapsed="0.000057"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-10T08:21:08.712442" 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-10T08:21:08.712263" elapsed="0.000199"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-10T08:21:08.712646" 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-10T08:21:08.712515" elapsed="0.000148"/>
</kw>
<kw name="Get Test Description" owner="GlobalPathsLibrary">
<msg time="2026-04-10T08:21:08.712852" 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-10T08:21:08.712708" elapsed="0.000157"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-10T08:21:08.713028" 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-10T08:21:08.712914" elapsed="0.000140"/>
</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-10T08:21:08.713102" elapsed="0.000102"/>
</kw>
<kw name="Run Process" owner="Process">
<msg time="2026-04-10T08:21:08.713460" 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-10T08:21:08.713852" level="INFO">Waiting for process to complete.</msg>
<msg time="2026-04-10T08:21:18.315213" level="INFO">Process completed.</msg>
<msg time="2026-04-10T08:21:18.315367" 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-10T08:21:08.713275" elapsed="9.602112"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-10T08:21:18.316084" 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-10T08:21:18.315533" elapsed="0.000589"/>
</kw>
<kw name="Create Docker Network" owner="DockerLibrary">
<arg>${NETWORK}</arg>
<status status="PASS" start="2026-04-10T08:21:18.316185" elapsed="0.006179"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-10T08:21:21.322819" 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-10T08:21:18.322457" elapsed="3.000469"/>
</kw>
<status status="PASS" start="2026-04-10T08:21:08.711608" elapsed="12.611396"/>
</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-10T08:21:21.324267" 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-10T08:21:21.324037" elapsed="0.000244"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-10T08:21:21.324519" 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-10T08:21:21.324397" elapsed="0.000134"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-10T08:21:21.324708" 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-10T08:21:21.324580" elapsed="0.000139"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-10T08:21:21.324905" 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-10T08:21:21.324783" elapsed="0.000133"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-10T08:21:21.325072" 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-10T08:21:21.324961" elapsed="0.000121"/>
</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-10T08:21:21.325127" elapsed="0.000126"/>
</kw>
<kw name="Create Docker Network" owner="DockerLibrary">
<arg>${NETWORK}</arg>
<status status="PASS" start="2026-04-10T08:21:21.325307" elapsed="0.006711"/>
</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-10T08:21:21.332108" elapsed="2.853100"/>
</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-10T08:21:24.185362" elapsed="0.102084"/>
</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-10T08:21:24.287599" elapsed="0.098394"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${CRASH_SUB}</arg>
<status status="PASS" start="2026-04-10T08:21:24.386146" elapsed="7.029455"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${TEST_SUB}</arg>
<status status="PASS" start="2026-04-10T08:21:31.415804" elapsed="26.924958"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${TEST_PUB}</arg>
<status status="PASS" start="2026-04-10T08:21:58.340962" elapsed="0.001389"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-10T08:21:58.344340" level="INFO">${test_sub_logs} = [Entrypoint] Starting crash publisher in mode network_udp
1775809284289 ms | e17d80d26a51 | ./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-10T08:21:58.342429" elapsed="0.001932"/>
</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-10T08:21:58.344427" elapsed="0.000235"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-10T08:21:58.345012" level="INFO">
[SUBSCRIBER CONTAINER OUTPUT]
[Entrypoint] Starting crash publisher in mode network_udp
1775809284289 ms | e17d80d26a51 | ./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-10T08:21:58.344817" elapsed="0.000239"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-10T08:21:58.346917" level="INFO">${crash_sub_logs} = [Entrypoint] Starting crash subscriber in mode network_udp
1775809284184 ms | 12c724b8336f | ./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-10T08:21:58.345127" elapsed="0.001810"/>
</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-10T08:21:58.347001" elapsed="0.000179"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-10T08:21:58.347399" level="INFO">
[CRASH SUBSCRIBER CONTAINER OUTPUT]
[Entrypoint] Starting crash subscriber in mode network_udp
1775809284184 ms | 12c724b8336f | ./crash_subscriber | 7 | info | Using built-in local time plugin.

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

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

[Crash Subscriber] Simulating crash now.


[Crash Subscriber] Received 5 messages before crash.
./entrypoint.sh: line 61:     7 Aborted                 (core dumped) ./crash_subscriber $ARGS $EXTRA
</msg>
<arg>\n[CRASH SUBSCRIBER CONTAINER OUTPUT]\n${crash_sub_logs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-10T08:21:58.347256" elapsed="0.000167"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-10T08:21:58.348190" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${TEST_SUB}</arg>
<status status="PASS" start="2026-04-10T08:21:58.347475" elapsed="0.000734"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-10T08:21:58.348460" 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-10T08:21:58.348276" elapsed="0.000217"/>
</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-10T08:21:58.348550" elapsed="0.000104"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${CRASH_SUB}</arg>
<status status="PASS" start="2026-04-10T08:21:58.348771" elapsed="0.004029"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${TEST_SUB}</arg>
<status status="PASS" start="2026-04-10T08:21:58.352866" elapsed="0.003974"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${TEST_PUB}</arg>
<status status="PASS" start="2026-04-10T08:21:58.356911" elapsed="0.003862"/>
</kw>
<arg>network_udp</arg>
<arg>network</arg>
<status status="PASS" start="2026-04-10T08:21:21.323525" elapsed="37.037298"/>
</kw>
<tag>sub_crash_network_udp</tag>
<status status="PASS" start="2026-04-10T08:21:21.323062" elapsed="37.037835"/>
</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-10T08:21:58.362414" 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-10T08:21:58.362239" elapsed="0.000190"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-10T08:21:58.362593" 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-10T08:21:58.362485" elapsed="0.000120"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-10T08:21:58.362798" 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-10T08:21:58.362651" elapsed="0.000160"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-10T08:21:58.362977" 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-10T08:21:58.362859" elapsed="0.000129"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-10T08:21:58.363140" 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-10T08:21:58.363032" elapsed="0.000118"/>
</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-10T08:21:58.363192" elapsed="0.000119"/>
</kw>
<kw name="Create Docker Network" owner="DockerLibrary">
<arg>${NETWORK}</arg>
<status status="PASS" start="2026-04-10T08:21:58.363372" elapsed="0.006271"/>
</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-10T08:21:58.369718" elapsed="0.103795"/>
</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-10T08:21:58.473742" elapsed="0.098374"/>
</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-10T08:21:58.572307" elapsed="0.104990"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${CRASH_SUB}</arg>
<status status="PASS" start="2026-04-10T08:21:58.677471" elapsed="7.112387"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${TEST_SUB}</arg>
<status status="PASS" start="2026-04-10T08:22:05.790018" elapsed="26.838100"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${TEST_PUB}</arg>
<status status="PASS" start="2026-04-10T08:22:32.628290" elapsed="0.001232"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-10T08:22:32.631472" level="INFO">${test_sub_logs} = [Entrypoint] Starting crash publisher in mode network_tcp
1775809318574 ms | 49a3380c9098 | ./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-10T08:22:32.629596" elapsed="0.001897"/>
</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-10T08:22:32.631562" elapsed="0.000266"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-10T08:22:32.632096" level="INFO">
[SUBSCRIBER CONTAINER OUTPUT]
[Entrypoint] Starting crash publisher in mode network_tcp
1775809318574 ms | 49a3380c9098 | ./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
1775809351086 ms | 49a3380c9098 | ./test_subscriber | 7 | error | CTCPReaderLayer - TCPPubSub (Error) -SubscriberSession 172.18.0.3:48198-&gt;e6c6362f6a7b:43017: Error reading header length: End of file
1775809351087 ms | 49a3380c9098 | ./test_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.3:42050: Failed connecting to publisher e6c6362f6a7b:43017: Connection refused
1775809351088 ms | 49a3380c9098 | ./test_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.3:42056: Failed connecting to publisher e6c6362f6a7b:43017: Connection refused
1775809351088 ms | 49a3380c9098 | ./test_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.3:42068: Failed connecting to publisher e6c6362f6a7b:43017: Connection refused
1775809351089 ms | 49a3380c9098 | ./test_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.3:42076: Failed connecting to publisher e6c6362f6a7b:43017: Connection refused
1775809351089 ms | 49a3380c9098 | ./test_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.3:42086: Failed connecting to publisher e6c6362f6a7b:43017: 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-10T08:22:32.631907" elapsed="0.000244"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-10T08:22:32.635018" level="INFO">${crash_sub_logs} = [Entrypoint] Starting crash subscriber in mode network_tcp
1775809318476 ms | 02c564cc1528 | ./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-10T08:22:32.632220" elapsed="0.002818"/>
</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-10T08:22:32.635112" elapsed="0.000196"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-10T08:22:32.635570" level="INFO">
[CRASH SUBSCRIBER CONTAINER OUTPUT]
[Entrypoint] Starting crash subscriber in mode network_tcp
1775809318476 ms | 02c564cc1528 | ./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-10T08:22:32.635391" elapsed="0.000212"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-10T08:22:32.636375" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${TEST_SUB}</arg>
<status status="PASS" start="2026-04-10T08:22:32.635669" elapsed="0.000723"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-10T08:22:32.636613" 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-10T08:22:32.636453" elapsed="0.000192"/>
</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-10T08:22:32.636699" elapsed="0.000131"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${CRASH_SUB}</arg>
<status status="PASS" start="2026-04-10T08:22:32.636895" elapsed="0.004125"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${TEST_SUB}</arg>
<status status="PASS" start="2026-04-10T08:22:32.641086" elapsed="0.003891"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${TEST_PUB}</arg>
<status status="PASS" start="2026-04-10T08:22:32.645043" elapsed="0.003884"/>
</kw>
<arg>network_tcp</arg>
<arg>network</arg>
<status status="PASS" start="2026-04-10T08:21:58.362085" elapsed="34.286893"/>
</kw>
<tag>pub_crash_network_tcp</tag>
<status status="PASS" start="2026-04-10T08:21:58.361670" elapsed="34.287383"/>
</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-10T08:22:32.650354" 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-10T08:22:32.650181" elapsed="0.000188"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-10T08:22:32.650548" 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-10T08:22:32.650422" elapsed="0.000138"/>
</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-10T08:22:32.650607" elapsed="0.000150"/>
</kw>
<kw name="Create Docker Network" owner="DockerLibrary">
<arg>${NETWORK}</arg>
<status status="PASS" start="2026-04-10T08:22:32.650823" elapsed="0.005941"/>
</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-10T08:22:32.656842" elapsed="0.093350"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-10T08:23:06.802849" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-10T08:22:32.750397" elapsed="34.052490"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-10T08:23:06.803366" 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-10T08:23:06.803042" elapsed="0.000372"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-10T08:23:06.805674" 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)
1775809352751 ms | 3ffd3e4709c9 | test_publisher | 9 | in...</msg>
<var>${logs}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-10T08:23:06.803489" elapsed="0.002204"/>
</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-10T08:23:06.805787" elapsed="0.000196"/>
</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-10T08:23:06.806056" elapsed="0.000118"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-10T08:23:06.806241" elapsed="0.004166"/>
</kw>
<arg>local_shm</arg>
<status status="PASS" start="2026-04-10T08:22:32.650040" elapsed="34.160418"/>
</kw>
<tag>sub_crash_local_shm</tag>
<status status="PASS" start="2026-04-10T08:22:32.649746" elapsed="34.160787"/>
</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-10T08:23:06.811488" 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-10T08:23:06.811315" elapsed="0.000188"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-10T08:23:06.811687" 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-10T08:23:06.811557" elapsed="0.000141"/>
</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-10T08:23:06.811875" elapsed="0.000184"/>
</kw>
<kw name="Create Docker Network" owner="DockerLibrary">
<arg>${NETWORK}</arg>
<status status="PASS" start="2026-04-10T08:23:06.812125" elapsed="0.005831"/>
</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-10T08:23:06.818044" elapsed="0.093041"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-10T08:23:40.965411" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-10T08:23:06.911285" elapsed="34.054167"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-10T08:23:40.965963" 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-10T08:23:40.965620" elapsed="0.000392"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-10T08:23:40.968213" level="INFO">${logs} = [Entrypoint] Starting local test (pub/sub/monitor) in mode local_udp
1775809386913 ms | 6ac64b67a390 | ./test_subscriber | 8 | info | Using built-in local time plugin.

[Test_Subscriber] Waiting for m...</msg>
<var>${logs}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-10T08:23:40.966089" elapsed="0.002143"/>
</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-10T08:23:40.968302" elapsed="0.000193"/>
</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-10T08:23:40.968560" elapsed="0.000119"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-10T08:23:40.968761" elapsed="0.004375"/>
</kw>
<arg>local_udp</arg>
<status status="PASS" start="2026-04-10T08:23:06.811176" elapsed="34.162016"/>
</kw>
<tag>sub_crash_local_udp</tag>
<status status="PASS" start="2026-04-10T08:23:06.810890" elapsed="34.162377"/>
</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-10T08:23:40.974340" 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-10T08:23:40.974167" elapsed="0.000188"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-10T08:23:40.974541" 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-10T08:23:40.974411" elapsed="0.000142"/>
</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-10T08:23:40.974601" elapsed="0.000154"/>
</kw>
<kw name="Create Docker Network" owner="DockerLibrary">
<arg>${NETWORK}</arg>
<status status="PASS" start="2026-04-10T08:23:40.974823" elapsed="0.005821"/>
</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-10T08:23:40.980737" elapsed="0.106517"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-10T08:24:15.151174" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-10T08:23:41.087443" elapsed="34.063776"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-10T08:24:15.151678" 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-10T08:24:15.151377" elapsed="0.000366"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-10T08:24:15.154002" level="INFO">${logs} = [Entrypoint] Starting local test (pub/sub/monitor) in mode local_tcp
1775809421089 ms | c7e1191a9302 | ./crash_subscriber | 7 | info | Using built-in local time plugin.

[Crash Subscriber] Registered ...</msg>
<var>${logs}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-10T08:24:15.151823" elapsed="0.002198"/>
</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-10T08:24:15.154087" elapsed="0.000195"/>
</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-10T08:24:15.154353" elapsed="0.000115"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-10T08:24:15.154534" elapsed="0.004342"/>
</kw>
<arg>local_tcp</arg>
<status status="PASS" start="2026-04-10T08:23:40.974022" elapsed="34.184909"/>
</kw>
<tag>sub_crash_local_tcp</tag>
<status status="PASS" start="2026-04-10T08:23:40.973706" elapsed="34.185301"/>
</test>
<status status="PASS" start="2026-04-10T08:21:08.709637" elapsed="186.449877"/>
</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-10T08:24:15.161904" elapsed="0.000094"/>
</kw>
<kw name="Get Build Script Path" owner="GlobalPathsLibrary">
<msg time="2026-04-10T08:24:15.162111" 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-10T08:24:15.162053" elapsed="0.000070"/>
</kw>
<kw name="Get Network Name" owner="GlobalPathsLibrary">
<msg time="2026-04-10T08:24:15.162211" level="INFO">${net} = ecal_test_net</msg>
<var>${net}</var>
<status status="PASS" start="2026-04-10T08:24:15.162165" elapsed="0.000056"/>
</kw>
<kw name="Get Build Script Args" owner="GlobalPathsLibrary">
<msg time="2026-04-10T08:24:15.162303" level="INFO">${args} = ['sub_send_crash']</msg>
<var>${args}</var>
<status status="PASS" start="2026-04-10T08:24:15.162258" elapsed="0.000054"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-10T08:24:15.162529" 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-10T08:24:15.162362" elapsed="0.000186"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-10T08:24:15.162755" 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-10T08:24:15.162603" elapsed="0.000172"/>
</kw>
<kw name="Get Test Description" owner="GlobalPathsLibrary">
<msg time="2026-04-10T08:24:15.162933" 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-10T08:24:15.162822" elapsed="0.000123"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-10T08:24:15.163144" 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-10T08:24:15.162993" elapsed="0.000177"/>
</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-10T08:24:15.163219" elapsed="0.000112"/>
</kw>
<kw name="Run Process" owner="Process">
<msg time="2026-04-10T08:24:15.163551" 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-10T08:24:15.163858" level="INFO">Waiting for process to complete.</msg>
<msg time="2026-04-10T08:24:22.601147" level="INFO">Process completed.</msg>
<msg time="2026-04-10T08:24:22.601299" 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-10T08:24:15.163392" elapsed="7.437926"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-10T08:24:22.601985" 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-10T08:24:22.601459" elapsed="0.000569"/>
</kw>
<kw name="Create Docker Network" owner="DockerLibrary">
<arg>${NETWORK}</arg>
<status status="PASS" start="2026-04-10T08:24:22.602096" elapsed="0.007326"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-10T08:24:25.609791" 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-10T08:24:22.609513" elapsed="3.000387"/>
</kw>
<status status="PASS" start="2026-04-10T08:24:15.161800" elapsed="10.448180"/>
</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-10T08:24:25.610888" 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-10T08:24:25.610641" elapsed="0.000261"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-10T08:24:25.611092" 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-10T08:24:25.610958" elapsed="0.000146"/>
</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-10T08:24:25.611154" elapsed="0.000140"/>
</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-10T08:24:25.611354" elapsed="0.108908"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-10T08:25:00.721138" 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-10T08:24:25.720493" elapsed="35.000751"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-10T08:25:00.723881" 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)
1775809465719 ms | de5d7960f73c | large_publishe...</msg>
<var>${logs}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-10T08:25:00.721394" elapsed="0.002507"/>
</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-10T08:25:00.723970" elapsed="0.000237"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-10T08:25:00.724429" 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)
1775809465719 ms | de5d7960f73c | large_publisher | 7 | info | Using built-in local time plugin.
[Publisher] Prepared 50MB message.
[Publisher] Waiting for at least 2 subscriber(s) on topic: test_topic
[Publisher] Found 2 subscriber(s). Proceeding to send messages.
Shared memory monitoring is enabled (domain: ecal_mon - queue size: 1024)
1775809466720 ms | de5d7960f73c | 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
[Crash_Sub] Simulating crash after 2 seconds during active reception
[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)
1775809466720 ms | de5d7960f73c | 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-10T08:25:00.724285" elapsed="0.000175"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-10T08:25:00.725379" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-10T08:25:00.724512" elapsed="0.000885"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-10T08:25:00.725633" 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-10T08:25:00.725461" elapsed="0.000207"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-10T08:25:00.727253" 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)
1775809465719 ms | de5d7960f73c | large_publishe...</msg>
<var>${logs}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-10T08:25:00.725748" elapsed="0.001564"/>
</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-10T08:25:00.727373" elapsed="0.000109"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-10T08:25:00.727557" elapsed="0.004694"/>
</kw>
<arg>local_shm</arg>
<status status="PASS" start="2026-04-10T08:24:25.610450" elapsed="35.121851"/>
</kw>
<tag>crash_receive_local_shm</tag>
<status status="PASS" start="2026-04-10T08:24:25.610039" elapsed="35.122331"/>
</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-10T08:25:00.733305" 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-10T08:25:00.733130" elapsed="0.000190"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-10T08:25:00.733502" 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-10T08:25:00.733375" elapsed="0.000139"/>
</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-10T08:25:00.733562" elapsed="0.000137"/>
</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-10T08:25:00.733776" elapsed="0.114706"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-10T08:25:35.849054" 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-10T08:25:00.848641" elapsed="35.000522"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-10T08:25:35.851822" level="INFO">${logs} = [Entrypoint] Starting all processes locally in one container (mode local_tcp)
1775809500844 ms | aa48071cbadd | 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-10T08:25:35.849310" elapsed="0.002532"/>
</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-10T08:25:35.851915" elapsed="0.000238"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-10T08:25:35.852395" level="INFO">
[LOCAL TEST CONTAINER OUTPUT]
[Entrypoint] Starting all processes locally in one container (mode local_tcp)
1775809500844 ms | aa48071cbadd | 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
1775809502846 ms | aa48071cbadd | large_publisher | 7 | info | CTCPReaderLayer - TCPPubSub (Info) -Publisher :::0: Created publisher and waiting for clients.
1775809502846 ms | aa48071cbadd | large_publisher | 7 | info | CTCPReaderLayer - TCPPubSub (Info) -Publisher :::42917: Subscriber ::ffff:172.18.0.2:44648 has connected.
1775809502846 ms | aa48071cbadd | large_publisher | 7 | info | CTCPReaderLayer - TCPPubSub (Info) -Publisher :::42917: Subscriber ::ffff:172.18.0.2:44650 has connected.
[Publisher] Found 2 subscriber(s). Proceeding to send messages.
1775809501845 ms | aa48071cbadd | crash_send_sub | 14 | info | Using built-in local time plugin.
[Crash_Sub] Listening to topic 'test_topic' in mode 'local_tcp'
[Crash_Sub] Received 52428800 bytes
[Crash_Sub] Simulating crash after 2 seconds during active reception
[Publisher] Subscriber detected. Starting to send.
[Publisher] Send result: ✓, size: 52428800 bytes
[Publisher] Send result: ✓, size: 52428800 bytes
1775809505369 ms | aa48071cbadd | large_publisher | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -PublisherSession ::ffff:172.18.0.2:42917-&gt;?: Failed sending data: Broken pipe
[Publisher] Send result: ✓, size: 52428800 bytes
[Publisher] Finished sending.
1775809507375 ms | aa48071cbadd | large_publisher | 7 | error | CTCPReaderLayer - TCPPubSub (Error) -Publisher ?: Error while waiting for subsriber: Operation aborted.
1775809501845 ms | aa48071cbadd | 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)
1775809507376 ms | aa48071cbadd | test_sub | 13 | error | CTCPReaderLayer - TCPPubSub (Error) -SubscriberSession 172.18.0.2:44648-&gt;aa48071cbadd:42917: Error reading header length: End of file
1775809507376 ms | aa48071cbadd | test_sub | 13 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:44654: Failed connecting to publisher aa48071cbadd:42917: Connection refused
1775809507376 ms | aa48071cbadd | test_sub | 13 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:44656: Failed connecting to publisher aa48071cbadd:42917: Connection refused
1775809507376 ms | aa48071cbadd | test_sub | 13 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:44658: Failed connecting to publisher aa48071cbadd:42917: Connection refused
1775809507376 ms | aa48071cbadd | test_sub | 13 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:44670: Failed connecting to publisher aa48071cbadd:42917: Connection refused
1775809507376 ms | aa48071cbadd | test_sub | 13 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:44674: Failed connecting to publisher aa48071cbadd:42917: 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-10T08:25:35.852232" elapsed="0.000207"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-10T08:25:35.853305" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-10T08:25:35.852491" elapsed="0.000832"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-10T08:25:35.853543" 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-10T08:25:35.853382" elapsed="0.000192"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-10T08:25:35.855252" level="INFO">${logs} = [Entrypoint] Starting all processes locally in one container (mode local_tcp)
1775809500844 ms | aa48071cbadd | 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-10T08:25:35.853629" elapsed="0.001642"/>
</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-10T08:25:35.855330" elapsed="0.000106"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-10T08:25:35.855501" elapsed="0.004510"/>
</kw>
<arg>local_tcp</arg>
<status status="PASS" start="2026-04-10T08:25:00.732986" elapsed="35.127076"/>
</kw>
<tag>crash_receive_local_tcp</tag>
<status status="PASS" start="2026-04-10T08:25:00.732686" elapsed="35.127448"/>
</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-10T08:25:35.861167" 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-10T08:25:35.860996" elapsed="0.000186"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-10T08:25:35.861347" 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-10T08:25:35.861236" elapsed="0.000123"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-10T08:25:35.861525" 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-10T08:25:35.861406" elapsed="0.000132"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-10T08:25:35.861701" 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-10T08:25:35.861585" elapsed="0.000126"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-10T08:25:35.861917" 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-10T08:25:35.861789" elapsed="0.000139"/>
</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-10T08:25:35.861972" elapsed="0.000119"/>
</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-10T08:25:35.862157" elapsed="0.104655"/>
</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-10T08:25:35.966964" elapsed="0.094554"/>
</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-10T08:25:36.061707" elapsed="0.095829"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${SUB_OK}</arg>
<status status="PASS" start="2026-04-10T08:25:36.157694" elapsed="30.944049"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${SUB_CRASH}</arg>
<status status="PASS" start="2026-04-10T08:26:07.101941" elapsed="0.001716"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${PUBLISHER}</arg>
<status status="PASS" start="2026-04-10T08:26:07.103767" elapsed="0.001536"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-10T08:26:07.107358" level="INFO">${log1} = [Entrypoint] Starting stable subscriber in mode network_udp
1775809535968 ms | 4c77061eed4f | 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-10T08:26:07.105395" elapsed="0.001984"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-10T08:26:07.109157" level="INFO">${log2} = [Entrypoint] Starting crashing subscriber in mode network_udp
[Crash_Sub] Simulating crash after 2 seconds during active reception
1775809536062 ms | 2d18fc8ed1d2 | crash_send_sub | 7 | info | Using b...</msg>
<var>${log2}</var>
<arg>${SUB_CRASH}</arg>
<status status="PASS" start="2026-04-10T08:26:07.107443" elapsed="0.001735"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-10T08:26:07.110993" level="INFO">${log3} = [Entrypoint] Starting large publisher in mode network_udp
1775809536159 ms | a300c4bbcf1c | 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-10T08:26:07.109242" elapsed="0.001771"/>
</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-10T08:26:07.111081" elapsed="0.000236"/>
</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-10T08:26:07.111390" elapsed="0.000183"/>
</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-10T08:26:07.111645" elapsed="0.000202"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-10T08:26:07.112090" level="INFO">
[LOG: SUBSCRIBER]
[Entrypoint] Starting stable subscriber in mode network_udp
1775809535968 ms | 4c77061eed4f | 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-10T08:26:07.111924" elapsed="0.000198"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-10T08:26:07.112334" level="INFO">
[LOG: CRASH_SUBSCRIBER]
[Entrypoint] Starting crashing subscriber in mode network_udp
[Crash_Sub] Simulating crash after 2 seconds during active reception
1775809536062 ms | 2d18fc8ed1d2 | 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
./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-10T08:26:07.112190" elapsed="0.000172"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-10T08:26:07.112562" level="INFO">
[LOG: PUBLISHER]
[Entrypoint] Starting large publisher in mode network_udp
1775809536159 ms | a300c4bbcf1c | 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-10T08:26:07.112423" elapsed="0.000169"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-10T08:26:07.113365" level="INFO">${exit1} = 0</msg>
<var>${exit1}</var>
<arg>${SUB_OK}</arg>
<status status="PASS" start="2026-04-10T08:26:07.112655" elapsed="0.000760"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-10T08:26:07.113634" 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-10T08:26:07.113474" elapsed="0.000191"/>
</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-10T08:26:07.113718" elapsed="0.000126"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${SUB_OK}</arg>
<status status="PASS" start="2026-04-10T08:26:07.113914" elapsed="0.003870"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${SUB_CRASH}</arg>
<status status="PASS" start="2026-04-10T08:26:07.117851" elapsed="0.003805"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${PUBLISHER}</arg>
<status status="PASS" start="2026-04-10T08:26:07.121736" elapsed="0.003906"/>
</kw>
<arg>network_udp</arg>
<arg>network</arg>
<status status="PASS" start="2026-04-10T08:25:35.860841" elapsed="31.264851"/>
</kw>
<tag>crash_receive_network_udp</tag>
<status status="PASS" start="2026-04-10T08:25:35.860494" elapsed="31.265295"/>
</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-10T08:26:07.127256" 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-10T08:26:07.127081" elapsed="0.000190"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-10T08:26:07.127436" 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-10T08:26:07.127325" elapsed="0.000123"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-10T08:26:07.127613" 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-10T08:26:07.127495" elapsed="0.000130"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-10T08:26:07.127818" 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-10T08:26:07.127670" elapsed="0.000160"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-10T08:26:07.127992" 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-10T08:26:07.127876" elapsed="0.000127"/>
</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-10T08:26:07.128048" elapsed="0.000119"/>
</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-10T08:26:07.128235" elapsed="0.107940"/>
</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-10T08:26:07.236357" elapsed="0.412952"/>
</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-10T08:26:07.649458" elapsed="0.103017"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${SUB_OK}</arg>
<status status="PASS" start="2026-04-10T08:26:07.752625" elapsed="30.538657"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${SUB_CRASH}</arg>
<status status="PASS" start="2026-04-10T08:26:38.291491" elapsed="0.001970"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${PUBLISHER}</arg>
<status status="PASS" start="2026-04-10T08:26:38.293533" elapsed="0.000831"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-10T08:26:38.296273" level="INFO">${log1} = [Entrypoint] Starting stable subscriber in mode network_tcp
1775809567237 ms | 5ac937baebd6 | 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-10T08:26:38.294432" elapsed="0.001862"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-10T08:26:38.297931" level="INFO">${log2} = [Entrypoint] Starting crashing subscriber in mode network_tcp
1775809567651 ms | fcedda3d0fcf | 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-10T08:26:38.296356" elapsed="0.001594"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-10T08:26:38.299583" level="INFO">${log3} = [Entrypoint] Starting large publisher in mode network_tcp
1775809567754 ms | 8aa27287ec00 | 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-10T08:26:38.298011" elapsed="0.001591"/>
</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-10T08:26:38.299667" elapsed="0.000251"/>
</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-10T08:26:38.299989" elapsed="0.000178"/>
</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-10T08:26:38.300238" elapsed="0.000177"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-10T08:26:38.300645" level="INFO">
[LOG: SUBSCRIBER]
[Entrypoint] Starting stable subscriber in mode network_tcp
1775809567237 ms | 5ac937baebd6 | 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)
1775809573184 ms | 5ac937baebd6 | test_sub | 7 | error | CTCPReaderLayer - TCPPubSub (Error) -SubscriberSession 172.18.0.2:53168-&gt;8aa27287ec00:38449: Error reading header length: End of file
1775809573185 ms | 5ac937baebd6 | test_sub | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:46160: Failed connecting to publisher 8aa27287ec00:38449: Connection refused
1775809573185 ms | 5ac937baebd6 | test_sub | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:46166: Failed connecting to publisher 8aa27287ec00:38449: Connection refused
1775809573185 ms | 5ac937baebd6 | test_sub | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:46182: Failed connecting to publisher 8aa27287ec00:38449: Connection refused
1775809573186 ms | 5ac937baebd6 | test_sub | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:46188: Failed connecting to publisher 8aa27287ec00:38449: Connection refused
1775809573186 ms | 5ac937baebd6 | test_sub | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:46198: Failed connecting to publisher 8aa27287ec00:38449: 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-10T08:26:38.300486" elapsed="0.000264"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-10T08:26:38.300970" level="INFO">
[LOG: CRASH_SUBSCRIBER]
[Entrypoint] Starting crashing subscriber in mode network_tcp
1775809567651 ms | fcedda3d0fcf | 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-10T08:26:38.300819" elapsed="0.000179"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-10T08:26:38.301202" level="INFO">
[LOG: PUBLISHER]
[Entrypoint] Starting large publisher in mode network_tcp
1775809567754 ms | 8aa27287ec00 | 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
1775809568239 ms | 8aa27287ec00 | large_publisher | 7 | info | CTCPReaderLayer - TCPPubSub (Info) -Publisher :::0: Created publisher and waiting for clients.
1775809568240 ms | 8aa27287ec00 | large_publisher | 7 | info | CTCPReaderLayer - TCPPubSub (Info) -Publisher :::38449: Subscriber ::ffff:172.18.0.3:49888 has connected.
1775809568240 ms | 8aa27287ec00 | large_publisher | 7 | info | CTCPReaderLayer - TCPPubSub (Info) -Publisher :::38449: Subscriber ::ffff:172.18.0.2:53168 has connected.
[Publisher] Found 2 subscriber(s). Proceeding to send messages.
[Publisher] Subscriber detected. Starting to send.
[Publisher] Send result: ✓, size: 52428800 bytes
[Publisher] Send result: ✓, size: 52428800 bytes
1775809571178 ms | 8aa27287ec00 | large_publisher | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -PublisherSession ::ffff:172.18.0.4:38449-&gt;?: Failed sending data: Broken pipe
[Publisher] Send result: ✓, size: 52428800 bytes
[Publisher] Finished sending.
1775809573184 ms | 8aa27287ec00 | 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-10T08:26:38.301059" elapsed="0.000181"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-10T08:26:38.302098" level="INFO">${exit1} = 0</msg>
<var>${exit1}</var>
<arg>${SUB_OK}</arg>
<status status="PASS" start="2026-04-10T08:26:38.301301" elapsed="0.000818"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-10T08:26:38.302395" 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-10T08:26:38.302194" elapsed="0.000241"/>
</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-10T08:26:38.302509" elapsed="0.000128"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${SUB_OK}</arg>
<status status="PASS" start="2026-04-10T08:26:38.302700" elapsed="0.004081"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${SUB_CRASH}</arg>
<status status="PASS" start="2026-04-10T08:26:38.306846" elapsed="0.004328"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${PUBLISHER}</arg>
<status status="PASS" start="2026-04-10T08:26:38.311242" elapsed="0.004175"/>
</kw>
<arg>network_tcp</arg>
<arg>network</arg>
<status status="PASS" start="2026-04-10T08:26:07.126903" elapsed="31.188567"/>
</kw>
<tag>crash_receive_network_tcp</tag>
<status status="PASS" start="2026-04-10T08:26:07.126421" elapsed="31.189124"/>
</test>
<status status="PASS" start="2026-04-10T08:24:15.159977" elapsed="143.156196"/>
</suite>
<status status="PASS" start="2026-04-10T08:14:09.580044" elapsed="748.736649"/>
</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>
