-Documentation General Utils library. This library has broad scope, it can be used by any robot system tests.
-Library SSHLibrary
-Library HttpLibrary.HTTP
-Library String
-Library DateTime
-Library Process
-Library Collections
-Library RequestsLibrary
-Library OperatingSystem
-Library ${CURDIR}/UtilLibrary.py
-Resource ${CURDIR}/SSHKeywords.robot
-Resource ${CURDIR}/TemplatedRequests.robot
-Resource ${CURDIR}/../variables/Variables.robot
+Documentation General Utils library. This library has broad scope, it can be used by any robot system tests.
+
+Library SSHLibrary
+Library String
+Library DateTime
+Library Process
+Library Collections
+Library RequestsLibrary
+Library OperatingSystem
+Library ${CURDIR}/UtilLibrary.py
+Resource ${CURDIR}/SSHKeywords.robot
+Resource ${CURDIR}/TemplatedRequests.robot
+Resource ${CURDIR}/../variables/Variables.robot
+Resource ${CURDIR}/../variables/openflowplugin/Variables.robot
+
-${start} sudo mn --controller=remote,ip=${ODL_SYSTEM_IP} --topo tree,1 --switch ovsk,protocols=OpenFlow13
+${start} sudo mn --controller=remote,ip=${ODL_SYSTEM_IP} --topo tree,1 --switch ovsk,protocols=OpenFlow13
+
Log Start the test on the base edition
Clean Mininet System
${mininet_conn_id}= Open Connection ${system} prompt=${prompt} timeout=${timeout}
Log Start the test on the base edition
Clean Mininet System
${mininet_conn_id}= Open Connection ${system} prompt=${prompt} timeout=${timeout}
[Documentation] 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.
[Documentation] 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.
... 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.
... 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.
- ${match} BuiltIn.Run Keyword And Return Status Should Contain ${number} -
- ${bug_url}= BuiltIn.Set Variable If ${match} https://jira.opendaylight.org/browse/${number} https://bugs.opendaylight.org/show_bug.cgi?id=${number}
+ ${match}= BuiltIn.Run Keyword And Return Status Should Contain ${number} -
+ ${bug_url}= BuiltIn.Set Variable If
+ ... ${match}
+ ... https://jira.opendaylight.org/browse/${number}
+ ... https://bugs.opendaylight.org/show_bug.cgi?id=${number}
${msg}= BuiltIn.Set_Variable This test fails due to ${bug_url}
${newline}= BuiltIn.Evaluate chr(10)
BuiltIn.Set Test Message ${msg}${newline}${newline}${TEST_MESSAGE}
BuiltIn.Log ${msg}
${msg}= BuiltIn.Set_Variable This test fails due to ${bug_url}
${newline}= BuiltIn.Evaluate chr(10)
BuiltIn.Set Test Message ${msg}${newline}${newline}${TEST_MESSAGE}
BuiltIn.Log ${msg}
Report_Failure_And_Point_To_Linked_Bugs
[Documentation] Report that a test failed and point to linked Bugzilla bug(s).
Report_Failure_And_Point_To_Linked_Bugs
[Documentation] Report that a test failed and point to linked Bugzilla bug(s).
... used. It reports the URL of the bug on console and also puts it
... into the Robot log file.
${test_skipped}= BuiltIn.Evaluate len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) > 0 modules=re
... used. It reports the URL of the bug on console and also puts it
... into the Robot log file.
${test_skipped}= BuiltIn.Evaluate len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) > 0 modules=re
${newline}= BuiltIn.Evaluate chr(10)
${reference}= String.Replace_String_Using_Regexp ${SUITE_NAME}_${TEST_NAME} [ /\.-] _
${reference}= String.Convert_To_Lowercase ${reference}
${newline}= BuiltIn.Evaluate chr(10)
${reference}= String.Replace_String_Using_Regexp ${SUITE_NAME}_${TEST_NAME} [ /\.-] _
${reference}= String.Convert_To_Lowercase ${reference}
- ${msg}= BuiltIn.Set_Variable ... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)
- ${bugs}= BuiltIn.Set_Variable "https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&o1=substring&v1=${reference}&order=bug_status"
+ ${msg}= BuiltIn.Set_Variable
+ ... ... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)
+ ${bugs}= BuiltIn.Set_Variable
+ ... "https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&o1=substring&v1=${reference}&order=bug_status"
BuiltIn.Set Test Message ${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}
BuiltIn.Log ${msg}${newline}${bugs}
Check Nodes Stats
BuiltIn.Set Test Message ${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}
BuiltIn.Log ${msg}${newline}${bugs}
Check Nodes Stats
[Documentation] A GET on the /node/${node} API is made and specific flow stat
... strings are checked for existence.
[Documentation] A GET on the /node/${node} API is made and specific flow stat
... strings are checked for existence.
- ${resp} RequestsLibrary.Get Request ${session} ${OPERATIONAL_NODES_API}/node/${node}
+ [Arguments] ${node} ${session}=session
+ ${resp}= RequestsLibrary.Get On Session
+ ... ${session}
+ ... url=${RFC8040_NODES_API}/node=${node}
+ ... params=${RFC8040_OPERATIONAL_CONTENT}
- Should Contain ${resp.content} flow-capable-node-connector-statistics
- Should Contain ${resp.content} flow-table-statistics
+ Should Contain ${resp.text} flow-capable-node-connector-statistics
+ Should Contain ${resp.text} flow-table-statistics
[Documentation] A GET is made to the specified ${URI} and the specific count of a
... given element is done (as supplied by ${element} and ${expected_count})
[Documentation] A GET is made to the specified ${URI} and the specific count of a
... given element is done (as supplied by ${element} and ${expected_count})
- ${resp_json} = BuiltIn.Run Keyword If '''${resp_content}''' != '${EMPTY}' RequestsLibrary.To Json ${resp_content} pretty_print=True
- ... ELSE BuiltIn.Set Variable ${EMPTY}
+ IF '''${resp_content}''' != '${EMPTY}'
+ ${resp_json}= RequestsLibrary.To Json ${resp_content} pretty_print=True
+ ELSE
+ ${resp_json}= BuiltIn.Set Variable ${EMPTY}
+ END
[Documentation] A GET is made at the supplied ${URI} and every item in the list of
... ${elements} is verified to exist in the response
[Documentation] A GET is made at the supplied ${URI} and every item in the list of
... ${elements} is verified to exist in the response
- ${resp} RequestsLibrary.Get Request ${session} ${uri}
- BuiltIn.Run Keyword If "${pretty_print_json}" == "True" Log Content ${resp.content}
- ... ELSE BuiltIn.Log ${resp.content}
+ [Arguments] ${uri} ${elements} ${session}=session ${pretty_print_json}=False
+ ${resp}= RequestsLibrary.Get On Session ${session} url=${uri}
+ IF "${pretty_print_json}" == "True"
+ Log Content ${resp.text}
+ ELSE
+ BuiltIn.Log ${resp.text}
+ END
[Documentation] A GET is made at the supplied ${uri} and every item in the list of
... ${elements} is verified to NOT exist in the response. If ${check_for_null} is True
... return of 404 is treated as empty list. From Neon onwards, an empty list is always
... returned as null, giving 404 on rest call.
[Documentation] A GET is made at the supplied ${uri} and every item in the list of
... ${elements} is verified to NOT exist in the response. If ${check_for_null} is True
... return of 404 is treated as empty list. From Neon onwards, an empty list is always
... returned as null, giving 404 on rest call.
- ${resp} RequestsLibrary.Get Request ${session} ${uri}
- BuiltIn.Run Keyword If "${pretty_print_json}" == "True" Log Content ${resp.content}
- ... ELSE BuiltIn.Log ${resp.content}
- BuiltIn.Run Keyword If "${check_for_null}" == "True" Builtin.Return From Keyword If ${resp.status_code} == 404
+ [Arguments] ${uri} ${elements} ${session}=session ${pretty_print_json}=False ${check_for_null}=False
+ ${resp}= RequestsLibrary.Get On Session ${session} url=${uri}
+ IF "${pretty_print_json}" == "True"
+ Log Content ${resp.text}
+ ELSE
+ BuiltIn.Log ${resp.text}
+ END
+ IF "${check_for_null}" == "True"
+ IF ${resp.status_code} == 404 or ${resp.status_code} == 409 RETURN
+ END
- ${value}= Get Json Value ${content} ${index}
- ${value}= Convert To String ${value}
- ${value}= Run Keyword If '${strip}' == 'strip' Strip Quotes ${value}
- [Return] ${value}
+ [Arguments] ${content} ${index}
+ ${JSON}= Evaluate json.loads('''${content}''') json
+ ${value}= Set Variable ${JSON${index}}
+ RETURN ${value}
[Documentation] Uses ps to find a process that matches the supplied regex. Returns the PID of that process
... The ${regex_string_to_match_on} should produce a unique process otherwise the PID returned may not be
... the expected PID
[Documentation] Uses ps to find a process that matches the supplied regex. Returns the PID of that process
... The ${regex_string_to_match_on} should produce a unique process otherwise the PID returned may not be
... the expected PID
# doing the extra -v grep in this command to exclude the grep process itself from the output
${cmd}= Set Variable ps -elf | grep -v grep | grep ${regex_string_to_match_on} | awk '{print $4}'
# doing the extra -v grep in this command to exclude the grep process itself from the output
${cmd}= Set Variable ps -elf | grep -v grep | grep ${regex_string_to_match_on} | awk '{print $4}'
... prompt_timeout=${prompt_timeout}
# ${output} contains the system prompt and all we want is the value of the number
${pid}= Fetch From Left ${output} \r
... prompt_timeout=${prompt_timeout}
# ${output} contains the system prompt and all we want is the value of the number
${pid}= Fetch From Left ${output} \r
... prompt_timeout=${prompt_timeout}
# ${output} contains the system prompt and all we want is the value of the number
${thread_count}= Fetch From Left ${output} \r
... prompt_timeout=${prompt_timeout}
# ${output} contains the system prompt and all we want is the value of the number
${thread_count}= Fetch From Left ${output} \r
[Documentation] Reduces the common work of running a command on a remote system to a single higher level
... robot keyword, taking care to log in with a public key and. The command given is written and the return value
... depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
... At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
... will be a two element list containing both. Otherwise the resulting return value is a string.
... No test conditions are checked.
[Documentation] Reduces the common work of running a command on a remote system to a single higher level
... robot keyword, taking care to log in with a public key and. The command given is written and the return value
... depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
... At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
... will be a two element list containing both. Otherwise the resulting return value is a string.
... No test conditions are checked.
- Run Keyword If "${return_stdout}"!="True" and "${return_stderr}"!="True" Fail At least one of {return_stdout} or {return_stderr} args should be set to True
+ [Arguments] ${system} ${cmd} ${user}=${DEFAULT_USER} ${password}=${EMPTY} ${prompt}=${DEFAULT_LINUX_PROMPT} ${prompt_timeout}=${DEFAULT_TIMEOUT}
+ ... ${return_stdout}=True ${return_stderr}=False
+ IF "${return_stdout}"!="True" and "${return_stderr}"!="True"
+ Fail At least one of {return_stdout} or {return_stderr} args should be set to True
+ END
${conn_id}= SSHLibrary.Open Connection ${system} prompt=${prompt} timeout=${prompt_timeout}
SSHKeywords.Flexible SSH Login ${user} ${password}
${conn_id}= SSHLibrary.Open Connection ${system} prompt=${prompt} timeout=${prompt_timeout}
SSHKeywords.Flexible SSH Login ${user} ${password}
- Run Keyword If "${return_stdout}"!="True" Return From Keyword ${stderr}
- Run Keyword If "${return_stderr}"!="True" Return From Keyword ${stdout}
+ IF "${return_stdout}"!="True" RETURN ${stderr}
+ IF "${return_stderr}"!="True" RETURN ${stdout}
+ RETURN ${stdout} ${stderr}
[Documentation] Reduces the common work of running a command on a remote system to a single higher level
... robot keyword, taking care to log in with a public key and. The command given is written
... and the output returned. No test conditions are checked.
[Documentation] Reduces the common work of running a command on a remote system to a single higher level
... robot keyword, taking care to log in with a public key and. The command given is written
... and the output returned. No test conditions are checked.
- BuiltIn.Run Keyword And Return Run Command On Remote System ${system} ${cmd} ${user} ${password} prompt=${prompt}
+ [Arguments] ${system}=${TOOLS_SYSTEM_IP} ${cmd}=echo ${user}=${TOOLS_SYSTEM_USER} ${password}=${TOOLS_SYSTEM_PASSWORD} ${prompt}=${TOOLS_SYSTEM_PROMPT}
+ BuiltIn.Run Keyword And Return
+ ... Run Command On Remote System
+ ... ${system}
+ ... ${cmd}
+ ... ${user}
+ ... ${password}
+ ... prompt=${prompt}
- BuiltIn.Run Keyword And Return Run Command On Remote System ${system} ${cmd} ${user} ${password} prompt=${prompt}
+ [Arguments] ${system}=${ODL_SYSTEM_IP} ${cmd}=echo ${user}=${ODL_SYSTEM_USER} ${password}=${ODL_SYSTEM_PASSWORD} ${prompt}=${ODL_SYSTEM_PROMPT}
+ BuiltIn.Run Keyword And Return
+ ... Run Command On Remote System
+ ... ${system}
+ ... ${cmd}
+ ... ${user}
+ ... ${password}
+ ... prompt=${prompt}
- Run Keyword If "${return_stdout}"!="True" and "${return_stderr}"!="True" Fail At least one of {return_stdout} or {return_stderr} args should be set to True
+ [Arguments] ${conn_id}=${EMPTY} ${cmd}=echo ${return_stdout}=True ${return_stderr}=False
+ IF "${return_stdout}"!="True" and "${return_stderr}"!="True"
+ Fail At least one of {return_stdout} or {return_stderr} args should be set to True
+ END
${current_ssh_connection}= SSHLibrary.Get Connection
BuiltIn.Log Attempting to execute command "${cmd}" on existing connection "${conn_id}
SSHLibrary.Switch Connection ${conn_id}
${current_ssh_connection}= SSHLibrary.Get Connection
BuiltIn.Log Attempting to execute command "${cmd}" on existing connection "${conn_id}
SSHLibrary.Switch Connection ${conn_id}
- Run Keyword If "${return_stdout}"!="True" Return From Keyword ${stderr}
- Run Keyword If "${return_stderr}"!="True" Return From Keyword ${stdout}
+ IF "${return_stdout}"!="True" RETURN ${stderr}
+ IF "${return_stderr}"!="True" RETURN ${stdout}
+ RETURN ${stdout} ${stderr}
${conn_id}= Open Connection ${system} prompt=${prompt} timeout=${prompt_timeout}
SSHKeywords.Flexible SSH Login ${user} ${password}
SSHLibrary.File Should Exist ${file}
Close Connection
Check Karaf Log File Does Not Have Messages
${conn_id}= Open Connection ${system} prompt=${prompt} timeout=${prompt_timeout}
SSHKeywords.Flexible SSH Login ${user} ${password}
SSHLibrary.File Should Exist ${file}
Close Connection
Check Karaf Log File Does Not Have Messages
[Documentation] Fails if the provided ${message} is found in the karaf.log file. Uses grep to search. The
... karaf.log file can be overridden with ${log_file} to be any file on the given system @ ${ip}
[Documentation] Fails if the provided ${message} is found in the karaf.log file. Uses grep to search. The
... karaf.log file can be overridden with ${log_file} to be any file on the given system @ ${ip}
- ${output}= Run Command On Controller ${ip} grep -c '${message}' ${log_file} user=${user} password=${password} prompt=${prompt}
+ [Arguments] ${ip} ${message} ${user}=${ODL_SYSTEM_USER} ${password}=${ODL_SYSTEM_PASSWORD} ${prompt}=${ODL_SYSTEM_PROMPT} ${log_file}=${WORKSPACE}/${BUNDLEFOLDER}/data/log/karaf.log
+ ${output}= Run Command On Controller
+ ... ${ip}
+ ... grep -c '${message}' ${log_file}
+ ... user=${user}
+ ... password=${password}
+ ... prompt=${prompt}
[Documentation] Will execute any tests to verify the controller is not dead. Some checks are
... Out Of Memory Execptions.
[Documentation] Will execute any tests to verify the controller is not dead. Some checks are
... Out Of Memory Execptions.
Check Karaf Log File Does Not Have Messages ${controller_ip} java.lang.OutOfMemoryError
# TODO: Should Verify Controller * keywords also accept user, password, prompt and karaf_log arguments?
Verify Controller Has No Null Pointer Exceptions
Check Karaf Log File Does Not Have Messages ${controller_ip} java.lang.OutOfMemoryError
# TODO: Should Verify Controller * keywords also accept user, password, prompt and karaf_log arguments?
Verify Controller Has No Null Pointer Exceptions
+Verify Controller Has No Runtime Exceptions
+ [Documentation] Will execute any tests to verify the controller is not having any runtime eceptions.
+ [Arguments] ${controller_ip}=${ODL_SYSTEM_IP}
+ Check Karaf Log File Does Not Have Messages ${controller_ip} java.lang.RuntimeException
+
${epoch_time}= Convert Date ${time} epoch exclude_milles=True date_format=%m/%d/%Y %H:%M:%S
${epoch_time}= Convert To Integer ${epoch_time}
${epoch_time}= Convert Date ${time} epoch exclude_milles=True date_format=%m/%d/%Y %H:%M:%S
${epoch_time}= Convert To Integer ${epoch_time}
[Documentation] Remove the empty space from given string.count is optional,if its given
... that many occurence of space will be removed from left
[Documentation] Remove the empty space from given string.count is optional,if its given
... that many occurence of space will be removed from left
${str1}= Convert to String ${str1}
${str2}= Convert to String ${str2}
${output}= Catenate ${str1} ${str2}
${str1}= Convert to String ${str1}
${str2}= Convert to String ${str2}
${output}= Catenate ${str1} ${str2}
Should Contain ${ALLOWED_STATUS_CODES} ${resp.status_code}
Remove All Elements At URI
[Arguments] ${uri} ${session}=session
Should Contain ${ALLOWED_STATUS_CODES} ${resp.status_code}
Remove All Elements At URI
[Arguments] ${uri} ${session}=session
Should Contain ${ALLOWED_STATUS_CODES} ${resp.status_code}
Remove All Elements At URI And Verify
[Arguments] ${uri} ${session}=session
Should Contain ${ALLOWED_STATUS_CODES} ${resp.status_code}
Remove All Elements At URI And Verify
[Arguments] ${uri} ${session}=session
- ${resp} RequestsLibrary.Get Request ${session} ${uri}
- Should Be Equal As Strings ${resp.status_code} 404
+ ${resp}= RequestsLibrary.Get On Session ${session} url=${uri}
+ Should Contain ${DELETED_STATUS_CODES} ${resp.status_code}
- ${resp} RequestsLibrary.Get Request ${session} ${uri}
- Run Keyword If '${resp.status_code}'!='404' Remove All Elements At URI ${uri} ${session}
+ [Arguments] ${uri} ${session}=session
+ ${resp}= RequestsLibrary.Get On Session ${session} url=${uri}
+ IF '${resp.status_code}'!='404' and '${resp.status_code}'!='409'
+ Remove All Elements At URI ${uri} ${session}
+ END
- ${body} OperatingSystem.Get File ${data_file}
- ${resp} RequestsLibrary.Put Request ${session} ${dest_uri} data=${body} headers=${headers}
+ [Arguments] ${dest_uri} ${data_file} ${headers}=${headers} ${session}=session
+ ${body}= OperatingSystem.Get File ${data_file}
+ ${resp}= RequestsLibrary.Put On Session ${session} ${dest_uri} data=${body} headers=${headers}
Add Elements to URI And Verify ${dest_uri} ${body} ${headers} ${session}
Add Elements To URI And Verify
Add Elements to URI And Verify ${dest_uri} ${body} ${headers} ${session}
Add Elements To URI And Verify
- ${resp} RequestsLibrary.Get Request ${session} ${dest_uri}
- Should Not Be Equal ${resp.status_code} 404
+ ${resp}= RequestsLibrary.Get On Session ${session} url=${dest_uri}
+ Should Not Contain ${DELETED_STATUS_CODES} ${resp.status_code}
- ${body} OperatingSystem.Get File ${data_file}
- ${resp} RequestsLibrary.Put Request ${session} ${dest_uri} data=${body} headers=${headers}
+ ${body}= OperatingSystem.Get File ${data_file}
+ ${resp}= RequestsLibrary.Put On Session ${session} ${dest_uri} data=${body} headers=${headers}
Should Contain ${DATA_VALIDATION_ERROR} ${resp.status_code}
Add Elements To URI From File And Check Server Error
Should Contain ${DATA_VALIDATION_ERROR} ${resp.status_code}
Add Elements To URI From File And Check Server Error
[Documentation] Shorthand for PUTting data from file and expecting status code 500.
... Consider opening a Bug against ODL, as in most test cases, 400 is the http code to expect.
[Documentation] Shorthand for PUTting data from file and expecting status code 500.
... Consider opening a Bug against ODL, as in most test cases, 400 is the http code to expect.
- ${body} OperatingSystem.Get File ${data_file}
- ${resp} RequestsLibrary.Put Request ${session} ${dest_uri} data=${body} headers=${headers}
+ ${body}= OperatingSystem.Get File ${data_file}
+ ${resp}= RequestsLibrary.Put On Session ${session} ${dest_uri} data=${body} headers=${headers}
Should Contain ${INTERNAL_SERVER_ERROR} ${resp.status_code}
Post Elements To URI From File
[Arguments] ${dest_uri} ${data_file} ${headers}=${headers} ${session}=session
Should Contain ${INTERNAL_SERVER_ERROR} ${resp.status_code}
Post Elements To URI From File
[Arguments] ${dest_uri} ${data_file} ${headers}=${headers} ${session}=session
- ${body} OperatingSystem.Get File ${data_file}
- ${resp} RequestsLibrary.Post Request ${session} ${dest_uri} data=${body} headers=${headers}
+ ${body}= OperatingSystem.Get File ${data_file}
+ ${resp}= RequestsLibrary.Post On Session ${session} ${dest_uri} data=${body} headers=${headers}
- [Arguments] ${session} ${uri} ${headers}=${NONE}
- [Documentation] Issue a GET request and return the data obtained or on error log the error and fail.
- ... Issues a GET request for ${uri} in ${session} using headers from
+ [Documentation] Issue a Get On Session and return the data obtained or on error log the error and fail.
+ ... Issues a Get On Session for ${uri} in ${session} using headers from
... ${headers}. If the request returns a HTTP error, fails. Otherwise
... returns the data obtained by the request.
... ${headers}. If the request returns a HTTP error, fails. Otherwise
... returns the data obtained by the request.
- ${response}= RequestsLibrary.Get Request ${session} ${uri} ${headers}
- Builtin.Return_From_Keyword_If ${response.status_code} == 200 ${response.text}
- Builtin.Log ${response.text}
- Builtin.Fail The request failed with code ${response.status_code}
+ [Arguments] ${session} ${uri} ${headers}=${NONE}
+ ${resp}= RequestsLibrary.Get On Session ${session} url=${uri} headers=${headers}
+ IF ${resp.status_code} == 200 RETURN ${resp.text}
+ Builtin.Log ${resp.text}
+ Builtin.Fail The request failed with code ${resp.status_code}
- [Documentation] Issue a GET request and verify a successfull HTTP return.
- ... Issues a GET request for ${uri} in ${session} using headers from ${headers}.
- ${response} = RequestsLibrary.Get Request ${session} ${uri} ${headers}
- Builtin.Log ${response.status_code}
- Should Contain ${ALLOWED_STATUS_CODES} ${response.status_code}
+ ${resp}= RequestsLibrary.Get On Session ${session} url=${uri} headers=${headers}
+ Builtin.Log ${resp.status_code}
+ Should Contain ${ALLOWED_STATUS_CODES} ${resp.status_code}
- [Arguments] ${session} ${uri} ${headers}=${NONE}
- [Documentation] Issue a GET request and return on error 404 (No content) or will fail and log the content.
- ... Issues a GET request for ${uri} in ${session} using headers from
+ [Documentation] Issue a Get On Session and return on error 404 (No content) or will fail and log the content.
+ ... Issues a Get On Session for ${uri} in ${session} using headers from
... ${headers}. If the request returns a HTTP error, fails. Otherwise
... returns the data obtained by the request.
... ${headers}. If the request returns a HTTP error, fails. Otherwise
... returns the data obtained by the request.
- ${response}= RequestsLibrary.Get Request ${session} ${uri} ${headers}
- Builtin.Return_From_Keyword_If ${response.status_code} == 404
- Builtin.Log ${response.text}
- Builtin.Fail The request failed with code ${response.status_code}
+ [Arguments] ${session} ${uri} ${headers}=${NONE}
+ ${resp}= RequestsLibrary.Get On Session ${session} url=${uri} expected_status=any headers=${headers}
+ IF ${resp.status_code} == 404 or ${resp.status_code} == 409 RETURN
+ Builtin.Log ${resp.text}
+ Builtin.Fail The request failed with code ${resp.status_code}
${length}= Get Length ${dictionary_list}
${index}= Set Variable -1
FOR ${i} IN RANGE ${length}
${dictionary}= Get From List ${dictionary_list} ${i}
${length}= Get Length ${dictionary_list}
${index}= Set Variable -1
FOR ${i} IN RANGE ${length}
${dictionary}= Get From List ${dictionary_list} ${i}
[Documentation] Get the name of the suite sanitized to be usable as a part of filename.
... These names are used to constructs names of the log files produced
... by the testing tools so two suites using a tool wont overwrite the
... log files if they happen to run in one job.
[Documentation] Get the name of the suite sanitized to be usable as a part of filename.
... These names are used to constructs names of the log files produced
... by the testing tools so two suites using a tool wont overwrite the
... log files if they happen to run in one job.
${name}= BuiltIn.Evaluate """${SUITE_NAME}""".replace(" ","-").replace("/","-").replace(".","-")
${suffix}= BuiltIn.Set_Variable_If '${testcase}' != '' --${testcase} ${EMPTY}
${name}= BuiltIn.Evaluate """${SUITE_NAME}""".replace(" ","-").replace("/","-").replace(".","-")
${suffix}= BuiltIn.Set_Variable_If '${testcase}' != '' --${testcase} ${EMPTY}
- ${date} = DateTime.Get Current Date
- ${timestamp} = DateTime.Convert Date ${date} epoch
- [Return] ${testtool}--${name}${suffix}.${timestamp}.log
+ ${date}= DateTime.Get Current Date
+ ${timestamp}= DateTime.Convert Date ${date} epoch
+ RETURN ${testtool}--${name}${suffix}.${timestamp}.log
[Documentation] Set a default value for an user configurable variable.
... This keyword is needed if your default value is calculated using
... a complex expression which needs BuiltIn.Evaluate or even more
[Documentation] Set a default value for an user configurable variable.
... This keyword is needed if your default value is calculated using
... a complex expression which needs BuiltIn.Evaluate or even more
... set by another keyword will silently turn the call into a NOP and
... thus is a bug in the suite or resource trying to call this
... keyword.
... set by another keyword will silently turn the call into a NOP and
... thus is a bug in the suite or resource trying to call this
... keyword.
# TODO: Figure out how to make the ${value} evaluation "lazy" (meaning
# evaluating it only when the user did not set anything and thus the
# default is needed). This might be needed to avoid potentially costly
# TODO: Figure out how to make the ${value} evaluation "lazy" (meaning
# evaluating it only when the user did not set anything and thus the
# default is needed). This might be needed to avoid potentially costly
[Documentation] Convert a Robot time string to an integer expressing the time in minutes, rounded up
... This is a wrapper around DateTime.Convert_Time which does not
... provide this functionality directly nor is even able to produce
... an integer directly. It is needed for RestPerfClient which
... cannot accept floats for its --timeout parameter and interprets
... the value supplied in this parameter in minutes.
[Documentation] Convert a Robot time string to an integer expressing the time in minutes, rounded up
... This is a wrapper around DateTime.Convert_Time which does not
... provide this functionality directly nor is even able to produce
... an integer directly. It is needed for RestPerfClient which
... cannot accept floats for its --timeout parameter and interprets
... the value supplied in this parameter in minutes.
${seconds}= DateTime.Convert_Time ${time} result_format=number
${minutes}= BuiltIn.Evaluate int(math.ceil(${seconds}/60.0)) modules=math
${seconds}= DateTime.Convert_Time ${time} result_format=number
${minutes}= BuiltIn.Evaluate int(math.ceil(${seconds}/60.0)) modules=math
BuiltIn.Log cmd: ${cmd}
SSHLibrary.Set Client Configuration timeout=${timeout}
SSHLibrary.Read
SSHLibrary.Write ${cmd}
${output}= SSHLibrary.Read Until Regexp ${regexp}
BuiltIn.Log cmd: ${cmd}
SSHLibrary.Set Client Configuration timeout=${timeout}
SSHLibrary.Read
SSHLibrary.Write ${cmd}
${output}= SSHLibrary.Read Until Regexp ${regexp}
Log Keyword to install package to Mininet Ubuntu VM
Open Connection ${system} prompt=${prompt} timeout=${prompt_timeout}
SSHKeywords.Flexible Mininet Login user=${user} password=${password}
Log Keyword to install package to Mininet Ubuntu VM
Open Connection ${system} prompt=${prompt} timeout=${prompt_timeout}
SSHKeywords.Flexible Mininet Login user=${user} password=${password}
- ${json_plain_string} OperatingSystem.Get file ${json_file}
- ${json_data} Json Parse From String ${json_plain_string}
- [Return] ${json_data}
+ [Arguments] ${json_file}
+ ${json_plain_string}= OperatingSystem.Get file ${json_file}
+ ${json_data}= Json Parse From String ${json_plain_string}
+ RETURN ${json_data}
[Documentation] Wrapper keyword to run iptables with any given ${iptables_rule} string on the remote system given
... by ${remote_system_ip}. The iptables listing will be output before and after the command is run
[Documentation] Wrapper keyword to run iptables with any given ${iptables_rule} string on the remote system given
... by ${remote_system_ip}. The iptables listing will be output before and after the command is run
- ${list_iptables_command} = BuiltIn.Set Variable sudo /sbin/iptables -L -n
- ${output} = Utils.Run Command On Remote System ${remote_system_ip} ${list_iptables_command} ${user} ${password} prompt=${prompt}
+ [Arguments] ${remote_system_ip} ${iptables_rule} ${user}=${ODL_SYSTEM_USER} ${password}=${ODL_SYSTEM_PASSWORD} ${prompt}=${ODL_SYSTEM_PROMPT}
+ ${list_iptables_command}= BuiltIn.Set Variable sudo /sbin/iptables -L -n
+ ${output}= Utils.Run Command On Remote System
+ ... ${remote_system_ip}
+ ... ${list_iptables_command}
+ ... ${user}
+ ... ${password}
+ ... prompt=${prompt}
- Utils.Run Command On Remote System ${remote_system_ip} sudo /sbin/iptables ${iptables_rule} ${user} ${password} prompt=${prompt}
- ${output} = Utils.Run Command On Remote System ${remote_system_ip} ${list_iptables_command} ${user} ${password} prompt=${prompt}
+ Utils.Run Command On Remote System
+ ... ${remote_system_ip}
+ ... sudo /sbin/iptables ${iptables_rule}
+ ... ${user}
+ ... ${password}
+ ... prompt=${prompt}
+ ${output}= Utils.Run Command On Remote System
+ ... ${remote_system_ip}
+ ... ${list_iptables_command}
+ ... ${user}
+ ... ${password}
+ ... prompt=${prompt}
[Documentation] Store current connection index, open new connection to ip_address. Run command to get sysstat results from script,
... which is running on all children nodes. Returns cpu, network, memory usage statistics from the node for each 10 minutes
... that node was running. Used for debug purposes. Returns whole output of sysstat.
[Documentation] Store current connection index, open new connection to ip_address. Run command to get sysstat results from script,
... which is running on all children nodes. Returns cpu, network, memory usage statistics from the node for each 10 minutes
... that node was running. Used for debug purposes. Returns whole output of sysstat.
${current_connection}= SSHLibrary.Get_Connection
SSHKeywords.Open_Connection_To_ODL_System ${ip_address}
SSHLibrary.Write sar -A -f /var/log/sa/sa*
${current_connection}= SSHLibrary.Get_Connection
SSHKeywords.Open_Connection_To_ODL_System ${ip_address}
SSHLibrary.Write sar -A -f /var/log/sa/sa*
[Documentation] GET http://${ip_address}:${RESTCONFPORT}/diagstatus and return the response. ${check_status}
... and ${expected_status_code} can be used to ignore the status code, or validate any status code value.
... By default, this keyword will pass if the status code returned is 200, and fail otherwise.
[Documentation] GET http://${ip_address}:${RESTCONFPORT}/diagstatus and return the response. ${check_status}
... and ${expected_status_code} can be used to ignore the status code, or validate any status code value.
... By default, this keyword will pass if the status code returned is 200, and fail otherwise.
- ${resp} RequestsLibrary.Get Request diagstatus_session /diagstatus
- Run Keyword If "${check_status}" == "True" BuiltIn.Should Be Equal As Strings ${resp.status_code} ${expected_status}
- [Return] ${resp}
+ ${resp}= RequestsLibrary.Get On Session diagstatus_session url=/diagstatus
+ IF "${check_status}" == "True"
+ BuiltIn.Should Be Equal As Strings ${resp.status_code} ${expected_status}
+ END
+ RETURN ${resp}
- Utils.Write Commands Until Expected Prompt wget -O /tmp/${save_file_name} ${url} ${DEFAULT_LINUX_PROMPT_STRICT}
+ Utils.Write Commands Until Expected Prompt
+ ... wget -O /tmp/${save_file_name} ${url}
+ ... ${DEFAULT_LINUX_PROMPT_STRICT}