<?xml version="1.0" encoding="UTF-8"?>
<robot generator="Robot 7.4.2 (Python 3.12.3 on linux)" generated="2026-04-09T07:10:56.667418" 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-09T07:10:56.803540" elapsed="0.000198"/>
</kw>
<kw name="Get Build Script Path" owner="GlobalPathsLibrary">
<msg time="2026-04-09T07:10:56.803968" 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-09T07:10:56.803852" elapsed="0.000142"/>
</kw>
<kw name="Get Network Name" owner="GlobalPathsLibrary">
<msg time="2026-04-09T07:10:56.804239" level="INFO">${net} = ecal_test_net</msg>
<var>${net}</var>
<status status="PASS" start="2026-04-09T07:10:56.804068" elapsed="0.000192"/>
</kw>
<kw name="Get Build Script Args" owner="GlobalPathsLibrary">
<msg time="2026-04-09T07:10:56.804416" level="INFO">${args} = ['basic_pub_sub']</msg>
<var>${args}</var>
<status status="PASS" start="2026-04-09T07:10:56.804327" elapsed="0.000107"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-09T07:10:56.804870" 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-09T07:10:56.804556" elapsed="0.000347"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-09T07:10:56.805220" 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-09T07:10:56.804989" elapsed="0.000261"/>
</kw>
<kw name="Get Test Description" owner="GlobalPathsLibrary">
<msg time="2026-04-09T07:10:56.805507" 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-09T07:10:56.805324" elapsed="0.000212"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-09T07:10:56.805808" 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-09T07:10:56.805616" elapsed="0.000225"/>
</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-09T07:10:56.805913" elapsed="0.000178"/>
</kw>
<kw name="Run Process" owner="Process">
<msg time="2026-04-09T07:10:56.806476" 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-09T07:10:56.806979" level="INFO">Waiting for process to complete.</msg>
<msg time="2026-04-09T07:11:12.000857" level="INFO">Process completed.</msg>
<msg time="2026-04-09T07:11:12.001023" 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-09T07:10:56.806201" elapsed="15.194847"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-09T07:11:12.001863" 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-09T07:11:12.001207" elapsed="0.000712"/>
</kw>
<kw name="Create Docker Network" owner="DockerLibrary">
<arg>${NETWORK}</arg>
<status status="PASS" start="2026-04-09T07:11:12.002008" elapsed="0.045469"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-09T07:11:15.048135" 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-09T07:11:12.047680" elapsed="3.000574"/>
</kw>
<status status="PASS" start="2026-04-09T07:10:56.803042" elapsed="18.245317"/>
</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-09T07:11:15.049683" 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-09T07:11:15.049336" elapsed="0.000369"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-09T07:11:15.049995" 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-09T07:11:15.049788" elapsed="0.000226"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>\n[INFO] Running local pub/sub test in mode: ${layer_tag}</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-09T07:11:15.050087" elapsed="0.000214"/>
</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-09T07:11:15.050371" elapsed="0.120482"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-09T07:11:24.171610" 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-09T07:11:15.171071" elapsed="9.000662"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-09T07:11:24.175022" level="INFO">${logs} = [Entrypoint] Starting subscriber and publisher in mode local_shm
Shared memory monitoring is enabled (domain: ecal_mon - queue size: 1024)
1775718675173 ms | 06bae4a53962 | pub_test | 7 | info | Using...</msg>
<var>${logs}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-09T07:11:24.171907" elapsed="0.003143"/>
</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-09T07:11:24.175158" elapsed="0.000318"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-09T07:11:24.175832" 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)
1775718675173 ms | 06bae4a53962 | 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)
1775718676174 ms | 06bae4a53962 | 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-09T07:11:24.175624" elapsed="0.000303"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-09T07:11:24.177172" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-09T07:11:24.176008" elapsed="0.001187"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-09T07:11:24.177541" 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-09T07:11:24.177277" elapsed="0.000318"/>
</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-09T07:11:24.177677" elapsed="0.000148"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-09T07:11:24.177916" elapsed="0.005413"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-09T07:11:25.183842" 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-09T07:11:24.183429" elapsed="1.000540"/>
</kw>
<arg>local_shm</arg>
<status status="PASS" start="2026-04-09T07:11:15.049088" elapsed="10.134987"/>
</kw>
<tag>basic_pub_sub_local_shm</tag>
<status status="PASS" start="2026-04-09T07:11:15.048446" elapsed="10.135783"/>
</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-09T07:11:25.186088" 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-09T07:11:25.185789" elapsed="0.000321"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-09T07:11:25.186388" 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-09T07:11:25.186188" elapsed="0.000218"/>
</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-09T07:11:25.186477" elapsed="0.000277"/>
</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-09T07:11:25.186856" elapsed="0.119165"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-09T07:11:34.306724" 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-09T07:11:25.306194" elapsed="9.000653"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-09T07:11:34.310567" level="INFO">${logs} = [Entrypoint] Starting subscriber and publisher in mode local_udp
1775718685307 ms | acaf7ad435c5 | 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-09T07:11:34.307025" elapsed="0.003573"/>
</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-09T07:11:34.310711" elapsed="0.000321"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-09T07:11:34.311397" level="INFO">
[CONTAINER LOG: LOCAL PUB+SUB]
[Entrypoint] Starting subscriber and publisher in mode local_udp
1775718685307 ms | acaf7ad435c5 | 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.
1775718686308 ms | acaf7ad435c5 | 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-09T07:11:34.311161" elapsed="0.000280"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-09T07:11:34.312660" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-09T07:11:34.311544" elapsed="0.001139"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-09T07:11:34.312988" 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-09T07:11:34.312764" elapsed="0.000270"/>
</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-09T07:11:34.313113" elapsed="0.000147"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-09T07:11:34.313345" elapsed="0.005014"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-09T07:11:35.318876" 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-09T07:11:34.318447" elapsed="1.000551"/>
</kw>
<arg>local_udp</arg>
<status status="PASS" start="2026-04-09T07:11:25.185512" elapsed="10.133583"/>
</kw>
<tag>basic_pub_sub_local_udp</tag>
<status status="PASS" start="2026-04-09T07:11:25.185028" elapsed="10.134219"/>
</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-09T07:11:35.320989" 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-09T07:11:35.320694" elapsed="0.000317"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-09T07:11:35.321367" 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-09T07:11:35.321159" elapsed="0.000227"/>
</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-09T07:11:35.321459" elapsed="0.000249"/>
</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-09T07:11:35.321806" elapsed="0.121126"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-09T07:11:44.443763" 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-09T07:11:35.443172" elapsed="9.000715"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-09T07:11:44.447235" level="INFO">${logs} = [Entrypoint] Starting subscriber and publisher in mode local_tcp
1775718695445 ms | 6fec9ae49956 | 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-09T07:11:44.444067" elapsed="0.003199"/>
</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-09T07:11:44.447391" elapsed="0.000371"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-09T07:11:44.448164" level="INFO">
[CONTAINER LOG: LOCAL PUB+SUB]
[Entrypoint] Starting subscriber and publisher in mode local_tcp
1775718695445 ms | 6fec9ae49956 | pub_test | 7 | info | Using built-in local time plugin.
[Publisher] Waiting for at least 1 subscriber(s) on topic: test_topic
1775718697447 ms | 6fec9ae49956 | pub_test | 7 | info | CTCPReaderLayer - TCPPubSub (Info) -Publisher :::0: Created publisher and waiting for clients.
1775718697447 ms | 6fec9ae49956 | pub_test | 7 | info | CTCPReaderLayer - TCPPubSub (Info) -Publisher :::37459: Subscriber ::ffff:172.17.0.3:39074 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.
1775718700949 ms | 6fec9ae49956 | pub_test | 7 | error | CTCPReaderLayer - TCPPubSub (Error) -Publisher ?: Error while waiting for subsriber: Operation aborted.
1775718696446 ms | 6fec9ae49956 | 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)
1775718700949 ms | 6fec9ae49956 | sub_test | 13 | error | CTCPReaderLayer - TCPPubSub (Error) -SubscriberSession 172.17.0.3:39074-&gt;6fec9ae49956:37459: Error reading header length: End of file
1775718700950 ms | 6fec9ae49956 | sub_test | 13 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.17.0.3:38916: Failed connecting to publisher 6fec9ae49956:37459: Connection refused
1775718700950 ms | 6fec9ae49956 | sub_test | 13 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.17.0.3:38930: Failed connecting to publisher 6fec9ae49956:37459: Connection refused
1775718700950 ms | 6fec9ae49956 | sub_test | 13 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.17.0.3:38942: Failed connecting to publisher 6fec9ae49956:37459: Connection refused
1775718700951 ms | 6fec9ae49956 | sub_test | 13 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.17.0.3:38946: Failed connecting to publisher 6fec9ae49956:37459: Connection refused
1775718700951 ms | 6fec9ae49956 | sub_test | 13 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.17.0.3:38954: Failed connecting to publisher 6fec9ae49956:37459: 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-09T07:11:44.447879" elapsed="0.000364"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-09T07:11:44.449605" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-09T07:11:44.448349" elapsed="0.001280"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-09T07:11:44.449943" 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-09T07:11:44.449714" elapsed="0.000275"/>
</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-09T07:11:44.450068" elapsed="0.000142"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-09T07:11:44.450306" elapsed="0.004975"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-09T07:11:45.455808" 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-09T07:11:44.455385" elapsed="1.000560"/>
</kw>
<arg>local_tcp</arg>
<status status="PASS" start="2026-04-09T07:11:35.320419" elapsed="10.135623"/>
</kw>
<tag>basic_pub_sub_local_tcp</tag>
<status status="PASS" start="2026-04-09T07:11:35.320002" elapsed="10.136174"/>
</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-09T07:11:45.457944" 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-09T07:11:45.457634" elapsed="0.000331"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-09T07:11:45.458239" 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-09T07:11:45.458041" elapsed="0.000222"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-09T07:11:45.458558" 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-09T07:11:45.458334" elapsed="0.000243"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-09T07:11:45.458836" 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-09T07:11:45.458648" elapsed="0.000205"/>
</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-09T07:11:45.458920" elapsed="0.000196"/>
</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-09T07:11:45.459210" elapsed="0.143471"/>
</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-09T07:11:45.602902" elapsed="0.128901"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-09T07:11:54.732554" 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-09T07:11:45.732023" elapsed="9.000652"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-09T07:11:54.735786" level="INFO">${log_sub} = [Entrypoint] Starting subscriber in mode network_udp
1775718705604 ms | 79bfc2f43521 | 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-09T07:11:54.732852" elapsed="0.002962"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-09T07:11:54.738118" level="INFO">${log_pub} = [Entrypoint] Starting publisher in mode network_udp
1775718705733 ms | f539cf29e0cd | 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-09T07:11:54.735925" elapsed="0.002219"/>
</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-09T07:11:54.738240" elapsed="0.000320"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-09T07:11:54.738943" level="INFO">
[CONTAINER LOG: PUBLISHER]
[Entrypoint] Starting publisher in mode network_udp
1775718705733 ms | f539cf29e0cd | 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-09T07:11:54.738673" elapsed="0.000325"/>
</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-09T07:11:54.739099" elapsed="0.000302"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-09T07:11:54.739780" level="INFO">
[CONTAINER LOG: SUBSCRIBER]
[Entrypoint] Starting subscriber in mode network_udp
1775718705604 ms | 79bfc2f43521 | 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-09T07:11:54.739537" elapsed="0.000290"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-09T07:11:54.740998" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${SUB_NAME}</arg>
<status status="PASS" start="2026-04-09T07:11:54.739924" elapsed="0.001097"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-09T07:11:54.741347" 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-09T07:11:54.741102" elapsed="0.000290"/>
</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-09T07:11:54.741471" elapsed="0.000177"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${SUB_NAME}</arg>
<status status="PASS" start="2026-04-09T07:11:54.741755" elapsed="0.005191"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${PUB_NAME}</arg>
<status status="PASS" start="2026-04-09T07:11:54.747052" elapsed="0.006109"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-09T07:11:55.753738" 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-09T07:11:54.753271" elapsed="1.000594"/>
</kw>
<arg>network_udp</arg>
<arg>network</arg>
<status status="PASS" start="2026-04-09T07:11:45.457345" elapsed="10.296618"/>
</kw>
<tag>basic_pub_sub_network_udp</tag>
<status status="PASS" start="2026-04-09T07:11:45.456914" elapsed="10.297189"/>
</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-09T07:11:55.756227" 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-09T07:11:55.755932" elapsed="0.000317"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-09T07:11:55.756559" 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-09T07:11:55.756328" elapsed="0.000250"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-09T07:11:55.756842" 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-09T07:11:55.756651" elapsed="0.000208"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-09T07:11:55.757111" 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-09T07:11:55.756928" elapsed="0.000200"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>\n[INFO] Running network pub/sub test in mode: ${layer_tag}</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-09T07:11:55.757197" elapsed="0.000193"/>
</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-09T07:11:55.757504" elapsed="0.137820"/>
</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-09T07:11:55.895579" elapsed="0.129032"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-09T07:12:05.025385" 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-09T07:11:56.024833" elapsed="9.000715"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-09T07:12:05.028976" level="INFO">${log_sub} = [Entrypoint] Starting subscriber in mode network_tcp
1775718715897 ms | 39c7ae9fb702 | 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-09T07:12:05.025731" elapsed="0.003275"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-09T07:12:05.031514" level="INFO">${log_pub} = [Entrypoint] Starting publisher in mode network_tcp
1775718716026 ms | 13ad2b932696 | 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-09T07:12:05.029179" elapsed="0.002366"/>
</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-09T07:12:05.031658" elapsed="0.000305"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-09T07:12:05.032300" level="INFO">
[CONTAINER LOG: PUBLISHER]
[Entrypoint] Starting publisher in mode network_tcp
1775718716026 ms | 13ad2b932696 | pub_network_tcp | 7 | info | Using built-in local time plugin.
[Publisher] Waiting for at least 1 subscriber(s) on topic: topic_network_tcp
1775718716898 ms | 13ad2b932696 | pub_network_tcp | 7 | info | CTCPReaderLayer - TCPPubSub (Info) -Publisher :::0: Created publisher and waiting for clients.
1775718716899 ms | 13ad2b932696 | pub_network_tcp | 7 | info | CTCPReaderLayer - TCPPubSub (Info) -Publisher :::45523: Subscriber ::ffff:172.18.0.2:44268 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.
1775718720429 ms | 13ad2b932696 | 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-09T07:12:05.032072" elapsed="0.000269"/>
</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-09T07:12:05.032417" elapsed="0.000256"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-09T07:12:05.032989" level="INFO">
[CONTAINER LOG: SUBSCRIBER]
[Entrypoint] Starting subscriber in mode network_tcp
1775718715897 ms | 39c7ae9fb702 | 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)
1775718720429 ms | 39c7ae9fb702 | sub_network_tcp | 7 | error | CTCPReaderLayer - TCPPubSub (Error) -SubscriberSession 172.18.0.2:44268-&gt;13ad2b932696:45523: Error reading header length: End of file
1775718720431 ms | 39c7ae9fb702 | sub_network_tcp | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:49204: Failed connecting to publisher 13ad2b932696:45523: Connection refused
1775718720431 ms | 39c7ae9fb702 | sub_network_tcp | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:49214: Failed connecting to publisher 13ad2b932696:45523: Connection refused
1775718720432 ms | 39c7ae9fb702 | sub_network_tcp | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:49228: Failed connecting to publisher 13ad2b932696:45523: Connection refused
1775718720433 ms | 39c7ae9fb702 | sub_network_tcp | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:49238: Failed connecting to publisher 13ad2b932696:45523: Connection refused
1775718720434 ms | 39c7ae9fb702 | sub_network_tcp | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:49254: Failed connecting to publisher 13ad2b932696:45523: 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-09T07:12:05.032787" elapsed="0.000241"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-09T07:12:05.034330" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${SUB_NAME}</arg>
<status status="PASS" start="2026-04-09T07:12:05.033102" elapsed="0.001260"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-09T07:12:05.034748" 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-09T07:12:05.034461" elapsed="0.000334"/>
</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-09T07:12:05.034877" elapsed="0.000140"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${SUB_NAME}</arg>
<status status="PASS" start="2026-04-09T07:12:05.035124" elapsed="0.004979"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${PUB_NAME}</arg>
<status status="PASS" start="2026-04-09T07:12:05.040209" elapsed="0.005141"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-09T07:12:06.045932" 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-09T07:12:05.045476" elapsed="1.000580"/>
</kw>
<arg>network_tcp</arg>
<arg>network</arg>
<status status="PASS" start="2026-04-09T07:11:55.755679" elapsed="10.290472"/>
</kw>
<tag>basic_pub_sub_network_tcp</tag>
<status status="PASS" start="2026-04-09T07:11:55.755181" elapsed="10.291105"/>
</test>
<status status="PASS" start="2026-04-09T07:10:56.695546" elapsed="69.352068"/>
</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-09T07:12:06.051198" elapsed="0.000145"/>
</kw>
<kw name="Get Build Script Path" owner="GlobalPathsLibrary">
<msg time="2026-04-09T07:12:06.051555" 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-09T07:12:06.051426" elapsed="0.000151"/>
</kw>
<kw name="Get Network Name" owner="GlobalPathsLibrary">
<msg time="2026-04-09T07:12:06.051729" level="INFO">${net} = ecal_test_net</msg>
<var>${net}</var>
<status status="PASS" start="2026-04-09T07:12:06.051646" elapsed="0.000101"/>
</kw>
<kw name="Get Build Script Args" owner="GlobalPathsLibrary">
<msg time="2026-04-09T07:12:06.051885" level="INFO">${args} = ['multi_pub_sub']</msg>
<var>${args}</var>
<status status="PASS" start="2026-04-09T07:12:06.051809" elapsed="0.000092"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-09T07:12:06.052225" 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-09T07:12:06.051976" elapsed="0.000279"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-09T07:12:06.052577" 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-09T07:12:06.052332" elapsed="0.000278"/>
</kw>
<kw name="Get Test Description" owner="GlobalPathsLibrary">
<msg time="2026-04-09T07:12:06.052898" 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-09T07:12:06.052724" elapsed="0.000196"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-09T07:12:06.053170" 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-09T07:12:06.052994" elapsed="0.000216"/>
</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-09T07:12:06.053281" elapsed="0.000172"/>
</kw>
<kw name="Run Process" owner="Process">
<msg time="2026-04-09T07:12:06.053827" 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-09T07:12:06.054270" level="INFO">Waiting for process to complete.</msg>
<msg time="2026-04-09T07:12:15.558863" level="INFO">Process completed.</msg>
<msg time="2026-04-09T07:12:15.559036" 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-09T07:12:06.053574" elapsed="9.505488"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-09T07:12:15.559897" 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-09T07:12:15.559232" elapsed="0.000718"/>
</kw>
<kw name="Create Docker Network" owner="DockerLibrary">
<arg>${NETWORK}</arg>
<status status="PASS" start="2026-04-09T07:12:15.560041" elapsed="0.007946"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-09T07:12:18.568576" 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-09T07:12:15.568170" elapsed="3.000518"/>
</kw>
<status status="PASS" start="2026-04-09T07:12:06.051043" elapsed="12.517732"/>
</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-09T07:12:18.570169" 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-09T07:12:18.569878" elapsed="0.000313"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-09T07:12:18.570477" 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-09T07:12:18.570275" elapsed="0.000252"/>
</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-09T07:12:18.570608" elapsed="0.000209"/>
</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-09T07:12:18.570905" elapsed="0.120055"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-09T07:12:36.691584" 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-09T07:12:18.691130" elapsed="18.000573"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-09T07:12:36.694883" level="INFO">${logs} = [Entrypoint] Starting local multi pub/sub test in mode local_udp
1775718738693 ms | f39fb7dc98ab | 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-09T07:12:36.691881" elapsed="0.003030"/>
</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-09T07:12:36.695021" elapsed="0.000312"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-09T07:12:36.695761" level="INFO">
[CONTAINER LOG: All Local Binarys Multi Pub/Sub]
[Entrypoint] Starting local multi pub/sub test in mode local_udp
1775718738693 ms | f39fb7dc98ab | multi_publisher | 7 | info | Using built-in local time plugin.
[Publisher] Waiting for at least 2 subscriber(s) on topic: test_topic
1775718738693 ms | f39fb7dc98ab | multi_publisher | 8 | info | Using built-in local time plugin.
[Publisher] Waiting for at least 2 subscriber(s) on topic: test_topic
1775718739695 ms | f39fb7dc98ab | multi_subscriber | 19 | info | Using built-in local time plugin.
[Subscriber 2] Waiting for messages...
1775718739695 ms | f39fb7dc98ab | 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-09T07:12:36.695448" elapsed="0.000363"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-09T07:12:36.697058" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-09T07:12:36.695891" elapsed="0.001190"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-09T07:12:36.697437" 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-09T07:12:36.697208" elapsed="0.000307"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-09T07:12:36.697601" elapsed="0.004815"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-09T07:12:37.702899" 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-09T07:12:36.702538" elapsed="1.000481"/>
</kw>
<arg>local_udp</arg>
<status status="PASS" start="2026-04-09T07:12:18.569325" elapsed="19.133789"/>
</kw>
<tag>multi_pub_sub_local_udp</tag>
<status status="PASS" start="2026-04-09T07:12:18.568842" elapsed="19.134403"/>
</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-09T07:12:37.704984" 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-09T07:12:37.704686" elapsed="0.000319"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-09T07:12:37.705254" 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-09T07:12:37.705084" elapsed="0.000188"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-09T07:12:37.705571" 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-09T07:12:37.705342" elapsed="0.000248"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-09T07:12:37.705861" 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-09T07:12:37.705670" elapsed="0.000209"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-09T07:12:37.706130" 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-09T07:12:37.705949" elapsed="0.000198"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-09T07:12:37.706396" 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-09T07:12:37.706214" elapsed="0.000199"/>
</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-09T07:12:37.706546" elapsed="0.000222"/>
</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-09T07:12:37.706872" elapsed="0.125849"/>
</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-09T07:12:37.832934" elapsed="0.120844"/>
</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-09T07:12:37.953946" elapsed="0.123098"/>
</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-09T07:12:38.077261" elapsed="0.123461"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-09T07:12:56.201467" 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-09T07:12:38.200950" elapsed="18.000675"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-09T07:12:56.204697" level="INFO">${log1} = [Entrypoint] Starting multi_subscriber in mode network_udp
1775718757834 ms | 6be5a939fa1f | 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-09T07:12:56.201803" elapsed="0.002922"/>
</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-09T07:12:56.204827" elapsed="0.000290"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-09T07:12:56.205455" level="INFO">
[CONTAINER LOG: SUBSCRIBER 1]
[Entrypoint] Starting multi_subscriber in mode network_udp
1775718757834 ms | 6be5a939fa1f | 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-09T07:12:56.205228" elapsed="0.000298"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-09T07:12:56.207967" level="INFO">${log2} = [Entrypoint] Starting multi_subscriber2 in mode network_udp
1775718757956 ms | 7d9738316366 | 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-09T07:12:56.205605" elapsed="0.002387"/>
</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-09T07:12:56.208078" elapsed="0.000236"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-09T07:12:56.208670" level="INFO">
[CONTAINER LOG: SUBSCRIBER 1]
[Entrypoint] Starting multi_subscriber2 in mode network_udp
1775718757956 ms | 7d9738316366 | 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-09T07:12:56.208425" elapsed="0.000285"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${SUB1}</arg>
<status status="PASS" start="2026-04-09T07:12:56.208786" elapsed="0.001039"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${SUB2}</arg>
<status status="PASS" start="2026-04-09T07:12:56.209907" elapsed="0.000954"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${PUB1}</arg>
<status status="PASS" start="2026-04-09T07:12:56.210946" elapsed="0.001019"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${PUB2}</arg>
<status status="PASS" start="2026-04-09T07:12:56.212052" elapsed="0.001059"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-09T07:12:56.214086" level="INFO">${exit1} = 0</msg>
<var>${exit1}</var>
<arg>${SUB1}</arg>
<status status="PASS" start="2026-04-09T07:12:56.213196" elapsed="0.000913"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-09T07:12:56.215091" level="INFO">${exit2} = 0</msg>
<var>${exit2}</var>
<arg>${SUB2}</arg>
<status status="PASS" start="2026-04-09T07:12:56.214191" elapsed="0.000924"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-09T07:12:56.215435" 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-09T07:12:56.215204" elapsed="0.000305"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-09T07:12:56.215799" 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-09T07:12:56.215599" elapsed="0.000241"/>
</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-09T07:12:56.215916" elapsed="0.000145"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${SUB1}</arg>
<status status="PASS" start="2026-04-09T07:12:56.216170" elapsed="0.005016"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${SUB2}</arg>
<status status="PASS" start="2026-04-09T07:12:56.221286" elapsed="0.005337"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${PUB1}</arg>
<status status="PASS" start="2026-04-09T07:12:56.226732" elapsed="0.005075"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${PUB2}</arg>
<status status="PASS" start="2026-04-09T07:12:56.231904" elapsed="0.005077"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-09T07:12:57.237492" 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-09T07:12:56.237082" elapsed="1.000572"/>
</kw>
<arg>network_udp</arg>
<arg>network</arg>
<status status="PASS" start="2026-04-09T07:12:37.704411" elapsed="19.533341"/>
</kw>
<tag>multi_pub_sub_network_udp</tag>
<status status="PASS" start="2026-04-09T07:12:37.703940" elapsed="19.533945"/>
</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-09T07:12:57.240120" 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-09T07:12:57.239838" elapsed="0.000303"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-09T07:12:57.240389" 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-09T07:12:57.240218" elapsed="0.000189"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-09T07:12:57.240700" 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-09T07:12:57.240475" elapsed="0.000243"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-09T07:12:57.240972" 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-09T07:12:57.240788" elapsed="0.000201"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-09T07:12:57.241237" 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-09T07:12:57.241057" elapsed="0.000197"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-09T07:12:57.241524" 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-09T07:12:57.241319" elapsed="0.000224"/>
</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-09T07:12:57.241611" elapsed="0.000206"/>
</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-09T07:12:57.241908" elapsed="0.143960"/>
</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-09T07:12:57.386036" elapsed="0.121153"/>
</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-09T07:12:57.507358" elapsed="0.119506"/>
</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-09T07:12:57.627085" elapsed="0.120262"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-09T07:13:15.748140" 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-09T07:12:57.747567" elapsed="18.000696"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-09T07:13:15.751467" level="INFO">${log1} = [Entrypoint] Starting multi_subscriber in mode network_tcp
1775718777387 ms | ffb06fdf84a3 | 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-09T07:13:15.748447" elapsed="0.003079"/>
</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-09T07:13:15.751654" elapsed="0.000326"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-09T07:13:15.752330" level="INFO">
[CONTAINER LOG: SUBSCRIBER 1]
[Entrypoint] Starting multi_subscriber in mode network_tcp
1775718777387 ms | ffb06fdf84a3 | multi_subscriber | 7 | info | Using built-in local time plugin.
[Subscriber 1] Waiting for messages...

