<?xml version="1.0" encoding="UTF-8"?>
<robot generator="Robot 7.5 (Python 3.11.10 on linux)" generated="2026-10-13T08:57:01.582448" rpa="false" schemaversion="5">
<suite id="s1" name="jsonrpc-basic.txt" source="/w/workspace/jsonrpc-csit-1node-basic-only-chromium/test/csit/suites/jsonrpc/010-mdsal-jsonrpc-basic.robot">
<kw name="ClusterManagement_Setup" owner="ClusterManagement" type="SETUP">
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-10-13T08:57:02.090167" 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-10-13T08:57:02.088633" elapsed="0.001575"/>
</kw>
<if>
<branch type="IF" condition="${already_done}">
<return>
<status status="NOT RUN" start="2026-10-13T08:57:02.090432" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-10-13T08:57:02.090320" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-10-13T08:57:02.090291" elapsed="0.000227"/>
</if>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-13T08:57:02.091061" level="INFO">${ClusterManagement__has_setup_run} = True</msg>
<arg>\${ClusterManagement__has_setup_run}</arg>
<arg>True</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-10-13T08:57:02.090707" elapsed="0.000403"/>
</kw>
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-10-13T08:57:02.091635" 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-10-13T08:57:02.091299" elapsed="0.000366"/>
</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-10-13T08:57:02.092322" elapsed="0.000284"/>
</kw>
<msg time="2026-10-13T08:57:02.092708" level="INFO">${status} = PASS</msg>
<msg time="2026-10-13T08:57:02.092755" 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 errorw.</doc>
<status status="PASS" start="2026-10-13T08:57:02.091833" elapsed="0.000947"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-13T08:57:02.093381" 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-10-13T08:57:02.092980" elapsed="0.000428"/>
</kw>
<kw name="ClusterManagement__Compute_Derived_Variables" owner="ClusterManagement">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-13T08:57:02.094373" level="INFO">@{member_index_list} = [ ]</msg>
<var>@{member_index_list}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-13T08:57:02.094085" elapsed="0.000315"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-13T08:57:02.094813" level="INFO">@{session_list} = [ ]</msg>
<var>@{session_list}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-13T08:57:02.094543" elapsed="0.000298"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-13T08:57:02.095390" 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-10-13T08:57:02.095026" elapsed="0.000391"/>
</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-10-13T08:57:02.095847" elapsed="0.000032"/>
</kw>
<var name="${index}"/>
<status status="NOT RUN" start="2026-10-13T08:57:02.095672" elapsed="0.000267"/>
</iter>
<var>${index}</var>
<value>1</value>
<value>${int_of_members+1}</value>
<status status="NOT RUN" start="2026-10-13T08:57:02.095477" elapsed="0.000493"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-13T08:57:02.096560" level="INFO">${ClusterManagement__member_index_list} = []</msg>
<arg>\${ClusterManagement__member_index_list}</arg>
<arg>${member_index_list}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-10-13T08:57:02.096187" elapsed="0.000424"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-13T08:57:02.097198" level="INFO">${ClusterManagement__index_to_ip_mapping} = {}</msg>
<arg>\${ClusterManagement__index_to_ip_mapping}</arg>
<arg>${index_to_ip_mapping}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-10-13T08:57:02.096792" elapsed="0.000449"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-13T08:57:02.097796" level="INFO">${ClusterManagement__session_list} = []</msg>
<arg>\${ClusterManagement__session_list}</arg>
<arg>${session_list}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-10-13T08:57:02.097443" elapsed="0.000403"/>
</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-10-13T08:57:02.093645" elapsed="0.004287"/>
</kw>
<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-10-13T08:57:02.088005" elapsed="0.009997"/>
</kw>
<test id="s1-t1" name="Push MDSAL data and Verify Through Restconf" line="14">
<kw name="Setup_Karaf_Keywords" owner="KarafKeywords">
<kw name="ClusterManagement_Setup" owner="ClusterManagement">
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-10-13T08:57:02.099873" level="INFO">${already_done} = True</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-10-13T08:57:02.099577" elapsed="0.000335"/>
</kw>
<if>
<branch type="IF" condition="${already_done}">
<return>
<status status="PASS" start="2026-10-13T08:57:02.100085" elapsed="0.000067"/>
</return>
<status status="PASS" start="2026-10-13T08:57:02.099991" elapsed="0.000198"/>
</branch>
<status status="PASS" start="2026-10-13T08:57:02.099968" elapsed="0.000246"/>
</if>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>\${ClusterManagement__has_setup_run}</arg>
<arg>True</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-10-13T08:57:02.100392" elapsed="0.000020"/>
</kw>
<kw name="Get Variable Value" owner="BuiltIn">
<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="NOT RUN" start="2026-10-13T08:57:02.100555" elapsed="0.000025"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<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 errorw.</doc>
<status status="NOT RUN" start="2026-10-13T08:57:02.100721" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<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="NOT RUN" start="2026-10-13T08:57:02.100968" elapsed="0.000020"/>
</kw>
<kw name="ClusterManagement__Compute_Derived_Variables" owner="ClusterManagement">
<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="NOT RUN" start="2026-10-13T08:57:02.101216" elapsed="0.000025"/>
</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-10-13T08:57:02.099191" elapsed="0.002112"/>
</kw>
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-10-13T08:57:02.101466" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-10-13T08:57:02.101371" elapsed="0.000139"/>
</branch>
<status status="PASS" start="2026-10-13T08:57:02.101350" elapsed="0.000181"/>
</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-10-13T08:57:02.103032" 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-10-13T08:57:02.102670" elapsed="0.000388"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-13T08:57:02.103485" level="INFO">${return_list_copy} = []</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-13T08:57:02.103218" elapsed="0.000291"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-10-13T08:57:02.103553" elapsed="0.000030"/>
</return>
<msg time="2026-10-13T08:57:02.103690" 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-10-13T08:57:02.102177" elapsed="0.001536"/>
</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-10-13T08:57:02.104024" elapsed="0.000024"/>
</kw>
<var name="${index}"/>
<status status="NOT RUN" start="2026-10-13T08:57:02.103859" elapsed="0.000224"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="NOT RUN" start="2026-10-13T08:57:02.103761" elapsed="0.000375"/>
</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-10-13T08:57:02.101720" elapsed="0.002471"/>
</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-10-13T08:57:02.104334" elapsed="0.000209"/>
</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 errorw.</doc>
<status status="NOT RUN" start="2026-10-13T08:57:02.104815" elapsed="0.000019"/>
</kw>
<var name="${index}"/>
<status status="NOT RUN" start="2026-10-13T08:57:02.104689" elapsed="0.000185"/>
</iter>
<var>${index}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="NOT RUN" start="2026-10-13T08:57:02.104590" elapsed="0.000322"/>
</for>
<doc>Initialize ClusterManagement. Open ssh karaf connections to each ODL.</doc>
<status status="PASS" start="2026-10-13T08:57:02.098740" elapsed="0.006226"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-10-13T08:57:02.105693" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-10-13T08:57:02.105600" elapsed="0.000139"/>
</branch>
<status status="PASS" start="2026-10-13T08:57:02.105582" elapsed="0.000180"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-10-13T08:57:02.106240" level="FAIL">Dictionary does not contain key '1'.</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="FAIL" start="2026-10-13T08:57:02.105998" elapsed="0.000440">Dictionary does not contain key '1'.</status>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="NOT RUN" start="2026-10-13T08:57:02.106697" elapsed="0.000022"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible errorw.</doc>
<status status="NOT RUN" start="2026-10-13T08:57:02.106886" elapsed="0.000033"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible errorw.</doc>
<status status="NOT RUN" start="2026-10-13T08:57:02.107077" elapsed="0.000019"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-13T08:57:02.107330" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-13T08:57:02.107181" elapsed="0.000199"/>
</branch>
<status status="NOT RUN" start="2026-10-13T08:57:02.107163" elapsed="0.000240"/>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-13T08:57:02.107581" elapsed="0.000020"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-13T08:57:02.107817" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-10-13T08:57:02.107672" elapsed="0.000207"/>
</branch>
<status status="NOT RUN" start="2026-10-13T08:57:02.107652" elapsed="0.000269"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-10-13T08:57:02.107994" elapsed="0.000017"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<msg time="2026-10-13T08:57:02.110567" level="FAIL">Variable '${current_connection_index}' not found.</msg>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="FAIL" start="2026-10-13T08:57:02.109236" elapsed="0.001367">Variable '${current_connection_index}' not found.</status>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if `condition` is true.</doc>
<status status="FAIL" start="2026-10-13T08:57:02.108718" elapsed="0.001947">Variable '${current_connection_index}' not found.</status>
</kw>
<arg>log:set DEBUG org.opendaylight.jsonrpc</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-10-13T08:57:02.105336" elapsed="0.005416">Dictionary does not contain key '1'.

