Change opendaylight to karaf distro
[integration/test.git] / csit / libraries / Utils.robot
index 00991c75b6773ba5495a1aa76f4ee38b195e7ee2..88611e65232b5cf297a5f3a0095aade02eca1091 100644 (file)
@@ -1,7 +1,6 @@
 *** Settings ***
 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
@@ -19,7 +18,7 @@ ${start}          sudo mn --controller=remote,ip=${ODL_SYSTEM_IP} --topo tree,1
 
 *** Keywords ***
 Start Mininet
-    [Arguments]    ${system}=${TOOLS_SYSTEM_IP}    ${user}=${TOOLS_SYSTEM_USER}    ${password}=${TOOLS_SYSTEM_PASSWORD}    ${prompt}=${DEFAULT_LINUX_PROMPT}    ${timeout}=30s
+    [Arguments]    ${system}=${TOOLS_SYSTEM_IP}    ${user}=${TOOLS_SYSTEM_USER}    ${password}=${TOOLS_SYSTEM_PASSWORD}    ${prompt}=${TOOLS_SYSTEM_PROMPT}    ${timeout}=30s
     [Documentation]    Basic setup/cleanup work that can be done safely before any system
     ...    is run.
     Log    Start the test on the base edition
@@ -32,7 +31,7 @@ Start Mininet
     Read Until    mininet>
 
 Stop Mininet
-    [Arguments]    ${prompt}=${DEFAULT_LINUX_PROMPT}
+    [Arguments]    ${prompt}=${TOOLS_SYSTEM_PROMPT}
     [Documentation]    Cleanup/Shutdown work that should be done at the completion of all
     ...    tests
     Log    Stop the test on the base edition
@@ -88,17 +87,17 @@ Check Nodes Stats
     ...    strings are checked for existence.
     ${resp}    RequestsLibrary.Get Request    ${session}    ${OPERATIONAL_NODES_API}/node/${node}
     Should Be Equal As Strings    ${resp.status_code}    200
-    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
 
 Check For Specific Number Of Elements At URI
     [Arguments]    ${uri}    ${element}    ${expected_count}    ${session}=session
     [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}    RequestsLibrary.Get Request    ${session}    ${uri}
-    Log    ${resp.content}
+    Log    ${resp.text}
     Should Be Equal As Strings    ${resp.status_code}    200
-    Should Contain X Times    ${resp.content}    ${element}    ${expected_count}
+    Should Contain X Times    ${resp.text}    ${element}    ${expected_count}
 
 Log Content
     [Arguments]    ${resp_content}
@@ -112,11 +111,12 @@ Check For Elements At URI
     [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}
+    BuiltIn.Run Keyword If    "${pretty_print_json}" == "True"    Log Content    ${resp.text}
+    ...    ELSE    BuiltIn.Log    ${resp.text}
     Should Be Equal As Strings    ${resp.status_code}    200
-    : FOR    ${i}    IN    @{elements}
-    \    Should Contain    ${resp.content}    ${i}
+    FOR    ${i}    IN    @{elements}
+        Should Contain    ${resp.text}    ${i}
+    END
 
 Check For Elements Not At URI
     [Arguments]    ${uri}    ${elements}    ${session}=session    ${pretty_print_json}=False    ${check_for_null}=False
@@ -125,12 +125,13 @@ Check For Elements Not At URI
     ...    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
+    BuiltIn.Run Keyword If    "${pretty_print_json}" == "True"    Log Content    ${resp.text}
+    ...    ELSE    BuiltIn.Log    ${resp.text}
+    BuiltIn.Run Keyword If    "${check_for_null}" == "True"    Builtin.Return From Keyword If    ${resp.status_code} == 404 or ${resp.status_code} == 409
     Should Be Equal As Strings    ${resp.status_code}    200
-    : FOR    ${i}    IN    @{elements}
-    \    Should Not Contain    ${resp.content}    ${i}
+    FOR    ${i}    IN    @{elements}
+        Should Not Contain    ${resp.text}    ${i}
+    END
 
 Clean Mininet System
     [Arguments]    ${system}=${TOOLS_SYSTEM_IP}
@@ -142,16 +143,16 @@ Clean Up Ovs
     [Documentation]    Cleans up the OVS instance and remove any existing common known bridges.
     ${output}=    Run Command On Mininet    ${system}    sudo ovs-vsctl list-br
     Log    ${output}
-    : FOR    ${i}    IN    ${output}
-    \    Run Command On Mininet    ${system}    sudo ovs-vsctl --if-exists del-br ${i}
+    FOR    ${i}    IN    ${output}
+        Run Command On Mininet    ${system}    sudo ovs-vsctl --if-exists del-br ${i}
+    END
     Run Command On Mininet    ${system}    sudo ovs-vsctl del-manager
 
 Extract Value From Content
-    [Arguments]    ${content}    ${index}    ${strip}=nostrip
+    [Arguments]    ${content}    ${index}
     [Documentation]    Will take the given response content and return the value at the given index as a string
-    ${value}=    Get Json Value    ${content}    ${index}
-    ${value}=    Convert To String    ${value}
-    ${value}=    Run Keyword If    '${strip}' == 'strip'    Strip Quotes    ${value}
+    ${JSON} =    Evaluate    json.loads('''${content}''')    json
+    ${value} =    Set Variable    ${JSON${index}}
     [Return]    ${value}
 
 Get Process ID Based On Regex On Remote System
@@ -302,7 +303,7 @@ Post Elements To URI
     [Arguments]    ${rest_uri}    ${data}    ${headers}=${headers}    ${session}=session
     [Documentation]    Perform a POST rest operation, using the URL and data provided
     ${resp} =    RequestsLibrary.Post Request    ${session}    ${rest_uri}    data=${data}    headers=${headers}