1775718790534 ms | ffb06fdf84a3 | multi_subscriber | 7 | error | CTCPReaderLayer - TCPPubSub (Error) -SubscriberSession 172.18.0.2:32796-&gt;2db0609d9338:36393: Error reading header length: End of file
1775718790535 ms | ffb06fdf84a3 | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:45238: Failed connecting to publisher 2db0609d9338:36393: Connection refused
1775718790536 ms | ffb06fdf84a3 | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:45240: Failed connecting to publisher 2db0609d9338:36393: Connection refused
1775718790536 ms | ffb06fdf84a3 | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:45248: Failed connecting to publisher 2db0609d9338:36393: Connection refused
1775718790537 ms | ffb06fdf84a3 | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:45264: Failed connecting to publisher 2db0609d9338:36393: Connection refused
1775718790538 ms | ffb06fdf84a3 | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:45270: Failed connecting to publisher 2db0609d9338:36393: Connection refused
1775718790552 ms | ffb06fdf84a3 | multi_subscriber | 7 | error | CTCPReaderLayer - TCPPubSub (Error) -SubscriberSession 172.18.0.2:43784-&gt;b2c48f29451d:45199: Error reading header length: End of file
1775718790553 ms | ffb06fdf84a3 | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:46388: Failed connecting to publisher b2c48f29451d:45199: Connection refused
1775718790554 ms | ffb06fdf84a3 | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:46392: Failed connecting to publisher b2c48f29451d:45199: Connection refused
1775718790555 ms | ffb06fdf84a3 | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:46406: Failed connecting to publisher b2c48f29451d:45199: Connection refused
1775718790556 ms | ffb06fdf84a3 | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:46420: Failed connecting to publisher b2c48f29451d:45199: Connection refused
1775718790557 ms | ffb06fdf84a3 | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:46428: Failed connecting to publisher b2c48f29451d:45199: 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-09T07:13:15.752088" elapsed="0.000359"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-09T07:13:15.755002" level="INFO">${log2} = [Entrypoint] Starting multi_subscriber2 in mode network_tcp
1775718777509 ms | a6e271072f68 | 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-09T07:13:15.752564" elapsed="0.002464"/>
</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-09T07:13:15.755121" elapsed="0.000284"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-09T07:13:15.755883" level="INFO">
[CONTAINER LOG: SUBSCRIBER 1]
[Entrypoint] Starting multi_subscriber2 in mode network_tcp
1775718777509 ms | a6e271072f68 | multi_subscriber | 7 | info | Using built-in local time plugin.
[Subscriber 2] Waiting for messages...
1775718790534 ms | a6e271072f68 | multi_subscriber | 7 | error | CTCPReaderLayer - TCPPubSub (Error) -SubscriberSession 172.18.0.3:55188-&gt;2db0609d9338:36393: Error reading header length: End of file
1775718790535 ms | a6e271072f68 | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.3:39532: Failed connecting to publisher 2db0609d9338:36393: Connection refused
1775718790536 ms | a6e271072f68 | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.3:39538: Failed connecting to publisher 2db0609d9338:36393: Connection refused
1775718790536 ms | a6e271072f68 | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.3:39554: Failed connecting to publisher 2db0609d9338:36393: Connection refused
1775718790537 ms | a6e271072f68 | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.3:39560: Failed connecting to publisher 2db0609d9338:36393: Connection refused
1775718790538 ms | a6e271072f68 | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.3:39576: Failed connecting to publisher 2db0609d9338:36393: Connection refused
1775718790552 ms | a6e271072f68 | multi_subscriber | 7 | error | CTCPReaderLayer - TCPPubSub (Error) -SubscriberSession 172.18.0.3:57488-&gt;b2c48f29451d:45199: Error reading header length: End of file
1775718790554 ms | a6e271072f68 | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.3:35560: Failed connecting to publisher b2c48f29451d:45199: Connection refused
1775718790554 ms | a6e271072f68 | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.3:35568: Failed connecting to publisher b2c48f29451d:45199: Connection refused
1775718790555 ms | a6e271072f68 | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.3:35574: Failed connecting to publisher b2c48f29451d:45199: Connection refused
1775718790556 ms | a6e271072f68 | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.3:35584: Failed connecting to publisher b2c48f29451d:45199: Connection refused
1775718790557 ms | a6e271072f68 | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.3:35586: Failed connecting to publisher b2c48f29451d:45199: 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-09T07:13:15.755550" elapsed="0.000425"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${SUB1}</arg>
<status status="PASS" start="2026-04-09T07:13:15.756077" elapsed="0.001120"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${SUB2}</arg>
<status status="PASS" start="2026-04-09T07:13:15.757282" elapsed="0.001022"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${PUB1}</arg>
<status status="PASS" start="2026-04-09T07:13:15.758386" elapsed="0.000962"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${PUB2}</arg>
<status status="PASS" start="2026-04-09T07:13:15.759430" elapsed="0.001027"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-09T07:13:15.761461" level="INFO">${exit1} = 0</msg>
<var>${exit1}</var>
<arg>${SUB1}</arg>
<status status="PASS" start="2026-04-09T07:13:15.760574" elapsed="0.000947"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-09T07:13:15.762513" level="INFO">${exit2} = 0</msg>
<var>${exit2}</var>
<arg>${SUB2}</arg>
<status status="PASS" start="2026-04-09T07:13:15.761609" elapsed="0.000934"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-09T07:13:15.762911" 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-09T07:13:15.762664" elapsed="0.000295"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-09T07:13:15.763400" 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-09T07:13:15.763041" elapsed="0.000403"/>
</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-09T07:13:15.763568" elapsed="0.000153"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${SUB1}</arg>
<status status="PASS" start="2026-04-09T07:13:15.763816" elapsed="0.005229"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${SUB2}</arg>
<status status="PASS" start="2026-04-09T07:13:15.769158" elapsed="0.005171"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${PUB1}</arg>
<status status="PASS" start="2026-04-09T07:13:15.774450" elapsed="0.005250"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${PUB2}</arg>
<status status="PASS" start="2026-04-09T07:13:15.779820" elapsed="0.005250"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-09T07:13:16.785609" 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-09T07:13:15.785187" elapsed="1.000546"/>
</kw>
<arg>network_tcp</arg>
<arg>network</arg>
<status status="PASS" start="2026-04-09T07:12:57.239596" elapsed="19.546233"/>
</kw>
<tag>multi_pub_sub_network_tcp</tag>
<status status="PASS" start="2026-04-09T07:12:57.239113" elapsed="19.546851"/>
</test>
<status status="PASS" start="2026-04-09T07:12:06.048419" elapsed="70.738741"/>
</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-09T07:13:16.790661" elapsed="0.000139"/>
</kw>
<kw name="Get Build Script Path" owner="GlobalPathsLibrary">
<msg time="2026-04-09T07:13:16.790970" 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-09T07:13:16.790880" elapsed="0.000109"/>
</kw>
<kw name="Get Network Name" owner="GlobalPathsLibrary">
<msg time="2026-04-09T07:13:16.791127" level="INFO">${net} = ecal_test_net</msg>
<var>${net}</var>
<status status="PASS" start="2026-04-09T07:13:16.791052" elapsed="0.000092"/>
</kw>
<kw name="Get Build Script Args" owner="GlobalPathsLibrary">
<msg time="2026-04-09T07:13:16.791278" level="INFO">${args} = ['network_crash']</msg>
<var>${args}</var>
<status status="PASS" start="2026-04-09T07:13:16.791204" elapsed="0.000091"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-09T07:13:16.791659" 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-09T07:13:16.791369" elapsed="0.000322"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-09T07:13:16.791977" 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-09T07:13:16.791769" elapsed="0.000236"/>
</kw>
<kw name="Get Test Description" owner="GlobalPathsLibrary">
<msg time="2026-04-09T07:13:16.792251" 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-09T07:13:16.792075" elapsed="0.000199"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-09T07:13:16.792538" 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-09T07:13:16.792345" elapsed="0.000233"/>
</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-09T07:13:16.792647" elapsed="0.000159"/>
</kw>
<kw name="Run Process" owner="Process">
<msg time="2026-04-09T07:13:16.793149" 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-09T07:13:16.793594" level="INFO">Waiting for process to complete.</msg>
<msg time="2026-04-09T07:13:25.861066" level="INFO">Process completed.</msg>
<msg time="2026-04-09T07:13:25.861239" 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-09T07:13:16.792905" elapsed="9.068359"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-09T07:13:25.862088" 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-09T07:13:25.861421" elapsed="0.000722"/>
</kw>
<kw name="Create Docker Network" owner="DockerLibrary">
<arg>${NETWORK}</arg>
<status status="PASS" start="2026-04-09T07:13:25.862241" elapsed="0.007679"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-09T07:13:27.870474" 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-09T07:13:25.870077" elapsed="2.000668"/>
</kw>
<status status="PASS" start="2026-04-09T07:13:16.790466" elapsed="11.080379"/>
</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-09T07:13:27.872277" 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-09T07:13:27.871988" elapsed="0.000311"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-09T07:13:27.872586" 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-09T07:13:27.872381" elapsed="0.000224"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-09T07:13:27.872848" 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-09T07:13:27.872680" elapsed="0.000186"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-09T07:13:27.873103" 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-09T07:13:27.872937" elapsed="0.000184"/>
</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-09T07:13:27.873192" elapsed="0.000197"/>
</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-09T07:13:27.873525" elapsed="0.131035"/>
</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-09T07:13:28.004786" elapsed="0.120787"/>
</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-09T07:13:28.125813" elapsed="0.000385"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-09T07:13:35.126741" 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-09T07:13:28.126309" elapsed="7.000554"/>
</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-09T07:13:35.127041" elapsed="0.000371"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-09T07:13:35.130391" level="INFO">${log_net} = [Entrypoint] Starting network UDP publisher...
1775718808127 ms | e9f959aea51e | 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-09T07:13:35.127585" elapsed="0.002834"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-09T07:13:35.130815" level="INFO">
[LOG: NETWORK UDP PUB2 CONTAINER]
[Entrypoint] Starting network UDP publisher...
1775718808127 ms | e9f959aea51e | 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-09T07:13:35.130561" elapsed="0.000291"/>
</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-09T07:13:35.131233" elapsed="0.000234"/>
</kw>
<kw name="Run Process" owner="Process">
<msg time="2026-04-09T07:13:35.132067" level="INFO">Starting process:
docker network disconnect ecal_test_net udp_network_pub</msg>
<msg time="2026-04-09T07:13:35.132625" level="INFO">Waiting for process to complete.</msg>
<msg time="2026-04-09T07:13:35.173199" level="INFO">Process completed.</msg>
<msg time="2026-04-09T07:13:35.173389" 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-09T07:13:35.131613" elapsed="0.041801"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-09T07:13:35.174641" 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-09T07:13:35.173653" elapsed="0.001062"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-09T07:13:36.175311" 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-09T07:13:35.174845" elapsed="1.000597"/>
</kw>
<arg>${NET_PUB}</arg>
<arg>${NETWORK}</arg>
<status status="PASS" start="2026-04-09T07:13:35.130990" elapsed="1.044588"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-09T07:14:09.176186" 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-09T07:13:36.175734" elapsed="33.000574"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-09T07:14:09.179626" level="INFO">${log_local} = [Entrypoint] Starting UDP subscriber, then UDP publisher...
1775718808004 ms | eee131e8f412 | 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-09T07:14:09.176521" elapsed="0.003131"/>
</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-09T07:14:09.179750" elapsed="0.000295"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-09T07:14:09.180411" level="INFO">
[LOG: LOCAL UDP PUB + SUB + PUB3 CONTAINER]
[Entrypoint] Starting UDP subscriber, then UDP publisher...
1775718808004 ms | eee131e8f412 | 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.
1775718808005 ms | eee131e8f412 | 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...
1775718819006 ms | eee131e8f412 | local_udp_pub_2_udp_local_all | 19 | info | Using built-in local time plugin.
[Publisher] Waiting for at least 1 subscriber(s) on topic: test_topic
[Publisher] Found 1 subscriber(s). Proceeding to send messages.
[Subscriber] Received: 42
[Subscriber] Received: 42
[Subscriber] Received: 44
[Subscriber] Received: 42
[Subscriber] Received: 44
[Subscriber] Received: 42
[Subscriber] Received: 44
[Subscriber] Received: 42
[Subscriber] Received: 44
[Subscriber] Received: 42
[Subscriber] Received: 44
[Subscriber] Received: 42
[Subscriber] Received: 44
[Subscriber] Received: 42
[Subscriber] Received: 44
[Subscriber] Received: 42
[Subscriber] Received: 44
[Subscriber] Received: 42
[Subscriber] Received: 44
[Subscriber] Received: 42
[Subscriber] Received: 44
[Subscriber] Received: 42
[Subscriber] Received: 44
[Subscriber] Received: 42
[Subscriber] Received: 44
[Subscriber] Received: 42
[Subscriber] Received: 44
[Subscriber] Received: 42
[Subscriber] Received: 44
[Subscriber] Received: 42
[Subscriber] Received: 44

