929517230105850fb32d47105b503814487152a2
[integration.git] / test / csit / libraries / VtnMaKeywords.robot
1 *** Settings ***
2 Library           SSHLibrary
3 Library           String
4 Library           DateTime
5 Library           Collections
6 Library           json
7 Library           RequestsLibrary
8 Variables         ../variables/Variables.py
9 Resource          ./Utils.robot
10
11 *** Variables ***
12 ${REST_CONTEXT_VTNS}    controller/nb/v2/vtn/default/vtns
13 ${VERSION_VTN}          controller/nb/v2/vtn/version
14 ${VTN_INVENTORY}        restconf/operational/vtn-inventory:vtn-nodes
15 ${DUMPFLOWS}    dpctl dump-flows -O OpenFlow13
16 ${index}    7
17 *** Keywords ***
18 Start SuiteVtnMa
19     [Documentation]  Start VTN Manager Init Test Suite
20     Create Session    session    http://${CONTROLLER}:${RESTPORT}    auth=${AUTH}    headers=${HEADERS}
21     BuiltIn.Wait_Until_Keyword_Succeeds    30    3     Fetch vtn list
22     Start Suite
23
24 Stop SuiteVtnMa
25     [Documentation]  Stop VTN Manager Test Suite
26     Delete All Sessions
27     Stop Suite
28
29 Start SuiteVtnMaTest
30     [Documentation]  Start VTN Manager Test Suite
31     Create Session    session    http://${CONTROLLER}:${RESTPORT}    auth=${AUTH}    headers=${HEADERS}
32
33 Stop SuiteVtnMaTest
34     [Documentation]  Stop VTN Manager Test Suite
35     Delete All Sessions
36
37 Fetch vtn list
38     [Documentation]    Check if VTN Manager is up.
39     ${resp}=    RequestsLibrary.Get    session    ${REST_CONTEXT_VTNS}
40     Should Be Equal As Strings    ${resp.status_code}    200
41
42 Fetch vtn switch inventory
43     [Arguments]    ${sw_name}
44     [Documentation]    Check if Switch is detected.
45     ${resp}=    RequestsLibrary.Get    session    ${VTN_INVENTORY}/vtn-inventory:vtn-node/${sw_name}
46     Should Be Equal As Strings    ${resp.status_code}    200
47
48 Add a vtn
49     [Arguments]    ${vtn_name}    ${vtn_data}
50     [Documentation]    Create a vtn with specified parameters.
51     ${resp}=    RequestsLibrary.Post    session    ${REST_CONTEXT_VTNS}/${vtn_name}    data=${vtn_data}
52     Should Be Equal As Strings    ${resp.status_code}    201
53
54 Delete a vtn
55     [Arguments]    ${vtn_name}
56     [Documentation]    Create a vtn with specified parameters.
57     ${resp}=    RequestsLibrary.Delete    session    ${REST_CONTEXT_VTNS}/${vtn_name}
58     Should Be Equal As Strings    ${resp.status_code}    200
59
60 Add a vBridge
61     [Arguments]    ${vtn_name}    ${vBridge_name}    ${vBridge_data}
62     [Documentation]    Create a vBridge in a VTN
63     ${resp}=    RequestsLibrary.Post    session    ${REST_CONTEXT_VTNS}/${vtn_name}/vbridges/${vBridge_name}    data=${vBridge_data}
64     Should Be Equal As Strings    ${resp.status_code}    201
65
66 Add a interface
67     [Arguments]    ${vtn_name}    ${vBridge_name}    ${interface_name}    ${interface_data}
68     [Documentation]    Create a interface into a vBridge of a VTN
69     ${resp}=    RequestsLibrary.Post    session    ${REST_CONTEXT_VTNS}/${vtn_name}/vbridges/${vBridge_name}/interfaces/${interface_name}    data=${interface_data}
70     Should Be Equal As Strings    ${resp.status_code}    201
71
72 Add a portmap
73     [Arguments]    ${vtn_name}    ${vBridge_name}    ${interface_name}    ${portmap_data}
74     [Documentation]    Create a portmap for a interface of a vbridge
75     ${json_data}=   json.dumps    ${portmap_data}
76     ${resp}=    RequestsLibrary.Put    session    ${REST_CONTEXT_VTNS}/${vtn_name}/vbridges/${vBridge_name}/interfaces/${interface_name}/portmap    data=${json_data}    headers=${HEADERS}
77     Should Be Equal As Strings    ${resp.status_code}    200
78
79 Mininet Ping Should Succeed
80     [Arguments]     ${host1}     ${host2}
81     Write    ${host1} ping -c 10 ${host2}
82     ${result}    Read Until    mininet>
83     Should Contain    ${result}    64 bytes
84
85 Mininet Ping Should Not Succeed
86     [Arguments]    ${host1}    ${host2}
87     Write    ${host1} ping -c 10 ${host2}
88     ${result}    Read Until    mininet>
89     Should Not Contain    ${result}    64 bytes
90
91 Delete a interface
92     [Arguments]    ${vtn_name}    ${vBridge_name}    ${interface_name}
93     [Documentation]    Delete a interface with specified parameters.
94     ${resp}=    RequestsLibrary.Delete    session    ${REST_CONTEXT_VTNS}/${vtn_name}/vbridges/${vBridge_name}/interfaces/${interface_name}
95     Should Be Equal As Strings    ${resp.status_code}    200
96
97
98 Get flow
99     [Arguments]    ${vtn_name}
100     [Documentation]    Get data flow.
101     ${resp}=    RequestsLibrary.Get   session    ${REST_CONTEXT_VTNS}/${vtn_name}/flows/detail
102     Should Be Equal As Strings    ${resp.status_code}    200
103
104 Remove a portmap
105     [Arguments]    ${vtn_name}    ${vBridge_name}    ${interface_name}    ${portmap_data}
106     [Documentation]    Remove a portmap for a interface of a vbridge
107     ${json_data}=   json.dumps    ${portmap_data}
108     ${resp}=    RequestsLibrary.Delete    session    ${REST_CONTEXT_VTNS}/${vtn_name}/vbridges/${vBridge_name}/interfaces/${interface_name}/portmap    data=${json_data}    headers=${HEADERS}
109     Should Be Equal As Strings    ${resp.status_code}    200
110
111 Verify FlowMacAddress
112     [Arguments]    ${host1}    ${host2}
113     ${booleanValue}=    Run Keyword And Return Status    Verify macaddress    ${host1}    ${host2}
114     Should Be Equal As Strings    ${booleanValue}    True
115
116 Verify RemovedFlowMacAddress
117     [Arguments]    ${host1}    ${host2}
118     ${booleanValue}=    Run Keyword And Return Status    Verify macaddress    ${host1}    ${host2}
119     Should Not Be Equal As Strings    ${booleanValue}    True
120
121 Verify macaddress
122     [Arguments]    ${host1}    ${host2}
123     write    ${host1} ifconfig -a | grep HWaddr
124     ${sourcemacaddr}    Read Until    mininet>
125
126     ${macaddress}=    Split String    ${sourcemacaddr}    ${SPACE}
127
128     ${sourcemacaddr}=    Get from List    ${macaddress}    ${index}
129     ${sourcemacaddress}=    Convert To Lowercase    ${sourcemacaddr}
130
131     write    ${host2} ifconfig -a | grep HWaddr
132     ${destmacaddr}    Read Until    mininet>
133
134     ${macaddress}=    Split String    ${destmacaddr}    ${SPACE}
135     ${destmacaddr}=    Get from List    ${macaddress}    ${index}
136
137     ${destmacaddress}=    Convert To Lowercase    ${destmacaddr}
138
139     write    ${DUMPFLOWS}
140     ${result}    Read Until    mininet>
141     Should Contain    ${result}    ${sourcemacaddress}
142     Should Contain    ${result}    ${destmacaddress}