-    Log    ${resp.content}
+    Log    ${resp.text}
     Should Contain    ${ALLOWED_STATUS_CODES}    ${resp.status_code}
 
 Remove All Elements At URI
@@ -315,13 +316,13 @@ Remove All Elements At URI And Verify
     ${resp}    RequestsLibrary.Delete Request    ${session}    ${uri}
     Should Contain    ${ALLOWED_STATUS_CODES}    ${resp.status_code}
     ${resp}    RequestsLibrary.Get Request    ${session}    ${uri}
-    Should Be Equal As Strings    ${resp.status_code}    404
+    Should Contain    ${DELETED_STATUS_CODES}    ${resp.status_code}
 
 Remove All Elements If Exist
     [Arguments]    ${uri}    ${session}=session
     [Documentation]    Delete all elements from an URI if the configuration was not empty
     ${resp}    RequestsLibrary.Get Request    ${session}    ${uri}
-    Run Keyword If    '${resp.status_code}'!='404'    Remove All Elements At URI    ${uri}    ${session}
+    Run Keyword If    '${resp.status_code}'!='404' and '${resp.status_code}'!='409'    Remove All Elements At URI    ${uri}    ${session}
 
 Add Elements To URI From File
     [Arguments]    ${dest_uri}    ${data_file}    ${headers}=${headers}    ${session}=session
@@ -342,7 +343,7 @@ Add Elements To URI And Verify
     ${resp}    RequestsLibrary.Put Request    ${session}    ${dest_uri}    ${data}    headers=${headers}
     Should Contain    ${ALLOWED_STATUS_CODES}    ${resp.status_code}
     ${resp}    RequestsLibrary.Get Request    ${session}    ${dest_uri}
-    Should Not Be Equal    ${resp.status_code}    404
+    Should Not Contain    ${DELETED_STATUS_CODES}    ${resp.status_code}
 
 Add Elements To URI From File And Check Validation Error
     [Arguments]    ${dest_uri}    ${data_file}    ${headers}=${headers}    ${session}=session
@@ -382,18 +383,18 @@ Get Data From URI
     ...    Issues a GET request for ${uri} in ${session} using headers from
     ...    ${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}
+    ${resp}=    RequestsLibrary.Get Request    ${session}    ${uri}    ${headers}
+    Builtin.Return_From_Keyword_If    ${resp.status_code} == 200    ${resp.text}
+    Builtin.Log    ${resp.text}
+    Builtin.Fail    The request failed with code ${resp.status_code}
 
 Get URI And Verify
     [Arguments]    ${uri}    ${session}=session    ${headers}=${NONE}
     [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 Request    ${session}    ${uri}    ${headers}
+    Builtin.Log    ${resp.status_code}
+    Should Contain    ${ALLOWED_STATUS_CODES}    ${resp.status_code}
 
 No Content From URI
     [Arguments]    ${session}    ${uri}    ${headers}=${NONE}
@@ -401,33 +402,35 @@ No Content From URI
     ...    Issues a GET request for ${uri} in ${session} using headers from
     ...    ${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}
+    ${resp}=    RequestsLibrary.Get Request    ${session}    ${uri}    ${headers}
+    Builtin.Return_From_Keyword_If    ${resp.status_code} == 404 or ${resp.status_code} == 409
+    Builtin.Log    ${resp.text}
+    Builtin.Fail    The request failed with code ${resp.status_code}
 
 Get Index From List Of Dictionaries
     [Arguments]    ${dictionary_list}    ${key}    ${value}
     [Documentation]    Extract index for the dictionary in a list that contains a key-value pair. Returns -1 if key-value is not found.
     ${length}=    Get Length    ${dictionary_list}
     ${index}=    Set Variable    -1
-    : FOR    ${i}    IN RANGE    ${length}
-    \    ${dictionary}=    Get From List    ${dictionary_list}    ${i}
-    \    Run Keyword If    """&{dictionary}[${key}]""" == """${value}"""    Set Test Variable    ${index}    ${i}
+    FOR    ${i}    IN RANGE    ${length}
+        ${dictionary}=    Get From List    ${dictionary_list}    ${i}
+        Run Keyword If    """${dictionary}[${key}]""" == """${value}"""    Set Test Variable    ${index}    ${i}
+    END
     [Return]    ${index}
 
 Check Item Occurrence
     [Arguments]    ${string}    ${dictionary_item_occurrence}
     [Documentation]    Check string for occurrences of items expressed in a list of dictionaries {item=occurrences}. 0 occurences means item is not present.
-    : FOR    ${item}    IN    @{dictionary_item_occurrence}
-    \    Should Contain X Times    ${string}    ${item}    &{dictionary_item_occurrence}[${item}]
+    FOR    ${item}    IN    @{dictionary_item_occurrence}
+        Should Contain X Times    ${string}    ${item}    ${dictionary_item_occurrence}[${item}]
+    END
 
 Post Log Check
-    [Arguments]    ${uri}    ${body}    ${status_code}=200    ${session}=session
+    [Arguments]    ${uri}    ${body}    ${session}=session    ${status_codes}=200
     [Documentation]    Post body to ${uri}, log response content, and check status
     ${resp}=    RequestsLibrary.Post Request    ${session}    ${uri}    ${body}
-    Log    ${resp.content}
-    Should Be Equal As Strings    ${resp.status_code}    ${status_code}
+    Log    ${resp.text}
+    TemplatedRequests.Check Status Code    ${resp}    ${status_codes}
     [Return]    ${resp}
 
 Get Log File Name