=== Message Summary ===

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


[✓] All expected messages received: local before and after crash, and network.
[Entrypoint] Subscriber exited with code 0
</msg>
<arg>\n[LOG: LOCAL UDP PUB + SUB + PUB3 CONTAINER]\n${log_local}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-09T07:14:09.180143" elapsed="0.000436"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${LOCAL_ALL}</arg>
<status status="PASS" start="2026-04-09T07:14:09.180686" elapsed="0.001264"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-09T07:14:09.183024" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${LOCAL_ALL}</arg>
<status status="PASS" start="2026-04-09T07:14:09.182039" elapsed="0.001009"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-09T07:14:09.183360" 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-09T07:14:09.183132" elapsed="0.000273"/>
</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-09T07:14:09.183517" elapsed="0.000124"/>
</kw>
<status status="PASS" start="2026-04-09T07:13:27.871511" elapsed="41.312201"/>
</kw>
<tag>network_crash_test</tag>
<status status="PASS" start="2026-04-09T07:13:27.870921" elapsed="41.312901"/>
</test>
<status status="PASS" start="2026-04-09T07:13:16.787879" elapsed="52.396625"/>
</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-09T07:14:09.187708" elapsed="0.000140"/>
</kw>
<kw name="Get Build Script Path" owner="GlobalPathsLibrary">
<msg time="2026-04-09T07:14:09.188018" 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-09T07:14:09.187930" elapsed="0.000108"/>
</kw>
<kw name="Get Network Name" owner="GlobalPathsLibrary">
<msg time="2026-04-09T07:14:09.188178" level="INFO">${net} = ecal_test_net</msg>
<var>${net}</var>
<status status="PASS" start="2026-04-09T07:14:09.188103" elapsed="0.000093"/>
</kw>
<kw name="Get Build Script Args" owner="GlobalPathsLibrary">
<msg time="2026-04-09T07:14:09.188330" level="INFO">${args} = ['pub_crash']</msg>
<var>${args}</var>
<status status="PASS" start="2026-04-09T07:14:09.188257" elapsed="0.000090"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-09T07:14:09.188693" 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-09T07:14:09.188422" elapsed="0.000302"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-09T07:14:09.189010" 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-09T07:14:09.188803" elapsed="0.000236"/>
</kw>
<kw name="Get Test Description" owner="GlobalPathsLibrary">
<msg time="2026-04-09T07:14:09.189258" 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-09T07:14:09.189110" elapsed="0.000168"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-09T07:14:09.189543" 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-09T07:14:09.189348" elapsed="0.000228"/>
</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-09T07:14:09.189646" elapsed="0.000163"/>
</kw>
<kw name="Run Process" owner="Process">
<msg time="2026-04-09T07:14:09.190150" 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-09T07:14:09.190583" level="INFO">Waiting for process to complete.</msg>
<msg time="2026-04-09T07:14:18.461915" level="INFO">Process completed.</msg>
<msg time="2026-04-09T07:14:18.462095" 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-09T07:14:09.189911" elapsed="9.272209"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-09T07:14:18.463046" 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-09T07:14:18.462371" elapsed="0.000730"/>
</kw>
<kw name="Create Docker Network" owner="DockerLibrary">
<arg>${NETWORK}</arg>
<status status="PASS" start="2026-04-09T07:14:18.463194" elapsed="0.007846"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-09T07:14:21.471587" 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-09T07:14:18.471207" elapsed="3.000492"/>
</kw>
<status status="PASS" start="2026-04-09T07:14:09.187568" elapsed="12.284216"/>
</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-09T07:14:21.473236" 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-09T07:14:21.472930" elapsed="0.000327"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-09T07:14:21.473543" 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-09T07:14:21.473339" elapsed="0.000223"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-09T07:14:21.473840" 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-09T07:14:21.473636" elapsed="0.000223"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-09T07:14:21.474130" 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-09T07:14:21.473933" elapsed="0.000215"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-09T07:14:21.474409" 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-09T07:14:21.474222" elapsed="0.000204"/>
</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-09T07:14:21.474523" elapsed="0.000232"/>
</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-09T07:14:21.474859" elapsed="0.128773"/>
</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-09T07:14:21.603847" elapsed="0.122895"/>
</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-09T07:14:21.726920" elapsed="0.125807"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-09T07:14:56.853348" 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-09T07:14:21.852902" elapsed="35.000569"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-09T07:14:56.856572" level="INFO">${sub_logs} = [Entrypoint] Starting crash subscriber in mode network_udp
1775718861606 ms | 2acfdd2f4d47 | ./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-09T07:14:56.853687" elapsed="0.002914"/>
</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-09T07:14:56.856699" elapsed="0.000300"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-09T07:14:56.857334" level="INFO">
[SUBSCRIBER CONTAINER OUTPUT]
[Entrypoint] Starting crash subscriber in mode network_udp
1775718861606 ms | 2acfdd2f4d47 | ./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-09T07:14:56.857107" elapsed="0.000271"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-09T07:14:56.859716" level="INFO">${crash_logs} = [Entrypoint] Starting crash publisher in mode network_udp
1775718861728 ms | 95a701369366 | ./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-09T07:14:56.857453" elapsed="0.002287"/>
</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-09T07:14:56.859824" elapsed="0.000236"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-09T07:14:56.860372" level="INFO">
[CRASH PUBLISHER OUTPUT]
[Entrypoint] Starting crash publisher in mode network_udp
1775718861728 ms | 95a701369366 | ./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-09T07:14:56.860167" elapsed="0.000286"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${SUB_NAME}</arg>
<status status="PASS" start="2026-04-09T07:14:56.860557" elapsed="0.001031"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${CRASH_PUB}</arg>
<status status="PASS" start="2026-04-09T07:14:56.861671" elapsed="0.000997"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${TEST_PUB}</arg>
<status status="PASS" start="2026-04-09T07:14:56.862752" elapsed="0.000960"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-09T07:14:56.864665" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${SUB_NAME}</arg>
<status status="PASS" start="2026-04-09T07:14:56.863796" elapsed="0.000892"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-09T07:14:56.865005" 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-09T07:14:56.864779" elapsed="0.000272"/>
</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-09T07:14:56.865133" elapsed="0.000139"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${SUB_NAME}</arg>
<status status="PASS" start="2026-04-09T07:14:56.865367" elapsed="0.004870"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${CRASH_PUB}</arg>
<status status="PASS" start="2026-04-09T07:14:56.870321" elapsed="0.004871"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${TEST_PUB}</arg>
<status status="PASS" start="2026-04-09T07:14:56.875277" elapsed="0.004768"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-09T07:14:57.880492" 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-09T07:14:56.880133" elapsed="1.000520"/>
</kw>
<arg>network_udp</arg>
<arg>network</arg>
<status status="PASS" start="2026-04-09T07:14:21.472381" elapsed="36.408381"/>
</kw>
<tag>pub_crash_network_udp</tag>
<status status="PASS" start="2026-04-09T07:14:21.471848" elapsed="36.409067"/>
</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-09T07:14:57.883371" 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-09T07:14:57.882970" elapsed="0.000429"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-09T07:14:57.883789" 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-09T07:14:57.883532" elapsed="0.000283"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-09T07:14:57.884188" 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-09T07:14:57.883914" elapsed="0.000302"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-09T07:14:57.884603" 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-09T07:14:57.884313" elapsed="0.000314"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-09T07:14:57.884996" 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-09T07:14:57.884732" elapsed="0.000293"/>
</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-09T07:14:57.885107" elapsed="0.000270"/>
</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-09T07:14:57.885472" elapsed="0.144269"/>
</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-09T07:14:58.029909" elapsed="0.120655"/>
</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-09T07:14:58.150730" elapsed="0.124587"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-09T07:15:33.276128" 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-09T07:14:58.275577" elapsed="35.000668"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-09T07:15:33.279534" level="INFO">${sub_logs} = [Entrypoint] Starting crash subscriber in mode network_tcp
1775718898032 ms | 0b54ac8ba07d | ./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-09T07:15:33.276416" elapsed="0.003146"/>
</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-09T07:15:33.279662" elapsed="0.000308"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-09T07:15:33.280376" level="INFO">
[SUBSCRIBER CONTAINER OUTPUT]
[Entrypoint] Starting crash subscriber in mode network_tcp
1775718898032 ms | 0b54ac8ba07d | ./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
1775718909071 ms | 0b54ac8ba07d | ./test_subscriber | 7 | error | CTCPReaderLayer - TCPPubSub (Error) -SubscriberSession 172.18.0.2:35804-&gt;60f4f3dba99c:40159: Error reading header length: End of file
1775718909072 ms | 0b54ac8ba07d | ./test_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:39754: Failed connecting to publisher 60f4f3dba99c:40159: Connection refused
1775718909073 ms | 0b54ac8ba07d | ./test_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:39760: Failed connecting to publisher 60f4f3dba99c:40159: Connection refused
1775718909075 ms | 0b54ac8ba07d | ./test_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:39768: Failed connecting to publisher 60f4f3dba99c:40159: Connection refused
1775718909075 ms | 0b54ac8ba07d | ./test_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:39778: Failed connecting to publisher 60f4f3dba99c:40159: Connection refused
1775718909077 ms | 0b54ac8ba07d | ./test_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:39784: Failed connecting to publisher 60f4f3dba99c:40159: 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
1775718925583 ms | 0b54ac8ba07d | ./test_subscriber | 7 | error | CTCPReaderLayer - TCPPubSub (Error) -SubscriberSession 172.18.0.2:48294-&gt;5845f1905b4a:42859: Error reading header length: End of file
1775718925584 ms | 0b54ac8ba07d | ./test_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:39904: Failed connecting to publisher 5845f1905b4a:42859: Connection refused
1775718925585 ms | 0b54ac8ba07d | ./test_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:39908: Failed connecting to publisher 5845f1905b4a:42859: Connection refused
1775718925585 ms | 0b54ac8ba07d | ./test_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:39912: Failed connecting to publisher 5845f1905b4a:42859: Connection refused
1775718925587 ms | 0b54ac8ba07d | ./test_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:39918: Failed connecting to publisher 5845f1905b4a:42859: Connection refused
1775718925589 ms | 0b54ac8ba07d | ./test_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:39922: Failed connecting to publisher 5845f1905b4a:42859: 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-09T07:15:33.280079" elapsed="0.000480"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-09T07:15:33.283290" level="INFO">${crash_logs} = [Entrypoint] Starting crash publisher in mode network_tcp
1775718898151 ms | 60f4f3dba99c | ./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-09T07:15:33.280655" elapsed="0.002667"/>
</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-09T07:15:33.283432" elapsed="0.000359"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-09T07:15:33.284162" level="INFO">
[CRASH PUBLISHER OUTPUT]
[Entrypoint] Starting crash publisher in mode network_tcp
1775718898151 ms | 60f4f3dba99c | ./crash_publisher | 7 | info | Using built-in local time plugin.
[Publisher] Waiting for at least 1 subscriber(s) on topic: test_topic
1775718899033 ms | 60f4f3dba99c | ./crash_publisher | 7 | info | CTCPReaderLayer - TCPPubSub (Info) -Publisher :::0: Created publisher and waiting for clients.
1775718899034 ms | 60f4f3dba99c | ./crash_publisher | 7 | info | CTCPReaderLayer - TCPPubSub (Info) -Publisher :::40159: Subscriber ::ffff:172.18.0.2:35804 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-09T07:15:33.283901" elapsed="0.000314"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${SUB_NAME}</arg>
<status status="PASS" start="2026-04-09T07:15:33.284309" elapsed="0.001374"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${CRASH_PUB}</arg>
<status status="PASS" start="2026-04-09T07:15:33.285791" elapsed="0.001220"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${TEST_PUB}</arg>
<status status="PASS" start="2026-04-09T07:15:33.287118" elapsed="0.001052"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-09T07:15:33.289116" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${SUB_NAME}</arg>
<status status="PASS" start="2026-04-09T07:15:33.288256" elapsed="0.000883"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-09T07:15:33.289451" 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-09T07:15:33.289220" elapsed="0.000314"/>
</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-09T07:15:33.289618" elapsed="0.000142"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${SUB_NAME}</arg>
<status status="PASS" start="2026-04-09T07:15:33.289868" elapsed="0.005036"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${CRASH_PUB}</arg>
<status status="PASS" start="2026-04-09T07:15:33.294990" elapsed="0.005120"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${TEST_PUB}</arg>
<status status="PASS" start="2026-04-09T07:15:33.300228" elapsed="0.004954"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-09T07:15:34.305677" 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-09T07:15:33.305274" elapsed="1.000548"/>
</kw>
<arg>network_tcp</arg>
<arg>network</arg>
<status status="PASS" start="2026-04-09T07:14:57.882650" elapsed="36.423289"/>
</kw>
<tag>pub_crash_network_tcp</tag>
<status status="PASS" start="2026-04-09T07:14:57.882038" elapsed="36.424048"/>
</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-09T07:15:34.308102" 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-09T07:15:34.307821" elapsed="0.000302"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-09T07:15:34.308394" 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-09T07:15:34.308200" elapsed="0.000212"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>\nStarting local test container with ${layer_tag}</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-09T07:15:34.308501" elapsed="0.000207"/>
</kw>
<kw name="Start Container" owner="DockerLibrary">
<arg>${CONTAINER}</arg>
<arg>${IMAGE}</arg>
<arg>local_all</arg>
<arg>${layer_tag}</arg>
<status status="PASS" start="2026-04-09T07:15:34.308812" elapsed="0.146723"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-09T07:16:09.456133" 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-09T07:15:34.455699" elapsed="35.000555"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-09T07:16:09.459707" 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)
1775718934425 ms | 87e964725534 | test_publisher | 8 | in...</msg>
<var>${logs}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-09T07:16:09.456433" elapsed="0.003302"/>
</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-09T07:16:09.459851" elapsed="0.000328"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-09T07:16:09.460601" 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)
1775718934425 ms | 87e964725534 | 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)
1775718934425 ms | 87e964725534 | ./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)
1775718935427 ms | 87e964725534 | ./test_subscriber | 18 | info | Using built-in local time plugin.

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

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

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

