+*** Settings ***
+Documentation Test suite to verify data types using RPCs
+Suite Setup Create Session session http://${CONTROLLER}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS}
+Suite Teardown Delete All Sessions
+Test Setup Set Suite Variable ${CURJSON} ${EMPTY}
+Test Template Check Datatype
+Test Teardown Remove Datatype And Check Removal
+Library Collections
+Library OperatingSystem
+Library RequestsLibrary
+Library ../../../libraries/Common.py
+Variables ../../../variables/Variables.py
+Resource ../../../libraries/Utils.txt
+
+*** Variables ***
+${RPC_URL_PREFIX} /restconf/operations/lfm-mapping-database
+${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
+${IPV6_RD} ${CURDIR}/../../../variables/lispflowmapping/rpc_get-remove_ipv6.json
+${MAC_C_MAP} ${CURDIR}/../../../variables/lispflowmapping/rpc_add-mapping_mac_ipv4.json
+${MAC_RD} ${CURDIR}/../../../variables/lispflowmapping/rpc_get-remove_mac.json
+${DN_C_MAP} ${CURDIR}/../../../variables/lispflowmapping/rpc_add-mapping_dn_ipv4.json
+${DN_RD} ${CURDIR}/../../../variables/lispflowmapping/rpc_get-remove_dn.json
+${AS_C_MAP} ${CURDIR}/../../../variables/lispflowmapping/rpc_add-mapping_as_ipv4.json
+${AS_RD} ${CURDIR}/../../../variables/lispflowmapping/rpc_get-remove_as.json
+${IID_C_MAP} ${CURDIR}/../../../variables/lispflowmapping/rpc_add-mapping_iid_ipv4.json
+${IID_RD} ${CURDIR}/../../../variables/lispflowmapping/rpc_get-remove_iid.json
+${SD_C_MAP} ${CURDIR}/../../../variables/lispflowmapping/rpc_add-mapping_srcdst_ipv4.json
+${SD_RD} ${CURDIR}/../../../variables/lispflowmapping/rpc_get-remove_srcdst.json
+${KV_C_MAP} ${CURDIR}/../../../variables/lispflowmapping/rpc_add-mapping_kv_ipv4.json
+${KV_RD} ${CURDIR}/../../../variables/lispflowmapping/rpc_get-remove_kv.json
+${LST_C_MAP} ${CURDIR}/../../../variables/lispflowmapping/rpc_add-mapping_ipv4_list.json
+${APP_C_MAP} ${CURDIR}/../../../variables/lispflowmapping/rpc_add-mapping_ipv4_appdata.json
+${ELP_C_MAP} ${CURDIR}/../../../variables/lispflowmapping/rpc_add-mapping_ipv4_elp.json
+
+*** Test Cases ***
+IPv4 Prefix
+ [Documentation] Perform mapping operations with an IPv4 EID
+ ${IPV4_C_MAP} ${IPV4_RD}
+
+IPv6 Prefix
+ [Documentation] Perform mapping operations with an IPv6 EID
+ ${IPV6_C_MAP} ${IPV6_RD}
+
+MAC Address
+ [Documentation] Perform mapping operations with a MAC address EID
+ ${MAC_C_MAP} ${MAC_RD}
+
+Distinguished Name
+ [Documentation] Perform mapping operations with a Distinguished Name EID
+ ${DN_C_MAP} ${DN_RD}
+
+AS Number
+ [Documentation] Perform mapping operations with an Autonomous System Number EID
+ ${AS_C_MAP} ${AS_RD}
+
+Instance ID
+ [Documentation] Perform mapping operations with an IPv4 EID in Instance ID 1
+ ${IID_C_MAP} ${IID_RD}
+
+Source/Destination
+ [Documentation] Perform mapping operations with a Source/Destination EID
+ ${SD_C_MAP} ${SD_RD}
+
+Key/Value
+ [Documentation] Perform mapping operations with a Key/Value EID
+ ${KV_C_MAP} ${KV_RD}
+
+AFI List
+ [Documentation] Perform mapping operations with an IPv4 EID mapped to an AFI List RLOC
+ ${LST_C_MAP} ${IPV4_RD}
+
+Application Data
+ [Documentation] Perform mapping operations with an IPv4 EID mapped to an Application Data RLOC
+ ${APP_C_MAP} ${IPV4_RD}
+
+Explicit Locator Path
+ [Documentation] Perform mapping operations with an IPv4 EID mapped to an ELP RLOC
+ ${ELP_C_MAP} ${IPV4_RD}
+
+*** Keywords ***
+Check Datatype
+ [Arguments] ${add_mapping_json_file} ${get_mapping_json_file}
+ [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}
+ ${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
+ 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}
+ ${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}