Step 1: Move vm scripts to the right place
[integration/test.git] / csit / suites / lispflowmapping / basic / 030_RPC_Datatypes.robot
1 *** Settings ***
2 Documentation     Test suite to verify data types using RPCs
3 Suite Setup       Create Session    session    http://${CONTROLLER}:${RESTCONFPORT}    auth=${AUTH}    headers=${HEADERS}
4 Suite Teardown    Delete All Sessions
5 Test Setup        Set Suite Variable    ${CURJSON}    ${EMPTY}
6 Test Template     Check Datatype
7 Test Teardown     Remove Datatype And Check Removal
8 Library           Collections
9 Library           OperatingSystem
10 Library           RequestsLibrary
11 Library           ../../../libraries/Common.py
12 Variables         ../../../variables/Variables.py
13 Resource          ../../../libraries/Utils.robot
14
15 *** Variables ***
16 ${RPC_URL_PREFIX}    /restconf/operations/mappingservice
17 ${IPV4_C_MAP}     ${CURDIR}/../../../variables/lispflowmapping/rpc_add-mapping_ipv4_ipv4.json
18 ${IPV4_RD}        ${CURDIR}/../../../variables/lispflowmapping/rpc_get-remove_ipv4.json
19 ${IPV6_C_MAP}     ${CURDIR}/../../../variables/lispflowmapping/rpc_add-mapping_ipv6_ipv4.json
20 ${IPV6_RD}        ${CURDIR}/../../../variables/lispflowmapping/rpc_get-remove_ipv6.json
21 ${MAC_C_MAP}      ${CURDIR}/../../../variables/lispflowmapping/rpc_add-mapping_mac_ipv4.json
22 ${MAC_RD}         ${CURDIR}/../../../variables/lispflowmapping/rpc_get-remove_mac.json
23 ${DN_C_MAP}       ${CURDIR}/../../../variables/lispflowmapping/rpc_add-mapping_dn_ipv4.json
24 ${DN_RD}          ${CURDIR}/../../../variables/lispflowmapping/rpc_get-remove_dn.json
25 ${AS_C_MAP}       ${CURDIR}/../../../variables/lispflowmapping/rpc_add-mapping_as_ipv4.json
26 ${AS_RD}          ${CURDIR}/../../../variables/lispflowmapping/rpc_get-remove_as.json
27 ${IID_C_MAP}      ${CURDIR}/../../../variables/lispflowmapping/rpc_add-mapping_iid_ipv4.json
28 ${IID_RD}         ${CURDIR}/../../../variables/lispflowmapping/rpc_get-remove_iid.json
29 ${SD_C_MAP}       ${CURDIR}/../../../variables/lispflowmapping/rpc_add-mapping_srcdst_ipv4.json
30 ${SD_RD}          ${CURDIR}/../../../variables/lispflowmapping/rpc_get-remove_srcdst.json
31 ${KV_C_MAP}       ${CURDIR}/../../../variables/lispflowmapping/rpc_add-mapping_kv_ipv4.json
32 ${KV_RD}          ${CURDIR}/../../../variables/lispflowmapping/rpc_get-remove_kv.json
33 ${LST_C_MAP}      ${CURDIR}/../../../variables/lispflowmapping/rpc_add-mapping_ipv4_list.json
34 ${APP_C_MAP}      ${CURDIR}/../../../variables/lispflowmapping/rpc_add-mapping_ipv4_appdata.json
35 ${ELP_C_MAP}      ${CURDIR}/../../../variables/lispflowmapping/rpc_add-mapping_ipv4_elp.json
36
37 *** Test Cases ***
38 IPv4 Prefix
39     [Documentation]    Perform mapping operations with an IPv4 EID
40     ${IPV4_C_MAP}    ${IPV4_RD}
41
42 IPv6 Prefix
43     [Documentation]    Perform mapping operations with an IPv6 EID
44     ${IPV6_C_MAP}    ${IPV6_RD}
45
46 MAC Address
47     [Documentation]    Perform mapping operations with a MAC address EID
48     ${MAC_C_MAP}    ${MAC_RD}
49
50 Distinguished Name
51     [Documentation]    Perform mapping operations with a Distinguished Name EID
52     ${DN_C_MAP}    ${DN_RD}
53
54 AS Number
55     [Documentation]    Perform mapping operations with an Autonomous System Number EID
56     ${AS_C_MAP}    ${AS_RD}
57
58 Instance ID
59     [Documentation]    Perform mapping operations with an IPv4 EID in Instance ID 1
60     ${IID_C_MAP}    ${IID_RD}
61
62 Source/Destination
63     [Documentation]    Perform mapping operations with a Source/Destination EID
64     ${SD_C_MAP}    ${SD_RD}
65
66 Key/Value
67     [Documentation]    Perform mapping operations with a Key/Value EID
68     ${KV_C_MAP}    ${KV_RD}
69
70 AFI List
71     [Documentation]    Perform mapping operations with an IPv4 EID mapped to an AFI List RLOC
72     ${LST_C_MAP}    ${IPV4_RD}
73
74 Application Data
75     [Documentation]    Perform mapping operations with an IPv4 EID mapped to an Application Data RLOC
76     ${APP_C_MAP}    ${IPV4_RD}
77
78 Explicit Locator Path
79     [Documentation]    Perform mapping operations with an IPv4 EID mapped to an ELP RLOC
80     ${ELP_C_MAP}    ${IPV4_RD}
81
82 *** Keywords ***
83 Check Datatype
84     [Arguments]    ${add_mapping_json_file}    ${get_mapping_json_file}
85     [Documentation]    Perform CRD operations using a specific datatype
86     ${add_mapping}=    OperatingSystem.Get File    ${add_mapping_json_file}
87     ${get_mapping}=    OperatingSystem.Get File    ${get_mapping_json_file}
88     Set Suite Variable    ${CURJSON}    ${get_mapping}
89     Post Log Check    ${RPC_URL_PREFIX}:add-mapping    ${add_mapping}
90     Sleep    200ms    Avoid race conditions
91     ${resp}=    Post Log Check    ${RPC_URL_PREFIX}:get-mapping    ${get_mapping}
92     ${output}=    Get From Dictionary    ${resp.json()}    output
93     ${eid_record}=    Get From Dictionary    ${output}    eidToLocatorRecord
94     ${eid_record_0}=    Get From List    ${eid_record}    0
95     Dictionary Should Contain Key    ${eid_record_0}    LocatorRecord
96
97 Remove Datatype And Check Removal
98     Variable Should Exist    ${CURJSON}
99     Post Log Check    ${RPC_URL_PREFIX}:remove-mapping    ${CURJSON}
100     Sleep    200ms    Avoid race conditions
101     ${resp}=    Post Log Check    ${RPC_URL_PREFIX}:get-mapping    ${CURJSON}
102     ${output}=    Get From Dictionary    ${resp.json()}    output
103     ${eid_record}=    Get From Dictionary    ${output}    eidToLocatorRecord
104     ${eid_record_0}=    Get From List    ${eid_record}    0
105     Dictionary Should Not Contain Key    ${eid_record_0}    LocatorRecord
106     Set Suite Variable    ${CURJSON}    ${EMPTY}
107
108 Post Log Check
109     [Arguments]    ${uri}    ${body}    ${status_code}=200
110     [Documentation]    Post body to uri, log response content, and check status
111     ${resp}=    RequestsLibrary.Post    session    ${uri}    ${body}
112     Log    ${resp.content}
113     Should Be Equal As Strings    ${resp.status_code}    ${status_code}
114     [Return]    ${resp}