[✓] Communication continued after crash!

[✓] One Publisher crashed and no more messages received from the crashed publisher!
./entrypoint.sh: line 55:     7 Aborted                 (core dumped) ./crash_publisher $ARGS
</msg>
<arg>\n\n[CONTAINER LOG: LOCAL PUB+SUB]\n\n${logs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-09T07:16:09.460288" elapsed="0.000418"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-09T07:16:09.461932" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-09T07:16:09.460815" elapsed="0.001140"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-09T07:16:09.462260" 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-09T07:16:09.462039" elapsed="0.000266"/>
</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-09T07:16:09.462432" elapsed="0.000192"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-09T07:16:09.462717" elapsed="0.004880"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-09T07:16:10.468037" 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-09T07:16:09.467682" elapsed="1.000473"/>
</kw>
<arg>local_shm</arg>
<status status="PASS" start="2026-04-09T07:15:34.307593" elapsed="36.160661"/>
</kw>
<tag>pub_crash_local_shm</tag>
<status status="PASS" start="2026-04-09T07:15:34.307132" elapsed="36.161250"/>
</test>
<status status="PASS" start="2026-04-09T07:14:09.185064" elapsed="121.284027"/>
</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-09T07:16:10.472404" elapsed="0.000182"/>
</kw>
<kw name="Get Build Script Path" owner="GlobalPathsLibrary">
<msg time="2026-04-09T07:16:10.472759" 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-09T07:16:10.472669" elapsed="0.000110"/>
</kw>
<kw name="Get Network Name" owner="GlobalPathsLibrary">
<msg time="2026-04-09T07:16:10.472919" level="INFO">${net} = ecal_test_net</msg>
<var>${net}</var>
<status status="PASS" start="2026-04-09T07:16:10.472843" elapsed="0.000093"/>
</kw>
<kw name="Get Build Script Args" owner="GlobalPathsLibrary">
<msg time="2026-04-09T07:16:10.473071" level="INFO">${args} = ['rpc_n_to_n_test']</msg>
<var>${args}</var>
<status status="PASS" start="2026-04-09T07:16:10.472997" elapsed="0.000090"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-09T07:16:10.473512" 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-09T07:16:10.473189" elapsed="0.000364"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-09T07:16:10.473848" 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-09T07:16:10.473634" elapsed="0.000243"/>
</kw>
<kw name="Get Test Description" owner="GlobalPathsLibrary">
<msg time="2026-04-09T07:16:10.474103" 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-09T07:16:10.473948" elapsed="0.000175"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-09T07:16:10.474363" 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-09T07:16:10.474195" elapsed="0.000200"/>
</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-09T07:16:10.474462" elapsed="0.000209"/>
</kw>
<kw name="Run Process" owner="Process">
<msg time="2026-04-09T07:16:10.475012" 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-09T07:16:10.475414" level="INFO">Waiting for process to complete.</msg>
<msg time="2026-04-09T07:16:18.624730" level="INFO">Process completed.</msg>
<msg time="2026-04-09T07:16:18.624894" 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-09T07:16:10.474772" elapsed="8.150147"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-09T07:16:18.626786" 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-09T07:16:18.625072" elapsed="0.001768"/>
</kw>
<kw name="Create Docker Network" owner="DockerLibrary">
<arg>${NETWORK}</arg>
<status status="PASS" start="2026-04-09T07:16:18.626928" elapsed="0.007268"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-09T07:16:20.634715" 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-09T07:16:18.634303" elapsed="2.000528"/>
</kw>
<status status="PASS" start="2026-04-09T07:16:10.472259" elapsed="10.162663"/>
</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-09T07:16:20.636067" 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-09T07:16:20.635801" elapsed="0.000287"/>
</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-09T07:16:20.636164" elapsed="0.000222"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-09T07:16:20.637030" 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-09T07:16:20.636793" elapsed="0.000259"/>
</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-09T07:16:20.637123" elapsed="0.133438"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-04-09T07:16:20.636694" elapsed="0.133934"/>
</iter>
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-09T07:16:20.771185" 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-09T07:16:20.770875" elapsed="0.000332"/>
</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-09T07:16:20.771338" elapsed="0.134132"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-04-09T07:16:20.770766" elapsed="0.134808"/>
</iter>
<var>${i}</var>
<value>${NUM_SERVERS}</value>
<status status="PASS" start="2026-04-09T07:16:20.636442" elapsed="0.269173"/>
</for>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-09T07:16:22.906169" 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-09T07:16:20.905748" elapsed="2.000537"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-09T07:16:22.907107" 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-09T07:16:22.906791" elapsed="0.000337"/>
</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-09T07:16:22.907208" elapsed="0.123919"/>
</kw>
<var name="${j}">0</var>
<status status="PASS" start="2026-04-09T07:16:22.906684" elapsed="0.124510"/>
</iter>
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-09T07:16:23.031778" 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-09T07:16:23.031427" elapsed="0.000374"/>
</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-09T07:16:23.031881" elapsed="0.122306"/>
</kw>
<var name="${j}">1</var>
<status status="PASS" start="2026-04-09T07:16:23.031322" elapsed="0.122950"/>
</iter>
<var>${j}</var>
<value>${NUM_CLIENTS}</value>
<status status="PASS" start="2026-04-09T07:16:22.906398" elapsed="0.247918"/>
</for>
<for flavor="IN RANGE">
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-09T07:16:23.155256" 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-09T07:16:23.154853" elapsed="0.000436"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-09T07:16:24.590739" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${name}</arg>
<status status="PASS" start="2026-04-09T07:16:23.155417" elapsed="1.435366"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-09T07:16:24.591536" 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-09T07:16:24.591054" elapsed="0.000554"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-09T07:16:24.596638" level="INFO">${logs} = [Entrypoint] Starting client in mode network_udp...
[Client] Initializing eCAL with mode: network_udp
1775718983032 ms | 703b3b1234ab | rpc_client | 1 | info | Using built-in local time plugin.
[Clien...</msg>
<var>${logs}</var>
<arg>${name}</arg>
<status status="PASS" start="2026-04-09T07:16:24.591723" elapsed="0.004955"/>
</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-09T07:16:24.596800" elapsed="0.000301"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-09T07:16:24.597586" level="INFO">
[CLIENT LOG: rpc_client_0]
[Entrypoint] Starting client in mode network_udp...
[Client] Initializing eCAL with mode: network_udp
1775718983032 ms | 703b3b1234ab | 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-09T07:16:24.597220" elapsed="0.000423"/>
</kw>
<var name="${j}">0</var>
<status status="PASS" start="2026-04-09T07:16:23.154718" elapsed="1.442965"/>
</iter>
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-09T07:16:24.598254" 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-09T07:16:24.597913" elapsed="0.000370"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-09T07:16:24.714656" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${name}</arg>
<status status="PASS" start="2026-04-09T07:16:24.598396" elapsed="0.116357"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-09T07:16:24.715370" 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-09T07:16:24.714933" elapsed="0.000533"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-09T07:16:24.719758" level="INFO">${logs} = [Entrypoint] Starting client in mode network_udp...
[Client] Initializing eCAL with mode: network_udp
1775718983155 ms | d937117c112b | rpc_client | 1 | info | Using built-in local time plugin.
[Clien...</msg>
<var>${logs}</var>
<arg>${name}</arg>
<status status="PASS" start="2026-04-09T07:16:24.715642" elapsed="0.004149"/>
</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-09T07:16:24.719890" elapsed="0.000432"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-09T07:16:24.720810" level="INFO">
[CLIENT LOG: rpc_client_1]
[Entrypoint] Starting client in mode network_udp...
[Client] Initializing eCAL with mode: network_udp
1775718983155 ms | d937117c112b | 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-09T07:16:24.720448" elapsed="0.000420"/>
</kw>
<var name="${j}">1</var>
<status status="PASS" start="2026-04-09T07:16:24.597822" elapsed="0.123090"/>
</iter>
<var>${j}</var>
<value>${NUM_CLIENTS}</value>
<status status="PASS" start="2026-04-09T07:16:23.154397" elapsed="1.566560"/>
</for>
<for flavor="IN RANGE">
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-09T07:16:24.721941" 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-09T07:16:24.721367" elapsed="0.000604"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-09T07:16:24.724797" level="INFO">${logs} = [Entrypoint] Starting server in mode network_udp...
[1;33m[Server] Initializing eCAL with mode: network_udp[0m
1775718980772 ms | 27990a081593 | 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-09T07:16:24.722089" elapsed="0.002735"/>
</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-09T07:16:24.724978" elapsed="0.000267"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-09T07:16:24.725650" level="INFO">
[SERVER LOG: rpc_server_0]
[Entrypoint] Starting server in mode network_udp...
[1;33m[Server] Initializing eCAL with mode: network_udp[0m
1775718980772 ms | 27990a081593 | 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-09T07:16:24.725349" elapsed="0.000363"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${name}</arg>
<status status="PASS" start="2026-04-09T07:16:24.725824" elapsed="10.086190"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-04-09T07:16:24.721269" elapsed="10.090806"/>
</iter>
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-09T07:16:34.812665" 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-09T07:16:34.812322" elapsed="0.000366"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-09T07:16:34.815191" level="INFO">${logs} = [Entrypoint] Starting server in mode network_udp...
[1;33m[Server] Initializing eCAL with mode: network_udp[0m
1775718980907 ms | 91578982cb08 | 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-09T07:16:34.812770" elapsed="0.002448"/>
</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-09T07:16:34.815304" elapsed="0.000343"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-09T07:16:34.815983" level="INFO">
[SERVER LOG: rpc_server_1]
[Entrypoint] Starting server in mode network_udp...
[1;33m[Server] Initializing eCAL with mode: network_udp[0m
1775718980907 ms | 91578982cb08 | 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-09T07:16:34.815762" elapsed="0.000260"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${name}</arg>
<status status="PASS" start="2026-04-09T07:16:34.816096" elapsed="10.085078"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-04-09T07:16:34.812211" elapsed="10.089022"/>
</iter>
<var>${i}</var>
<value>${NUM_SERVERS}</value>
<status status="PASS" start="2026-04-09T07:16:24.721031" elapsed="20.180236"/>
</for>
<for flavor="IN RANGE">
<iter>
<kw name="Stop Container" owner="DockerLibrary">
<arg>rpc_client_${j}</arg>
<status status="PASS" start="2026-04-09T07:16:44.901663" elapsed="0.005255"/>
</kw>
<var name="${j}">0</var>
<status status="PASS" start="2026-04-09T07:16:44.901565" elapsed="0.005392"/>
</iter>
<iter>
<kw name="Stop Container" owner="DockerLibrary">
<arg>rpc_client_${j}</arg>
<status status="PASS" start="2026-04-09T07:16:44.907119" elapsed="0.005003"/>
</kw>
<var name="${j}">1</var>
<status status="PASS" start="2026-04-09T07:16:44.907041" elapsed="0.005116"/>
</iter>
<var>${j}</var>
<value>${NUM_CLIENTS}</value>
<status status="PASS" start="2026-04-09T07:16:44.901335" elapsed="0.010850"/>
</for>
<kw name="Log Test Summary" owner="DockerLibrary">
<arg>RPC N-to-N Test</arg>
<arg>${True}</arg>
<status status="PASS" start="2026-04-09T07:16:44.912280" elapsed="0.000145"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-09T07:16:45.913082" 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-09T07:16:44.912640" elapsed="1.000558"/>
</kw>
<status status="PASS" start="2026-04-09T07:16:20.635594" elapsed="25.277698"/>
</kw>
<tag>rpc_n_to_n_test</tag>
<status status="PASS" start="2026-04-09T07:16:20.634992" elapsed="25.278427"/>
</test>
<status status="PASS" start="2026-04-09T07:16:10.469667" elapsed="35.444794"/>
</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-09T07:16:45.917923" elapsed="0.000158"/>
</kw>
<kw name="Get Build Script Path" owner="GlobalPathsLibrary">
<msg time="2026-04-09T07:16:45.918257" 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-09T07:16:45.918165" elapsed="0.000111"/>
</kw>
<kw name="Get Network Name" owner="GlobalPathsLibrary">
<msg time="2026-04-09T07:16:45.918419" level="INFO">${net} = ecal_test_net</msg>
<var>${net}</var>
<status status="PASS" start="2026-04-09T07:16:45.918342" elapsed="0.000094"/>
</kw>
<kw name="Get Build Script Args" owner="GlobalPathsLibrary">
<msg time="2026-04-09T07:16:45.918620" level="INFO">${args} = ['rpc_ping_test']</msg>
<var>${args}</var>
<status status="PASS" start="2026-04-09T07:16:45.918533" elapsed="0.000105"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-09T07:16:45.918965" 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-09T07:16:45.918716" elapsed="0.000280"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-09T07:16:45.919283" 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-09T07:16:45.919075" elapsed="0.000236"/>
</kw>
<kw name="Get Test Description" owner="GlobalPathsLibrary">
<msg time="2026-04-09T07:16:45.919562" 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-09T07:16:45.919382" elapsed="0.000201"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-09T07:16:45.919826" 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-09T07:16:45.919657" elapsed="0.000201"/>
</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-09T07:16:45.919985" elapsed="0.000174"/>
</kw>
<kw name="Run Process" owner="Process">
<msg time="2026-04-09T07:16:45.920555" 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-09T07:16:45.920961" level="INFO">Waiting for process to complete.</msg>
<msg time="2026-04-09T07:16:54.324256" level="INFO">Process completed.</msg>
<msg time="2026-04-09T07:16:54.324427" 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-09T07:16:45.920275" elapsed="8.404178"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-09T07:16:54.325268" 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-09T07:16:54.324652" elapsed="0.000669"/>
</kw>
<kw name="Create Docker Network" owner="DockerLibrary">
<arg>${NETWORK}</arg>
<status status="PASS" start="2026-04-09T07:16:54.325412" elapsed="0.007489"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-09T07:16:56.333466" 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-09T07:16:54.333050" elapsed="2.000575"/>
</kw>
<status status="PASS" start="2026-04-09T07:16:45.917730" elapsed="10.416000"/>
</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-09T07:16:56.335096" 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-09T07:16:56.334818" elapsed="0.000299"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-09T07:16:56.335372" 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-09T07:16:56.335196" elapsed="0.000194"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-09T07:16:56.335655" 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-09T07:16:56.335462" elapsed="0.000211"/>
</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-09T07:16:56.335745" elapsed="0.000171"/>
</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-09T07:16:56.335988" elapsed="0.131164"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-09T07:16:57.467897" 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-09T07:16:56.467357" elapsed="1.000661"/>
</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-09T07:16:57.468178" elapsed="0.126374"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-09T07:16:59.155521" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${CLIENT_NAME}</arg>
<status status="PASS" start="2026-04-09T07:16:57.594777" elapsed="1.560801"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-09T07:16:59.156172" 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-09T07:16:59.155772" elapsed="0.000484"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-09T07:16:59.158876" level="INFO">${server_logs} = [Entrypoint] Starting server in mode network_udp...
[1;33m[Server] Initializing eCAL with mode: network_udp[0m
1775719016468 ms | 3298a6d9af2a | 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-09T07:16:59.156389" elapsed="0.002518"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-09T07:16:59.161542" level="INFO">${client_logs} = [Entrypoint] Starting client in mode network_udp...
[1;33m[Client] Initializing eCAL with mode: network_udp[0m
1775719017596 ms | fe05633ced99 | 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-09T07:16:59.159014" elapsed="0.002558"/>
</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-09T07:16:59.161670" elapsed="0.000299"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-09T07:16:59.162283" level="INFO">
[CONTAINER LOG: SERVER]
[Entrypoint] Starting server in mode network_udp...
[1;33m[Server] Initializing eCAL with mode: network_udp[0m
1775719016468 ms | 3298a6d9af2a | 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-09T07:16:59.162083" elapsed="0.000237"/>
</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-09T07:16:59.162397" elapsed="0.000267"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-09T07:16:59.162948" level="INFO">
[CONTAINER LOG: CLIENT]
[Entrypoint] Starting client in mode network_udp...
[1;33m[Client] Initializing eCAL with mode: network_udp[0m
1775719017596 ms | fe05633ced99 | 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-09T07:16:59.162762" elapsed="0.000238"/>
</kw>
<kw name="Log Test Summary" owner="DockerLibrary">
<arg>RPC Ping Test (UDP)</arg>
<arg>${True}</arg>
<status status="PASS" start="2026-04-09T07:16:59.163092" elapsed="0.000124"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${CLIENT_NAME}</arg>
<status status="PASS" start="2026-04-09T07:16:59.163292" elapsed="0.005267"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${SERVER_NAME}</arg>
<status status="PASS" start="2026-04-09T07:16:59.168660" elapsed="10.083457"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-09T07:17:10.252829" 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-09T07:17:09.252316" elapsed="1.000634"/>
</kw>
<status status="PASS" start="2026-04-09T07:16:56.334296" elapsed="13.918824"/>
</kw>
<tag>rpc_server_client_ping_test</tag>
<status status="PASS" start="2026-04-09T07:16:56.333804" elapsed="13.919444"/>
</test>
<status status="PASS" start="2026-04-09T07:16:45.915087" elapsed="24.339159"/>
</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-09T07:17:10.257554" elapsed="0.000162"/>
</kw>
<kw name="Get Build Script Path" owner="GlobalPathsLibrary">
<msg time="2026-04-09T07:17:10.257892" 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-09T07:17:10.257801" elapsed="0.000110"/>
</kw>
<kw name="Get Build Script Args" owner="GlobalPathsLibrary">
<msg time="2026-04-09T07:17:10.258054" level="INFO">${args} = ['rpc_reconnect_test']</msg>
<var>${args}</var>
<status status="PASS" start="2026-04-09T07:17:10.257977" elapsed="0.000094"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-09T07:17:10.258393" 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-09T07:17:10.258149" elapsed="0.000275"/>
</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-09T07:17:10.258517" elapsed="0.065538"/>
</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-09T07:17:10.324240" elapsed="0.000309"/>
</kw>
<kw name="Run Process" owner="Process">
<msg time="2026-04-09T07:17:10.324966" 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-09T07:17:10.325305" level="INFO">Waiting for process to complete.</msg>
<msg time="2026-04-09T07:17:18.503364" level="INFO">Process completed.</msg>
<msg time="2026-04-09T07:17:18.503583" 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-09T07:17:10.324674" elapsed="8.178937"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-09T07:17:18.504352" 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-09T07:17:18.503763" elapsed="0.000640"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-09T07:17:21.504858" 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-09T07:17:18.504516" elapsed="3.000459"/>
</kw>
<status status="PASS" start="2026-04-09T07:17:10.257350" elapsed="11.247711"/>
</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-09T07:17:21.505826" elapsed="0.000289"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-09T07:17:21.506530" 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-09T07:17:21.506229" elapsed="0.000335"/>
</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-09T07:17:21.506647" elapsed="0.145958"/>
</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-09T07:17:21.652770" elapsed="0.133554"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-09T07:17:23.786926" 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-09T07:17:21.786529" elapsed="2.000508"/>
</kw>
<kw name="Disconnect Container From Network" owner="DockerLibrary">
<arg>rpc_client</arg>
<arg>${NETWORK}</arg>
<status status="PASS" start="2026-04-09T07:17:23.787187" elapsed="0.036044"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-09T07:17:29.823918" 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-09T07:17:23.823426" elapsed="6.000614"/>
</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-09T07:17:29.824216" elapsed="0.010892"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-09T07:17:31.835862" 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-09T07:17:29.835302" elapsed="2.000699"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-09T07:17:31.839054" level="INFO">${log_cli} = [Entrypoint] Starting client in mode network_udp...
[Client] Initializing eCAL with mode: network_udp
1775719041760 ms | 64f5a61370fe | 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-09T07:17:31.836190" elapsed="0.002892"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-09T07:17:31.841375" level="INFO">${log_srv} = [Entrypoint] Starting server in mode network_udp...
[1;33m[Server] Initializing eCAL with mode: network_udp[0m
1775719041625 ms | 4cf42f103f20 | 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-09T07:17:31.839184" elapsed="0.002217"/>
</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-09T07:17:31.841517" elapsed="0.000296"/>
</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-09T07:17:31.841910" elapsed="0.000249"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-09T07:17:31.842565" level="INFO">
[CONTAINER LOG: CLIENT]
[Entrypoint] Starting client in mode network_udp...
[Client] Initializing eCAL with mode: network_udp
1775719041760 ms | 64f5a61370fe | 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-09T07:17:31.842271" elapsed="0.000405"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-09T07:17:31.842981" level="INFO">
[CONTAINER LOG: SERVER]
[Entrypoint] Starting server in mode network_udp...
[1;33m[Server] Initializing eCAL with mode: network_udp[0m
1775719041625 ms | 4cf42f103f20 | 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-09T07:17:31.842783" elapsed="0.000234"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-09T07:17:31.844095" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>rpc_client</arg>
<status status="PASS" start="2026-04-09T07:17:31.843092" elapsed="0.001025"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-09T07:17:31.844418" 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-09T07:17:31.844197" elapsed="0.000265"/>
</kw>
<kw name="Log Test Summary" owner="DockerLibrary">
<arg>RPC Reconnect Test</arg>
<arg>${True}</arg>
<status status="PASS" start="2026-04-09T07:17:31.844577" elapsed="0.000116"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>rpc_client</arg>
<status status="PASS" start="2026-04-09T07:17:31.844785" elapsed="0.004892"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>rpc_server</arg>
<status status="PASS" start="2026-04-09T07:17:31.849768" elapsed="10.117658"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-09T07:17:42.968044" 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-09T07:17:41.967621" elapsed="1.000538"/>
</kw>
<status status="PASS" start="2026-04-09T07:17:21.505615" elapsed="21.462623"/>
</kw>
<tag>rpc_reconnect</tag>
<status status="PASS" start="2026-04-09T07:17:21.505127" elapsed="21.463220"/>
</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-09T07:17:42.969788" elapsed="0.000238"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-09T07:17:42.970425" 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-09T07:17:42.970142" elapsed="0.000303"/>
</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-09T07:17:42.970540" elapsed="0.151364"/>
</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-09T07:17:43.122081" elapsed="0.140449"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-09T07:17:45.263100" 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-09T07:17:43.262701" elapsed="2.000521"/>
</kw>
<kw name="Disconnect Container From Network" owner="DockerLibrary">
<arg>rpc_server</arg>
<arg>${NETWORK}</arg>
<status status="PASS" start="2026-04-09T07:17:45.263391" elapsed="0.026059"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-09T07:17:51.290209" 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-09T07:17:45.289686" elapsed="6.000641"/>
</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-09T07:17:51.290544" elapsed="0.012199"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-09T07:17:53.303360" 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-09T07:17:51.302949" elapsed="2.000559"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-09T07:17:53.306333" level="INFO">${log_cli} = [Entrypoint] Starting client in mode network_udp...
[Client] Initializing eCAL with mode: network_udp
1775719063234 ms | 254c42bdacfa | 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-09T07:17:53.303684" elapsed="0.002675"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-09T07:17:53.308531" level="INFO">${log_srv} = [Entrypoint] Starting server in mode network_udp...
[1;33m[Server] Initializing eCAL with mode: network_udp[0m
1775719063095 ms | a892de8d8086 | 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-09T07:17:53.306458" elapsed="0.002102"/>
</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-09T07:17:53.308649" elapsed="0.000282"/>
</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-09T07:17:53.309032" elapsed="0.000245"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-09T07:17:53.309620" level="INFO">
[CONTAINER LOG: CLIENT]
[Entrypoint] Starting client in mode network_udp...
[Client] Initializing eCAL with mode: network_udp
1775719063234 ms | 254c42bdacfa | 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-09T07:17:53.309388" elapsed="0.000268"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-09T07:17:53.309904" level="INFO">
[CONTAINER LOG: SERVER]
[Entrypoint] Starting server in mode network_udp...
[1;33m[Server] Initializing eCAL with mode: network_udp[0m
1775719063095 ms | a892de8d8086 | 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-09T07:17:53.309731" elapsed="0.000252"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-09T07:17:53.311079" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>rpc_client</arg>
<status status="PASS" start="2026-04-09T07:17:53.310057" elapsed="0.001045"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-09T07:17:53.311402" 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-09T07:17:53.311182" elapsed="0.000265"/>
</kw>
<kw name="Log Test Summary" owner="DockerLibrary">
<arg>RPC Reconnect Test</arg>
<arg>${True}</arg>
<status status="PASS" start="2026-04-09T07:17:53.311561" elapsed="0.000119"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>rpc_client</arg>
<status status="PASS" start="2026-04-09T07:17:53.311772" elapsed="0.005554"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>rpc_server</arg>
<status status="PASS" start="2026-04-09T07:17:53.317412" elapsed="10.121537"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-09T07:18:04.439548" 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-09T07:18:03.439105" elapsed="1.000562"/>
</kw>
<status status="PASS" start="2026-04-09T07:17:42.969587" elapsed="21.470173"/>
</kw>
<tag>rpc_reconnect</tag>
<status status="PASS" start="2026-04-09T07:17:42.969164" elapsed="21.470725"/>
</test>
<status status="PASS" start="2026-04-09T07:17:10.254876" elapsed="54.186199"/>
</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-09T07:18:04.444425" elapsed="0.000173"/>
</kw>
<kw name="Get Build Script Path" owner="GlobalPathsLibrary">
<msg time="2026-04-09T07:18:04.444775" 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-09T07:18:04.444683" elapsed="0.000112"/>
</kw>
<kw name="Get Network Name" owner="GlobalPathsLibrary">
<msg time="2026-04-09T07:18:04.444946" level="INFO">${net} = ecal_test_net</msg>
<var>${net}</var>
<status status="PASS" start="2026-04-09T07:18:04.444865" elapsed="0.000099"/>
</kw>
<kw name="Get Build Script Args" owner="GlobalPathsLibrary">
<msg time="2026-04-09T07:18:04.445111" level="INFO">${args} = ['sub_crash']</msg>
<var>${args}</var>
<status status="PASS" start="2026-04-09T07:18:04.445027" elapsed="0.000101"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-09T07:18:04.445461" 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-09T07:18:04.445207" elapsed="0.000316"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-09T07:18:04.445823" 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-09T07:18:04.445607" elapsed="0.000244"/>
</kw>
<kw name="Get Test Description" owner="GlobalPathsLibrary">
<msg time="2026-04-09T07:18:04.446079" 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-09T07:18:04.445922" elapsed="0.000176"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-09T07:18:04.446341" 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-09T07:18:04.446169" elapsed="0.000204"/>
</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-09T07:18:04.446442" elapsed="0.000219"/>
</kw>
<kw name="Run Process" owner="Process">
<msg time="2026-04-09T07:18:04.446999" 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-09T07:18:04.447436" level="INFO">Waiting for process to complete.</msg>
<msg time="2026-04-09T07:18:13.995599" level="INFO">Process completed.</msg>
<msg time="2026-04-09T07:18:13.995777" 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-09T07:18:04.446765" elapsed="9.549036"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-09T07:18:13.996632" 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-09T07:18:13.995972" elapsed="0.000714"/>
</kw>
<kw name="Create Docker Network" owner="DockerLibrary">
<arg>${NETWORK}</arg>
<status status="PASS" start="2026-04-09T07:18:13.996780" elapsed="0.007554"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-09T07:18:17.004969" 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-09T07:18:14.004569" elapsed="3.000508"/>
</kw>
<status status="PASS" start="2026-04-09T07:18:04.444271" elapsed="12.560887"/>
</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-09T07:18:17.006591" 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-09T07:18:17.006273" elapsed="0.000339"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-09T07:18:17.006915" 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-09T07:18:17.006733" elapsed="0.000201"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-09T07:18:17.007204" 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-09T07:18:17.007008" elapsed="0.000214"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-09T07:18:17.007517" 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-09T07:18:17.007294" elapsed="0.000246"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-09T07:18:17.007812" 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-09T07:18:17.007617" elapsed="0.000213"/>
</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-09T07:18:17.007899" elapsed="0.000202"/>
</kw>
<kw name="Create Docker Network" owner="DockerLibrary">
<arg>${NETWORK}</arg>
<status status="PASS" start="2026-04-09T07:18:17.008187" elapsed="0.007475"/>
</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-09T07:18:17.015808" elapsed="0.127816"/>
</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-09T07:18:17.143787" elapsed="0.118200"/>
</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-09T07:18:17.262174" elapsed="0.126430"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${CRASH_SUB}</arg>
<status status="PASS" start="2026-04-09T07:18:17.388774" elapsed="7.053403"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${TEST_SUB}</arg>
<status status="PASS" start="2026-04-09T07:18:24.442393" elapsed="26.887637"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${TEST_PUB}</arg>
<status status="PASS" start="2026-04-09T07:18:51.330245" elapsed="0.001676"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-09T07:18:51.334631" level="INFO">${test_sub_logs} = [Entrypoint] Starting crash publisher in mode network_udp
1775719097264 ms | 1d5bceb4d119 | ./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-09T07:18:51.332018" elapsed="0.002641"/>
</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-09T07:18:51.334783" elapsed="0.000384"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-09T07:18:51.335641" level="INFO">
[SUBSCRIBER CONTAINER OUTPUT]
[Entrypoint] Starting crash publisher in mode network_udp
1775719097264 ms | 1d5bceb4d119 | ./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-09T07:18:51.335279" elapsed="0.000413"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-09T07:18:51.338079" level="INFO">${crash_sub_logs} = [Entrypoint] Starting crash subscriber in mode network_udp
1775719097146 ms | f2377a32d2ec | ./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-09T07:18:51.335773" elapsed="0.002331"/>
</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-09T07:18:51.338191" elapsed="0.000243"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-09T07:18:51.338791" level="INFO">
[CRASH SUBSCRIBER CONTAINER OUTPUT]
[Entrypoint] Starting crash subscriber in mode network_udp
1775719097146 ms | f2377a32d2ec | ./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-09T07:18:51.338584" elapsed="0.000242"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-09T07:18:51.339826" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${TEST_SUB}</arg>
<status status="PASS" start="2026-04-09T07:18:51.338902" elapsed="0.000948"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-09T07:18:51.340158" 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-09T07:18:51.339932" elapsed="0.000271"/>
</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-09T07:18:51.340281" elapsed="0.000139"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${CRASH_SUB}</arg>
<status status="PASS" start="2026-04-09T07:18:51.340588" elapsed="0.006124"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${TEST_SUB}</arg>
<status status="PASS" start="2026-04-09T07:18:51.346798" elapsed="0.005046"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${TEST_PUB}</arg>
<status status="PASS" start="2026-04-09T07:18:51.351942" elapsed="0.005693"/>
</kw>
<arg>network_udp</arg>
<arg>network</arg>
<status status="PASS" start="2026-04-09T07:18:17.005756" elapsed="34.351942"/>
</kw>
<tag>sub_crash_network_udp</tag>
<status status="PASS" start="2026-04-09T07:18:17.005219" elapsed="34.352572"/>
</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-09T07:18:51.359456" 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-09T07:18:51.359189" elapsed="0.000289"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-09T07:18:51.359777" 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-09T07:18:51.359595" elapsed="0.000201"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-09T07:18:51.360066" 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-09T07:18:51.359870" elapsed="0.000215"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-09T07:18:51.360345" 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-09T07:18:51.360156" elapsed="0.000208"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-09T07:18:51.360666" 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-09T07:18:51.360432" elapsed="0.000253"/>
</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-09T07:18:51.360757" elapsed="0.000194"/>
</kw>
<kw name="Create Docker Network" owner="DockerLibrary">
<arg>${NETWORK}</arg>
<status status="PASS" start="2026-04-09T07:18:51.361051" elapsed="0.006865"/>
</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-09T07:18:51.368044" elapsed="0.131583"/>
</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-09T07:18:51.499844" elapsed="0.124777"/>
</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-09T07:18:51.624791" elapsed="0.126512"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${CRASH_SUB}</arg>
<status status="PASS" start="2026-04-09T07:18:51.751475" elapsed="7.184852"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${TEST_SUB}</arg>
<status status="PASS" start="2026-04-09T07:18:58.936941" elapsed="26.752573"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${TEST_PUB}</arg>
<status status="PASS" start="2026-04-09T07:19:25.689812" elapsed="0.001437"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-09T07:19:25.693728" level="INFO">${test_sub_logs} = [Entrypoint] Starting crash publisher in mode network_tcp
1775719131626 ms | 1bef0f2fd21c | ./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-09T07:19:25.691346" elapsed="0.002410"/>
</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-09T07:19:25.693846" elapsed="0.000303"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-09T07:19:25.694517" level="INFO">
[SUBSCRIBER CONTAINER OUTPUT]
[Entrypoint] Starting crash publisher in mode network_tcp
1775719131626 ms | 1bef0f2fd21c | ./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
1775719164159 ms | 1bef0f2fd21c | ./test_subscriber | 7 | error | CTCPReaderLayer - TCPPubSub (Error) -SubscriberSession 172.18.0.3:45770-&gt;9bc05df55265:45127: Error reading header length: End of file
1775719164160 ms | 1bef0f2fd21c | ./test_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.3:59338: Failed connecting to publisher 9bc05df55265:45127: Connection refused
1775719164161 ms | 1bef0f2fd21c | ./test_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.3:59346: Failed connecting to publisher 9bc05df55265:45127: Connection refused
1775719164162 ms | 1bef0f2fd21c | ./test_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.3:59356: Failed connecting to publisher 9bc05df55265:45127: Connection refused
1775719164162 ms | 1bef0f2fd21c | ./test_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.3:59358: Failed connecting to publisher 9bc05df55265:45127: Connection refused
1775719164163 ms | 1bef0f2fd21c | ./test_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.3:59372: Failed connecting to publisher 9bc05df55265:45127: 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-09T07:19:25.694258" elapsed="0.000325"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-09T07:19:25.697051" level="INFO">${crash_sub_logs} = [Entrypoint] Starting crash subscriber in mode network_tcp
1775719131501 ms | 40dec47a31ef | ./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-09T07:19:25.694663" elapsed="0.002415"/>
</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-09T07:19:25.697169" elapsed="0.000251"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-09T07:19:25.697778" level="INFO">
[CRASH SUBSCRIBER CONTAINER OUTPUT]
[Entrypoint] Starting crash subscriber in mode network_tcp
1775719131501 ms | 40dec47a31ef | ./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-09T07:19:25.697553" elapsed="0.000262"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-09T07:19:25.698854" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${TEST_SUB}</arg>
<status status="PASS" start="2026-04-09T07:19:25.697892" elapsed="0.000985"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-09T07:19:25.699189" 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-09T07:19:25.698962" elapsed="0.000273"/>
</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-09T07:19:25.699316" elapsed="0.000139"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${CRASH_SUB}</arg>
<status status="PASS" start="2026-04-09T07:19:25.699573" elapsed="0.005431"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${TEST_SUB}</arg>
<status status="PASS" start="2026-04-09T07:19:25.705089" elapsed="0.007811"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${TEST_PUB}</arg>
<status status="PASS" start="2026-04-09T07:19:25.713004" elapsed="0.004864"/>
</kw>
<arg>network_tcp</arg>
<arg>network</arg>
<status status="PASS" start="2026-04-09T07:18:51.358979" elapsed="34.358952"/>
</kw>
<tag>pub_crash_network_tcp</tag>
<status status="PASS" start="2026-04-09T07:18:51.358571" elapsed="34.359455"/>
</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-09T07:19:25.719691" 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-09T07:19:25.719331" elapsed="0.000383"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-09T07:19:25.720008" 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-09T07:19:25.719796" elapsed="0.000231"/>
</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-09T07:19:25.720100" elapsed="0.000198"/>
</kw>
<kw name="Create Docker Network" owner="DockerLibrary">
<arg>${NETWORK}</arg>
<status status="PASS" start="2026-04-09T07:19:25.720398" elapsed="0.007111"/>
</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-09T07:19:25.727661" elapsed="0.105681"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-09T07:19:59.894556" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-09T07:19:25.833588" elapsed="34.061361"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-09T07:19:59.895610" 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-09T07:19:59.895156" elapsed="0.000511"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-09T07:19:59.898841" 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)
1775719165835 ms | 049b73b4cc04 | ./test_subscriber | 8 |...</msg>
<var>${logs}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-09T07:19:59.895789" elapsed="0.003087"/>
</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-09T07:19:59.899002" elapsed="0.000392"/>
</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-09T07:19:59.899535" elapsed="0.000197"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-09T07:19:59.899834" elapsed="0.005185"/>
</kw>
<arg>local_shm</arg>
<status status="PASS" start="2026-04-09T07:19:25.719132" elapsed="34.185953"/>
</kw>
<tag>sub_crash_local_shm</tag>
<status status="PASS" start="2026-04-09T07:19:25.718762" elapsed="34.186414"/>
</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-09T07:19:59.906694" 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-09T07:19:59.906378" elapsed="0.000337"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-09T07:19:59.907011" 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-09T07:19:59.906794" elapsed="0.000235"/>
</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-09T07:19:59.907102" elapsed="0.000207"/>
</kw>
<kw name="Create Docker Network" owner="DockerLibrary">
<arg>${NETWORK}</arg>
<status status="PASS" start="2026-04-09T07:19:59.907401" elapsed="0.006700"/>
</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-09T07:19:59.914208" elapsed="0.109742"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-09T07:20:34.091002" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-09T07:20:00.024156" elapsed="34.066899"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-09T07:20:34.091758" 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-09T07:20:34.091268" elapsed="0.000551"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-09T07:20:34.095646" level="INFO">${logs} = [Entrypoint] Starting local test (pub/sub/monitor) in mode local_udp
1775719200025 ms | 09da4c900e0c | test_publisher | 9 | info | Using built-in local time plugin.
[Publisher] Waiting for at least 2 ...</msg>
<var>${logs}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-09T07:20:34.091943" elapsed="0.003738"/>
</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-09T07:20:34.095809" elapsed="0.000363"/>
</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-09T07:20:34.096285" elapsed="0.000185"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-09T07:20:34.096600" elapsed="0.006019"/>
</kw>
<arg>local_udp</arg>
<status status="PASS" start="2026-04-09T07:19:59.906180" elapsed="34.196506"/>
</kw>
<tag>sub_crash_local_udp</tag>
<status status="PASS" start="2026-04-09T07:19:59.905804" elapsed="34.196975"/>
</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-09T07:20:34.104078" 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-09T07:20:34.103818" elapsed="0.000281"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-09T07:20:34.104379" 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-09T07:20:34.104178" elapsed="0.000220"/>
</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-09T07:20:34.104470" elapsed="0.000253"/>
</kw>
<kw name="Create Docker Network" owner="DockerLibrary">
<arg>${NETWORK}</arg>
<status status="PASS" start="2026-04-09T07:20:34.104810" elapsed="0.006756"/>
</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-09T07:20:34.111672" elapsed="0.109277"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-09T07:21:08.279061" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-09T07:20:34.221112" elapsed="34.058000"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-09T07:21:08.279760" 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-09T07:21:08.279301" elapsed="0.000529"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-09T07:21:08.283119" level="INFO">${logs} = [Entrypoint] Starting local test (pub/sub/monitor) in mode local_tcp
1775719234223 ms | b88374e26370 | test_publisher | 9 | info | Using built-in local time plugin.
[Publisher] Waiting for at least 2 ...</msg>
<var>${logs}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-09T07:21:08.279956" elapsed="0.003201"/>
</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-09T07:21:08.283259" elapsed="0.000422"/>
</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-09T07:21:08.283797" elapsed="0.000186"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-09T07:21:08.284089" elapsed="0.006219"/>
</kw>
<arg>local_tcp</arg>
<status status="PASS" start="2026-04-09T07:20:34.103616" elapsed="34.186757"/>
</kw>
<tag>sub_crash_local_tcp</tag>
<status status="PASS" start="2026-04-09T07:20:34.103220" elapsed="34.187246"/>
</test>
<status status="PASS" start="2026-04-09T07:18:04.441662" elapsed="183.849271"/>
</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-09T07:21:08.294292" elapsed="0.000136"/>
</kw>
<kw name="Get Build Script Path" owner="GlobalPathsLibrary">
<msg time="2026-04-09T07:21:08.294638" 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-09T07:21:08.294542" elapsed="0.000116"/>
</kw>
<kw name="Get Network Name" owner="GlobalPathsLibrary">
<msg time="2026-04-09T07:21:08.294803" level="INFO">${net} = ecal_test_net</msg>
<var>${net}</var>
<status status="PASS" start="2026-04-09T07:21:08.294725" elapsed="0.000096"/>
</kw>
<kw name="Get Build Script Args" owner="GlobalPathsLibrary">
<msg time="2026-04-09T07:21:08.294962" level="INFO">${args} = ['sub_send_crash']</msg>
<var>${args}</var>
<status status="PASS" start="2026-04-09T07:21:08.294884" elapsed="0.000095"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-09T07:21:08.295296" 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-09T07:21:08.295054" elapsed="0.000272"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-09T07:21:08.295707" 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-09T07:21:08.295408" elapsed="0.000329"/>
</kw>
<kw name="Get Test Description" owner="GlobalPathsLibrary">
<msg time="2026-04-09T07:21:08.295960" 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-09T07:21:08.295812" elapsed="0.000168"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-09T07:21:08.296268" 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-09T07:21:08.296053" elapsed="0.000251"/>
</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-09T07:21:08.296375" elapsed="0.000206"/>
</kw>
<kw name="Run Process" owner="Process">
<msg time="2026-04-09T07:21:08.296947" 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-09T07:21:08.297288" level="INFO">Waiting for process to complete.</msg>
<msg time="2026-04-09T07:21:17.667062" level="INFO">Process completed.</msg>
<msg time="2026-04-09T07:21:17.667223" 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-09T07:21:08.296694" elapsed="9.370554"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-09T07:21:17.668026" 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-09T07:21:17.667405" elapsed="0.000673"/>
</kw>
<kw name="Create Docker Network" owner="DockerLibrary">
<arg>${NETWORK}</arg>
<status status="PASS" start="2026-04-09T07:21:17.668163" elapsed="0.008094"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-09T07:21:20.676773" 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-09T07:21:17.676378" elapsed="3.000501"/>
</kw>
<status status="PASS" start="2026-04-09T07:21:08.294114" elapsed="12.382851"/>
</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-09T07:21:20.678042" 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-09T07:21:20.677758" elapsed="0.000306"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-09T07:21:20.678352" 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-09T07:21:20.678151" elapsed="0.000219"/>
</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-09T07:21:20.678441" elapsed="0.000247"/>
</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-09T07:21:20.678790" elapsed="0.127937"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-09T07:21:55.807500" 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-09T07:21:20.806962" elapsed="35.000684"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-09T07:21:55.810846" 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)
1775719280809 ms | 4157639aed75 | large_publishe...</msg>
<var>${logs}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-09T07:21:55.807806" elapsed="0.003066"/>
</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-09T07:21:55.810968" elapsed="0.000296"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-09T07:21:55.811693" 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)
1775719280809 ms | 4157639aed75 | large_publisher | 7 | info | Using built-in local time plugin.
[Publisher] Prepared 50MB message.
[Publisher] Waiting for at least 2 subscriber(s) on topic: test_topic
[Publisher] Found 2 subscriber(s). Proceeding to send messages.
[Crash_Sub] Simulating crash after 2 seconds during active reception
Shared memory monitoring is enabled (domain: ecal_mon - queue size: 1024)
1775719281810 ms | 4157639aed75 | crash_send_sub | 14 | info | Using built-in local time plugin.
[Crash_Sub] Listening to topic 'test_topic' in mode 'local_shm'
[Crash_Sub] Received 52428800 bytes
[Publisher] Subscriber detected. Starting to send.
[Publisher] Send result: ✓, size: 52428800 bytes
[Publisher] Send result: ✓, size: 52428800 bytes
[Publisher] Send result: ✓, size: 52428800 bytes
[Publisher] Finished sending.
Shared memory monitoring is enabled (domain: ecal_mon - queue size: 1024)
1775719281810 ms | 4157639aed75 | 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-09T07:21:55.811379" elapsed="0.000360"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-09T07:21:55.812894" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-09T07:21:55.811817" elapsed="0.001100"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-09T07:21:55.813232" 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-09T07:21:55.812999" elapsed="0.000302"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-09T07:21:55.815800" 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)
1775719280809 ms | 4157639aed75 | large_publishe...</msg>
<var>${logs}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-09T07:21:55.813408" elapsed="0.002461"/>
</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-09T07:21:55.815955" elapsed="0.000157"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-09T07:21:55.816200" elapsed="0.005099"/>
</kw>
<arg>local_shm</arg>
<status status="PASS" start="2026-04-09T07:21:20.677512" elapsed="35.143848"/>
</kw>
<tag>crash_receive_local_shm</tag>
<status status="PASS" start="2026-04-09T07:21:20.677026" elapsed="35.144421"/>
</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-09T07:21:55.822834" 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-09T07:21:55.822577" elapsed="0.000278"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-09T07:21:55.823134" 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-09T07:21:55.822934" elapsed="0.000218"/>
</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-09T07:21:55.823224" elapsed="0.000203"/>
</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-09T07:21:55.823546" elapsed="0.131426"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-09T07:22:30.955624" 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-09T07:21:55.955173" elapsed="35.000573"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-09T07:22:30.958800" level="INFO">${logs} = [Entrypoint] Starting all processes locally in one container (mode local_tcp)
1775719315956 ms | 8c83de39405d | 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-09T07:22:30.955920" elapsed="0.002906"/>
</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-09T07:22:30.958920" elapsed="0.000297"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-09T07:22:30.959636" level="INFO">
[LOCAL TEST CONTAINER OUTPUT]
[Entrypoint] Starting all processes locally in one container (mode local_tcp)
1775719315956 ms | 8c83de39405d | 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
1775719317958 ms | 8c83de39405d | large_publisher | 7 | info | CTCPReaderLayer - TCPPubSub (Info) -Publisher :::0: Created publisher and waiting for clients.
1775719317959 ms | 8c83de39405d | large_publisher | 7 | info | CTCPReaderLayer - TCPPubSub (Info) -Publisher :::41083: Subscriber ::ffff:172.18.0.2:56802 has connected.
1775719317959 ms | 8c83de39405d | large_publisher | 7 | info | CTCPReaderLayer - TCPPubSub (Info) -Publisher :::41083: Subscriber ::ffff:172.18.0.2:56818 has connected.
[Publisher] Found 2 subscriber(s). Proceeding to send messages.
1775719316958 ms | 8c83de39405d | 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
1775719320506 ms | 8c83de39405d | large_publisher | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -PublisherSession ::ffff:172.18.0.2:41083-&gt;?: Failed sending data: Broken pipe
[Publisher] Send result: ✓, size: 52428800 bytes
[Publisher] Finished sending.
1775719322523 ms | 8c83de39405d | large_publisher | 7 | error | CTCPReaderLayer - TCPPubSub (Error) -Publisher ?: Error while waiting for subsriber: Operation aborted.
1775719316958 ms | 8c83de39405d | 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)
1775719322523 ms | 8c83de39405d | test_sub | 13 | error | CTCPReaderLayer - TCPPubSub (Error) -SubscriberSession 172.18.0.2:56802-&gt;8c83de39405d:41083: Error reading header length: End of file
1775719322524 ms | 8c83de39405d | test_sub | 13 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:56822: Failed connecting to publisher 8c83de39405d:41083: Connection refused
1775719322524 ms | 8c83de39405d | test_sub | 13 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:56832: Failed connecting to publisher 8c83de39405d:41083: Connection refused
1775719322524 ms | 8c83de39405d | test_sub | 13 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:56848: Failed connecting to publisher 8c83de39405d:41083: Connection refused
1775719322525 ms | 8c83de39405d | test_sub | 13 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:56860: Failed connecting to publisher 8c83de39405d:41083: Connection refused
1775719322525 ms | 8c83de39405d | test_sub | 13 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:56866: Failed connecting to publisher 8c83de39405d:41083: 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-09T07:22:30.959319" elapsed="0.000405"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-09T07:22:30.961224" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-09T07:22:30.959837" elapsed="0.001423"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-09T07:22:30.961772" 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-09T07:22:30.961385" elapsed="0.000462"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-09T07:22:30.964291" level="INFO">${logs} = [Entrypoint] Starting all processes locally in one container (mode local_tcp)
1775719315956 ms | 8c83de39405d | 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-09T07:22:30.961969" elapsed="0.002347"/>
</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-09T07:22:30.964398" elapsed="0.000178"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-09T07:22:30.964685" elapsed="0.004895"/>
</kw>
<arg>local_tcp</arg>
<status status="PASS" start="2026-04-09T07:21:55.822349" elapsed="35.147292"/>
</kw>
<tag>crash_receive_local_tcp</tag>
<status status="PASS" start="2026-04-09T07:21:55.821993" elapsed="35.147738"/>
</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-09T07:22:30.971124" 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-09T07:22:30.970876" elapsed="0.000269"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-09T07:22:30.971396" 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-09T07:22:30.971223" elapsed="0.000192"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-09T07:22:30.971721" 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-09T07:22:30.971515" elapsed="0.000227"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-09T07:22:30.972007" 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-09T07:22:30.971815" elapsed="0.000211"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-09T07:22:30.972283" 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-09T07:22:30.972097" elapsed="0.000204"/>
</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-09T07:22:30.972371" elapsed="0.000233"/>
</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-09T07:22:30.972713" elapsed="0.129030"/>
</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-09T07:22:31.101913" elapsed="0.120231"/>
</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-09T07:22:31.222362" elapsed="0.115564"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${SUB_OK}</arg>
<status status="PASS" start="2026-04-09T07:22:31.338142" elapsed="30.829939"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${SUB_CRASH}</arg>
<status status="PASS" start="2026-04-09T07:23:02.168271" elapsed="0.001657"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${PUBLISHER}</arg>
<status status="PASS" start="2026-04-09T07:23:02.170024" elapsed="0.001099"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-09T07:23:02.173713" level="INFO">${log1} = [Entrypoint] Starting stable subscriber in mode network_udp
1775719351103 ms | 9413622bceb6 | 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-09T07:23:02.171222" elapsed="0.002517"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-09T07:23:02.175852" level="INFO">${log2} = [Entrypoint] Starting crashing subscriber in mode network_udp
[Crash_Sub] Simulating crash after 2 seconds during active reception
1775719351224 ms | 03dedc6c803d | crash_send_sub | 7 | info | Using b...</msg>
<var>${log2}</var>
<arg>${SUB_CRASH}</arg>
<status status="PASS" start="2026-04-09T07:23:02.173825" elapsed="0.002053"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-09T07:23:02.178253" level="INFO">${log3} = [Entrypoint] Starting large publisher in mode network_udp
1775719351340 ms | 501bb07c5781 | 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-09T07:23:02.175961" elapsed="0.002317"/>
</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-09T07:23:02.178366" elapsed="0.000321"/>
</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-09T07:23:02.178801" elapsed="0.000278"/>
</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-09T07:23:02.179176" elapsed="0.000223"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-09T07:23:02.179714" level="INFO">
[LOG: SUBSCRIBER]
[Entrypoint] Starting stable subscriber in mode network_udp
1775719351103 ms | 9413622bceb6 | 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-09T07:23:02.179522" elapsed="0.000229"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-09T07:23:02.179997" level="INFO">
[LOG: CRASH_SUBSCRIBER]
[Entrypoint] Starting crashing subscriber in mode network_udp
[Crash_Sub] Simulating crash after 2 seconds during active reception
1775719351224 ms | 03dedc6c803d | 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-09T07:23:02.179825" elapsed="0.000203"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-09T07:23:02.180259" level="INFO">
[LOG: PUBLISHER]
[Entrypoint] Starting large publisher in mode network_udp
1775719351340 ms | 501bb07c5781 | 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-09T07:23:02.180097" elapsed="0.000197"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-09T07:23:02.181252" level="INFO">${exit1} = 0</msg>
<var>${exit1}</var>
<arg>${SUB_OK}</arg>
<status status="PASS" start="2026-04-09T07:23:02.180362" elapsed="0.000951"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-09T07:23:02.181651" 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-09T07:23:02.181395" elapsed="0.000301"/>
</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-09T07:23:02.181774" elapsed="0.000144"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${SUB_OK}</arg>
<status status="PASS" start="2026-04-09T07:23:02.182002" elapsed="0.004944"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${SUB_CRASH}</arg>
<status status="PASS" start="2026-04-09T07:23:02.187032" elapsed="0.004911"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${PUBLISHER}</arg>
<status status="PASS" start="2026-04-09T07:23:02.192027" elapsed="0.004821"/>
</kw>
<arg>network_udp</arg>
<arg>network</arg>
<status status="PASS" start="2026-04-09T07:22:30.970671" elapsed="31.226238"/>
</kw>
<tag>crash_receive_network_udp</tag>
<status status="PASS" start="2026-04-09T07:22:30.970248" elapsed="31.226753"/>
</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-09T07:23:02.198994" 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-09T07:23:02.198753" elapsed="0.000262"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-09T07:23:02.199268" 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-09T07:23:02.199093" elapsed="0.000193"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-09T07:23:02.199586" 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-09T07:23:02.199357" elapsed="0.000250"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-09T07:23:02.199875" 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-09T07:23:02.199680" elapsed="0.000213"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-09T07:23:02.200148" 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-09T07:23:02.199964" elapsed="0.000201"/>
</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-09T07:23:02.200233" elapsed="0.000199"/>
</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-09T07:23:02.200547" elapsed="0.127300"/>
</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-09T07:23:02.328062" elapsed="0.119927"/>
</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-09T07:23:02.448173" elapsed="0.116587"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${SUB_OK}</arg>
<status status="PASS" start="2026-04-09T07:23:02.564946" elapsed="30.823981"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${SUB_CRASH}</arg>
<status status="PASS" start="2026-04-09T07:23:33.389140" elapsed="0.002038"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${PUBLISHER}</arg>
<status status="PASS" start="2026-04-09T07:23:33.391312" elapsed="0.001317"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-09T07:23:33.394892" level="INFO">${log1} = [Entrypoint] Starting stable subscriber in mode network_tcp
1775719382330 ms | 40e5fe2dba19 | 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-09T07:23:33.392747" elapsed="0.002171"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-09T07:23:33.396941" level="INFO">${log2} = [Entrypoint] Starting crashing subscriber in mode network_tcp
1775719382449 ms | b317ab0585d0 | 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-09T07:23:33.395000" elapsed="0.001965"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-09T07:23:33.399177" level="INFO">${log3} = [Entrypoint] Starting large publisher in mode network_tcp
1775719382566 ms | 1352e651d54f | 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-09T07:23:33.397048" elapsed="0.002153"/>
</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-09T07:23:33.399290" elapsed="0.000320"/>
</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-09T07:23:33.399720" elapsed="0.000230"/>
</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-09T07:23:33.400057" elapsed="0.000208"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-09T07:23:33.400589" level="INFO">
[LOG: SUBSCRIBER]
[Entrypoint] Starting stable subscriber in mode network_tcp
1775719382330 ms | 40e5fe2dba19 | 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)
1775719388034 ms | 40e5fe2dba19 | test_sub | 7 | error | CTCPReaderLayer - TCPPubSub (Error) -SubscriberSession 172.18.0.2:58850-&gt;1352e651d54f:37089: Error reading header length: End of file
1775719388035 ms | 40e5fe2dba19 | test_sub | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:60418: Failed connecting to publisher 1352e651d54f:37089: Connection refused
1775719388036 ms | 40e5fe2dba19 | test_sub | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:60434: Failed connecting to publisher 1352e651d54f:37089: Connection refused
1775719388036 ms | 40e5fe2dba19 | test_sub | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:60438: Failed connecting to publisher 1352e651d54f:37089: Connection refused
1775719388037 ms | 40e5fe2dba19 | test_sub | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:60454: Failed connecting to publisher 1352e651d54f:37089: Connection refused
1775719388039 ms | 40e5fe2dba19 | test_sub | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:60458: Failed connecting to publisher 1352e651d54f:37089: 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-09T07:23:33.400345" elapsed="0.000356"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-09T07:23:33.400974" level="INFO">
[LOG: CRASH_SUBSCRIBER]
[Entrypoint] Starting crashing subscriber in mode network_tcp
1775719382449 ms | b317ab0585d0 | 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-09T07:23:33.400784" elapsed="0.000224"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-09T07:23:33.401256" level="INFO">
[LOG: PUBLISHER]
[Entrypoint] Starting large publisher in mode network_tcp
1775719382566 ms | 1352e651d54f | 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
1775719383331 ms | 1352e651d54f | large_publisher | 7 | info | CTCPReaderLayer - TCPPubSub (Info) -Publisher :::0: Created publisher and waiting for clients.
1775719383332 ms | 1352e651d54f | large_publisher | 7 | info | CTCPReaderLayer - TCPPubSub (Info) -Publisher :::37089: Subscriber ::ffff:172.18.0.3:52144 has connected.
1775719383332 ms | 1352e651d54f | large_publisher | 7 | info | CTCPReaderLayer - TCPPubSub (Info) -Publisher :::37089: Subscriber ::ffff:172.18.0.2:58850 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
1775719386017 ms | 1352e651d54f | large_publisher | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -PublisherSession ::ffff:172.18.0.4:37089-&gt;?: Failed sending data: Broken pipe
[Publisher] Send result: ✓, size: 52428800 bytes
[Publisher] Finished sending.
1775719388034 ms | 1352e651d54f | 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-09T07:23:33.401081" elapsed="0.000217"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-09T07:23:33.402287" level="INFO">${exit1} = 0</msg>
<var>${exit1}</var>
<arg>${SUB_OK}</arg>
<status status="PASS" start="2026-04-09T07:23:33.401369" elapsed="0.000942"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-09T07:23:33.402658" 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-09T07:23:33.402392" elapsed="0.000312"/>
</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-09T07:23:33.402783" elapsed="0.000144"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${SUB_OK}</arg>
<status status="PASS" start="2026-04-09T07:23:33.403011" elapsed="0.004673"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${SUB_CRASH}</arg>
<status status="PASS" start="2026-04-09T07:23:33.407767" elapsed="0.005005"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${PUBLISHER}</arg>
<status status="PASS" start="2026-04-09T07:23:33.412857" elapsed="0.004795"/>
</kw>
<arg>network_tcp</arg>
<arg>network</arg>
<status status="PASS" start="2026-04-09T07:23:02.198544" elapsed="31.219169"/>
</kw>
<tag>crash_receive_network_tcp</tag>
<status status="PASS" start="2026-04-09T07:23:02.198112" elapsed="31.219691"/>
</test>
<status status="PASS" start="2026-04-09T07:21:08.291517" elapsed="145.127101"/>
</suite>
<status status="PASS" start="2026-04-09T07:10:56.668323" elapsed="756.750961"/>
</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>
