<?xml version="1.0" encoding="UTF-8"?>
<robot generator="Robot 7.4.2 (Python 3.12.3 on linux)" generated="2026-04-07T11:58:10.539131" 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-07T11:58:10.664601" elapsed="0.000183"/>
</kw>
<kw name="Get Build Script Path" owner="GlobalPathsLibrary">
<msg time="2026-04-07T11:58:10.665005" 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-07T11:58:10.664893" elapsed="0.000137"/>
</kw>
<kw name="Get Network Name" owner="GlobalPathsLibrary">
<msg time="2026-04-07T11:58:10.665263" level="INFO">${net} = ecal_test_net</msg>
<var>${net}</var>
<status status="PASS" start="2026-04-07T11:58:10.665102" elapsed="0.000181"/>
</kw>
<kw name="Get Build Script Args" owner="GlobalPathsLibrary">
<msg time="2026-04-07T11:58:10.665453" level="INFO">${args} = ['basic_pub_sub']</msg>
<var>${args}</var>
<status status="PASS" start="2026-04-07T11:58:10.665360" elapsed="0.000142"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-07T11:58:10.665889" 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-07T11:58:10.665596" elapsed="0.000326"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-07T11:58:10.666233" 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-07T11:58:10.666007" elapsed="0.000256"/>
</kw>
<kw name="Get Test Description" owner="GlobalPathsLibrary">
<msg time="2026-04-07T11:58:10.666515" 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-07T11:58:10.666334" elapsed="0.000204"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T11:58:10.666802" 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-07T11:58:10.666618" elapsed="0.000217"/>
</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-07T11:58:10.666905" elapsed="0.000173"/>
</kw>
<kw name="Run Process" owner="Process">
<msg time="2026-04-07T11:58:10.667457" 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-07T11:58:10.667863" level="INFO">Waiting for process to complete.</msg>
<msg time="2026-04-07T11:58:24.960920" level="INFO">Process completed.</msg>
<msg time="2026-04-07T11:58:24.961077" 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-07T11:58:10.667186" elapsed="14.293915"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-07T11:58:24.961915" 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-07T11:58:24.961252" elapsed="0.000718"/>
</kw>
<kw name="Create Docker Network" owner="DockerLibrary">
<arg>${NETWORK}</arg>
<status status="PASS" start="2026-04-07T11:58:24.962055" elapsed="0.044551"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-07T11:58:28.007201" 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-07T11:58:25.006757" elapsed="3.000555"/>
</kw>
<status status="PASS" start="2026-04-07T11:58:10.664139" elapsed="17.343276"/>
</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-07T11:58:28.008745" 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-07T11:58:28.008433" elapsed="0.000334"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-07T11:58:28.009049" 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-07T11:58:28.008844" elapsed="0.000224"/>
</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-07T11:58:28.009140" elapsed="0.000226"/>
</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-07T11:58:28.009492" elapsed="0.118387"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-07T11:58:37.128481" 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-07T11:58:28.128036" elapsed="9.000583"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-07T11:58:37.131742" level="INFO">${logs} = [Entrypoint] Starting subscriber and publisher in mode local_shm
Shared memory monitoring is enabled (domain: ecal_mon - queue size: 1024)
1775563108127 ms | b3083a847183 | pub_test | 7 | info | Using...</msg>
<var>${logs}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-07T11:58:37.128777" elapsed="0.002992"/>
</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-07T11:58:37.131865" elapsed="0.000285"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T11:58:37.132506" 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)
1775563108127 ms | b3083a847183 | 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)
1775563109129 ms | b3083a847183 | 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-07T11:58:37.132264" elapsed="0.000335"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-07T11:58:37.133708" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-07T11:58:37.132678" elapsed="0.001053"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-07T11:58:37.134031" 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-07T11:58:37.133812" elapsed="0.000266"/>
</kw>
<kw name="Log Test Summary" owner="DockerLibrary">
<arg>Basic Pub/Sub Local ${layer_tag}</arg>
<arg>${True}</arg>
<status status="PASS" start="2026-04-07T11:58:37.134155" elapsed="0.000134"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-07T11:58:37.134391" elapsed="0.005066"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-07T11:58:38.139941" 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-07T11:58:37.139581" elapsed="1.000480"/>
</kw>
<arg>local_shm</arg>
<status status="PASS" start="2026-04-07T11:58:28.008181" elapsed="10.131984"/>
</kw>
<tag>basic_pub_sub_local_shm</tag>
<status status="PASS" start="2026-04-07T11:58:28.007546" elapsed="10.132778"/>
</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-07T11:58:38.141914" 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-07T11:58:38.141635" elapsed="0.000300"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-07T11:58:38.142205" 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-07T11:58:38.142011" elapsed="0.000213"/>
</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-07T11:58:38.142293" 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-07T11:58:38.142651" elapsed="0.111377"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-07T11:58:47.254772" 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-07T11:58:38.254239" elapsed="9.000629"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-07T11:58:47.257961" level="INFO">${logs} = [Entrypoint] Starting subscriber and publisher in mode local_udp
1775563118257 ms | d5a7f1ae4c89 | 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-07T11:58:47.255013" elapsed="0.002974"/>
</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-07T11:58:47.258074" elapsed="0.000282"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T11:58:47.258715" level="INFO">
[CONTAINER LOG: LOCAL PUB+SUB]
[Entrypoint] Starting subscriber and publisher in mode local_udp
1775563118257 ms | d5a7f1ae4c89 | 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.
1775563119258 ms | d5a7f1ae4c89 | 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-07T11:58:47.258494" elapsed="0.000262"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-07T11:58:47.259901" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-07T11:58:47.258831" elapsed="0.001093"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-07T11:58:47.260225" 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-07T11:58:47.260005" elapsed="0.000265"/>
</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-07T11:58:47.260347" elapsed="0.000170"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-07T11:58:47.260622" elapsed="0.004808"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-07T11:58:48.265905" 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-07T11:58:47.265548" elapsed="1.000477"/>
</kw>
<arg>local_udp</arg>
<status status="PASS" start="2026-04-07T11:58:38.141352" elapsed="10.124766"/>
</kw>
<tag>basic_pub_sub_local_udp</tag>
<status status="PASS" start="2026-04-07T11:58:38.140946" elapsed="10.125324"/>
</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-07T11:58:48.267855" 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-07T11:58:48.267577" elapsed="0.000300"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-07T11:58:48.268225" 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-07T11:58:48.268022" elapsed="0.000223"/>
</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-07T11:58:48.268333" elapsed="0.000247"/>
</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-07T11:58:48.268670" elapsed="0.122994"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-07T11:58:57.392385" 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-07T11:58:48.391945" elapsed="9.000601"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-07T11:58:57.395599" level="INFO">${logs} = [Entrypoint] Starting subscriber and publisher in mode local_tcp
1775563128391 ms | c1e232d27ad8 | 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-07T11:58:57.392732" elapsed="0.002892"/>
</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-07T11:58:57.395710" elapsed="0.000313"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T11:58:57.396437" level="INFO">
[CONTAINER LOG: LOCAL PUB+SUB]
[Entrypoint] Starting subscriber and publisher in mode local_tcp
1775563128391 ms | c1e232d27ad8 | 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.
1775563130394 ms | c1e232d27ad8 | pub_test | 7 | info | CTCPReaderLayer - TCPPubSub (Info) -Publisher :::0: Created publisher and waiting for clients.
1775563130395 ms | c1e232d27ad8 | pub_test | 7 | info | CTCPReaderLayer - TCPPubSub (Info) -Publisher :::36635: Subscriber ::ffff:172.17.0.3:34002 has connected.
[Publisher] Send result: ✓, size: 209715 bytes
[Publisher] Send result: ✓, size: 209715 bytes
[Publisher] Send result: ✓, size: 209715 bytes
[Publisher] Send result: ✓, size: 209715 bytes
[Publisher] Finished sending.
1775563133895 ms | c1e232d27ad8 | pub_test | 7 | error | CTCPReaderLayer - TCPPubSub (Error) -Publisher ?: Error while waiting for subsriber: Operation aborted.
1775563129393 ms | c1e232d27ad8 | 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)
1775563133895 ms | c1e232d27ad8 | sub_test | 13 | error | CTCPReaderLayer - TCPPubSub (Error) -SubscriberSession 172.17.0.3:34002-&gt;c1e232d27ad8:36635: Error reading header length: End of file
1775563133895 ms | c1e232d27ad8 | sub_test | 13 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.17.0.3:34006: Failed connecting to publisher c1e232d27ad8:36635: Connection refused
1775563133896 ms | c1e232d27ad8 | sub_test | 13 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.17.0.3:34010: Failed connecting to publisher c1e232d27ad8:36635: Connection refused
1775563133896 ms | c1e232d27ad8 | sub_test | 13 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.17.0.3:34014: Failed connecting to publisher c1e232d27ad8:36635: Connection refused
1775563133896 ms | c1e232d27ad8 | sub_test | 13 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.17.0.3:34018: Failed connecting to publisher c1e232d27ad8:36635: Connection refused
1775563133897 ms | c1e232d27ad8 | sub_test | 13 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.17.0.3:34032: Failed connecting to publisher c1e232d27ad8:36635: 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-07T11:58:57.396144" elapsed="0.000410"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-07T11:58:57.398105" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-07T11:58:57.396670" elapsed="0.001468"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-07T11:58:57.398633" 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-07T11:58:57.398258" elapsed="0.000446"/>
</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-07T11:58:57.398836" elapsed="0.000203"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-07T11:58:57.399148" elapsed="0.004999"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-07T11:58:58.404592" 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-07T11:58:57.404234" elapsed="1.000487"/>
</kw>
<arg>local_tcp</arg>
<status status="PASS" start="2026-04-07T11:58:48.267310" elapsed="10.137501"/>
</kw>
<tag>basic_pub_sub_local_tcp</tag>
<status status="PASS" start="2026-04-07T11:58:48.266920" elapsed="10.138021"/>
</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-07T11:58:58.406620" 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-07T11:58:58.406308" elapsed="0.000333"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-07T11:58:58.406916" 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-07T11:58:58.406717" elapsed="0.000223"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-07T11:58:58.407195" 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-07T11:58:58.407010" elapsed="0.000203"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-07T11:58:58.407459" 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-07T11:58:58.407278" elapsed="0.000233"/>
</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-07T11:58:58.407595" elapsed="0.000205"/>
</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-07T11:58:58.407877" elapsed="0.127300"/>
</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-07T11:58:58.535381" elapsed="0.121858"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-07T11:59:07.657925" 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-07T11:58:58.657400" elapsed="9.000644"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-07T11:59:07.661228" level="INFO">${log_sub} = [Entrypoint] Starting subscriber in mode network_udp
1775563138535 ms | c9582418ee82 | 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-07T11:59:07.658212" elapsed="0.003043"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-07T11:59:07.663451" level="INFO">${log_pub} = [Entrypoint] Starting publisher in mode network_udp
1775563138658 ms | 0b35e6041003 | 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-07T11:59:07.661354" elapsed="0.002162"/>
</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-07T11:59:07.663608" elapsed="0.000281"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T11:59:07.664207" level="INFO">
[CONTAINER LOG: PUBLISHER]
[Entrypoint] Starting publisher in mode network_udp
1775563138658 ms | 0b35e6041003 | 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-07T11:59:07.663997" elapsed="0.000250"/>
</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-07T11:59:07.664320" elapsed="0.000249"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T11:59:07.664873" level="INFO">
[CONTAINER LOG: SUBSCRIBER]
[Entrypoint] Starting subscriber in mode network_udp
1775563138535 ms | c9582418ee82 | 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-07T11:59:07.664677" elapsed="0.000230"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-07T11:59:07.666008" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${SUB_NAME}</arg>
<status status="PASS" start="2026-04-07T11:59:07.664978" elapsed="0.001054"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-07T11:59:07.666356" 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-07T11:59:07.666110" elapsed="0.000291"/>
</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-07T11:59:07.666509" elapsed="0.000145"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${SUB_NAME}</arg>
<status status="PASS" start="2026-04-07T11:59:07.666751" elapsed="0.004862"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${PUB_NAME}</arg>
<status status="PASS" start="2026-04-07T11:59:07.671697" elapsed="0.005743"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-07T11:59:08.677927" 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-07T11:59:07.677567" elapsed="1.000493"/>
</kw>
<arg>network_udp</arg>
<arg>network</arg>
<status status="PASS" start="2026-04-07T11:58:58.406069" elapsed="10.272084"/>
</kw>
<tag>basic_pub_sub_network_udp</tag>
<status status="PASS" start="2026-04-07T11:58:58.405675" elapsed="10.272617"/>
</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-07T11:59:08.680293" 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-07T11:59:08.680013" elapsed="0.000301"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-07T11:59:08.680637" 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-07T11:59:08.680388" elapsed="0.000269"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-07T11:59:08.680919" 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-07T11:59:08.680729" elapsed="0.000208"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-07T11:59:08.681187" 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-07T11:59:08.681005" elapsed="0.000199"/>
</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-07T11:59:08.681271" elapsed="0.000190"/>
</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-07T11:59:08.681583" elapsed="0.122356"/>
</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-07T11:59:08.804097" elapsed="0.117545"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-07T11:59:17.922234" 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-07T11:59:08.921803" elapsed="9.000546"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-07T11:59:17.925516" level="INFO">${log_sub} = [Entrypoint] Starting subscriber in mode network_tcp
1775563148806 ms | 505a85695d36 | sub_network_tcp | 8 | 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-07T11:59:17.922546" elapsed="0.002997"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-07T11:59:17.927714" level="INFO">${log_pub} = [Entrypoint] Starting publisher in mode network_tcp
1775563148923 ms | b3f63a8cf4a3 | 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-07T11:59:17.925680" elapsed="0.002059"/>
</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-07T11:59:17.927822" elapsed="0.000284"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T11:59:17.928427" level="INFO">
[CONTAINER LOG: PUBLISHER]
[Entrypoint] Starting publisher in mode network_tcp
1775563148923 ms | b3f63a8cf4a3 | pub_network_tcp | 7 | info | Using built-in local time plugin.
[Publisher] Waiting for at least 1 subscriber(s) on topic: topic_network_tcp
1775563149807 ms | b3f63a8cf4a3 | pub_network_tcp | 7 | info | CTCPReaderLayer - TCPPubSub (Info) -Publisher :::0: Created publisher and waiting for clients.
1775563149808 ms | b3f63a8cf4a3 | pub_network_tcp | 7 | info | CTCPReaderLayer - TCPPubSub (Info) -Publisher :::36069: Subscriber ::ffff:172.18.0.2:57272 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.
1775563153326 ms | b3f63a8cf4a3 | 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-07T11:59:17.928223" elapsed="0.000278"/>
</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-07T11:59:17.928583" elapsed="0.000223"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T11:59:17.929091" level="INFO">
[CONTAINER LOG: SUBSCRIBER]
[Entrypoint] Starting subscriber in mode network_tcp
1775563148806 ms | 505a85695d36 | sub_network_tcp | 8 | 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)
1775563153326 ms | 505a85695d36 | sub_network_tcp | 8 | error | CTCPReaderLayer - TCPPubSub (Error) -SubscriberSession 172.18.0.2:57272-&gt;b3f63a8cf4a3:36069: Error reading header length: End of file
1775563153327 ms | 505a85695d36 | sub_network_tcp | 8 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:57282: Failed connecting to publisher b3f63a8cf4a3:36069: Connection refused
1775563153328 ms | 505a85695d36 | sub_network_tcp | 8 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:57296: Failed connecting to publisher b3f63a8cf4a3:36069: Connection refused
1775563153328 ms | 505a85695d36 | sub_network_tcp | 8 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:57310: Failed connecting to publisher b3f63a8cf4a3:36069: Connection refused
1775563153330 ms | 505a85695d36 | sub_network_tcp | 8 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:57318: Failed connecting to publisher b3f63a8cf4a3:36069: Connection refused
1775563153330 ms | 505a85695d36 | sub_network_tcp | 8 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:57320: Failed connecting to publisher b3f63a8cf4a3:36069: 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-07T11:59:17.928909" elapsed="0.000220"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-07T11:59:17.930313" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${SUB_NAME}</arg>
<status status="PASS" start="2026-04-07T11:59:17.929200" elapsed="0.001143"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-07T11:59:17.930795" 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-07T11:59:17.930448" elapsed="0.000402"/>
</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-07T11:59:17.930931" elapsed="0.000142"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${SUB_NAME}</arg>
<status status="PASS" start="2026-04-07T11:59:17.931178" elapsed="0.004843"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${PUB_NAME}</arg>
<status status="PASS" start="2026-04-07T11:59:17.936105" elapsed="0.004797"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-07T11:59:18.941343" 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-07T11:59:17.940988" elapsed="1.000514"/>
</kw>
<arg>network_tcp</arg>
<arg>network</arg>
<status status="PASS" start="2026-04-07T11:59:08.679768" elapsed="10.261831"/>
</kw>
<tag>basic_pub_sub_network_tcp</tag>
<status status="PASS" start="2026-04-07T11:59:08.679322" elapsed="10.262413"/>
</test>
<status status="PASS" start="2026-04-07T11:58:10.565192" elapsed="68.377702"/>
</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-07T11:59:18.946378" elapsed="0.000175"/>
</kw>
<kw name="Get Build Script Path" owner="GlobalPathsLibrary">
<msg time="2026-04-07T11:59:18.946725" 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-07T11:59:18.946635" elapsed="0.000110"/>
</kw>
<kw name="Get Network Name" owner="GlobalPathsLibrary">
<msg time="2026-04-07T11:59:18.946883" level="INFO">${net} = ecal_test_net</msg>
<var>${net}</var>
<status status="PASS" start="2026-04-07T11:59:18.946807" elapsed="0.000092"/>
</kw>
<kw name="Get Build Script Args" owner="GlobalPathsLibrary">
<msg time="2026-04-07T11:59:18.947035" level="INFO">${args} = ['multi_pub_sub']</msg>
<var>${args}</var>
<status status="PASS" start="2026-04-07T11:59:18.946959" elapsed="0.000093"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-07T11:59:18.947368" 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-07T11:59:18.947126" elapsed="0.000272"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-07T11:59:18.947719" 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-07T11:59:18.947504" elapsed="0.000244"/>
</kw>
<kw name="Get Test Description" owner="GlobalPathsLibrary">
<msg time="2026-04-07T11:59:18.948022" 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-07T11:59:18.947853" elapsed="0.000191"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T11:59:18.948289" 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-07T11:59:18.948116" elapsed="0.000211"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>[SETUP] Building Docker image...</arg>
<doc>Logs the given message to the console.</doc>
<status status="PASS" start="2026-04-07T11:59:18.948396" elapsed="0.000219"/>
</kw>
<kw name="Run Process" owner="Process">
<msg time="2026-04-07T11:59:18.949001" 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-07T11:59:18.949425" level="INFO">Waiting for process to complete.</msg>
<msg time="2026-04-07T11:59:28.018879" level="INFO">Process completed.</msg>
<msg time="2026-04-07T11:59:28.019039" 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-07T11:59:18.948734" elapsed="9.070330"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-07T11:59:28.019864" 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-07T11:59:28.019211" elapsed="0.000709"/>
</kw>
<kw name="Create Docker Network" owner="DockerLibrary">
<arg>${NETWORK}</arg>
<status status="PASS" start="2026-04-07T11:59:28.020022" elapsed="0.007125"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-07T11:59:31.027673" 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-07T11:59:28.027276" elapsed="3.000516"/>
</kw>
<status status="PASS" start="2026-04-07T11:59:18.946214" elapsed="12.081679"/>
</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-07T11:59:31.029341" 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-07T11:59:31.029050" elapsed="0.000311"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-07T11:59:31.029661" 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-07T11:59:31.029438" elapsed="0.000242"/>
</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-07T11:59:31.029754" elapsed="0.000195"/>
</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-07T11:59:31.030045" elapsed="0.116231"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-07T11:59:49.146924" 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-07T11:59:31.146433" elapsed="18.000614"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-07T11:59:49.150208" level="INFO">${logs} = [Entrypoint] Starting local multi pub/sub test in mode local_udp
1775563171148 ms | 0e94d3bbcbca | 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-07T11:59:49.147222" elapsed="0.003011"/>
</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-07T11:59:49.150322" elapsed="0.000306"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T11:59:49.151048" level="INFO">
[CONTAINER LOG: All Local Binarys Multi Pub/Sub]
[Entrypoint] Starting local multi pub/sub test in mode local_udp
1775563171148 ms | 0e94d3bbcbca | multi_publisher | 7 | info | Using built-in local time plugin.
[Publisher] Waiting for at least 2 subscriber(s) on topic: test_topic
1775563171148 ms | 0e94d3bbcbca | multi_publisher | 8 | info | Using built-in local time plugin.
[Publisher] Waiting for at least 2 subscriber(s) on topic: test_topic
1775563172150 ms | 0e94d3bbcbca | multi_subscriber | 18 | info | Using built-in local time plugin.
[Subscriber 1] Waiting for messages...

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