Also keyword teardown failed:
Variable '${current_connection_index}' not found.</status>
</kw>
<kw name="Mount Read Service Endpoint" owner="JsonrpcKeywords">
<doc>This keyword mounts an endpoint after starting service</doc>
<status status="NOT RUN" start="2026-10-13T08:57:02.110959" elapsed="0.000024"/>
</kw>
<kw name="Run Read Service Python Script on Controller Vm" owner="JsonrpcKeywords">
<doc>This keyword creates a new virtual environment, installs pyzmq &amp; zmq and starts the read service on controller vm</doc>
<status status="NOT RUN" start="2026-10-13T08:57:02.111264" elapsed="0.000024"/>
</kw>
<kw name="Verify Data On Mounted Endpoint" owner="JsonrpcKeywords">
<doc>This keyword verifies if the data we get on the mount point is same as what we put</doc>
<status status="NOT RUN" start="2026-10-13T08:57:02.111458" elapsed="0.000022"/>
</kw>
<doc>Push data using python utility and verify using restconf</doc>
<tag>basic data</tag>
<status status="FAIL" start="2026-10-13T08:57:02.098081" elapsed="0.013525">Dictionary does not contain key '1'.

Also keyword teardown failed:
Variable '${current_connection_index}' not found.</status>
</test>
<kw name="Delete All Sessions" owner="RequestsLibrary" type="TEARDOWN">
<msg time="2026-10-13T08:57:02.112243" level="INFO">Deleting All Sessions</msg>
<doc>Removes all the session objects </doc>
<status status="PASS" start="2026-10-13T08:57:02.112147" elapsed="0.000147"/>
</kw>
<doc>Test suite for verifying basic variations of export API including checking statuses</doc>
<status status="FAIL" start="2026-10-13T08:57:01.584091" elapsed="0.528255"/>
</suite>
<statistics>
<total>
<stat pass="0" fail="1" skip="0">All Tests</stat>
</total>
<tag>
<stat pass="0" fail="1" skip="0">basic data</stat>
</tag>
<suite>
<stat name="jsonrpc-basic.txt" id="s1" pass="0" fail="1" skip="0">jsonrpc-basic.txt</stat>
</suite>
</statistics>
<errors>
</errors>
</robot>
