9ee9157c892c3002f0b9013f954f907a9277b5c6
[integration/test.git] / csit / libraries / SxpLib.robot
1 *** Settings ***
2 Documentation     Library containing Keywords used for SXP testing
3 Library           RequestsLibrary
4 Library           SSHLibrary
5 Library           String
6 Library           ./Sxp.py
7 Resource          KarafKeywords.robot
8 Variables         ../variables/Variables.py
9
10 *** Variables ***
11 ${REST_CONTEXT}    /restconf/operations/sxp-controller
12
13 *** Keywords ***
14 Add Connection
15     [Arguments]    ${version}    ${mode}    ${ip}    ${port}   ${node}=127.0.0.1    ${password}=none    ${session}=session
16     [Documentation]    Add connection via RCP to node
17     ${DATA}    Add Connection Xml   ${version}    ${mode}    ${ip}    ${port}   ${node}     ${password}
18     ${resp}    RequestsLibrary.Post    ${session}    ${REST_CONTEXT}:add-connection    data=${DATA}    headers=${HEADERS_XML}
19     Should be Equal As Strings    ${resp.status_code}    200
20
21 Get Connections
22     [Arguments]   ${node}=127.0.0.1    ${session}=session
23     [Documentation]    Gets all connections vie RPC from node
24     ${DATA}    Get Connections From Node Xml   ${node}
25     ${resp}    RequestsLibrary.Post    ${session}    ${REST_CONTEXT}:get-connections    data=${DATA}    headers=${HEADERS_XML}
26     Should be Equal As Strings    ${resp.status_code}    200
27     [Return]    ${resp.content}
28
29 Delete Connections
30     [Arguments]    ${ip}    ${port}      ${node}=127.0.0.1     ${session}=session
31     [Documentation]    Delete connection via RPC from node
32     ${DATA}    Delete Connections Xml       ${ip}    ${port}    ${node}
33     ${resp}    RequestsLibrary.Post    ${session}    ${REST_CONTEXT}:delete-connection    data=${DATA}    headers=${HEADERS_XML}
34     Should be Equal As Strings    ${resp.status_code}    200
35
36 Clean Connections
37     [Arguments]     ${node}=127.0.0.1    ${session}=session
38     [Documentation]     Delete all connections via RPC from node
39     ${resp}     Get Connections     ${node}    ${session}
40     @{connections}  Parse Connections   ${resp}
41     :FOR    ${connection}   IN  @{connections}
42     \   delete connections  ${connection['peer-address']}   ${connection['tcp-port']}   ${node}    ${session}
43
44 Add Binding
45     [Arguments]    ${sgt}    ${prefix}      ${node}=127.0.0.1      ${session}=session
46     [Documentation]    Add binding via RPC to Master DB of node
47     ${DATA}    Add Entry Xml    ${sgt}    ${prefix}     ${node}
48     ${resp}    RequestsLibrary.Post    ${session}    ${REST_CONTEXT}:add-entry    data=${DATA}    headers=${HEADERS_XML}
49     Should be Equal As Strings    ${resp.status_code}    200
50
51 Get Bindings
52     [Arguments]       ${node}=127.0.0.1    ${session}=session
53     [Documentation]    Gets all binding via RPC from Master DB of node
54     ${DATA}    Get Bindings From Node Xml   ${node}
55     ${resp}    RequestsLibrary.Post    ${session}    ${REST_CONTEXT}:get-node-bindings    data=${DATA}    headers=${HEADERS_XML}
56     Should be Equal As Strings    ${resp.status_code}    200
57     [Return]    ${resp.content}
58
59 Clean Bindings
60     [Arguments]       ${node}=127.0.0.1    ${session}=session
61     [Documentation]    Delete all bindings via RPC from Master DB of node
62     ${resp}     Get Bindings Master Database    ${node}    ${session}
63     @{prefixes}     Parse Prefix Groups  ${resp}    local
64     :FOR    ${prefix}  IN  @{prefixes}
65     \       Clean Binding   ${prefix}       ${prefix['binding']}    ${node}    ${session}
66
67 Clean Binding
68     [Documentation]     Used for nester FOR loop
69     [Arguments]     ${prefix}       ${bindings}     ${node}    ${session}
70     :FOR    ${binding}  IN  @{bindings}
71     \   Delete Binding  ${prefix['sgt']}     ${binding['ip-prefix']}     ${node}    ${session}
72
73 Get Bindings Master Database
74     [Arguments]     ${node}=127.0.0.1    ${session}=session
75     [Documentation]     Gets content of Master DB from node
76     ${resp}    RequestsLibrary.Get    ${session}    /restconf/operational/network-topology:network-topology/topology/sxp/node/${node}/master-database/    headers=${HEADERS_XML}
77     Should be Equal As Strings    ${resp.status_code}    200
78     [Return]    ${resp.content}
79
80 Update Binding
81     [Arguments]    ${sgtOld}    ${prefixOld}    ${sgtNew}    ${prefixNew}  ${node}=127.0.0.1     ${session}=session
82     [Documentation]    Updates value of binding via RPC in Master DB of node
83     ${DATA}    Update Binding Xml       ${sgtOld}    ${prefixOld}    ${sgtNew}    ${prefixNew}  ${node}
84     ${resp}    RequestsLibrary.Post    ${session}    ${REST_CONTEXT}:update-entry    data=${DATA}    headers=${HEADERS_XML}
85     Should be Equal As Strings    ${resp.status_code}    200
86
87 Delete Binding
88     [Arguments]    ${sgt}    ${prefix}      ${node}=127.0.0.1       ${session}=session
89     [Documentation]    Delete binding via RPC from Master DB of node
90     ${DATA}    Delete Binding Xml        ${sgt}    ${prefix}    ${node}
91     ${resp}    RequestsLibrary.Post    ${session}    ${REST_CONTEXT}:delete-entry    data=${DATA}    headers=${HEADERS_XML}
92     Should be Equal As Strings    ${resp.status_code}    200
93
94 Should Contain Binding
95     [Documentation]     Tests if data contains specified binding
96     [Arguments]    ${resp}    ${sgt}    ${prefix}   ${db_source}=local
97     ${out}  Find Binding        ${resp}    ${sgt}    ${prefix}      ${db_source}       add
98     Should Be True      ${out}  Doesn't have ${sgt} ${prefix}
99     ${out}  Find Binding        ${resp}    ${sgt}    ${prefix}      ${db_source}       delete
100     Should Not Be True      ${out}  Should't have ${sgt} ${prefix}
101
102 Should Not Contain Binding
103     [Documentation]     Tests if data doesn't contains specified binding
104     [Arguments]    ${resp}    ${sgt}    ${prefix}   ${db_source}=local
105     ${out}  Find Binding        ${resp}    ${sgt}    ${prefix}      ${db_source}       add
106     Should Not Be True      ${out}  Should't have ${sgt} ${prefix}
107
108 Should Contain Binding With Peer Sequence
109     [Documentation]     Tests if data contains specified binding with peer sequence
110     [Arguments]    ${resp}    ${sgt}    ${prefix}   ${source}   ${seq}=0    ${db_source}=local
111     ${out}  Find Binding With Peer Sequence     ${resp}    ${sgt}    ${prefix}      ${db_source}       add    ${source}   ${seq}
112     Should Be True      ${out}  Doesn't have ${sgt} ${prefix} ${source} ${seq} ${db_source}
113
114 Should Not Contain Binding With Peer Sequence
115     [Documentation]     Tests if data doesn't contains specified binding with peer sequence
116     [Arguments]    ${resp}    ${sgt}    ${prefix}   ${source}   ${seq}=0    ${db_source}=local
117     ${out}  Find Binding With Peer Sequence        ${resp}    ${sgt}    ${prefix}      ${db_source}       add    ${source}   ${seq}
118     Should Not Be True      ${out}  Should't have ${sgt} ${prefix} ${source} ${seq} ${db_source}
119
120 Should Contain Connection
121     [Documentation]     Test if data contains specified connection
122     [Arguments]    ${resp}    ${ip}    ${port}    ${mode}    ${version}     ${state}=none
123     ${out}  Find Connection     ${resp}     ${version}    ${mode}    ${ip}    ${port}   ${state}
124     Should Be True  ${out}  Doesn't have ${ip}:${port} ${mode} ${version}
125
126 Should Not Contain Connection
127     [Documentation]     Test if data doesn't contains specified connection
128     [Arguments]    ${resp}    ${ip}    ${port}    ${mode}    ${version}     ${state}=none
129     ${out}  Find Connection     ${resp}     ${version}    ${mode}    ${ip}    ${port}   ${state}
130     Should Not Be True  ${out}  Shouldn't have ${ip}:${port} ${mode} ${version}
131
132 Setup SXP Environment
133     [Documentation]    Create session to Controller
134     Verify Feature Is Installed     odl-sxp-all
135     Create Session    session    url=http://${CONTROLLER}:${RESTCONFPORT}    auth=${AUTH}    headers=${HEADERS_XML}
136     Wait Until Keyword Succeeds     15      3   Get Bindings Master Database
137
138 Clean SXP Environment
139     [Documentation]    Destroy created sessions
140     Delete All Sessions