[Publisher 1] Finished sending messages.

[Publisher 2] Finished sending messages.

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


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

[Entrypoint] All subscribers received messages from both publishers.
</msg>
<arg>\n[CONTAINER LOG: All Local Binarys Multi Pub/Sub]\n${logs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T11:59:49.150743" elapsed="0.000381"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-07T11:59:49.152322" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-07T11:59:49.151230" elapsed="0.001116"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-07T11:59:49.152734" 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-07T11:59:49.152505" elapsed="0.000275"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-07T11:59:49.152859" elapsed="0.005043"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-07T11:59:50.158347" 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-07T11:59:49.157988" elapsed="1.000508"/>
</kw>
<arg>local_udp</arg>
<status status="PASS" start="2026-04-07T11:59:31.028521" elapsed="19.130081"/>
</kw>
<tag>multi_pub_sub_local_udp</tag>
<status status="PASS" start="2026-04-07T11:59:31.027967" elapsed="19.130778"/>
</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-07T11:59:50.160355" 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-07T11:59:50.160082" elapsed="0.000295"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-07T11:59:50.160668" 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-07T11:59:50.160451" elapsed="0.000236"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-07T11:59:50.160950" 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-07T11:59:50.160758" elapsed="0.000210"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-07T11:59:50.161221" 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-07T11:59:50.161036" elapsed="0.000203"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-07T11:59:50.161522" 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-07T11:59:50.161304" elapsed="0.000245"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-07T11:59:50.161808" 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-07T11:59:50.161619" elapsed="0.000206"/>
</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-07T11:59:50.161892" elapsed="0.000190"/>
</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-07T11:59:50.162178" elapsed="0.127213"/>
</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-07T11:59:50.289591" elapsed="0.121723"/>
</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-07T11:59:50.411527" elapsed="0.126070"/>
</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-07T11:59:50.537755" elapsed="0.124067"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-07T12:00:08.662423" 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-07T11:59:50.661987" elapsed="18.000602"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-07T12:00:08.665449" level="INFO">${log1} = [Entrypoint] Starting multi_subscriber in mode network_udp
1775563190293 ms | e8bd5379b487 | 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-07T12:00:08.662750" elapsed="0.002749"/>
</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-07T12:00:08.665589" elapsed="0.000278"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T12:00:08.666207" level="INFO">
[CONTAINER LOG: SUBSCRIBER 1]
[Entrypoint] Starting multi_subscriber in mode network_udp
1775563190293 ms | e8bd5379b487 | 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-07T12:00:08.665990" elapsed="0.000259"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-07T12:00:08.668619" level="INFO">${log2} = [Entrypoint] Starting multi_subscriber2 in mode network_udp
1775563190413 ms | 7fc41047354e | 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-07T12:00:08.666324" elapsed="0.002319"/>
</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-07T12:00:08.668727" elapsed="0.000231"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T12:00:08.669277" level="INFO">
[CONTAINER LOG: SUBSCRIBER 1]
[Entrypoint] Starting multi_subscriber2 in mode network_udp
1775563190413 ms | 7fc41047354e | 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-07T12:00:08.669070" elapsed="0.000245"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${SUB1}</arg>
<status status="PASS" start="2026-04-07T12:00:08.669387" elapsed="0.001039"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${SUB2}</arg>
<status status="PASS" start="2026-04-07T12:00:08.670543" elapsed="0.001013"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${PUB1}</arg>
<status status="PASS" start="2026-04-07T12:00:08.671638" elapsed="0.000986"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${PUB2}</arg>
<status status="PASS" start="2026-04-07T12:00:08.672705" elapsed="0.001024"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-07T12:00:08.674723" level="INFO">${exit1} = 0</msg>
<var>${exit1}</var>
<arg>${SUB1}</arg>
<status status="PASS" start="2026-04-07T12:00:08.673815" elapsed="0.000932"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-07T12:00:08.675748" level="INFO">${exit2} = 0</msg>
<var>${exit2}</var>
<arg>${SUB2}</arg>
<status status="PASS" start="2026-04-07T12:00:08.674827" elapsed="0.000945"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-07T12:00:08.676077" 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-07T12:00:08.675855" elapsed="0.000268"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-07T12:00:08.676398" 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-07T12:00:08.676203" elapsed="0.000236"/>
</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-07T12:00:08.676537" elapsed="0.000150"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${SUB1}</arg>
<status status="PASS" start="2026-04-07T12:00:08.676781" elapsed="0.004887"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${SUB2}</arg>
<status status="PASS" start="2026-04-07T12:00:08.681750" elapsed="0.006420"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${PUB1}</arg>
<status status="PASS" start="2026-04-07T12:00:08.688254" elapsed="0.005179"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${PUB2}</arg>
<status status="PASS" start="2026-04-07T12:00:08.693555" elapsed="0.005118"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-07T12:00:09.699120" 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-07T12:00:08.698760" elapsed="1.000477"/>
</kw>
<arg>network_udp</arg>
<arg>network</arg>
<status status="PASS" start="2026-04-07T11:59:50.159852" elapsed="19.539476"/>
</kw>
<tag>multi_pub_sub_network_udp</tag>
<status status="PASS" start="2026-04-07T11:59:50.159344" elapsed="19.540116"/>
</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-07T12:00:09.701440" 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-07T12:00:09.701164" elapsed="0.000298"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-07T12:00:09.701751" 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-07T12:00:09.701575" elapsed="0.000194"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-07T12:00:09.702027" 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-07T12:00:09.701839" elapsed="0.000205"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-07T12:00:09.702297" 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-07T12:00:09.702111" elapsed="0.000202"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-07T12:00:09.702630" 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-07T12:00:09.702391" elapsed="0.000257"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-07T12:00:09.702899" 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-07T12:00:09.702717" 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-07T12:00:09.702980" elapsed="0.000191"/>
</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-07T12:00:09.703270" elapsed="0.128311"/>
</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-07T12:00:09.831742" elapsed="0.124904"/>
</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-07T12:00:09.956805" elapsed="0.120561"/>
</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-07T12:00:10.077600" elapsed="0.118859"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-07T12:00:28.197098" 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-07T12:00:10.196661" elapsed="18.000552"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-07T12:00:28.200314" level="INFO">${log1} = [Entrypoint] Starting multi_subscriber in mode network_tcp
1775563209833 ms | 90d1104f2cb7 | 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-07T12:00:28.197390" elapsed="0.002949"/>
</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-07T12:00:28.200431" elapsed="0.000348"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T12:00:28.201215" level="INFO">
[CONTAINER LOG: SUBSCRIBER 1]
[Entrypoint] Starting multi_subscriber in mode network_tcp
1775563209833 ms | 90d1104f2cb7 | multi_subscriber | 7 | info | Using built-in local time plugin.
[Subscriber 1] Waiting for messages...

1775563222984 ms | 90d1104f2cb7 | multi_subscriber | 7 | error | CTCPReaderLayer - TCPPubSub (Error) -SubscriberSession 172.18.0.2:48394-&gt;0fb53a150dc7:34139: Error reading header length: End of file
1775563222985 ms | 90d1104f2cb7 | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:34298: Failed connecting to publisher 0fb53a150dc7:34139: Connection refused
1775563222985 ms | 90d1104f2cb7 | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:34304: Failed connecting to publisher 0fb53a150dc7:34139: Connection refused
1775563222986 ms | 90d1104f2cb7 | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:34310: Failed connecting to publisher 0fb53a150dc7:34139: Connection refused
1775563222987 ms | 90d1104f2cb7 | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:34314: Failed connecting to publisher 0fb53a150dc7:34139: Connection refused
1775563222988 ms | 90d1104f2cb7 | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:34322: Failed connecting to publisher 0fb53a150dc7:34139: Connection refused
1775563223002 ms | 90d1104f2cb7 | multi_subscriber | 7 | error | CTCPReaderLayer - TCPPubSub (Error) -SubscriberSession 172.18.0.2:38814-&gt;049ba9e84257:34015: Error reading header length: End of file
1775563223004 ms | 90d1104f2cb7 | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:44346: Failed connecting to publisher 049ba9e84257:34015: Connection refused
1775563223005 ms | 90d1104f2cb7 | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:44354: Failed connecting to publisher 049ba9e84257:34015: Connection refused
1775563223005 ms | 90d1104f2cb7 | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:44362: Failed connecting to publisher 049ba9e84257:34015: Connection refused
1775563223006 ms | 90d1104f2cb7 | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:44368: Failed connecting to publisher 049ba9e84257:34015: Connection refused
1775563223007 ms | 90d1104f2cb7 | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:44374: Failed connecting to publisher 049ba9e84257:34015: 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-07T12:00:28.200897" elapsed="0.000468"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-07T12:00:28.203720" level="INFO">${log2} = [Entrypoint] Starting multi_subscriber2 in mode network_tcp
1775563209958 ms | c17756d9ab5a | 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-07T12:00:28.201496" elapsed="0.002249"/>
</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-07T12:00:28.203828" elapsed="0.000262"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T12:00:28.204536" level="INFO">
[CONTAINER LOG: SUBSCRIBER 1]
[Entrypoint] Starting multi_subscriber2 in mode network_tcp
1775563209958 ms | c17756d9ab5a | multi_subscriber | 7 | info | Using built-in local time plugin.
[Subscriber 2] Waiting for messages...
1775563222984 ms | c17756d9ab5a | multi_subscriber | 7 | error | CTCPReaderLayer - TCPPubSub (Error) -SubscriberSession 172.18.0.3:56900-&gt;0fb53a150dc7:34139: Error reading header length: End of file
1775563222985 ms | c17756d9ab5a | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.3:51078: Failed connecting to publisher 0fb53a150dc7:34139: Connection refused
1775563222985 ms | c17756d9ab5a | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.3:51086: Failed connecting to publisher 0fb53a150dc7:34139: Connection refused
1775563222986 ms | c17756d9ab5a | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.3:51090: Failed connecting to publisher 0fb53a150dc7:34139: Connection refused
1775563222987 ms | c17756d9ab5a | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.3:51102: Failed connecting to publisher 0fb53a150dc7:34139: Connection refused
1775563222988 ms | c17756d9ab5a | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.3:51114: Failed connecting to publisher 0fb53a150dc7:34139: Connection refused
1775563223002 ms | c17756d9ab5a | multi_subscriber | 7 | error | CTCPReaderLayer - TCPPubSub (Error) -SubscriberSession 172.18.0.3:48386-&gt;049ba9e84257:34015: Error reading header length: End of file
1775563223003 ms | c17756d9ab5a | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.3:42220: Failed connecting to publisher 049ba9e84257:34015: Connection refused
1775563223004 ms | c17756d9ab5a | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.3:42232: Failed connecting to publisher 049ba9e84257:34015: Connection refused
1775563223005 ms | c17756d9ab5a | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.3:42246: Failed connecting to publisher 049ba9e84257:34015: Connection refused
1775563223006 ms | c17756d9ab5a | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.3:42252: Failed connecting to publisher 049ba9e84257:34015: Connection refused
1775563223007 ms | c17756d9ab5a | multi_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.3:42266: Failed connecting to publisher 049ba9e84257:34015: 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-07T12:00:28.204213" elapsed="0.000405"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${SUB1}</arg>
<status status="PASS" start="2026-04-07T12:00:28.204717" elapsed="0.001379"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${SUB2}</arg>
<status status="PASS" start="2026-04-07T12:00:28.206205" elapsed="0.001042"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${PUB1}</arg>
<status status="PASS" start="2026-04-07T12:00:28.207327" elapsed="0.000966"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${PUB2}</arg>
<status status="PASS" start="2026-04-07T12:00:28.208374" elapsed="0.000961"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-07T12:00:28.210331" level="INFO">${exit1} = 0</msg>
<var>${exit1}</var>
<arg>${SUB1}</arg>
<status status="PASS" start="2026-04-07T12:00:28.209418" elapsed="0.000943"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-07T12:00:28.212015" level="INFO">${exit2} = 0</msg>
<var>${exit2}</var>
<arg>${SUB2}</arg>
<status status="PASS" start="2026-04-07T12:00:28.210455" elapsed="0.001588"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-07T12:00:28.213092" 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-07T12:00:28.212397" elapsed="0.000742"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-07T12:00:28.213555" 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-07T12:00:28.213219" elapsed="0.000377"/>
</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-07T12:00:28.213795" elapsed="0.000178"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${SUB1}</arg>
<status status="PASS" start="2026-04-07T12:00:28.214075" elapsed="0.006419"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${SUB2}</arg>
<status status="PASS" start="2026-04-07T12:00:28.220583" elapsed="0.005055"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${PUB1}</arg>
<status status="PASS" start="2026-04-07T12:00:28.225721" elapsed="0.004739"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${PUB2}</arg>
<status status="PASS" start="2026-04-07T12:00:28.230580" elapsed="0.005170"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-07T12:00:29.236191" 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-07T12:00:28.235836" elapsed="1.000471"/>
</kw>
<arg>network_tcp</arg>
<arg>network</arg>
<status status="PASS" start="2026-04-07T12:00:09.700927" elapsed="19.535470"/>
</kw>
<tag>multi_pub_sub_network_tcp</tag>
<status status="PASS" start="2026-04-07T12:00:09.700459" elapsed="19.536119"/>
</test>
<status status="PASS" start="2026-04-07T11:59:18.943626" elapsed="70.294437"/>
</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-07T12:00:29.241381" elapsed="0.000171"/>
</kw>
<kw name="Get Build Script Path" owner="GlobalPathsLibrary">
<msg time="2026-04-07T12:00:29.241725" 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-07T12:00:29.241633" elapsed="0.000111"/>
</kw>
<kw name="Get Network Name" owner="GlobalPathsLibrary">
<msg time="2026-04-07T12:00:29.241886" level="INFO">${net} = ecal_test_net</msg>
<var>${net}</var>
<status status="PASS" start="2026-04-07T12:00:29.241809" elapsed="0.000094"/>
</kw>
<kw name="Get Build Script Args" owner="GlobalPathsLibrary">
<msg time="2026-04-07T12:00:29.242038" level="INFO">${args} = ['network_crash']</msg>
<var>${args}</var>
<status status="PASS" start="2026-04-07T12:00:29.241964" elapsed="0.000090"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-07T12:00:29.242370" 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-07T12:00:29.242127" elapsed="0.000275"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-07T12:00:29.242725" 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-07T12:00:29.242508" elapsed="0.000247"/>
</kw>
<kw name="Get Test Description" owner="GlobalPathsLibrary">
<msg time="2026-04-07T12:00:29.242999" 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-07T12:00:29.242825" elapsed="0.000197"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T12:00:29.243265" 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-07T12:00:29.243093" elapsed="0.000211"/>
</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-07T12:00:29.243372" elapsed="0.000207"/>
</kw>
<kw name="Run Process" owner="Process">
<msg time="2026-04-07T12:00:29.243916" 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-07T12:00:29.244335" level="INFO">Waiting for process to complete.</msg>
<msg time="2026-04-07T12:00:37.897965" level="INFO">Process completed.</msg>
<msg time="2026-04-07T12:00:37.898125" 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-07T12:00:29.243682" elapsed="8.654469"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-07T12:00:37.898949" 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-07T12:00:37.898300" elapsed="0.000705"/>
</kw>
<kw name="Create Docker Network" owner="DockerLibrary">
<arg>${NETWORK}</arg>
<status status="PASS" start="2026-04-07T12:00:37.899104" elapsed="0.007501"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-07T12:00:39.907109" 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-07T12:00:37.906724" elapsed="2.000583"/>
</kw>
<status status="PASS" start="2026-04-07T12:00:29.241238" elapsed="10.666162"/>
</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-07T12:00:39.908696" 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-07T12:00:39.908397" elapsed="0.000319"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-07T12:00:39.908979" 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-07T12:00:39.908793" elapsed="0.000204"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-07T12:00:39.909225" 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-07T12:00:39.909066" elapsed="0.000177"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-07T12:00:39.909486" 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-07T12:00:39.909310" elapsed="0.000197"/>
</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-07T12:00:39.909576" elapsed="0.000171"/>
</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-07T12:00:39.909837" elapsed="0.129495"/>
</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-07T12:00:40.039571" elapsed="0.118319"/>
</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-07T12:00:40.158053" elapsed="0.000287"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-07T12:00:47.158891" 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-07T12:00:40.158446" elapsed="7.000560"/>
</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-07T12:00:47.159178" elapsed="0.000377"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-07T12:00:47.162443" level="INFO">${log_net} = [Entrypoint] Starting network UDP publisher...
1775563240159 ms | fdefac39d97f | 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-07T12:00:47.159680" elapsed="0.002812"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T12:00:47.162815" level="INFO">
[LOG: NETWORK UDP PUB2 CONTAINER]
[Entrypoint] Starting network UDP publisher...
1775563240159 ms | fdefac39d97f | 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-07T12:00:47.162587" elapsed="0.000264"/>
</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-07T12:00:47.163221" elapsed="0.000273"/>
</kw>
<kw name="Run Process" owner="Process">
<msg time="2026-04-07T12:00:47.164042" level="INFO">Starting process:
docker network disconnect ecal_test_net udp_network_pub</msg>
<msg time="2026-04-07T12:00:47.164575" level="INFO">Waiting for process to complete.</msg>
<msg time="2026-04-07T12:00:47.206453" level="INFO">Process completed.</msg>
<msg time="2026-04-07T12:00:47.206681" 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-07T12:00:47.163610" elapsed="0.043104"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-07T12:00:47.207603" 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-07T12:00:47.206894" elapsed="0.000805"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-07T12:00:48.208192" 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-07T12:00:47.207824" elapsed="1.000474"/>
</kw>
<arg>${NET_PUB}</arg>
<arg>${NETWORK}</arg>
<status status="PASS" start="2026-04-07T12:00:47.162981" elapsed="1.045397"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-07T12:01:21.208966" 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-07T12:00:48.208544" elapsed="33.000534"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-07T12:01:21.212205" level="INFO">${log_local} = [Entrypoint] Starting UDP subscriber, then UDP publisher...
1775563240038 ms | f6d87400231a | 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-07T12:01:21.209271" elapsed="0.002961"/>
</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-07T12:01:21.212336" elapsed="0.000333"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T12:01:21.213051" level="INFO">
[LOG: LOCAL UDP PUB + SUB + PUB3 CONTAINER]
[Entrypoint] Starting UDP subscriber, then UDP publisher...
1775563240038 ms | f6d87400231a | 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.
1775563240038 ms | f6d87400231a | 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...
1775563251041 ms | f6d87400231a | 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: 42
[Subscriber] Received: 44
[Subscriber] Received: 44
[Subscriber] Received: 42
[Subscriber] Received: 44
[Subscriber] Received: 42
[Subscriber] Received: 42
[Subscriber] Received: 44
[Subscriber] Received: 44
[Subscriber] Received: 42
[Subscriber] Received: 42
[Subscriber] Received: 44
[Subscriber] Received: 42
[Subscriber] Received: 44
[Subscriber] Received: 44
[Subscriber] Received: 42
[Subscriber] Received: 44
[Subscriber] Received: 42
[Subscriber] Received: 42
[Subscriber] Received: 44
[Subscriber] Received: 44
[Subscriber] Received: 42

=== 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; 14/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-07T12:01:21.212775" elapsed="0.000377"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${LOCAL_ALL}</arg>
<status status="PASS" start="2026-04-07T12:01:21.213229" elapsed="0.001044"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-07T12:01:21.215257" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${LOCAL_ALL}</arg>
<status status="PASS" start="2026-04-07T12:01:21.214358" elapsed="0.000921"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-07T12:01:21.215617" 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-07T12:01:21.215360" elapsed="0.000302"/>
</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-07T12:01:21.215742" elapsed="0.000115"/>
</kw>
<status status="PASS" start="2026-04-07T12:00:39.907967" elapsed="41.307962"/>
</kw>
<tag>network_crash_test</tag>
<status status="PASS" start="2026-04-07T12:00:39.907488" elapsed="41.308539"/>
</test>
<status status="PASS" start="2026-04-07T12:00:29.238677" elapsed="51.977952"/>
</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-07T12:01:21.219812" elapsed="0.000123"/>
</kw>
<kw name="Get Build Script Path" owner="GlobalPathsLibrary">
<msg time="2026-04-07T12:01:21.220100" 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-07T12:01:21.220012" elapsed="0.000108"/>
</kw>
<kw name="Get Network Name" owner="GlobalPathsLibrary">
<msg time="2026-04-07T12:01:21.220261" level="INFO">${net} = ecal_test_net</msg>
<var>${net}</var>
<status status="PASS" start="2026-04-07T12:01:21.220184" elapsed="0.000094"/>
</kw>
<kw name="Get Build Script Args" owner="GlobalPathsLibrary">
<msg time="2026-04-07T12:01:21.220413" level="INFO">${args} = ['pub_crash']</msg>
<var>${args}</var>
<status status="PASS" start="2026-04-07T12:01:21.220340" elapsed="0.000090"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-07T12:01:21.220773" 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-07T12:01:21.220532" elapsed="0.000278"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-07T12:01:21.221096" 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-07T12:01:21.220889" elapsed="0.000236"/>
</kw>
<kw name="Get Test Description" owner="GlobalPathsLibrary">
<msg time="2026-04-07T12:01:21.221339" 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-07T12:01:21.221196" elapsed="0.000163"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T12:01:21.221625" 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-07T12:01:21.221427" elapsed="0.000231"/>
</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-07T12:01:21.221729" elapsed="0.000161"/>
</kw>
<kw name="Run Process" owner="Process">
<msg time="2026-04-07T12:01:21.222227" 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-07T12:01:21.222621" level="INFO">Waiting for process to complete.</msg>
<msg time="2026-04-07T12:01:30.079929" level="INFO">Process completed.</msg>
<msg time="2026-04-07T12:01:30.080095" 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-07T12:01:21.221993" elapsed="8.858126"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-07T12:01:30.080942" 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-07T12:01:30.080308" elapsed="0.000686"/>
</kw>
<kw name="Create Docker Network" owner="DockerLibrary">
<arg>${NETWORK}</arg>
<status status="PASS" start="2026-04-07T12:01:30.081080" elapsed="0.007071"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-07T12:01:33.088627" 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-07T12:01:30.088257" elapsed="3.000486"/>
</kw>
<status status="PASS" start="2026-04-07T12:01:21.219669" elapsed="11.869165"/>
</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-07T12:01:33.090335" 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-07T12:01:33.090048" elapsed="0.000309"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-07T12:01:33.090656" 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-07T12:01:33.090436" elapsed="0.000240"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-07T12:01:33.090945" 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-07T12:01:33.090750" elapsed="0.000214"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-07T12:01:33.091218" 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-07T12:01:33.091033" elapsed="0.000203"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-07T12:01:33.091534" 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-07T12:01:33.091306" elapsed="0.000248"/>
</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-07T12:01:33.091627" elapsed="0.000222"/>
</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-07T12:01:33.091950" elapsed="0.134859"/>
</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-07T12:01:33.226965" elapsed="0.121413"/>
</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-07T12:01:33.348582" elapsed="0.117148"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-07T12:02:08.466329" 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-07T12:01:33.465890" elapsed="35.000559"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-07T12:02:08.469602" level="INFO">${sub_logs} = [Entrypoint] Starting crash subscriber in mode network_udp
1775563293229 ms | 4332aabc3043 | ./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-07T12:02:08.466656" elapsed="0.002973"/>
</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-07T12:02:08.469724" elapsed="0.000301"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T12:02:08.470357" level="INFO">
[SUBSCRIBER CONTAINER OUTPUT]
[Entrypoint] Starting crash subscriber in mode network_udp
1775563293229 ms | 4332aabc3043 | ./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-07T12:02:08.470138" elapsed="0.000263"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-07T12:02:08.472700" level="INFO">${crash_logs} = [Entrypoint] Starting crash publisher in mode network_udp
1775563293351 ms | fe1f86f1580d | ./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-07T12:02:08.470511" elapsed="0.002220"/>
</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-07T12:02:08.472815" elapsed="0.000234"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T12:02:08.473430" level="INFO">
[CRASH PUBLISHER OUTPUT]
[Entrypoint] Starting crash publisher in mode network_udp
1775563293351 ms | fe1f86f1580d | ./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-07T12:02:08.473176" elapsed="0.000387"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${SUB_NAME}</arg>
<status status="PASS" start="2026-04-07T12:02:08.473665" elapsed="0.001199"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${CRASH_PUB}</arg>
<status status="PASS" start="2026-04-07T12:02:08.474947" elapsed="0.000939"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${TEST_PUB}</arg>
<status status="PASS" start="2026-04-07T12:02:08.475967" elapsed="0.000973"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-07T12:02:08.477880" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${SUB_NAME}</arg>
<status status="PASS" start="2026-04-07T12:02:08.477022" elapsed="0.000881"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-07T12:02:08.478204" 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-07T12:02:08.477983" elapsed="0.000266"/>
</kw>
<kw name="Log Test Summary" owner="DockerLibrary">
<arg>Network Communication after one Publisher crash ${layer_tag}</arg>
<arg>${True}</arg>
<status status="PASS" start="2026-04-07T12:02:08.478328" elapsed="0.000171"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${SUB_NAME}</arg>
<status status="PASS" start="2026-04-07T12:02:08.478610" elapsed="0.004973"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${CRASH_PUB}</arg>
<status status="PASS" start="2026-04-07T12:02:08.483666" elapsed="0.005070"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${TEST_PUB}</arg>
<status status="PASS" start="2026-04-07T12:02:08.488820" elapsed="0.005293"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-07T12:02:09.494564" 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-07T12:02:08.494200" elapsed="1.000484"/>
</kw>
<arg>network_udp</arg>
<arg>network</arg>
<status status="PASS" start="2026-04-07T12:01:33.089546" elapsed="36.405238"/>
</kw>
<tag>pub_crash_network_udp</tag>
<status status="PASS" start="2026-04-07T12:01:33.088908" elapsed="36.406017"/>
</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-07T12:02:09.497187" 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-07T12:02:09.496899" elapsed="0.000309"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-07T12:02:09.497457" 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-07T12:02:09.497285" elapsed="0.000224"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-07T12:02:09.497790" 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-07T12:02:09.497588" elapsed="0.000220"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-07T12:02:09.498067" 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-07T12:02:09.497879" elapsed="0.000205"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-07T12:02:09.498333" 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-07T12:02:09.498150" elapsed="0.000201"/>
</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-07T12:02:09.498425" elapsed="0.000247"/>
</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-07T12:02:09.498762" elapsed="0.133593"/>
</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-07T12:02:09.632559" elapsed="0.121762"/>
</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-07T12:02:09.754552" elapsed="0.121255"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-07T12:02:44.876488" 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-07T12:02:09.876002" elapsed="35.000649"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-07T12:02:44.879916" level="INFO">${sub_logs} = [Entrypoint] Starting crash subscriber in mode network_tcp
1775563329634 ms | d0acfb70ca9e | ./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-07T12:02:44.876822" elapsed="0.003119"/>
</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-07T12:02:44.880031" elapsed="0.000308"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T12:02:44.880697" level="INFO">
[SUBSCRIBER CONTAINER OUTPUT]
[Entrypoint] Starting crash subscriber in mode network_tcp
1775563329634 ms | d0acfb70ca9e | ./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
1775563340669 ms | d0acfb70ca9e | ./test_subscriber | 7 | error | CTCPReaderLayer - TCPPubSub (Error) -SubscriberSession 172.18.0.2:45084-&gt;90bb3d92c8d7:33673: Error reading header length: End of file
1775563340670 ms | d0acfb70ca9e | ./test_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:37404: Failed connecting to publisher 90bb3d92c8d7:33673: Connection refused
1775563340671 ms | d0acfb70ca9e | ./test_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:37416: Failed connecting to publisher 90bb3d92c8d7:33673: Connection refused
1775563340672 ms | d0acfb70ca9e | ./test_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:37420: Failed connecting to publisher 90bb3d92c8d7:33673: Connection refused
1775563340672 ms | d0acfb70ca9e | ./test_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:37434: Failed connecting to publisher 90bb3d92c8d7:33673: Connection refused
1775563340673 ms | d0acfb70ca9e | ./test_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:37442: Failed connecting to publisher 90bb3d92c8d7:33673: 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
1775563357185 ms | d0acfb70ca9e | ./test_subscriber | 7 | error | CTCPReaderLayer - TCPPubSub (Error) -SubscriberSession 172.18.0.2:54728-&gt;15d96804cdb4:38169: Error reading header length: End of file
1775563357186 ms | d0acfb70ca9e | ./test_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:43932: Failed connecting to publisher 15d96804cdb4:38169: Connection refused
1775563357186 ms | d0acfb70ca9e | ./test_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:43934: Failed connecting to publisher 15d96804cdb4:38169: Connection refused
1775563357187 ms | d0acfb70ca9e | ./test_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:43946: Failed connecting to publisher 15d96804cdb4:38169: Connection refused
1775563357188 ms | d0acfb70ca9e | ./test_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:43948: Failed connecting to publisher 15d96804cdb4:38169: Connection refused
1775563357188 ms | d0acfb70ca9e | ./test_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:43962: Failed connecting to publisher 15d96804cdb4:38169: 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-07T12:02:44.880454" elapsed="0.000350"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-07T12:02:44.883177" level="INFO">${crash_logs} = [Entrypoint] Starting crash publisher in mode network_tcp
1775563329756 ms | 90bb3d92c8d7 | ./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-07T12:02:44.880881" elapsed="0.002320"/>
</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-07T12:02:44.883282" elapsed="0.000252"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T12:02:44.883900" level="INFO">
[CRASH PUBLISHER OUTPUT]
[Entrypoint] Starting crash publisher in mode network_tcp
1775563329756 ms | 90bb3d92c8d7 | ./crash_publisher | 7 | info | Using built-in local time plugin.
[Publisher] Waiting for at least 1 subscriber(s) on topic: test_topic
1775563330635 ms | 90bb3d92c8d7 | ./crash_publisher | 7 | info | CTCPReaderLayer - TCPPubSub (Info) -Publisher :::0: Created publisher and waiting for clients.
1775563330636 ms | 90bb3d92c8d7 | ./crash_publisher | 7 | info | CTCPReaderLayer - TCPPubSub (Info) -Publisher :::33673: Subscriber ::ffff:172.18.0.2:45084 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-07T12:02:44.883649" elapsed="0.000305"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${SUB_NAME}</arg>
<status status="PASS" start="2026-04-07T12:02:44.884044" elapsed="0.001006"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${CRASH_PUB}</arg>
<status status="PASS" start="2026-04-07T12:02:44.885131" elapsed="0.000953"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${TEST_PUB}</arg>
<status status="PASS" start="2026-04-07T12:02:44.886164" elapsed="0.000973"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-07T12:02:44.888143" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${SUB_NAME}</arg>
<status status="PASS" start="2026-04-07T12:02:44.887220" elapsed="0.000947"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-07T12:02:44.888503" 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-07T12:02:44.888246" elapsed="0.000310"/>
</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-07T12:02:44.888635" elapsed="0.000139"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${SUB_NAME}</arg>
<status status="PASS" start="2026-04-07T12:02:44.888869" elapsed="0.004924"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${CRASH_PUB}</arg>
<status status="PASS" start="2026-04-07T12:02:44.893873" elapsed="0.004826"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${TEST_PUB}</arg>
<status status="PASS" start="2026-04-07T12:02:44.898812" elapsed="0.004869"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-07T12:02:45.904154" 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-07T12:02:44.903777" elapsed="1.000492"/>
</kw>
<arg>network_tcp</arg>
<arg>network</arg>
<status status="PASS" start="2026-04-07T12:02:09.496666" elapsed="36.407694"/>
</kw>
<tag>pub_crash_network_tcp</tag>
<status status="PASS" start="2026-04-07T12:02:09.496173" elapsed="36.408358"/>
</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-07T12:02:45.906874" 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-07T12:02:45.906595" elapsed="0.000299"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-07T12:02:45.907170" 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-07T12:02:45.906969" elapsed="0.000219"/>
</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-07T12:02:45.907259" elapsed="0.000197"/>
</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-07T12:02:45.907579" elapsed="0.123607"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-07T12:03:21.031978" 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-07T12:02:46.031386" elapsed="35.000710"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-07T12:03:21.035440" 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)
1775563366033 ms | 8c3ff0d84b7d | ./crash_publisher | 7 |...</msg>
<var>${logs}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-07T12:03:21.032266" elapsed="0.003219"/>
</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-07T12:03:21.035579" elapsed="0.000315"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T12:03:21.036299" 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)
1775563366033 ms | 8c3ff0d84b7d | ./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)
1775563366033 ms | 8c3ff0d84b7d | 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)
1775563367035 ms | 8c3ff0d84b7d | ./test_subscriber | 18 | info | Using built-in local time plugin.

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

