From 15c82276d2f3f10be7aca103f9815194c0b92f57 Mon Sep 17 00:00:00 2001 From: Lorand Jakab Date: Tue, 29 Sep 2015 22:44:58 +0300 Subject: [PATCH] Fix failing LISP tests due to implementation changes When returning a mapping on the RESTCONF interface, the mapping service crafted the same object as the one sent on the southbound, according to the LISP protocol (which is a Map-Reply with no locator records, action bit: forward native). However, getting a reply on the northbound with HTTP code 200 when actually there is no mapping in the database is confusing, and not what a NB user would expect. The behavior of the mapping service was changed in Beryllium to return HTTP 404 when no mapping is present. This commit accounts for the above change, and additionally factors out common variables and keywords into Variables.py and a new LISP resource respectively. Change-Id: Ia7c8fd2adb2408f2b1c17865bf5512307dc1e635 Signed-off-by: Lorand Jakab --- csit/libraries/LISPFlowMapping.robot | 35 ++++++++++++ .../lispflowmapping/basic/020_RPC_CRUD.robot | 55 ++++++------------- .../basic/030_RPC_Datatypes.robot | 32 ++++------- csit/variables/Variables.py | 4 ++ 4 files changed, 67 insertions(+), 59 deletions(-) create mode 100644 csit/libraries/LISPFlowMapping.robot diff --git a/csit/libraries/LISPFlowMapping.robot b/csit/libraries/LISPFlowMapping.robot new file mode 100644 index 0000000000..0e60e2454b --- /dev/null +++ b/csit/libraries/LISPFlowMapping.robot @@ -0,0 +1,35 @@ +*** Settings *** +Documentation This resource file defines keywords that are used in more +... than one lispflowmapping test suite. Those suites include +... ../variables/Variables.py, which is where some of the +... variables are coming from. + +*** Variables *** +${ODL_VERSION} Be + +*** Keywords *** +Check Mapping Removal + [Arguments] ${json} + Run Keyword If "${ODL_VERSION}" == "Li" Check Mapping Removal Lithium ${json} ELSE + ... Post Log Check ${LFM_RPC_API}:get-mapping ${json} 404 + +Check Mapping Removal Lithium + [Arguments] ${json} + ${resp}= Post Log Check ${LFM_RPC_API}:get-mapping ${json} + ${output}= Get From Dictionary ${resp.json()} output + ${eid_record}= Get From Dictionary ${output} eidToLocatorRecord + ${eid_record_0}= Get From List ${eid_record} 0 + ${action}= Get From Dictionary ${eid_record_0} action + Should Be Equal As Strings ${action} NativelyForward + +Post Log Check + [Arguments] ${uri} ${body} ${status_code}=200 + [Documentation] Post body to uri, log response content, and check status + ${resp}= RequestsLibrary.Post session ${uri} ${body} + Log ${resp.content} + Should Be Equal As Strings ${resp.status_code} ${status_code} + [Return] ${resp} + +Create Session And Set External Variables + Create Session session http://${CONTROLLER}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS} + Run Keyword If "${ODL_VERSION}" == "Li" Set Suite Variable ${LFM_RPC_API} ${LFM_RPC_API_LI} diff --git a/csit/suites/lispflowmapping/basic/020_RPC_CRUD.robot b/csit/suites/lispflowmapping/basic/020_RPC_CRUD.robot index a97e72a1da..5731c48f5b 100644 --- a/csit/suites/lispflowmapping/basic/020_RPC_CRUD.robot +++ b/csit/suites/lispflowmapping/basic/020_RPC_CRUD.robot @@ -1,16 +1,16 @@ *** Settings *** Documentation Test suite to verify CRUD operations using RPCs -Suite Setup Create Session session http://${CONTROLLER}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS} +Suite Setup Create Session And Set External Variables Suite Teardown Delete All Sessions Library Collections Library OperatingSystem Library RequestsLibrary Library ../../../libraries/Common.py Variables ../../../variables/Variables.py +Resource ../../../libraries/LISPFlowMapping.robot Resource ../../../libraries/Utils.robot *** Variables *** -${RPC_URL_PREFIX} /restconf/operations/mappingservice ${IPV4_C_KEY} ${CURDIR}/../../../variables/lispflowmapping/rpc_add-key_ipv4.json ${IPV4_RD} ${CURDIR}/../../../variables/lispflowmapping/rpc_get-remove_ipv4.json ${MISS_RD} ${CURDIR}/../../../variables/lispflowmapping/rpc_get-remove_missing.json @@ -22,22 +22,22 @@ ${IPV4_U_MAP} ${CURDIR}/../../../variables/lispflowmapping/rpc_update-mappin Create Key [Documentation] Create a key for an IPv4 EID ${add_key}= OperatingSystem.Get File ${IPV4_C_KEY} - Post Log Check ${RPC_URL_PREFIX}:add-key ${add_key} + Post Log Check ${LFM_RPC_API}:add-key ${add_key} Attempt To Create Key Again [Documentation] Try to overwrite existing IPv4 EID key ${add_key}= OperatingSystem.Get File ${IPV4_C_KEY} - Post Log Check ${RPC_URL_PREFIX}:add-key ${add_key} 409 + Post Log Check ${LFM_RPC_API}:add-key ${add_key} 409 Attempt To Read Non-Existing Key [Documentation] Try to read a non-existing key for an IPv4 EID ${get_key}= OperatingSystem.Get File ${MISS_RD} - Post Log Check ${RPC_URL_PREFIX}:get-key ${get_key} 404 + Post Log Check ${LFM_RPC_API}:get-key ${get_key} 404 Read Key [Documentation] Read an existing key for an IPv4 EID ${get_key}= OperatingSystem.Get File ${IPV4_RD} - ${resp}= Post Log Check ${RPC_URL_PREFIX}:get-key ${get_key} + ${resp}= Post Log Check ${LFM_RPC_API}:get-key ${get_key} ${output}= Get From Dictionary ${resp.json()} output ${password}= Get From Dictionary ${output} authkey Should Be Equal As Strings ${password} password @@ -45,12 +45,12 @@ Read Key Update Key [Documentation] Update an existing key for an IPv4 EID ${update_key}= OperatingSystem.Get File ${IPV4_U_KEY} - Post Log Check ${RPC_URL_PREFIX}:update-key ${update_key} + Post Log Check ${LFM_RPC_API}:update-key ${update_key} Read Updated Key [Documentation] Read the key updated in the previous test ${get_key}= OperatingSystem.Get File ${IPV4_RD} - ${resp}= Post Log Check ${RPC_URL_PREFIX}:get-key ${get_key} + ${resp}= Post Log Check ${LFM_RPC_API}:get-key ${get_key} ${output}= Get From Dictionary ${resp.json()} output ${password}= Get From Dictionary ${output} authkey Should Be Equal As Strings ${password} updated-password @@ -58,37 +58,32 @@ Read Updated Key Delete Key [Documentation] Delete an existing key for an IPv4 EID ${remove_key}= OperatingSystem.Get File ${IPV4_RD} - Post Log Check ${RPC_URL_PREFIX}:remove-key ${remove_key} + Post Log Check ${LFM_RPC_API}:remove-key ${remove_key} Attempt To Read Deleted Key [Documentation] Try to read the key deleted in the previous test ${get_key}= OperatingSystem.Get File ${IPV4_RD} - Post Log Check ${RPC_URL_PREFIX}:get-key ${get_key} 404 + Post Log Check ${LFM_RPC_API}:get-key ${get_key} 404 Attempt To Update Non-Existing Key [Documentation] Update a non-existing key for an IPv4 EID ${update_key}= OperatingSystem.Get File ${IPV4_U_KEY} - Post Log Check ${RPC_URL_PREFIX}:update-key ${update_key} 404 + Post Log Check ${LFM_RPC_API}:update-key ${update_key} 404 Create Mapping [Documentation] Create a mapping for an IPv4 EID ${add_mapping}= OperatingSystem.Get File ${IPV4_C_MAP} - Post Log Check ${RPC_URL_PREFIX}:add-mapping ${add_mapping} + Post Log Check ${LFM_RPC_API}:add-mapping ${add_mapping} Attempt To Read Non-Existing Mapping [Documentation] Try to read a non-existing mapping for an IPv4 EID ${get_mapping}= OperatingSystem.Get File ${MISS_RD} - ${resp}= Post Log Check ${RPC_URL_PREFIX}:get-mapping ${get_mapping} - ${output}= Get From Dictionary ${resp.json()} output - ${eid_record}= Get From Dictionary ${output} eidToLocatorRecord - ${eid_record_0}= Get From List ${eid_record} 0 - ${action}= Get From Dictionary ${eid_record_0} action - Should Be Equal As Strings ${action} NativelyForward + Check Mapping Removal ${get_mapping} Read Mapping [Documentation] Read an existing mapping for an IPv4 EID ${get_mapping}= OperatingSystem.Get File ${IPV4_RD} - ${resp}= Post Log Check ${RPC_URL_PREFIX}:get-mapping ${get_mapping} + ${resp}= Post Log Check ${LFM_RPC_API}:get-mapping ${get_mapping} ${output}= Get From Dictionary ${resp.json()} output ${eid_record}= Get From Dictionary ${output} eidToLocatorRecord ${eid_record_0}= Get From List ${eid_record} 0 @@ -102,12 +97,12 @@ Read Mapping Update Mapping [Documentation] Update an existing mapping for an IPv4 EID ${update_mapping}= OperatingSystem.Get File ${IPV4_U_MAP} - Post Log Check ${RPC_URL_PREFIX}:update-mapping ${update_mapping} + Post Log Check ${LFM_RPC_API}:update-mapping ${update_mapping} Read Updated Mapping [Documentation] Read the mapping updated in the previous test ${get_mapping}= OperatingSystem.Get File ${IPV4_RD} - ${resp}= Post Log Check ${RPC_URL_PREFIX}:get-mapping ${get_mapping} + ${resp}= Post Log Check ${LFM_RPC_API}:get-mapping ${get_mapping} ${output}= Get From Dictionary ${resp.json()} output ${eid_record}= Get From Dictionary ${output} eidToLocatorRecord ${eid_record_0}= Get From List ${eid_record} 0 @@ -121,24 +116,10 @@ Read Updated Mapping Delete Mapping [Documentation] Delete an existing mapping for an IPv4 EID ${remove_mapping}= OperatingSystem.Get File ${IPV4_RD} - Post Log Check ${RPC_URL_PREFIX}:remove-mapping ${remove_mapping} + Post Log Check ${LFM_RPC_API}:remove-mapping ${remove_mapping} Attempt To Read Deleted Mapping [Documentation] Try to read the mapping deleted in the previous test Sleep 200ms Avoid race conditions ${get_mapping}= OperatingSystem.Get File ${IPV4_RD} - ${resp}= Post Log Check ${RPC_URL_PREFIX}:get-mapping ${get_mapping} - ${output}= Get From Dictionary ${resp.json()} output - ${eid_record}= Get From Dictionary ${output} eidToLocatorRecord - ${eid_record_0}= Get From List ${eid_record} 0 - ${action}= Get From Dictionary ${eid_record_0} action - Should Be Equal As Strings ${action} NativelyForward - -*** Keywords *** -Post Log Check - [Arguments] ${uri} ${body} ${status_code}=200 - [Documentation] Post body to uri, log response content, and check status - ${resp}= RequestsLibrary.Post session ${uri} ${body} - Log ${resp.content} - Should Be Equal As Strings ${resp.status_code} ${status_code} - [Return] ${resp} + Check Mapping Removal ${get_mapping} diff --git a/csit/suites/lispflowmapping/basic/030_RPC_Datatypes.robot b/csit/suites/lispflowmapping/basic/030_RPC_Datatypes.robot index 8b7dc463f1..3c8f367016 100644 --- a/csit/suites/lispflowmapping/basic/030_RPC_Datatypes.robot +++ b/csit/suites/lispflowmapping/basic/030_RPC_Datatypes.robot @@ -1,8 +1,8 @@ *** Settings *** Documentation Test suite to verify data types using RPCs -Suite Setup Create Session session http://${CONTROLLER}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS} +Suite Setup Create Session And Set External Variables Suite Teardown Delete All Sessions -Test Setup Set Suite Variable ${CURJSON} ${EMPTY} +Test Setup Set Suite Variable ${RPC_Datatype__current_json} ${EMPTY} Test Template Check Datatype Test Teardown Remove Datatype And Check Removal Library Collections @@ -10,10 +10,10 @@ Library OperatingSystem Library RequestsLibrary Library ../../../libraries/Common.py Variables ../../../variables/Variables.py +Resource ../../../libraries/LISPFlowMapping.robot Resource ../../../libraries/Utils.robot *** Variables *** -${RPC_URL_PREFIX} /restconf/operations/mappingservice ${IPV4_C_MAP} ${CURDIR}/../../../variables/lispflowmapping/rpc_add-mapping_ipv4_ipv4.json ${IPV4_RD} ${CURDIR}/../../../variables/lispflowmapping/rpc_get-remove_ipv4.json ${IPV6_C_MAP} ${CURDIR}/../../../variables/lispflowmapping/rpc_add-mapping_ipv6_ipv4.json @@ -85,30 +85,18 @@ Check Datatype [Documentation] Perform CRD operations using a specific datatype ${add_mapping}= OperatingSystem.Get File ${add_mapping_json_file} ${get_mapping}= OperatingSystem.Get File ${get_mapping_json_file} - Set Suite Variable ${CURJSON} ${get_mapping} - Post Log Check ${RPC_URL_PREFIX}:add-mapping ${add_mapping} + Set Suite Variable ${RPC_Datatype__current_json} ${get_mapping} + Post Log Check ${LFM_RPC_API}:add-mapping ${add_mapping} Sleep 200ms Avoid race conditions - ${resp}= Post Log Check ${RPC_URL_PREFIX}:get-mapping ${get_mapping} + ${resp}= Post Log Check ${LFM_RPC_API}:get-mapping ${get_mapping} ${output}= Get From Dictionary ${resp.json()} output ${eid_record}= Get From Dictionary ${output} eidToLocatorRecord ${eid_record_0}= Get From List ${eid_record} 0 Dictionary Should Contain Key ${eid_record_0} LocatorRecord Remove Datatype And Check Removal - Variable Should Exist ${CURJSON} - Post Log Check ${RPC_URL_PREFIX}:remove-mapping ${CURJSON} + Variable Should Exist ${RPC_Datatype__current_json} + Post Log Check ${LFM_RPC_API}:remove-mapping ${RPC_Datatype__current_json} Sleep 200ms Avoid race conditions - ${resp}= Post Log Check ${RPC_URL_PREFIX}:get-mapping ${CURJSON} - ${output}= Get From Dictionary ${resp.json()} output - ${eid_record}= Get From Dictionary ${output} eidToLocatorRecord - ${eid_record_0}= Get From List ${eid_record} 0 - Dictionary Should Not Contain Key ${eid_record_0} LocatorRecord - Set Suite Variable ${CURJSON} ${EMPTY} - -Post Log Check - [Arguments] ${uri} ${body} ${status_code}=200 - [Documentation] Post body to uri, log response content, and check status - ${resp}= RequestsLibrary.Post session ${uri} ${body} - Log ${resp.content} - Should Be Equal As Strings ${resp.status_code} ${status_code} - [Return] ${resp} + Check Mapping Removal ${RPC_Datatype__current_json} + Set Suite Variable ${RPC_Datatype__current_json} ${EMPTY} diff --git a/csit/variables/Variables.py b/csit/variables/Variables.py index 5343572b03..bc52738512 100644 --- a/csit/variables/Variables.py +++ b/csit/variables/Variables.py @@ -130,3 +130,7 @@ GBP_REGEP_API = "/restconf/operations/endpoint:register-endpoint" GBP_UNREGEP_API = "/restconf/operations/endpoint:unregister-endpoint" GBP_TENANTS_API = "/restconf/config/policy:tenants" GBP_TUNNELS_API = "/restconf/config/opendaylight-inventory:nodes" + +# LISP Flow Mapping variables +LFM_RPC_API = "/restconf/operations/mappingservice" +LFM_RPC_API_LI = "/restconf/operations/lfm-mapping-database" -- 2.36.6