Move bgp global api to BgpOperations library
[integration/test.git] / csit / libraries / Utils.robot
index dffd25f96f54916ad85ceea927b6d377a13b6815..00991c75b6773ba5495a1aa76f4ee38b195e7ee2 100644 (file)
@@ -42,7 +42,7 @@ Stop Mininet
     Read Until    ${prompt}
     Close Connection
 
-Report_Failure_Due_To_Bug
+Report Failure Due To Bug
     [Arguments]    ${number}    ${include_bug_in_tags}=True
     [Documentation]    Report that a test failed due to a known Bugzilla bug whose
     ...    number is provided as an argument.
@@ -53,12 +53,14 @@ Report_Failure_Due_To_Bug
     ...    into the Robot log file.
     ${test_skipped}=    BuiltIn.Evaluate    len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) > 0    modules=re
     BuiltIn.Return From Keyword If    ('${TEST_STATUS}' != 'FAIL') or ${test_skipped}
-    ${bug_url}=    BuiltIn.Set_Variable    https://bugs.opendaylight.org/show_bug.cgi?id=${number}
+    Comment    Jira tickets are {PROJECT}-{NUMBER} while Bugzilla tickets are {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}
-    BuiltIn.Run_Keyword_If    "${include_bug_in_tags}"=="True"    Set Tags    ${bug_url}
+    BuiltIn.Run Keyword If    "${include_bug_in_tags}"=="True"    Set Tags    ${bug_url}
 
 Report_Failure_And_Point_To_Linked_Bugs
     [Documentation]    Report that a test failed and point to linked Bugzilla bug(s).
@@ -117,12 +119,15 @@ Check For Elements At URI
     \    Should Contain    ${resp.content}    ${i}
 
 Check For Elements Not At URI
-    [Arguments]    ${uri}    ${elements}    ${session}=session    ${pretty_print_json}=False
-    [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
+    [Arguments]    ${uri}    ${elements}    ${session}=session    ${pretty_print_json}=False    ${check_for_null}=False
+    [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
     Should Be Equal As Strings    ${resp.status_code}    200
     : FOR    ${i}    IN    @{elements}
     \    Should Not Contain    ${resp.content}    ${i}
@@ -499,12 +504,23 @@ Convert_To_Minutes
 Write Commands Until Expected Prompt
     [Arguments]    ${cmd}    ${prompt}    ${timeout}=${DEFAULT_TIMEOUT}
     [Documentation]    quick wrapper for Write and Read Until Prompt Keywords to make test cases more readable
+    BuiltIn.Log    cmd: ${cmd}
     SSHLibrary.Set Client Configuration    timeout=${timeout}
     SSHLibrary.Read
     SSHLibrary.Write    ${cmd}
     ${output}=    SSHLibrary.Read Until    ${prompt}
     [Return]    ${output}
 
+Write Commands Until Expected Regexp
+    [Arguments]    ${cmd}    ${regexp}    ${timeout}=${DEFAULT_TIMEOUT}
+    [Documentation]    quick wrapper for Write and Read Until Prompt Keywords to make test cases more readable
+    BuiltIn.Log    cmd: ${cmd}
+    SSHLibrary.Set Client Configuration    timeout=${timeout}
+    SSHLibrary.Read
+    SSHLibrary.Write    ${cmd}
+    ${output}=    SSHLibrary.Read Until Regexp    ${regexp}
+    [Return]    ${output}
+
 Install Package On Ubuntu System
     [Arguments]    ${package_name}    ${system}=${TOOLS_SYSTEM_IP}    ${user}=${TOOLS_SYSTEM_USER}    ${password}=${TOOLS_SYSTEM_PASSWORD}    ${prompt}=${DEFAULT_LINUX_PROMPT}    ${prompt_timeout}=30s
     [Documentation]    Keyword to install packages for testing to Ubuntu Mininet VM
@@ -561,3 +577,9 @@ Check Diagstatus
     ${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}
+
+Download File On Openstack Node
+    [Arguments]    ${conn_id}    ${save_file_name}    ${url}
+    [Documentation]    Download a file from web to the node. the input will be a session ID with established SSH connection.
+    SSHLibrary.Switch Connection    ${conn_id}
+    Utils.Write Commands Until Expected Prompt    wget -O /tmp/${save_file_name} ${url}    ${DEFAULT_LINUX_PROMPT_STRICT}