[Publisher] Found 1 subscriber(s). Proceeding to send messages.
[Publisher] Found 1 subscriber(s). Proceeding to send messages.

 [Test Publisher] Started with mode=local_shm, topic=test_topic, node=test_publisher, count=25, delay=1000ms
[Crash Publisher] Starting and will crash after 10 messages...
[Crash Publisher] Sent buffer with content: 42 (message 1)
[Test Publisher] Sent buffer with content: 43 (message 1)
[Subscriber] Received value: 42
[Subscriber] Received value: 43
[Crash Publisher] Sent buffer with content: 42 (message 2)
[Subscriber] Received value: 42
[Test Publisher] Sent buffer with content: 43 (message 2)
[Subscriber] Received value: 43
[Test Publisher] Sent buffer with content: 43 (message 3)
[Crash Publisher] Sent buffer with content: 42 (message 3)
[Subscriber] Received value: 42
[Subscriber] Received value: 43
[Test Publisher] Sent buffer with content: 43 (message 4)
[Crash Publisher] Sent buffer with content: 42 (message 4)
[Subscriber] Received value: 42
[Subscriber] Received value: 43
[Crash Publisher] Sent buffer with content: 42 (message 5)
[Test Publisher] Sent buffer with content: 43 (message 5)
[Subscriber] Received value: 42
[Subscriber] Received value: 43
[Test Publisher] Sent buffer with content: 43 (message 6)
[Crash Publisher] Sent buffer with content: 42 (message 6)
[Subscriber] Received value: 42
[Subscriber] Received value: 43
[Crash Publisher] Sent buffer with content: 42 (message 7)
[Test Publisher] Sent buffer with content: 43 (message 7)
[Subscriber] Received value: 43
[Subscriber] Received value: 42
[Crash Publisher] Sent buffer with content: 42 (message 8)
[Test Publisher] Sent buffer with content: 43 (message 8)
[Subscriber] Received value: 42
[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-07T12:03:21.036011" elapsed="0.000379"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-07T12:03:21.037792" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-07T12:03:21.036519" elapsed="0.001304"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-07T12:03:21.038220" 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-07T12:03:21.037936" elapsed="0.000344"/>
</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-07T12:03:21.038437" elapsed="0.000227"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-07T12:03:21.038767" elapsed="0.005750"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-07T12:03:22.044972" 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-07T12:03:21.044607" elapsed="1.000486"/>
</kw>
<arg>local_shm</arg>
<status status="PASS" start="2026-04-07T12:02:45.906324" elapsed="36.138865"/>
</kw>
<tag>pub_crash_local_shm</tag>
<status status="PASS" start="2026-04-07T12:02:45.905925" elapsed="36.139406"/>
</test>
<status status="PASS" start="2026-04-07T12:01:21.217171" elapsed="120.828868"/>
</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-07T12:03:22.049503" elapsed="0.000148"/>
</kw>
<kw name="Get Build Script Path" owner="GlobalPathsLibrary">
<msg time="2026-04-07T12:03:22.049824" 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-07T12:03:22.049733" elapsed="0.000110"/>
</kw>
<kw name="Get Network Name" owner="GlobalPathsLibrary">
<msg time="2026-04-07T12:03:22.049983" level="INFO">${net} = ecal_test_net</msg>
<var>${net}</var>
<status status="PASS" start="2026-04-07T12:03:22.049908" elapsed="0.000092"/>
</kw>
<kw name="Get Build Script Args" owner="GlobalPathsLibrary">
<msg time="2026-04-07T12:03:22.050144" level="INFO">${args} = ['rpc_n_to_n_test']</msg>
<var>${args}</var>
<status status="PASS" start="2026-04-07T12:03:22.050060" elapsed="0.000101"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-07T12:03:22.050521" 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-07T12:03:22.050234" elapsed="0.000323"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-07T12:03:22.050853" 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-07T12:03:22.050637" elapsed="0.000245"/>
</kw>
<kw name="Get Test Description" owner="GlobalPathsLibrary">
<msg time="2026-04-07T12:03:22.051110" 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-07T12:03:22.050952" elapsed="0.000179"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T12:03:22.051373" 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-07T12:03:22.051202" elapsed="0.000203"/>
</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-07T12:03:22.051495" elapsed="0.000171"/>
</kw>
<kw name="Run Process" owner="Process">
<msg time="2026-04-07T12:03:22.052074" 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-07T12:03:22.052493" level="INFO">Waiting for process to complete.</msg>
<msg time="2026-04-07T12:03:30.210335" level="INFO">Process completed.</msg>
<msg time="2026-04-07T12:03:30.210531" 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-07T12:03:22.051780" elapsed="8.158780"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-07T12:03:30.212452" 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-07T12:03:30.210714" elapsed="0.001834"/>
</kw>
<kw name="Create Docker Network" owner="DockerLibrary">
<arg>${NETWORK}</arg>
<status status="PASS" start="2026-04-07T12:03:30.212642" elapsed="0.007226"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-07T12:03:32.220367" 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-07T12:03:30.219984" elapsed="2.000540"/>
</kw>
<status status="PASS" start="2026-04-07T12:03:22.049297" elapsed="10.171317"/>
</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-07T12:03:32.221844" 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-07T12:03:32.221576" elapsed="0.000289"/>
</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-07T12:03:32.221940" elapsed="0.000235"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-07T12:03:32.222772" 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-07T12:03:32.222555" elapsed="0.000237"/>
</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-07T12:03:32.222862" elapsed="0.128046"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-04-07T12:03:32.222456" elapsed="0.128534"/>
</iter>
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-07T12:03:32.351767" 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-07T12:03:32.351315" elapsed="0.000513"/>
</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-07T12:03:32.352028" elapsed="0.129190"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-04-07T12:03:32.351169" elapsed="0.130134"/>
</iter>
<var>${i}</var>
<value>${NUM_SERVERS}</value>
<status status="PASS" start="2026-04-07T12:03:32.222252" elapsed="0.259102"/>
</for>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-07T12:03:34.482036" 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-07T12:03:32.481546" elapsed="2.000605"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-07T12:03:34.482972" 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-07T12:03:34.482676" elapsed="0.000317"/>
</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-07T12:03:34.483069" elapsed="0.124251"/>
</kw>
<var name="${j}">0</var>
<status status="PASS" start="2026-04-07T12:03:34.482553" elapsed="0.124849"/>
</iter>
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-07T12:03:34.608120" 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-07T12:03:34.607738" elapsed="0.000411"/>
</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-07T12:03:34.608249" elapsed="0.122625"/>
</kw>
<var name="${j}">1</var>
<status status="PASS" start="2026-04-07T12:03:34.607600" elapsed="0.123350"/>
</iter>
<var>${j}</var>
<value>${NUM_CLIENTS}</value>
<status status="PASS" start="2026-04-07T12:03:34.482242" elapsed="0.248753"/>
</for>
<for flavor="IN RANGE">
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-07T12:03:34.731862" 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-07T12:03:34.731495" elapsed="0.000398"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-07T12:03:36.170601" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${name}</arg>
<status status="PASS" start="2026-04-07T12:03:34.732001" elapsed="1.438658"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-07T12:03:36.171310" 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-07T12:03:36.170847" elapsed="0.000535"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-07T12:03:36.174098" level="INFO">${logs} = [Entrypoint] Starting client in mode network_udp...
[Client] Initializing eCAL with mode: network_udp
1775563414609 ms | b0ac8fac3b94 | rpc_client | 1 | info | Using built-in local time plugin.
[Clien...</msg>
<var>${logs}</var>
<arg>${name}</arg>
<status status="PASS" start="2026-04-07T12:03:36.171507" elapsed="0.002616"/>
</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-07T12:03:36.174229" elapsed="0.000492"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T12:03:36.175098" level="INFO">
[CLIENT LOG: rpc_client_0]
[Entrypoint] Starting client in mode network_udp...
[Client] Initializing eCAL with mode: network_udp
1775563414609 ms | b0ac8fac3b94 | 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-07T12:03:36.174830" elapsed="0.000327"/>
</kw>
<var name="${j}">0</var>
<status status="PASS" start="2026-04-07T12:03:34.731340" elapsed="1.443856"/>
</iter>
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-07T12:03:36.175808" 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-07T12:03:36.175444" elapsed="0.000406"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-07T12:03:36.290138" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${name}</arg>
<status status="PASS" start="2026-04-07T12:03:36.175976" elapsed="0.114205"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-07T12:03:36.290926" 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-07T12:03:36.290349" elapsed="0.000659"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-07T12:03:36.293911" level="INFO">${logs} = [Entrypoint] Starting client in mode network_udp...
[Client] Initializing eCAL with mode: network_udp
1775563414732 ms | 3e1ec6771f11 | rpc_client | 1 | info | Using built-in local time plugin.
[Clien...</msg>
<var>${logs}</var>
<arg>${name}</arg>
<status status="PASS" start="2026-04-07T12:03:36.291138" elapsed="0.002800"/>
</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-07T12:03:36.294031" elapsed="0.000330"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T12:03:36.294789" level="INFO">
[CLIENT LOG: rpc_client_1]
[Entrypoint] Starting client in mode network_udp...
[Client] Initializing eCAL with mode: network_udp
1775563414732 ms | 3e1ec6771f11 | 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-07T12:03:36.294458" elapsed="0.000380"/>
</kw>
<var name="${j}">1</var>
<status status="PASS" start="2026-04-07T12:03:36.175347" elapsed="0.119528"/>
</iter>
<var>${j}</var>
<value>${NUM_CLIENTS}</value>
<status status="PASS" start="2026-04-07T12:03:34.731074" elapsed="1.563842"/>
</for>
<for flavor="IN RANGE">
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-07T12:03:36.295566" 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-07T12:03:36.295292" elapsed="0.000296"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-07T12:03:36.297981" level="INFO">${logs} = [Entrypoint] Starting server in mode network_udp...
[1;33m[Server] Initializing eCAL with mode: network_udp[0m
1775563412352 ms | be3404c04d21 | 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-07T12:03:36.295662" elapsed="0.002345"/>
</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-07T12:03:36.298135" elapsed="0.000256"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T12:03:36.298837" level="INFO">
[SERVER LOG: rpc_server_0]
[Entrypoint] Starting server in mode network_udp...
[1;33m[Server] Initializing eCAL with mode: network_udp[0m
1775563412352 ms | be3404c04d21 | 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-07T12:03:36.298552" elapsed="0.000327"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${name}</arg>
<status status="PASS" start="2026-04-07T12:03:36.298954" elapsed="10.087949"/>
</kw>
<var name="${i}">0</var>
<status status="PASS" start="2026-04-07T12:03:36.295214" elapsed="10.091779"/>
</iter>
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-07T12:03:46.387610" 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-07T12:03:46.387231" elapsed="0.000403"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-07T12:03:46.390318" level="INFO">${logs} = [Entrypoint] Starting server in mode network_udp...
[1;33m[Server] Initializing eCAL with mode: network_udp[0m
1775563412483 ms | d47b68ee2595 | 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-07T12:03:46.387715" elapsed="0.002637"/>
</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-07T12:03:46.390461" elapsed="0.000357"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T12:03:46.391196" level="INFO">
[SERVER LOG: rpc_server_1]
[Entrypoint] Starting server in mode network_udp...
[1;33m[Server] Initializing eCAL with mode: network_udp[0m
1775563412483 ms | d47b68ee2595 | 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-07T12:03:46.390929" elapsed="0.000321"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${name}</arg>
<status status="PASS" start="2026-04-07T12:03:46.391346" elapsed="10.079558"/>
</kw>
<var name="${i}">1</var>
<status status="PASS" start="2026-04-07T12:03:46.387128" elapsed="10.083837"/>
</iter>
<var>${i}</var>
<value>${NUM_SERVERS}</value>
<status status="PASS" start="2026-04-07T12:03:36.294982" elapsed="20.176036"/>
</for>
<for flavor="IN RANGE">
<iter>
<kw name="Stop Container" owner="DockerLibrary">
<arg>rpc_client_${j}</arg>
<status status="PASS" start="2026-04-07T12:03:56.471424" elapsed="0.006891"/>
</kw>
<var name="${j}">0</var>
<status status="PASS" start="2026-04-07T12:03:56.471304" elapsed="0.007046"/>
</iter>
<iter>
<kw name="Stop Container" owner="DockerLibrary">
<arg>rpc_client_${j}</arg>
<status status="PASS" start="2026-04-07T12:03:56.478540" elapsed="0.004967"/>
</kw>
<var name="${j}">1</var>
<status status="PASS" start="2026-04-07T12:03:56.478430" elapsed="0.005111"/>
</iter>
<var>${j}</var>
<value>${NUM_CLIENTS}</value>
<status status="PASS" start="2026-04-07T12:03:56.471086" elapsed="0.012482"/>
</for>
<kw name="Log Test Summary" owner="DockerLibrary">
<arg>RPC N-to-N Test</arg>
<arg>${True}</arg>
<status status="PASS" start="2026-04-07T12:03:56.483651" elapsed="0.000137"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-07T12:03:57.484298" 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-07T12:03:56.483886" elapsed="1.000532"/>
</kw>
<status status="PASS" start="2026-04-07T12:03:32.221318" elapsed="25.263234"/>
</kw>
<tag>rpc_n_to_n_test</tag>
<status status="PASS" start="2026-04-07T12:03:32.220687" elapsed="25.264011"/>
</test>
<status status="PASS" start="2026-04-07T12:03:22.046666" elapsed="35.439449"/>
</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-07T12:03:57.489536" elapsed="0.000139"/>
</kw>
<kw name="Get Build Script Path" owner="GlobalPathsLibrary">
<msg time="2026-04-07T12:03:57.489846" 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-07T12:03:57.489756" elapsed="0.000109"/>
</kw>
<kw name="Get Network Name" owner="GlobalPathsLibrary">
<msg time="2026-04-07T12:03:57.490006" level="INFO">${net} = ecal_test_net</msg>
<var>${net}</var>
<status status="PASS" start="2026-04-07T12:03:57.489929" elapsed="0.000093"/>
</kw>
<kw name="Get Build Script Args" owner="GlobalPathsLibrary">
<msg time="2026-04-07T12:03:57.490160" level="INFO">${args} = ['rpc_ping_test']</msg>
<var>${args}</var>
<status status="PASS" start="2026-04-07T12:03:57.490085" elapsed="0.000092"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-07T12:03:57.490547" 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-07T12:03:57.490251" elapsed="0.000331"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-07T12:03:57.490879" 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-07T12:03:57.490662" elapsed="0.000246"/>
</kw>
<kw name="Get Test Description" owner="GlobalPathsLibrary">
<msg time="2026-04-07T12:03:57.491128" 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-07T12:03:57.490980" elapsed="0.000168"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T12:03:57.491388" 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-07T12:03:57.491220" 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-07T12:03:57.491572" elapsed="0.000182"/>
</kw>
<kw name="Run Process" owner="Process">
<msg time="2026-04-07T12:03:57.492098" 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-07T12:03:57.492520" level="INFO">Waiting for process to complete.</msg>
<msg time="2026-04-07T12:04:05.584130" level="INFO">Process completed.</msg>
<msg time="2026-04-07T12:04:05.584290" 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-07T12:03:57.491861" elapsed="8.092453"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-07T12:04:05.585141" 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-07T12:04:05.584528" elapsed="0.000665"/>
</kw>
<kw name="Create Docker Network" owner="DockerLibrary">
<arg>${NETWORK}</arg>
<status status="PASS" start="2026-04-07T12:04:05.585281" elapsed="0.007088"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-07T12:04:07.592894" 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-07T12:04:05.592515" elapsed="2.000501"/>
</kw>
<status status="PASS" start="2026-04-07T12:03:57.489345" elapsed="10.103771"/>
</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-07T12:04:07.594559" 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-07T12:04:07.594272" elapsed="0.000308"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-07T12:04:07.594828" 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-07T12:04:07.594657" elapsed="0.000189"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-07T12:04:07.595077" 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-07T12:04:07.594916" elapsed="0.000179"/>
</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-07T12:04:07.595163" elapsed="0.000165"/>
</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-07T12:04:07.595402" elapsed="0.123449"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-07T12:04:08.719530" 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-07T12:04:07.719044" elapsed="1.000591"/>
</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-07T12:04:08.719781" elapsed="0.119726"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-07T12:04:10.400644" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${CLIENT_NAME}</arg>
<status status="PASS" start="2026-04-07T12:04:08.839669" elapsed="1.561032"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-07T12:04:10.401385" 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-07T12:04:10.400912" elapsed="0.000602"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-07T12:04:10.404290" level="INFO">${server_logs} = [Entrypoint] Starting server in mode network_udp...
[1;33m[Server] Initializing eCAL with mode: network_udp[0m
1775563447720 ms | 2d876efde363 | 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-07T12:04:10.401628" elapsed="0.002689"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-07T12:04:10.407005" level="INFO">${client_logs} = [Entrypoint] Starting client in mode network_udp...
[1;33m[Client] Initializing eCAL with mode: network_udp[0m
1775563448841 ms | 5a2c03967498 | 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-07T12:04:10.404400" elapsed="0.002632"/>
</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-07T12:04:10.407117" elapsed="0.000258"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T12:04:10.407773" level="INFO">
[CONTAINER LOG: SERVER]
[Entrypoint] Starting server in mode network_udp...
[1;33m[Server] Initializing eCAL with mode: network_udp[0m
1775563447720 ms | 2d876efde363 | 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-07T12:04:10.407525" elapsed="0.000292"/>
</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-07T12:04:10.407914" elapsed="0.000311"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T12:04:10.408663" level="INFO">
[CONTAINER LOG: CLIENT]
[Entrypoint] Starting client in mode network_udp...
[1;33m[Client] Initializing eCAL with mode: network_udp[0m
1775563448841 ms | 5a2c03967498 | 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-07T12:04:10.408343" elapsed="0.000384"/>
</kw>
<kw name="Log Test Summary" owner="DockerLibrary">
<arg>RPC Ping Test (UDP)</arg>
<arg>${True}</arg>
<status status="PASS" start="2026-04-07T12:04:10.408842" elapsed="0.000179"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${CLIENT_NAME}</arg>
<status status="PASS" start="2026-04-07T12:04:10.409102" elapsed="0.004947"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${SERVER_NAME}</arg>
<status status="PASS" start="2026-04-07T12:04:10.414136" elapsed="10.078592"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-07T12:04:21.493429" 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-07T12:04:20.492922" elapsed="1.000671"/>
</kw>
<status status="PASS" start="2026-04-07T12:04:07.593781" elapsed="13.899991"/>
</kw>
<tag>rpc_server_client_ping_test</tag>
<status status="PASS" start="2026-04-07T12:04:07.593191" elapsed="13.900720"/>
</test>
<status status="PASS" start="2026-04-07T12:03:57.486729" elapsed="24.008245"/>
</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-07T12:04:21.498301" elapsed="0.000135"/>
</kw>
<kw name="Get Build Script Path" owner="GlobalPathsLibrary">
<msg time="2026-04-07T12:04:21.498647" 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-07T12:04:21.498550" elapsed="0.000118"/>
</kw>
<kw name="Get Build Script Args" owner="GlobalPathsLibrary">
<msg time="2026-04-07T12:04:21.498820" level="INFO">${args} = ['rpc_reconnect_test']</msg>
<var>${args}</var>
<status status="PASS" start="2026-04-07T12:04:21.498733" elapsed="0.000104"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-07T12:04:21.499167" 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-07T12:04:21.498914" elapsed="0.000283"/>
</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-07T12:04:21.499267" elapsed="0.064170"/>
</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-07T12:04:21.563680" elapsed="0.000299"/>
</kw>
<kw name="Run Process" owner="Process">
<msg time="2026-04-07T12:04:21.564350" 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-07T12:04:21.564701" level="INFO">Waiting for process to complete.</msg>
<msg time="2026-04-07T12:04:30.012856" level="INFO">Process completed.</msg>
<msg time="2026-04-07T12:04:30.013018" 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-07T12:04:21.564079" elapsed="8.448965"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-07T12:04:30.013895" 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-07T12:04:30.013199" elapsed="0.000754"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-07T12:04:33.014398" 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-07T12:04:30.014059" elapsed="3.000512"/>
</kw>
<status status="PASS" start="2026-04-07T12:04:21.498134" elapsed="11.516546"/>
</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-07T12:04:33.015428" elapsed="0.000258"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-07T12:04:33.016038" 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-07T12:04:33.015802" elapsed="0.000256"/>
</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-07T12:04:33.016131" elapsed="0.138432"/>
</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-07T12:04:33.154777" elapsed="0.131941"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-07T12:04:35.287298" 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-07T12:04:33.286901" elapsed="2.000511"/>
</kw>
<kw name="Disconnect Container From Network" owner="DockerLibrary">
<arg>rpc_client</arg>
<arg>${NETWORK}</arg>
<status status="PASS" start="2026-04-07T12:04:35.287617" elapsed="0.020519"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-07T12:04:41.308898" 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-07T12:04:35.308340" elapsed="6.000678"/>
</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-07T12:04:41.309192" elapsed="0.013491"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-07T12:04:43.323351" 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-07T12:04:41.322879" elapsed="2.000629"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-07T12:04:43.326374" level="INFO">${log_cli} = [Entrypoint] Starting client in mode network_udp...
[Client] Initializing eCAL with mode: network_udp
1775563473261 ms | 29ead85809bf | 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-07T12:04:43.323682" elapsed="0.002718"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-07T12:04:43.328811" level="INFO">${log_srv} = [Entrypoint] Starting server in mode network_udp...
[1;33m[Server] Initializing eCAL with mode: network_udp[0m
1775563473130 ms | 3d25e2aa236c | 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-07T12:04:43.326529" elapsed="0.002310"/>
</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-07T12:04:43.328932" elapsed="0.000294"/>
</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-07T12:04:43.329342" elapsed="0.000325"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T12:04:43.329993" level="INFO">
[CONTAINER LOG: CLIENT]
[Entrypoint] Starting client in mode network_udp...
[Client] Initializing eCAL with mode: network_udp
1775563473261 ms | 29ead85809bf | 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-07T12:04:43.329768" elapsed="0.000335"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T12:04:43.330458" level="INFO">
[CONTAINER LOG: SERVER]
[Entrypoint] Starting server in mode network_udp...
[1;33m[Server] Initializing eCAL with mode: network_udp[0m
1775563473130 ms | 3d25e2aa236c | 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-07T12:04:43.330207" elapsed="0.000335"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-07T12:04:43.331789" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>rpc_client</arg>
<status status="PASS" start="2026-04-07T12:04:43.330648" elapsed="0.001164"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-07T12:04:43.332111" 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-07T12:04:43.331894" elapsed="0.000261"/>
</kw>
<kw name="Log Test Summary" owner="DockerLibrary">
<arg>RPC Reconnect Test</arg>
<arg>${True}</arg>
<status status="PASS" start="2026-04-07T12:04:43.332233" elapsed="0.000124"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>rpc_client</arg>
<status status="PASS" start="2026-04-07T12:04:43.332495" elapsed="0.005289"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>rpc_server</arg>
<status status="PASS" start="2026-04-07T12:04:43.337870" elapsed="10.117330"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-07T12:04:54.455829" 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-07T12:04:53.455358" elapsed="1.000584"/>
</kw>
<status status="PASS" start="2026-04-07T12:04:33.015224" elapsed="21.440805"/>
</kw>
<tag>rpc_reconnect</tag>
<status status="PASS" start="2026-04-07T12:04:33.014753" elapsed="21.441403"/>
</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-07T12:04:54.457725" elapsed="0.000239"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-07T12:04:54.458360" 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-07T12:04:54.458082" elapsed="0.000299"/>
</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-07T12:04:54.458452" elapsed="0.145400"/>
</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-07T12:04:54.604057" elapsed="0.139888"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-07T12:04:56.744542" 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-07T12:04:54.744138" elapsed="2.000530"/>
</kw>
<kw name="Disconnect Container From Network" owner="DockerLibrary">
<arg>rpc_server</arg>
<arg>${NETWORK}</arg>
<status status="PASS" start="2026-04-07T12:04:56.744837" elapsed="0.036103"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-07T12:05:02.781774" 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-07T12:04:56.781158" elapsed="6.000736"/>
</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-07T12:05:02.782065" elapsed="0.010744"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-07T12:05:04.793488" 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-07T12:05:02.792982" elapsed="2.000672"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-07T12:05:04.796500" level="INFO">${log_cli} = [Entrypoint] Starting client in mode network_udp...
[Client] Initializing eCAL with mode: network_udp
1775563494718 ms | 75d068120d27 | 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-07T12:05:04.793824" elapsed="0.002705"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-07T12:05:04.798588" level="INFO">${log_srv} = [Entrypoint] Starting server in mode network_udp...
[1;33m[Server] Initializing eCAL with mode: network_udp[0m
1775563494575 ms | 79f6090a1e99 | 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-07T12:05:04.796618" elapsed="0.001996"/>
</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-07T12:05:04.798700" elapsed="0.000275"/>
</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-07T12:05:04.799076" elapsed="0.000240"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T12:05:04.799660" level="INFO">
[CONTAINER LOG: CLIENT]
[Entrypoint] Starting client in mode network_udp...
[Client] Initializing eCAL with mode: network_udp
1775563494718 ms | 75d068120d27 | 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-07T12:05:04.799428" elapsed="0.000268"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T12:05:04.799945" level="INFO">
[CONTAINER LOG: SERVER]
[Entrypoint] Starting server in mode network_udp...
[1;33m[Server] Initializing eCAL with mode: network_udp[0m
1775563494575 ms | 79f6090a1e99 | 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-07T12:05:04.799772" elapsed="0.000255"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-07T12:05:04.801070" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>rpc_client</arg>
<status status="PASS" start="2026-04-07T12:05:04.800101" elapsed="0.000992"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-07T12:05:04.801389" 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-07T12:05:04.801173" elapsed="0.000260"/>
</kw>
<kw name="Log Test Summary" owner="DockerLibrary">
<arg>RPC Reconnect Test</arg>
<arg>${True}</arg>
<status status="PASS" start="2026-04-07T12:05:04.801546" elapsed="0.000120"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>rpc_client</arg>
<status status="PASS" start="2026-04-07T12:05:04.801763" elapsed="0.004812"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>rpc_server</arg>
<status status="PASS" start="2026-04-07T12:05:04.806657" elapsed="10.122172"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-07T12:05:15.929386" 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-07T12:05:14.928975" elapsed="1.000561"/>
</kw>
<status status="PASS" start="2026-04-07T12:04:54.457522" elapsed="21.472113"/>
</kw>
<tag>rpc_reconnect</tag>
<status status="PASS" start="2026-04-07T12:04:54.457105" elapsed="21.472662"/>
</test>
<status status="PASS" start="2026-04-07T12:04:21.495595" elapsed="54.435482"/>
</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-07T12:05:15.934321" elapsed="0.000135"/>
</kw>
<kw name="Get Build Script Path" owner="GlobalPathsLibrary">
<msg time="2026-04-07T12:05:15.934666" 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-07T12:05:15.934571" elapsed="0.000114"/>
</kw>
<kw name="Get Network Name" owner="GlobalPathsLibrary">
<msg time="2026-04-07T12:05:15.934830" level="INFO">${net} = ecal_test_net</msg>
<var>${net}</var>
<status status="PASS" start="2026-04-07T12:05:15.934752" elapsed="0.000095"/>
</kw>
<kw name="Get Build Script Args" owner="GlobalPathsLibrary">
<msg time="2026-04-07T12:05:15.934985" level="INFO">${args} = ['sub_crash']</msg>
<var>${args}</var>
<status status="PASS" start="2026-04-07T12:05:15.934909" elapsed="0.000093"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-07T12:05:15.935317" 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-07T12:05:15.935075" elapsed="0.000273"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-07T12:05:15.935684" 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-07T12:05:15.935425" elapsed="0.000289"/>
</kw>
<kw name="Get Test Description" owner="GlobalPathsLibrary">
<msg time="2026-04-07T12:05:15.935936" 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-07T12:05:15.935786" elapsed="0.000170"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T12:05:15.936204" 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-07T12:05:15.936037" elapsed="0.000199"/>
</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-07T12:05:15.936304" elapsed="0.000183"/>
</kw>
<kw name="Run Process" owner="Process">
<msg time="2026-04-07T12:05:15.936819" 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-07T12:05:15.937215" level="INFO">Waiting for process to complete.</msg>
<msg time="2026-04-07T12:05:25.146130" level="INFO">Process completed.</msg>
<msg time="2026-04-07T12:05:25.146289" 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-07T12:05:15.936594" elapsed="9.209720"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-07T12:05:25.147108" 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-07T12:05:25.146499" elapsed="0.000662"/>
</kw>
<kw name="Create Docker Network" owner="DockerLibrary">
<arg>${NETWORK}</arg>
<status status="PASS" start="2026-04-07T12:05:25.147247" elapsed="0.007268"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-07T12:05:28.154974" 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-07T12:05:25.154629" elapsed="3.000451"/>
</kw>
<status status="PASS" start="2026-04-07T12:05:15.934175" elapsed="12.220984"/>
</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-07T12:05:28.156772" 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-07T12:05:28.156447" elapsed="0.000346"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-07T12:05:28.157180" 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-07T12:05:28.156911" elapsed="0.000298"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-07T12:05:28.157674" 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-07T12:05:28.157348" elapsed="0.000354"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-07T12:05:28.158044" 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-07T12:05:28.157818" elapsed="0.000246"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-07T12:05:28.158383" 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-07T12:05:28.158140" elapsed="0.000261"/>
</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-07T12:05:28.158509" elapsed="0.000262"/>
</kw>
<kw name="Create Docker Network" owner="DockerLibrary">
<arg>${NETWORK}</arg>
<status status="PASS" start="2026-04-07T12:05:28.158874" elapsed="0.007483"/>
</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-07T12:05:28.166513" elapsed="0.125352"/>
</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-07T12:05:28.292033" elapsed="0.125284"/>
</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-07T12:05:28.417565" elapsed="0.122100"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${CRASH_SUB}</arg>
<status status="PASS" start="2026-04-07T12:05:28.539829" elapsed="7.053825"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${TEST_SUB}</arg>
<status status="PASS" start="2026-04-07T12:05:35.593866" elapsed="26.885322"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${TEST_PUB}</arg>
<status status="PASS" start="2026-04-07T12:06:02.479383" elapsed="0.001643"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-07T12:06:02.483722" level="INFO">${test_sub_logs} = [Entrypoint] Starting crash publisher in mode network_udp
1775563528419 ms | cc7d510a5231 | ./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-07T12:06:02.481146" elapsed="0.002603"/>
</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-07T12:06:02.483837" elapsed="0.000333"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T12:06:02.484611" level="INFO">
[SUBSCRIBER CONTAINER OUTPUT]
[Entrypoint] Starting crash publisher in mode network_udp
1775563528419 ms | cc7d510a5231 | ./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-07T12:06:02.484287" elapsed="0.000388"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-07T12:06:02.487748" level="INFO">${crash_sub_logs} = [Entrypoint] Starting crash subscriber in mode network_udp
1775563528294 ms | 6ab831abd728 | ./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-07T12:06:02.484778" elapsed="0.002996"/>
</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-07T12:06:02.487878" elapsed="0.000314"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T12:06:02.488617" level="INFO">
[CRASH SUBSCRIBER CONTAINER OUTPUT]
[Entrypoint] Starting crash subscriber in mode network_udp
1775563528294 ms | 6ab831abd728 | ./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-07T12:06:02.488316" elapsed="0.000357"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-07T12:06:02.490070" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${TEST_SUB}</arg>
<status status="PASS" start="2026-04-07T12:06:02.488778" elapsed="0.001325"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-07T12:06:02.490511" 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-07T12:06:02.490222" elapsed="0.000341"/>
</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-07T12:06:02.490647" elapsed="0.000148"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${CRASH_SUB}</arg>
<status status="PASS" start="2026-04-07T12:06:02.490948" elapsed="0.004982"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${TEST_SUB}</arg>
<status status="PASS" start="2026-04-07T12:06:02.496013" elapsed="0.005440"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${TEST_PUB}</arg>
<status status="PASS" start="2026-04-07T12:06:02.501605" elapsed="0.005411"/>
</kw>
<arg>network_udp</arg>
<arg>network</arg>
<status status="PASS" start="2026-04-07T12:05:28.155845" elapsed="34.351237"/>
</kw>
<tag>sub_crash_network_udp</tag>
<status status="PASS" start="2026-04-07T12:05:28.155232" elapsed="34.351949"/>
</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-07T12:06:02.509038" 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-07T12:06:02.508761" elapsed="0.000299"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-07T12:06:02.509311" 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-07T12:06:02.509138" elapsed="0.000192"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-07T12:06:02.509671" 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-07T12:06:02.509401" elapsed="0.000292"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-07T12:06:02.509960" 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-07T12:06:02.509768" elapsed="0.000211"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-07T12:06:02.510231" 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-07T12:06:02.510048" elapsed="0.000201"/>
</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-07T12:06:02.510317" elapsed="0.000224"/>
</kw>
<kw name="Create Docker Network" owner="DockerLibrary">
<arg>${NETWORK}</arg>
<status status="PASS" start="2026-04-07T12:06:02.510644" elapsed="0.007240"/>
</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-07T12:06:02.517998" elapsed="0.123931"/>
</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-07T12:06:02.642097" elapsed="0.121076"/>
</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-07T12:06:02.763384" elapsed="0.123384"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${CRASH_SUB}</arg>
<status status="PASS" start="2026-04-07T12:06:02.886933" elapsed="7.199851"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${TEST_SUB}</arg>
<status status="PASS" start="2026-04-07T12:06:10.086953" elapsed="26.738286"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${TEST_PUB}</arg>
<status status="PASS" start="2026-04-07T12:06:36.825493" elapsed="0.001661"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-07T12:06:36.830029" level="INFO">${test_sub_logs} = [Entrypoint] Starting crash publisher in mode network_tcp
1775563562765 ms | 0f3cc2406b7e | ./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-07T12:06:36.827268" elapsed="0.002790"/>
</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-07T12:06:36.830157" elapsed="0.000299"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T12:06:36.830892" level="INFO">
[SUBSCRIBER CONTAINER OUTPUT]
[Entrypoint] Starting crash publisher in mode network_tcp
1775563562765 ms | 0f3cc2406b7e | ./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
1775563595297 ms | 0f3cc2406b7e | ./test_subscriber | 7 | error | CTCPReaderLayer - TCPPubSub (Error) -SubscriberSession 172.18.0.3:34368-&gt;ca307ed99daf:41781: Error reading header length: End of file
1775563595298 ms | 0f3cc2406b7e | ./test_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.3:47612: Failed connecting to publisher ca307ed99daf:41781: Connection refused
1775563595299 ms | 0f3cc2406b7e | ./test_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.3:47622: Failed connecting to publisher ca307ed99daf:41781: Connection refused
1775563595300 ms | 0f3cc2406b7e | ./test_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.3:47636: Failed connecting to publisher ca307ed99daf:41781: Connection refused
1775563595301 ms | 0f3cc2406b7e | ./test_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.3:47646: Failed connecting to publisher ca307ed99daf:41781: Connection refused
1775563595301 ms | 0f3cc2406b7e | ./test_subscriber | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.3:47658: Failed connecting to publisher ca307ed99daf:41781: 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-07T12:06:36.830603" elapsed="0.000345"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-07T12:06:36.833497" level="INFO">${crash_sub_logs} = [Entrypoint] Starting crash subscriber in mode network_tcp
1775563562641 ms | 8fcfd434b720 | ./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-07T12:06:36.831028" elapsed="0.002502"/>
</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-07T12:06:36.833618" elapsed="0.000246"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T12:06:36.834185" level="INFO">
[CRASH SUBSCRIBER CONTAINER OUTPUT]
[Entrypoint] Starting crash subscriber in mode network_tcp
1775563562641 ms | 8fcfd434b720 | ./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-07T12:06:36.833975" elapsed="0.000247"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-07T12:06:36.835258" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${TEST_SUB}</arg>
<status status="PASS" start="2026-04-07T12:06:36.834298" elapsed="0.000983"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-07T12:06:36.835642" 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-07T12:06:36.835373" elapsed="0.000316"/>
</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-07T12:06:36.835770" elapsed="0.000139"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${CRASH_SUB}</arg>
<status status="PASS" start="2026-04-07T12:06:36.836005" elapsed="0.004878"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${TEST_SUB}</arg>
<status status="PASS" start="2026-04-07T12:06:36.840968" elapsed="0.004808"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${TEST_PUB}</arg>
<status status="PASS" start="2026-04-07T12:06:36.845861" elapsed="0.004537"/>
</kw>
<arg>network_tcp</arg>
<arg>network</arg>
<status status="PASS" start="2026-04-07T12:06:02.508438" elapsed="34.342018"/>
</kw>
<tag>pub_crash_network_tcp</tag>
<status status="PASS" start="2026-04-07T12:06:02.508018" elapsed="34.342565"/>
</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-07T12:06:36.852449" 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-07T12:06:36.852207" elapsed="0.000303"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-07T12:06:36.852802" 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-07T12:06:36.852595" elapsed="0.000226"/>
</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-07T12:06:36.852894" elapsed="0.000213"/>
</kw>
<kw name="Create Docker Network" owner="DockerLibrary">
<arg>${NETWORK}</arg>
<status status="PASS" start="2026-04-07T12:06:36.853209" elapsed="0.007177"/>
</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-07T12:06:36.860559" elapsed="0.108003"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-07T12:07:11.029770" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-07T12:06:36.968766" elapsed="34.061047"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-07T12:07:11.030349" 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-07T12:07:11.029972" elapsed="0.000433"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-07T12:07:11.033622" 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)
1775563596971 ms | bad3db544681 | test_publisher | 9 | in...</msg>
<var>${logs}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-07T12:07:11.030530" elapsed="0.003118"/>
</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-07T12:07:11.033748" elapsed="0.000274"/>
</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-07T12:07:11.034127" elapsed="0.000192"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-07T12:07:11.034431" elapsed="0.005121"/>
</kw>
<arg>local_shm</arg>
<status status="PASS" start="2026-04-07T12:06:36.852016" elapsed="34.187599"/>
</kw>
<tag>sub_crash_local_shm</tag>
<status status="PASS" start="2026-04-07T12:06:36.851658" elapsed="34.188051"/>
</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-07T12:07:11.040959" 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-07T12:07:11.040700" elapsed="0.000281"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-07T12:07:11.041262" 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-07T12:07:11.041060" elapsed="0.000221"/>
</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-07T12:07:11.041354" elapsed="0.000307"/>
</kw>
<kw name="Create Docker Network" owner="DockerLibrary">
<arg>${NETWORK}</arg>
<status status="PASS" start="2026-04-07T12:07:11.041742" elapsed="0.007307"/>
</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-07T12:07:11.049140" elapsed="0.117160"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-07T12:07:45.226778" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-07T12:07:11.166463" elapsed="34.060370"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-07T12:07:45.230216" 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-07T12:07:45.227036" elapsed="0.003260"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-07T12:07:45.233917" level="INFO">${logs} = [Entrypoint] Starting local test (pub/sub/monitor) in mode local_udp
1775563631168 ms | cb6427b1eded | ./crash_subscriber | 7 | info | Using built-in local time plugin.

[Crash Subscriber] Registered ...</msg>
<var>${logs}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-07T12:07:45.230645" elapsed="0.003299"/>
</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-07T12:07:45.234034" elapsed="0.000299"/>
</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-07T12:07:45.234435" elapsed="0.000230"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-07T12:07:45.234766" elapsed="0.005036"/>
</kw>
<arg>local_udp</arg>
<status status="PASS" start="2026-04-07T12:07:11.040459" elapsed="34.199402"/>
</kw>
<tag>sub_crash_local_udp</tag>
<status status="PASS" start="2026-04-07T12:07:11.040103" elapsed="34.199849"/>
</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-07T12:07:45.241321" 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-07T12:07:45.241077" elapsed="0.000264"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-07T12:07:45.241668" 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-07T12:07:45.241419" elapsed="0.000269"/>
</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-07T12:07:45.241762" elapsed="0.000205"/>
</kw>
<kw name="Create Docker Network" owner="DockerLibrary">
<arg>${NETWORK}</arg>
<status status="PASS" start="2026-04-07T12:07:45.242072" elapsed="0.006917"/>
</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-07T12:07:45.249083" elapsed="0.101184"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-07T12:08:19.412852" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-07T12:07:45.350500" elapsed="34.062404"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-07T12:08:19.413594" 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-07T12:08:19.413115" elapsed="0.000553"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-07T12:08:19.416918" level="INFO">${logs} = [Entrypoint] Starting local test (pub/sub/monitor) in mode local_tcp
1775563665352 ms | 0adea897ac3b | ./crash_subscriber | 7 | info | Using built-in local time plugin.

[Crash Subscriber] Registered ...</msg>
<var>${logs}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-07T12:08:19.413792" elapsed="0.003151"/>
</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-07T12:08:19.417033" elapsed="0.000339"/>
</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-07T12:08:19.417504" elapsed="0.000203"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-07T12:08:19.417811" elapsed="0.005160"/>
</kw>
<arg>local_tcp</arg>
<status status="PASS" start="2026-04-07T12:07:45.240886" elapsed="34.182153"/>
</kw>
<tag>sub_crash_local_tcp</tag>
<status status="PASS" start="2026-04-07T12:07:45.240529" elapsed="34.182605"/>
</test>
<status status="PASS" start="2026-04-07T12:05:15.931644" elapsed="183.492101"/>
</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-07T12:08:19.427153" elapsed="0.000133"/>
</kw>
<kw name="Get Build Script Path" owner="GlobalPathsLibrary">
<msg time="2026-04-07T12:08:19.427454" 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-07T12:08:19.427365" elapsed="0.000143"/>
</kw>
<kw name="Get Network Name" owner="GlobalPathsLibrary">
<msg time="2026-04-07T12:08:19.427676" level="INFO">${net} = ecal_test_net</msg>
<var>${net}</var>
<status status="PASS" start="2026-04-07T12:08:19.427581" elapsed="0.000113"/>
</kw>
<kw name="Get Build Script Args" owner="GlobalPathsLibrary">
<msg time="2026-04-07T12:08:19.427835" level="INFO">${args} = ['sub_send_crash']</msg>
<var>${args}</var>
<status status="PASS" start="2026-04-07T12:08:19.427757" elapsed="0.000094"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-07T12:08:19.428186" 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-07T12:08:19.427927" elapsed="0.000296"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-07T12:08:19.428557" 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-07T12:08:19.428305" elapsed="0.000285"/>
</kw>
<kw name="Get Test Description" owner="GlobalPathsLibrary">
<msg time="2026-04-07T12:08:19.428815" 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-07T12:08:19.428663" elapsed="0.000172"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T12:08:19.429127" 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-07T12:08:19.428905" elapsed="0.000259"/>
</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-07T12:08:19.429236" elapsed="0.000166"/>
</kw>
<kw name="Run Process" owner="Process">
<msg time="2026-04-07T12:08:19.429798" 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-07T12:08:19.430188" level="INFO">Waiting for process to complete.</msg>
<msg time="2026-04-07T12:08:28.557500" level="INFO">Process completed.</msg>
<msg time="2026-04-07T12:08:28.557663" 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-07T12:08:19.429548" elapsed="9.128140"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-07T12:08:28.558439" 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-07T12:08:28.557841" elapsed="0.000690"/>
</kw>
<kw name="Create Docker Network" owner="DockerLibrary">
<arg>${NETWORK}</arg>
<status status="PASS" start="2026-04-07T12:08:28.558664" elapsed="0.008414"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-07T12:08:31.567551" 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-07T12:08:28.567204" elapsed="3.000457"/>
</kw>
<status status="PASS" start="2026-04-07T12:08:19.426999" elapsed="12.140744"/>
</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-07T12:08:31.568821" 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-07T12:08:31.568529" elapsed="0.000313"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-07T12:08:31.569120" 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-07T12:08:31.568919" 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-07T12:08:31.569208" elapsed="0.000205"/>
</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-07T12:08:31.569539" elapsed="0.125661"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-07T12:09:06.695938" 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-07T12:08:31.695391" elapsed="35.000650"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-07T12:09:06.699045" 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)
1775563711694 ms | 39aab00faf14 | large_publishe...</msg>
<var>${logs}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-07T12:09:06.696194" elapsed="0.002875"/>
</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-07T12:09:06.699155" elapsed="0.000292"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T12:09:06.699854" 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)
1775563711694 ms | 39aab00faf14 | large_publisher | 7 | info | Using built-in local time plugin.
[Publisher] Prepared 50MB message.
[Publisher] Waiting for at least 2 subscriber(s) on topic: test_topic
[Publisher] Found 2 subscriber(s). Proceeding to send messages.
Shared memory monitoring is enabled (domain: ecal_mon - queue size: 1024)
1775563712695 ms | 39aab00faf14 | crash_send_sub | 14 | info | Using built-in local time plugin.
[Crash_Sub] Listening to topic 'test_topic' in mode 'local_shm'
[Crash_Sub] Received 52428800 bytes
[Crash_Sub] Simulating crash after 2 seconds during active reception
[Publisher] Subscriber detected. Starting to send.
[Publisher] Send result: ✓, size: 52428800 bytes
[Publisher] Send result: ✓, size: 52428800 bytes
[Publisher] Send result: ✓, size: 52428800 bytes
[Publisher] Finished sending.
Shared memory monitoring is enabled (domain: ecal_mon - queue size: 1024)
1775563712695 ms | 39aab00faf14 | 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-07T12:09:06.699589" elapsed="0.000326"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-07T12:09:06.701261" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-07T12:09:06.700015" elapsed="0.001270"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-07T12:09:06.701636" 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-07T12:09:06.701367" elapsed="0.000316"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-07T12:09:06.703729" 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)
1775563711694 ms | 39aab00faf14 | large_publishe...</msg>
<var>${logs}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-07T12:09:06.701765" elapsed="0.002031"/>
</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-07T12:09:06.703878" elapsed="0.000157"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-07T12:09:06.704129" elapsed="0.005213"/>
</kw>
<arg>local_shm</arg>
<status status="PASS" start="2026-04-07T12:08:31.568254" elapsed="35.141146"/>
</kw>
<tag>crash_receive_local_shm</tag>
<status status="PASS" start="2026-04-07T12:08:31.567808" elapsed="35.141702"/>
</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-07T12:09:06.710763" 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-07T12:09:06.710517" elapsed="0.000268"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-07T12:09:06.711066" 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-07T12:09:06.710863" elapsed="0.000222"/>
</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-07T12:09:06.711155" elapsed="0.000207"/>
</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-07T12:09:06.711456" elapsed="0.127703"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-07T12:09:41.839916" 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-07T12:09:06.839361" elapsed="35.000675"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-07T12:09:41.843188" level="INFO">${logs} = [Entrypoint] Starting all processes locally in one container (mode local_tcp)
1775563746840 ms | d1573153c652 | 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-07T12:09:41.840207" elapsed="0.003011"/>
</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-07T12:09:41.843325" elapsed="0.000331"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T12:09:41.844079" level="INFO">
[LOCAL TEST CONTAINER OUTPUT]
[Entrypoint] Starting all processes locally in one container (mode local_tcp)
1775563746840 ms | d1573153c652 | 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
1775563748842 ms | d1573153c652 | large_publisher | 7 | info | CTCPReaderLayer - TCPPubSub (Info) -Publisher :::0: Created publisher and waiting for clients.
1775563748843 ms | d1573153c652 | large_publisher | 7 | info | CTCPReaderLayer - TCPPubSub (Info) -Publisher :::45269: Subscriber ::ffff:172.18.0.2:40970 has connected.
1775563748843 ms | d1573153c652 | large_publisher | 7 | info | CTCPReaderLayer - TCPPubSub (Info) -Publisher :::45269: Subscriber ::ffff:172.18.0.2:40972 has connected.
[Publisher] Found 2 subscriber(s). Proceeding to send messages.
[Crash_Sub] Simulating crash after 2 seconds during active reception
1775563747841 ms | d1573153c652 | crash_send_sub | 14 | info | Using built-in local time plugin.
[Crash_Sub] Listening to topic 'test_topic' in mode 'local_tcp'
[Crash_Sub] Received 52428800 bytes
[Publisher] Subscriber detected. Starting to send.
[Publisher] Send result: ✓, size: 52428800 bytes
1775563751389 ms | d1573153c652 | large_publisher | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -PublisherSession ::ffff:172.18.0.2:45269-&gt;?: Failed sending data: Broken pipe
[Publisher] Send result: ✓, size: 52428800 bytes
[Publisher] Send result: ✓, size: 52428800 bytes
[Publisher] Finished sending.
1775563753409 ms | d1573153c652 | large_publisher | 7 | error | CTCPReaderLayer - TCPPubSub (Error) -Publisher ?: Error while waiting for subsriber: Operation aborted.
1775563747841 ms | d1573153c652 | 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)
1775563753409 ms | d1573153c652 | test_sub | 13 | error | CTCPReaderLayer - TCPPubSub (Error) -SubscriberSession 172.18.0.2:40972-&gt;d1573153c652:45269: Error reading header length: End of file
1775563753409 ms | d1573153c652 | test_sub | 13 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:40974: Failed connecting to publisher d1573153c652:45269: Connection refused
1775563753410 ms | d1573153c652 | test_sub | 13 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:40982: Failed connecting to publisher d1573153c652:45269: Connection refused
1775563753410 ms | d1573153c652 | test_sub | 13 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:40990: Failed connecting to publisher d1573153c652:45269: Connection refused
1775563753410 ms | d1573153c652 | test_sub | 13 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:41006: Failed connecting to publisher d1573153c652:45269: Connection refused
1775563753411 ms | d1573153c652 | test_sub | 13 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:41020: Failed connecting to publisher d1573153c652:45269: 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-07T12:09:41.843772" elapsed="0.000398"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-07T12:09:41.845491" level="INFO">${exit_code} = 0</msg>
<var>${exit_code}</var>
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-07T12:09:41.844273" elapsed="0.001248"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-07T12:09:41.845821" 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-07T12:09:41.845604" elapsed="0.000263"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-07T12:09:41.848061" level="INFO">${logs} = [Entrypoint] Starting all processes locally in one container (mode local_tcp)
1775563746840 ms | d1573153c652 | 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-07T12:09:41.845943" elapsed="0.002143"/>
</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-07T12:09:41.848166" elapsed="0.000154"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${CONTAINER}</arg>
<status status="PASS" start="2026-04-07T12:09:41.848422" elapsed="0.004913"/>
</kw>
<arg>local_tcp</arg>
<status status="PASS" start="2026-04-07T12:09:06.710295" elapsed="35.143104"/>
</kw>
<tag>crash_receive_local_tcp</tag>
<status status="PASS" start="2026-04-07T12:09:06.709947" elapsed="35.143595"/>
</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-07T12:09:41.854974" 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-07T12:09:41.854696" elapsed="0.000299"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-07T12:09:41.855244" 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-07T12:09:41.855072" elapsed="0.000191"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-07T12:09:41.855563" 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-07T12:09:41.855332" elapsed="0.000252"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-07T12:09:41.855852" 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-07T12:09:41.855658" elapsed="0.000213"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-07T12:09:41.856126" 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-07T12:09:41.855941" elapsed="0.000203"/>
</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-07T12:09:41.856212" elapsed="0.000202"/>
</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-07T12:09:41.856540" elapsed="0.134816"/>
</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-07T12:09:41.991601" elapsed="0.127577"/>
</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-07T12:09:42.119343" elapsed="0.128242"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${SUB_OK}</arg>
<status status="PASS" start="2026-04-07T12:09:42.247750" elapsed="30.815517"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${SUB_CRASH}</arg>
<status status="PASS" start="2026-04-07T12:10:13.063507" elapsed="0.001867"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${PUBLISHER}</arg>
<status status="PASS" start="2026-04-07T12:10:13.065507" elapsed="0.001033"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-07T12:10:13.068763" level="INFO">${log1} = [Entrypoint] Starting stable subscriber in mode network_udp
1775563781993 ms | f96b34f280c7 | 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-07T12:10:13.066630" elapsed="0.002160"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-07T12:10:13.070975" level="INFO">${log2} = [Entrypoint] Starting crashing subscriber in mode network_udp
1775563782120 ms | 609424f4b548 | 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-07T12:10:13.068873" elapsed="0.002127"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-07T12:10:13.073294" level="INFO">${log3} = [Entrypoint] Starting large publisher in mode network_udp
1775563782249 ms | f3a1eb0d08f3 | 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-07T12:10:13.071081" elapsed="0.002238"/>
</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-07T12:10:13.073406" 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-07T12:10:13.073841" elapsed="0.000294"/>
</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-07T12:10:13.074217" elapsed="0.000220"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T12:10:13.074772" level="INFO">
[LOG: SUBSCRIBER]
[Entrypoint] Starting stable subscriber in mode network_udp
1775563781993 ms | f96b34f280c7 | 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-07T12:10:13.074565" elapsed="0.000244"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T12:10:13.075053" level="INFO">
[LOG: CRASH_SUBSCRIBER]
[Entrypoint] Starting crashing subscriber in mode network_udp
1775563782120 ms | 609424f4b548 | crash_send_sub | 7 | info | Using built-in local time plugin.
[Crash_Sub] Listening to topic 'test_topic' in mode 'network_udp'
[Crash_Sub] Received 52428800 bytes
[Crash_Sub] Simulating crash after 2 seconds during active reception
./entrypoint.sh: line 62:     7 Aborted                 (core dumped) ./crash_send_subscriber $ARGS $EXTRA
</msg>
<arg>\n[LOG: CRASH_SUBSCRIBER]\n${log2}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T12:10:13.074882" elapsed="0.000203"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T12:10:13.075315" level="INFO">
[LOG: PUBLISHER]
[Entrypoint] Starting large publisher in mode network_udp
1775563782249 ms | f3a1eb0d08f3 | 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-07T12:10:13.075152" elapsed="0.000196"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-07T12:10:13.076328" level="INFO">${exit1} = 0</msg>
<var>${exit1}</var>
<arg>${SUB_OK}</arg>
<status status="PASS" start="2026-04-07T12:10:13.075415" elapsed="0.000973"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-07T12:10:13.076720" 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-07T12:10:13.076501" elapsed="0.000263"/>
</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-07T12:10:13.076840" elapsed="0.000146"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${SUB_OK}</arg>
<status status="PASS" start="2026-04-07T12:10:13.077074" elapsed="0.004858"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${SUB_CRASH}</arg>
<status status="PASS" start="2026-04-07T12:10:13.082013" elapsed="0.004704"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${PUBLISHER}</arg>
<status status="PASS" start="2026-04-07T12:10:13.086801" elapsed="0.004841"/>
</kw>
<arg>network_udp</arg>
<arg>network</arg>
<status status="PASS" start="2026-04-07T12:09:41.854444" elapsed="31.237257"/>
</kw>
<tag>crash_receive_network_udp</tag>
<status status="PASS" start="2026-04-07T12:09:41.854050" elapsed="31.237742"/>
</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-07T12:10:13.093897" 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-07T12:10:13.093649" elapsed="0.000269"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-07T12:10:13.094171" 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-07T12:10:13.093996" elapsed="0.000194"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-07T12:10:13.094451" 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-07T12:10:13.094261" elapsed="0.000240"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-07T12:10:13.094774" 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-07T12:10:13.094580" elapsed="0.000213"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-07T12:10:13.095047" 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-07T12:10:13.094861" 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-07T12:10:13.095132" elapsed="0.000202"/>
</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-07T12:10:13.095428" elapsed="0.124671"/>
</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-07T12:10:13.220258" elapsed="0.120737"/>
</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-07T12:10:13.341202" elapsed="0.117666"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${SUB_OK}</arg>
<status status="PASS" start="2026-04-07T12:10:13.459027" elapsed="30.825731"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${SUB_CRASH}</arg>
<status status="PASS" start="2026-04-07T12:10:44.284964" elapsed="0.001703"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<arg>${PUBLISHER}</arg>
<status status="PASS" start="2026-04-07T12:10:44.286793" elapsed="0.001152"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-07T12:10:44.290287" level="INFO">${log1} = [Entrypoint] Starting stable subscriber in mode network_tcp
1775563813222 ms | abe724daa9e6 | 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-07T12:10:44.288064" elapsed="0.002250"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-07T12:10:44.292384" level="INFO">${log2} = [Entrypoint] Starting crashing subscriber in mode network_tcp
[Crash_Sub] Simulating crash after 2 seconds during active reception
1775563813343 ms | a4081d2ad644 | crash_send_sub | 7 | info | Using b...</msg>
<var>${log2}</var>
<arg>${SUB_CRASH}</arg>
<status status="PASS" start="2026-04-07T12:10:44.290396" elapsed="0.002012"/>
</kw>
<kw name="Get Container Logs" owner="DockerLibrary">
<msg time="2026-04-07T12:10:44.294598" level="INFO">${log3} = [Entrypoint] Starting large publisher in mode network_tcp
1775563813460 ms | 9c92cd2e3b6a | 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-07T12:10:44.292530" elapsed="0.002093"/>
</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-07T12:10:44.294709" elapsed="0.000287"/>
</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-07T12:10:44.295105" elapsed="0.000279"/>
</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-07T12:10:44.295519" elapsed="0.000293"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T12:10:44.296171" level="INFO">
[LOG: SUBSCRIBER]
[Entrypoint] Starting stable subscriber in mode network_tcp
1775563813222 ms | abe724daa9e6 | 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)
1775563818928 ms | abe724daa9e6 | test_sub | 7 | error | CTCPReaderLayer - TCPPubSub (Error) -SubscriberSession 172.18.0.2:39712-&gt;9c92cd2e3b6a:36981: Error reading header length: End of file
1775563818929 ms | abe724daa9e6 | test_sub | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:58540: Failed connecting to publisher 9c92cd2e3b6a:36981: Connection refused
1775563818930 ms | abe724daa9e6 | test_sub | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:58542: Failed connecting to publisher 9c92cd2e3b6a:36981: Connection refused
1775563818930 ms | abe724daa9e6 | test_sub | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:58552: Failed connecting to publisher 9c92cd2e3b6a:36981: Connection refused
1775563818931 ms | abe724daa9e6 | test_sub | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:58564: Failed connecting to publisher 9c92cd2e3b6a:36981: Connection refused
1775563818932 ms | abe724daa9e6 | test_sub | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -SubscriberSession 172.18.0.2:58574: Failed connecting to publisher 9c92cd2e3b6a:36981: 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-07T12:10:44.295918" elapsed="0.000369"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T12:10:44.296810" level="INFO">
[LOG: CRASH_SUBSCRIBER]
[Entrypoint] Starting crashing subscriber in mode network_tcp
[Crash_Sub] Simulating crash after 2 seconds during active reception
1775563813343 ms | a4081d2ad644 | 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
./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-07T12:10:44.296387" elapsed="0.000472"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T12:10:44.297199" level="INFO">
[LOG: PUBLISHER]
[Entrypoint] Starting large publisher in mode network_tcp
1775563813460 ms | 9c92cd2e3b6a | 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
1775563814223 ms | 9c92cd2e3b6a | large_publisher | 7 | info | CTCPReaderLayer - TCPPubSub (Info) -Publisher :::0: Created publisher and waiting for clients.
1775563814224 ms | 9c92cd2e3b6a | large_publisher | 7 | info | CTCPReaderLayer - TCPPubSub (Info) -Publisher :::36981: Subscriber ::ffff:172.18.0.2:39712 has connected.
1775563814224 ms | 9c92cd2e3b6a | large_publisher | 7 | info | CTCPReaderLayer - TCPPubSub (Info) -Publisher :::36981: Subscriber ::ffff:172.18.0.3:35232 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
1775563816912 ms | 9c92cd2e3b6a | large_publisher | 7 | warning | CTCPReaderLayer - TCPPubSub (Warning) -PublisherSession ::ffff:172.18.0.4:36981-&gt;?: Failed sending data: Broken pipe
[Publisher] Send result: ✓, size: 52428800 bytes
[Publisher] Finished sending.
1775563818928 ms | 9c92cd2e3b6a | 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-07T12:10:44.296957" elapsed="0.000305"/>
</kw>
<kw name="Wait For Container Exit" owner="DockerLibrary">
<msg time="2026-04-07T12:10:44.298445" level="INFO">${exit1} = 0</msg>
<var>${exit1}</var>
<arg>${SUB_OK}</arg>
<status status="PASS" start="2026-04-07T12:10:44.297358" elapsed="0.001197"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-07T12:10:44.298957" 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-07T12:10:44.298667" elapsed="0.000351"/>
</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-07T12:10:44.299122" elapsed="0.000178"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${SUB_OK}</arg>
<status status="PASS" start="2026-04-07T12:10:44.299394" elapsed="0.004651"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${SUB_CRASH}</arg>
<status status="PASS" start="2026-04-07T12:10:44.304129" elapsed="0.004565"/>
</kw>
<kw name="Stop Container" owner="DockerLibrary">
<arg>${PUBLISHER}</arg>
<status status="PASS" start="2026-04-07T12:10:44.308783" elapsed="0.005575"/>
</kw>
<arg>network_tcp</arg>
<arg>network</arg>
<status status="PASS" start="2026-04-07T12:10:13.093406" elapsed="31.221011"/>
</kw>
<tag>crash_receive_network_tcp</tag>
<status status="PASS" start="2026-04-07T12:10:13.093015" elapsed="31.221514"/>
</test>
<status status="PASS" start="2026-04-07T12:08:19.424329" elapsed="144.891020"/>
</suite>
<status status="PASS" start="2026-04-07T11:58:10.539895" elapsed="753.776910"/>
</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>
