<?xml version="1.0" encoding="UTF-8"?>
<robot generator="Robot 7.4.2 (Python 3.11.10 on linux)" generated="2026-04-12T00:19:08.770725" rpa="false" schemaversion="5">
<suite id="s1" name="controller-drb-precedence-longevity.txt" source="/w/workspace/controller-csit-3node-drb-precedence-longevity-only-vanadium/test/csit/suites/controller/dom_rpc_broker/rpc_provider_precedence_longevity.robot">
<kw name="Setup_Keyword" type="SETUP">
<kw name="Setup_Utils_For_Setup_And_Teardown" owner="SetupUtils">
<kw name="Do_Not_Fail_Fast_From_Now_On" owner="FailFast">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-12T00:19:09.523801" level="INFO">${SuiteFastFail} = False</msg>
<arg>${SuiteFastFail}</arg>
<arg>False</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-12T00:19:09.519654" elapsed="0.004215"/>
</kw>
<doc>Set suite to not fail fast.</doc>
<status status="PASS" start="2026-04-12T00:19:09.519169" elapsed="0.004789"/>
</kw>
<kw name="Setup_Karaf_Keywords" owner="KarafKeywords">
<kw name="ClusterManagement_Setup" owner="ClusterManagement">
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-12T00:19:09.529165" level="INFO">${already_done} = False</msg>
<var>${already_done}</var>
<arg>\${ClusterManagement__has_setup_run}</arg>
<arg>False</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-04-12T00:19:09.525403" elapsed="0.003794"/>
</kw>
<if>
<branch type="IF" condition="${already_done}">
<return>
<status status="NOT RUN" start="2026-04-12T00:19:09.529427" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-12T00:19:09.529306" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-12T00:19:09.529274" elapsed="0.000232"/>
</if>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-12T00:19:09.530114" level="INFO">${ClusterManagement__has_setup_run} = True</msg>
<arg>\${ClusterManagement__has_setup_run}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-12T00:19:09.529693" elapsed="0.000469"/>
</kw>
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-12T00:19:09.530656" level="INFO">${cluster_size} = 0</msg>
<var>${cluster_size}</var>
<arg>\${NUM_ODL_SYSTEM}</arg>
<arg>1</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-04-12T00:19:09.530330" elapsed="0.000371"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Convert To Integer" owner="BuiltIn">
<arg>${cluster_size}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-12T00:19:09.531264" elapsed="0.000293"/>
</kw>
<msg time="2026-04-12T00:19:09.531665" level="INFO">${status} = PASS</msg>
<msg time="2026-04-12T00:19:09.531730" level="INFO">${possibly_int_of_members} = 0</msg>
<var>${status}</var>
<var>${possibly_int_of_members}</var>
<arg>BuiltIn.Convert_To_Integer</arg>
<arg>${cluster_size}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-12T00:19:09.530877" elapsed="0.000878"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-12T00:19:09.532313" level="INFO">${int_of_members} = 0</msg>
<var>${int_of_members}</var>
<arg>'${status}' != 'PASS'</arg>
<arg>${1}</arg>
<arg>${possibly_int_of_members}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-12T00:19:09.531929" elapsed="0.000411"/>
</kw>
<kw name="ClusterManagement__Compute_Derived_Variables" owner="ClusterManagement">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-12T00:19:09.533993" level="INFO">@{member_index_list} = [ ]</msg>
<var>@{member_index_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-12T00:19:09.533688" elapsed="0.000337"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-12T00:19:09.534558" level="INFO">@{session_list} = [ ]</msg>
<var>@{session_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-12T00:19:09.534174" elapsed="0.000411"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-12T00:19:09.535091" level="INFO">&amp;{index_to_ip_mapping} = { }</msg>
<var>&amp;{index_to_ip_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-12T00:19:09.534755" elapsed="0.000363"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="ClusterManagement__Include_Member_Index" owner="ClusterManagement">
<arg>${index}</arg>
<arg>${member_index_list}</arg>
<arg>${session_list}</arg>
<arg>${index_to_ip_mapping}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Add a corresponding item based on index into the last three arguments.
Create the Http session whose alias is added to list.</doc>
<status status="NOT RUN" start="2026-04-12T00:19:09.537568" elapsed="0.000026"/>
</kw>
<var name="${index}"/>
<status status="NOT RUN" start="2026-04-12T00:19:09.537374" elapsed="0.000268"/>
</iter>
<var>${index}</var>
<value>1</value>
<value>${int_of_members+1}</value>
<status status="NOT RUN" start="2026-04-12T00:19:09.535181" elapsed="0.002506"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-12T00:19:09.539249" level="INFO">${ClusterManagement__member_index_list} = []</msg>
<arg>\${ClusterManagement__member_index_list}</arg>
<arg>${member_index_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-12T00:19:09.537860" elapsed="0.001521"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-12T00:19:09.540848" level="INFO">${ClusterManagement__index_to_ip_mapping} = {}</msg>
<arg>\${ClusterManagement__index_to_ip_mapping}</arg>
<arg>${index_to_ip_mapping}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-12T00:19:09.539876" elapsed="0.001070"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-12T00:19:09.542367" level="INFO">${ClusterManagement__session_list} = []</msg>
<arg>\${ClusterManagement__session_list}</arg>
<arg>${session_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-12T00:19:09.541302" elapsed="0.001183"/>
</kw>
<arg>int_of_members=${int_of_members}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Construct index list, session list and IP mapping, publish them as suite variables.</doc>
<status status="PASS" start="2026-04-12T00:19:09.533201" elapsed="0.009440"/>
</kw>
<arg>http_timeout=${http_timeout}</arg>
<doc>Detect repeated call, or detect number of members and initialize derived suite variables.
Http sessions are created with parameters to not waste time when ODL is no accepting connections properly.</doc>
<status status="PASS" start="2026-04-12T00:19:09.525033" elapsed="0.017792"/>
</kw>
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-12T00:19:09.543332" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-12T00:19:09.543017" elapsed="0.000429"/>
</branch>
<status status="PASS" start="2026-04-12T00:19:09.542953" elapsed="0.000546"/>
</if>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-12T00:19:09.550792" level="INFO">${return_list_reference} = []</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-12T00:19:09.549840" elapsed="0.001014"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-12T00:19:09.552069" level="INFO">${return_list_copy} = []</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-12T00:19:09.551358" elapsed="0.000768"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-12T00:19:09.552228" elapsed="0.000088"/>
</return>
<msg time="2026-04-12T00:19:09.552608" level="INFO">${index_list} = []</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-12T00:19:09.548934" elapsed="0.003728"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="NOT RUN" start="2026-04-12T00:19:09.553503" elapsed="0.000055"/>
</kw>
<var name="${index}"/>
<status status="NOT RUN" start="2026-04-12T00:19:09.553108" elapsed="0.000531"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="NOT RUN" start="2026-04-12T00:19:09.552831" elapsed="0.000901"/>
</for>
<arg>iptables -I INPUT -p tcp --dport ${KARAF_SHELL_PORT} -j ACCEPT; iptables-save</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-12T00:19:09.544097" elapsed="0.009763"/>
</kw>
<kw name="Comment" owner="BuiltIn">
<arg>First connections to Karaf console may fail, so WUKS is used. TODO: Track as a Bug.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-12T00:19:09.554309" elapsed="0.000531"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<arg>BuiltIn.Wait_Until_Keyword_Succeeds</arg>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="NOT RUN" start="2026-04-12T00:19:09.555195" elapsed="0.000020"/>
</kw>
<var name="${index}"/>
<status status="NOT RUN" start="2026-04-12T00:19:09.555060" elapsed="0.000204"/>
</iter>
<var>${index}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="NOT RUN" start="2026-04-12T00:19:09.554933" elapsed="0.000359"/>
</for>
<arg>http_timeout=${http_timeout}</arg>
<doc>Initialize ClusterManagement. Open ssh karaf connections to each ODL.</doc>
<status status="PASS" start="2026-04-12T00:19:09.524366" elapsed="0.030985"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Test_Suite_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-12T00:19:09.557948" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-12T00:19:09.557803" elapsed="0.000193"/>
</branch>
<status status="PASS" start="2026-04-12T00:19:09.557783" elapsed="0.000236"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-12T00:19:09.562580" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-12T00:19:09.562472" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-12T00:19:09.562453" elapsed="0.000198"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-12T00:19:09.563647" level="INFO">${return_list_reference} = []</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-12T00:19:09.563209" elapsed="0.000478"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-12T00:19:09.564134" level="INFO">${return_list_copy} = []</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-12T00:19:09.563844" elapsed="0.000315"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-12T00:19:09.564203" elapsed="0.000030"/>
</return>
<msg time="2026-04-12T00:19:09.564356" level="INFO">${index_list} = []</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-12T00:19:09.562885" elapsed="0.001495"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="NOT RUN" start="2026-04-12T00:19:09.564743" elapsed="0.000023"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-12T00:19:09.564983" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-12T00:19:09.564843" elapsed="0.000192"/>
</branch>
<status status="NOT RUN" start="2026-04-12T00:19:09.564825" elapsed="0.000233"/>
</if>
<var name="${index}"/>
<status status="NOT RUN" start="2026-04-12T00:19:09.564588" elapsed="0.000494"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="NOT RUN" start="2026-04-12T00:19:09.564432" elapsed="0.000675"/>
</for>
<arg>Starting suite ${SUITE_SOURCE}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-12T00:19:09.562188" elapsed="0.002972"/>
</kw>
<doc>Log suite name to karaf log, useful in suite setup.</doc>
<status status="PASS" start="2026-04-12T00:19:09.555946" elapsed="0.009268"/>
</kw>
<arg>KarafKeywords.Log_Test_Suite_Start_To_Controller_Karaf</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-12T00:19:09.555503" elapsed="0.009751"/>
</kw>
<arg>http_timeout=125</arg>
<doc>Prepare both FailFast and Karaf logging, log that the caller suite has started.
This keyword is to be used in suite setup, and without it the other keywords may not work properly.</doc>
<status status="PASS" start="2026-04-12T00:19:09.518786" elapsed="0.046519"/>
</kw>
<kw name="DrbCommons_Init" owner="DrbCommons">
<kw name="List_All_Indices" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-12T00:19:09.568994" level="INFO">${return_list_reference} = []</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-12T00:19:09.568577" elapsed="0.000444"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-12T00:19:09.569502" level="INFO">${return_list_copy} = []</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-12T00:19:09.569212" elapsed="0.000315"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-12T00:19:09.569572" elapsed="0.000031"/>
</return>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-12T00:19:09.566636" elapsed="0.003081"/>
</kw>
<msg time="2026-04-12T00:19:09.569759" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>List_Indices_Or_All</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-12T00:19:09.566250" elapsed="0.003569"/>
</kw>
<msg time="2026-04-12T00:19:09.569932" level="INFO">${all_indices} = []</msg>
<var>${all_indices}</var>
<doc>Create a new list of all indices.</doc>
<status status="PASS" start="2026-04-12T00:19:09.565814" elapsed="0.004142"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-12T00:19:09.570436" level="INFO">${all_indices} = []</msg>
<arg>${all_indices}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-12T00:19:09.570108" elapsed="0.000369"/>
</kw>
<kw name="List_All_Indices" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-12T00:19:09.573558" level="INFO">${return_list_reference} = []</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-12T00:19:09.573186" elapsed="0.000399"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-12T00:19:09.574063" level="INFO">${return_list_copy} = []</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-12T00:19:09.573753" elapsed="0.000339"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-12T00:19:09.574142" elapsed="0.000032"/>
</return>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-12T00:19:09.571269" elapsed="0.003000"/>
</kw>
<msg time="2026-04-12T00:19:09.574308" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>List_Indices_Or_All</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-12T00:19:09.570891" elapsed="0.003465"/>
</kw>
<msg time="2026-04-12T00:19:09.574451" level="INFO">${nonregistered_indices} = []</msg>
<var>${nonregistered_indices}</var>
<doc>Create a new list of all indices.</doc>
<status status="PASS" start="2026-04-12T00:19:09.570664" elapsed="0.003811"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-12T00:19:09.574977" level="INFO">${nonregistered_indices} = []</msg>
<arg>${nonregistered_indices}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-12T00:19:09.574632" elapsed="0.000385"/>
</kw>
<kw name="List_All_Indices" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-12T00:19:09.578134" level="INFO">${return_list_reference} = []</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-12T00:19:09.577739" elapsed="0.000421"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-12T00:19:09.578595" level="INFO">${return_list_copy} = []</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-12T00:19:09.578310" elapsed="0.000310"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-12T00:19:09.578662" elapsed="0.000045"/>
</return>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-12T00:19:09.575799" elapsed="0.003005"/>
</kw>
<msg time="2026-04-12T00:19:09.578840" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>List_Indices_Or_All</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-12T00:19:09.575415" elapsed="0.003474"/>
</kw>
<msg time="2026-04-12T00:19:09.578984" level="INFO">${active_indices} = []</msg>
<var>${active_indices}</var>
<doc>Create a new list of all indices.</doc>
<status status="PASS" start="2026-04-12T00:19:09.575204" elapsed="0.003803"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-12T00:19:09.579475" level="INFO">${active_indices} = []</msg>
<arg>${active_indices}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-12T00:19:09.579156" elapsed="0.000359"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-12T00:19:09.579912" level="INFO">${possible_constants} = []</msg>
<var>${possible_constants}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-12T00:19:09.579657" elapsed="0.000280"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-12T00:19:09.580396" level="INFO">${possible_constants} = []</msg>
<arg>${possible_constants}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-12T00:19:09.580086" elapsed="0.000349"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-12T00:19:09.580833" level="INFO">${registered_indices} = []</msg>
<var>${registered_indices}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-12T00:19:09.580578" elapsed="0.000280"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-12T00:19:09.581322" level="INFO">${registered_indices} = []</msg>
<arg>${registered_indices}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-12T00:19:09.581012" elapsed="0.000349"/>
</kw>
<doc>Resouce initial keyword. Creates several suite variables which are
used in other keywords and should be used im the test suites.</doc>
<status status="PASS" start="2026-04-12T00:19:09.565543" elapsed="0.015869"/>
</kw>
<doc>Create a list of possible constant responses on the node with unregistered rpc.</doc>
<status status="PASS" start="2026-04-12T00:19:09.518355" elapsed="0.063105"/>
</kw>
<test id="s1-t1" name="Rpc_Provider_Precedence_Longevity" line="33">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-12T00:19:09.585813" elapsed="0.000233"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-12T00:19:09.585533" elapsed="0.000568"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-12T00:19:09.587075" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-12T00:19:09.586964" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-12T00:19:09.586944" elapsed="0.000200"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-12T00:19:09.592001" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-12T00:19:09.591893" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-12T00:19:09.591873" elapsed="0.000198"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-12T00:19:09.593058" level="INFO">${return_list_reference} = []</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-12T00:19:09.592656" elapsed="0.000436"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-12T00:19:09.593529" level="INFO">${return_list_copy} = []</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-12T00:19:09.593246" elapsed="0.000308"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-12T00:19:09.593597" elapsed="0.000030"/>
</return>
<msg time="2026-04-12T00:19:09.593766" level="INFO">${index_list} = []</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-12T00:19:09.592292" elapsed="0.001498"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="NOT RUN" start="2026-04-12T00:19:09.594157" elapsed="0.000022"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-12T00:19:09.594401" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-12T00:19:09.594258" elapsed="0.000194"/>
</branch>
<status status="NOT RUN" start="2026-04-12T00:19:09.594238" elapsed="0.000240"/>
</if>
<var name="${index}"/>
<status status="NOT RUN" start="2026-04-12T00:19:09.594020" elapsed="0.000482"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="NOT RUN" start="2026-04-12T00:19:09.593845" elapsed="0.000682"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-12T00:19:09.591506" elapsed="0.003073"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-12T00:19:09.586663" elapsed="0.007968"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-12T00:19:09.586246" elapsed="0.008442"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-12T00:19:09.582215" elapsed="0.012527"/>
</kw>
<kw name="Register_Rpc_On_Nodes" owner="DrbCommons">
<for flavor="IN">
<iter>
<kw name="Register_Rpc_And_Update_Possible_Constants" owner="DrbCommons">
<arg>${index}</arg>
<doc>Register global rpc on given node of the cluster.</doc>
<status status="NOT RUN" start="2026-04-12T00:19:09.595463" elapsed="0.000024"/>
</kw>
<var name="${index}"/>
<status status="NOT RUN" start="2026-04-12T00:19:09.595306" elapsed="0.000213"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="NOT RUN" start="2026-04-12T00:19:09.595192" elapsed="0.000354"/>
</for>
<arg>${all_indices}</arg>
<doc>Register global rpc on given nodes of the cluster.</doc>
<status status="PASS" start="2026-04-12T00:19:09.594968" elapsed="0.000629"/>
</kw>
<kw name="Verify_Keyword_Does_Not_Fail_Within_Timeout" owner="WaitForFailure">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Invert_Failure" owner="WaitForFailure">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Confirm_Keyword_Fails_Within_Timeout" owner="WaitForFailure">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Invert_Failure" owner="WaitForFailure">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Test_Scenario">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-12T00:19:09.600754" level="FAIL">Evaluating expression 'random.choice([])' failed: IndexError: Cannot choose from an empty sequence</msg>
<var>${unregistered_rpc_node}</var>
<arg>random.choice(${all_indices})</arg>
<arg>modules=random</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="FAIL" start="2026-04-12T00:19:09.599961" elapsed="0.001061">Evaluating expression 'random.choice([])' failed: IndexError: Cannot choose from an empty sequence</status>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${unregistered_rpc_node}</var>
<arg>${unregistered_rpc_node}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-12T00:19:09.601285" elapsed="0.000022"/>
</kw>
<kw name="Verify_Constant_On_Registered_Nodes" owner="DrbCommons">
<arg>${all_indices}</arg>
<doc>Verify that the rpc response comes from the local node for every node in the list.</doc>
<status status="NOT RUN" start="2026-04-12T00:19:09.601618" elapsed="0.000029"/>
</kw>
<kw name="Unregister_Rpc_And_Update_Possible_Constants" owner="DrbCommons">
<arg>${unregistered_rpc_node}</arg>
<doc>Unregister global rpc on given node of the cluster.</doc>
<status status="NOT RUN" start="2026-04-12T00:19:09.601938" elapsed="0.000026"/>
</kw>
<kw name="Verify_Constant_On_Unregistered_Node" owner="DrbCommons">
<arg>${unregistered_rpc_node}</arg>
<doc>Verify that the response comes from other nodes with rpc registered. Verification
passes for registered nodes too.</doc>
<status status="NOT RUN" start="2026-04-12T00:19:09.602226" elapsed="0.000024"/>
</kw>
<kw name="Verify_Constant_On_Registered_Nodes" owner="DrbCommons">
<arg>${registered_indices}</arg>
<doc>Verify that the rpc response comes from the local node for every node in the list.</doc>
<status status="NOT RUN" start="2026-04-12T00:19:09.602583" elapsed="0.000025"/>
</kw>
<kw name="Register_Rpc_And_Update_Possible_Constants" owner="DrbCommons">
<arg>${unregistered_rpc_node}</arg>
<doc>Register global rpc on given node of the cluster.</doc>
<status status="NOT RUN" start="2026-04-12T00:19:09.602874" elapsed="0.000024"/>
</kw>
<kw name="Verify_Constant_On_Registered_Nodes" owner="DrbCommons">
<arg>${all_indices}</arg>
<doc>Verify that the rpc response comes from the local node for every node in the list.</doc>
<status status="NOT RUN" start="2026-04-12T00:19:09.603185" elapsed="0.000024"/>
</kw>
<doc>Test randomly unregister rpc on one node while testing checking expected constants.</doc>
<status status="FAIL" start="2026-04-12T00:19:09.599698" elapsed="0.003684">Evaluating expression 'random.choice([])' failed: IndexError: Cannot choose from an empty sequence</status>
</kw>
<msg time="2026-04-12T00:19:09.603491" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-12T00:19:09.603540" level="INFO">${output} = Evaluating expression 'random.choice([])' failed: IndexError: Cannot choose from an empty sequence</msg>
<var>${status}</var>
<var>${output}</var>
<arg>@{cell_sequence}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-12T00:19:09.599217" elapsed="0.004346"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; != &quot;PASS&quot;">
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-12T00:19:09.603767" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-12T00:19:09.603635" elapsed="0.000194"/>
</branch>
<status status="PASS" start="2026-04-12T00:19:09.603615" elapsed="0.000239"/>
</if>
<kw name="Convert To String" owner="BuiltIn">
<var>${output}</var>
<arg>${output}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-12T00:19:09.603994" elapsed="0.000021"/>
</kw>
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-12T00:19:09.604156" elapsed="0.000020"/>
</kw>
<arg>@{cell_list}</arg>
<doc>The response of Keyword execution is either a return value or a failure message.
This keyword calls the argument keyword and returns its failure message string,
or fails with its return value converted to string.</doc>
<status status="PASS" start="2026-04-12T00:19:09.598886" elapsed="0.005384"/>
</kw>
<arg>${timeout}</arg>
<arg>${refresh}</arg>
<arg>Invert_Failure</arg>
<arg>@{cell_list}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-12T00:19:09.598125" elapsed="0.006193"/>
</kw>
<msg time="2026-04-12T00:19:09.604364" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>BuiltIn.Wait_Until_Keyword_Succeeds</arg>
<arg>${timeout}</arg>
<arg>${refresh}</arg>
<arg>Invert_Failure</arg>
<arg>@{cell_list}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-12T00:19:09.597735" elapsed="0.006676"/>
</kw>
<arg>82800</arg>
<arg>1s</arg>
<arg>Test_Scenario</arg>
<doc>Some Keywords need several tries to finally fail, this keyword passes if and only if the failure ultimately happens.</doc>
<status status="PASS" start="2026-04-12T00:19:09.597402" elapsed="0.007082"/>
</kw>
<msg time="2026-04-12T00:19:09.604581" level="INFO">${status} = PASS</msg>
<msg time="2026-04-12T00:19:09.604623" level="INFO">${output} = Evaluating expression 'random.choice([])' failed: IndexError: Cannot choose from an empty sequence</msg>
<var>${status}</var>
<var>${output}</var>
<arg>@{cell_sequence}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-12T00:19:09.597011" elapsed="0.007635"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; != &quot;PASS&quot;">
<return>
<value>${output}</value>
<status status="NOT RUN" start="2026-04-12T00:19:09.604834" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-12T00:19:09.604730" elapsed="0.000146"/>
</branch>
<status status="PASS" start="2026-04-12T00:19:09.604712" elapsed="0.000185"/>
</if>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-12T00:19:09.605337" level="INFO">${output} = Evaluating expression 'random.choice([])' failed: IndexError: Cannot choose from an empty sequence</msg>
<var>${output}</var>
<arg>${output}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-12T00:19:09.605032" elapsed="0.000331"/>
</kw>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-12T00:19:09.605844" level="FAIL">Evaluating expression 'random.choice([])' failed: IndexError: Cannot choose from an empty sequence</msg>
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-12T00:19:09.605508" elapsed="0.000403">Evaluating expression 'random.choice([])' failed: IndexError: Cannot choose from an empty sequence</status>
</kw>
<arg>Confirm_Keyword_Fails_Within_Timeout</arg>
<arg>${timeout}</arg>
<arg>${refresh}</arg>
<arg>@{cell_list}</arg>
<doc>The response of Keyword execution is either a return value or a failure message.
This keyword calls the argument keyword and returns its failure message string,
or fails with its return value converted to string.</doc>
<status status="FAIL" start="2026-04-12T00:19:09.596603" elapsed="0.009442">Evaluating expression 'random.choice([])' failed: IndexError: Cannot choose from an empty sequence</status>
</kw>
<msg time="2026-04-12T00:19:09.606096" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Invert_Failure</arg>
<arg>Confirm_Keyword_Fails_Within_Timeout</arg>
<arg>${timeout}</arg>
<arg>${refresh}</arg>
<arg>@{cell_list}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="FAIL" start="2026-04-12T00:19:09.596173" elapsed="0.009968"/>
</kw>
<arg>${LONGEVITY_TEST_DURATION_IN_SECS}</arg>
<arg>1s</arg>
<arg>Test_Scenario</arg>
<doc>Some positive checks report false success for a short time. This keyword verifies no failure does happen within timeout period.
This implementation needs more complicated logic than, Verify_Keyword_Never_Passes_Within_Timeout,
so use that keyword in case you have a negative check handy.</doc>
<status status="FAIL" start="2026-04-12T00:19:09.595801" elapsed="0.010433">Evaluating expression 'random.choice([])' failed: IndexError: Cannot choose from an empty sequence</status>
</kw>
<kw name="Unregister_Rpc_On_Nodes" owner="DrbCommons">
<arg>${all_indices}</arg>
<doc>Unregister global rpc on given nodes of the cluster.</doc>
<status status="NOT RUN" start="2026-04-12T00:19:09.606460" elapsed="0.000024"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-12T00:19:09.607914" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-12T00:19:09.607353" elapsed="0.000623"/>
</branch>
<status status="PASS" start="2026-04-12T00:19:09.607336" elapsed="0.000668"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-12T00:19:09.608148" elapsed="0.000313"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-12T00:19:09.613500" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-12T00:19:09.613012" elapsed="0.000516"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-12T00:19:09.613774" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-12T00:19:09.613602" elapsed="0.000213"/>
</branch>
<status status="PASS" start="2026-04-12T00:19:09.613583" elapsed="0.000254"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-12T00:19:09.614317" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-12T00:19:09.614009" elapsed="0.000334"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-12T00:19:09.614936" level="INFO">${reference} = controller_drb_precedence_longevity_txt_Rpc_Provider_Precedence_Longevity</msg>
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-12T00:19:09.614577" elapsed="0.000385"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-12T00:19:09.615298" level="INFO">${reference} = controller_drb_precedence_longevity_txt_rpc_provider_precedence_longevity</msg>
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-12T00:19:09.615116" elapsed="0.000207"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-12T00:19:09.615825" level="INFO">${msg} = ... click for list of related bugs or create a new one if needed (with the
"controller_drb_precedence_longevity_txt_rpc_provider_precedence_longevity"
reference somewhere inside)</msg>
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-12T00:19:09.615469" elapsed="0.000382"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-12T00:19:09.616308" level="INFO">${bugs} = "https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_drb_precedence_longevity_txt_rpc_provider_precedence_longevity&amp;order=bug_status"</msg>
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-12T00:19:09.615999" elapsed="0.000337"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-12T00:19:09.616952" level="INFO">Set test message to:
... click for list of related bugs or create a new one if needed (with the
"controller_drb_precedence_longevity_txt_rpc_provider_precedence_longevity"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_drb_precedence_longevity_txt_rpc_provider_precedence_longevity&amp;order=bug_status"

Evaluating expression 'random.choice([])' failed: IndexError: Cannot choose from an empty sequence</msg>
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-12T00:19:09.616499" elapsed="0.000503"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-12T00:19:09.617443" level="INFO">... click for list of related bugs or create a new one if needed (with the
"controller_drb_precedence_longevity_txt_rpc_provider_precedence_longevity"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_drb_precedence_longevity_txt_rpc_provider_precedence_longevity&amp;order=bug_status"</msg>
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-12T00:19:09.617150" elapsed="0.000340"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-12T00:19:09.612711" elapsed="0.004831"/>
</kw>
<status status="PASS" start="2026-04-12T00:19:09.607143" elapsed="0.010447"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-12T00:19:09.606794" elapsed="0.010836"/>
</kw>
<doc>Repeat the tested scenario for 24h.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-12T00:19:09.581544" elapsed="0.036125">... click for list of related bugs or create a new one if needed (with the
"controller_drb_precedence_longevity_txt_rpc_provider_precedence_longevity"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_drb_precedence_longevity_txt_rpc_provider_precedence_longevity&amp;order=bug_status"

Evaluating expression 'random.choice([])' failed: IndexError: Cannot choose from an empty sequence</status>
</test>
<kw name="Close All Connections" owner="SSHLibrary" type="TEARDOWN">
<doc>Closes all open connections.</doc>
<status status="PASS" start="2026-04-12T00:19:09.618366" elapsed="0.000106"/>
</kw>
<doc>DOMRpcBroker testing: RPC Provider Precedence

Copyright (c) 2017 Cisco Systems, Inc. and others. All rights reserved.

This program and the accompanying materials are made available under the
terms of the Eclipse Public License v1.0 which accompanies this distribution,
and is available at http://www.eclipse.org/legal/epl-v10.html

The aim is to establish that remote RPC implementations have lower priority
than local ones, which is to say that any movement of RPCs on remote nodes
does not affect routing as long as a local implementation is available.</doc>
<status status="FAIL" start="2026-04-12T00:19:08.772267" elapsed="0.846240"/>
</suite>
<statistics>
<total>
<stat pass="0" fail="1" skip="0">All Tests</stat>
</total>
<tag>
<stat pass="0" fail="1" skip="0">critical</stat>
</tag>
<suite>
<stat name="controller-drb-precedence-longevity.txt" id="s1" pass="0" fail="1" skip="0">controller-drb-precedence-longevity.txt</stat>
</suite>
</statistics>
<errors>
</errors>
</robot>
