d1790a675856d3a98d20434d4bb7d6b980989578
[integration/test.git] / csit / suites / l2switch / Loop_Removal_OF13 / 010__loop_of_3.robot
1 *** Settings ***
2 Documentation     Test suite for Ring/Loop topology of size 3
3 Suite Setup       Start Suite
4 Suite Teardown    Utils.Stop Suite
5 Library           RequestsLibrary
6 Resource          ../../../libraries/Utils.robot
7 Variables         ../../../variables/Variables.py
8
9 *** Variables ***
10 ${FORWARD}        "stp-status-aware-node-connector:status":"forwarding"
11 ${DISCARD}        "stp-status-aware-node-connector:status":"discarding"
12
13 *** Test Cases ***
14 Check Stats for node 1
15     [Documentation]    Get the stats for a node
16     Wait Until Keyword Succeeds    10s    2s    Check Nodes Stats    openflow:1
17
18 Check Stats for node 2
19     [Documentation]    Get the stats for a node
20     Wait Until Keyword Succeeds    10s    2s    Check Nodes Stats    openflow:2
21
22 Check Stats for node 3
23     [Documentation]    Get the stats for a node
24     Wait Until Keyword Succeeds    10s    2s    Check Nodes Stats    openflow:3
25
26 Check Ports
27     [Documentation]    Check all ports are present
28     @{list}    Create List    openflow:1:1    openflow:1:2    openflow:1:3    openflow:2:1    openflow:2:2
29     ...    openflow:2:3    openflow:3:1    openflow:3:2    openflow:3:3
30     Wait Until Keyword Succeeds    10s    2s    Check For Elements At URI    ${OPERATIONAL_NODES_API}    ${list}
31
32 Check Ports STP status
33     [Documentation]    Check the stp status of the ports (forwarding/discarding)
34     Wait Until Keyword Succeeds    10s    2s    Check For Specific Number Of Elements At URI    ${OPERATIONAL_NODES_API}    ${FORWARD}    4
35     Wait Until Keyword Succeeds    10s    2s    Check For Specific Number Of Elements At URI    ${OPERATIONAL_NODES_API}    ${DISCARD}    2
36
37 Ping Test
38     [Documentation]    Ping h1 to h2, verify no packet loss or duplicates
39     Write    h1 ping -w 1 h2
40     ${result}    Read Until    mininet>
41     Should Contain    ${result}    1 received, 0% packet loss
42     Should Not Contain    ${result}    duplicates
43
44 Link Down
45     [Documentation]    Take link s1-s2 down and verify ping works
46     [Tags]    exclude
47     Write    link s1 s2 down
48     Read Until    mininet>
49     @{list}    Create List    ${DISCARD}
50     Wait Until Keyword Succeeds    10s    2s    Check For Elements Not At URI    ${OPERATIONAL_NODES_API}    ${list}
51     Write    h1 ping -w 1 h2
52     ${result}    Read Until    mininet>
53     Should Contain    ${result}    received, 0% packet loss
54     Should Not Contain    ${result}    duplicates
55
56 Link Up
57     [Documentation]    Take link s1-s2 up and verify ping works
58     [Tags]    exclude
59     Write    link s1 s2 up
60     Read Until    mininet>
61     Wait Until Keyword Succeeds    10s    2s    Check For Specific Number Of Elements At URI    ${OPERATIONAL_NODES_API}    ${FORWARD}    4
62     Wait Until Keyword Succeeds    10s    2s    Check For Specific Number Of Elements At URI    ${OPERATIONAL_NODES_API}    ${DISCARD}    2
63     Write    h1 ping -w 1 h2
64     ${result}    Read Until    mininet>
65     Should Contain    ${result}    received, 0% packet loss
66     Should Not Contain    ${result}    duplicates
67
68 Remove Port
69     [Documentation]    Remove port s1-eth2 and verify ping works
70     Write    sh ovs-vsctl del-port s1 s1-eth2
71     Read Until    mininet>
72     @{list}    Create List    ${DISCARD}
73     Wait Until Keyword Succeeds    10s    2s    Check For Elements Not At URI    ${OPERATIONAL_NODES_API}    ${list}
74     Write    h1 ping -w 1 h2
75     ${result}    Read Until    mininet>
76     Should Contain    ${result}    64 bytes from 10.0.0.2
77     Should Not Contain    ${result}    duplicates
78
79 Add Port
80     [Documentation]    Add port s1-eth2 and verify ping works
81     Write    sh ovs-vsctl add-port s1 s1-eth2 -- set interface s1-eth2 ofport=2
82     Read Until    mininet>
83     Wait Until Keyword Succeeds    10s    2s    Check For Specific Number Of Elements At URI    ${OPERATIONAL_NODES_API}    ${FORWARD}    4
84     Wait Until Keyword Succeeds    10s    2s    Check For Specific Number Of Elements At URI    ${OPERATIONAL_NODES_API}    ${DISCARD}    2
85     Sleep    1
86     Write    h1 ping -w 1 h2
87     ${result}    Read Until    mininet>
88     Should Contain    ${result}    64 bytes from 10.0.0.2
89     Should Not Contain    ${result}    duplicates
90
91 *** Keywords ***
92 Start Suite
93     [Documentation]    Open controller session & mininet connection and start mininet custom topo
94     Create Session    session    http://${ODL_SYSTEM_IP}:${RESTCONFPORT}    auth=${AUTH}    headers=${HEADERS_XML}
95     ${start}=    Set Variable    sudo mn --controller=remote,ip=${ODL_SYSTEM_IP} --custom customtopo.py --topo ring --switch ovsk,protocols=OpenFlow13
96     ${mininet_conn_id}=    Open Connection    ${TOOLS_SYSTEM_IP}    prompt=${DEFAULT_LINUX_PROMPT}    timeout=30s
97     Set Suite Variable    ${mininet_conn_id}
98     Login With Public Key    ${TOOLS_SYSTEM_USER}    ${USER_HOME}/.ssh/${SSH_KEY}    any
99     Put File    ${CURDIR}/../topologies/customtopo.py
100     Execute Command    sudo ovs-vsctl set-manager ptcp:6644
101     Execute Command    sudo mn -c
102     Write    ${start}
103     Read Until    mininet>