-*** Settings ***
-Documentation Test suite for Stats Manager flows collection
-Suite Setup Initialization Phase
-Suite Teardown Teardown Phase
-Library OperatingSystem
-Library Collections
-Library XML
-Library ../../../libraries/XmlComparator.py
-Variables ../../../variables/Variables.py
-Library ../../../libraries/RequestsLibrary.py
-Library ../../../libraries/Common.py
-
-*** Variables ***
-${XmlsDir} ${CURDIR}/../../../variables/xmls
-${switch_idx} 1
-${switch_name} s${switch_idx}
-@{xml_files} f1.xml f2.xml f3.xml f5.xml f7.xml f8.xml f9.xml
-... f10.xml f11.xml f12.xml f13.xml f14.xml f17.xml f19.xml
-... f24.xml
-
-*** Test Cases ***
-Test Add Flows
- [Documentation] Add all flows and waits for SM to collect data
- : FOR ${flowfile} IN @{xml_files}
- \ Log ${flowfile}
- \ Init Flow Variables ${flowfile}
- \ Run Keyword And Continue On Failure Add Flow
-
-Test Is Flow 1 Added
- [Documentation] Checks if flow is configured and operational
- Init Flow Variables f1.xml
- Check Config Flow ${True}
- Check Operational Table ${True}
-
-Test Is Flow 2 Added
- [Documentation] Checks if flow is configured and operational
- Init Flow Variables f2.xml
- Check Config Flow ${True}
- Check Operational Table ${True}
-
-Test Is Flow 3 Added
- [Documentation] Checks if flow is configured and operational
- Init Flow Variables f3.xml
- Check Config Flow ${True}
- Check Operational Table ${True}
-
-Test Is Flow 5 Added
- [Documentation] Checks if flow is configured and operational
- Init Flow Variables f5.xml
- Check Config Flow ${True}
- Check Operational Table ${True}
-
-Test Is Flow 7 Added
- [Documentation] Checks if flow is configured and operational
- Init Flow Variables f7.xml
- Check Config Flow ${True}
- Check Operational Table ${True}
-
-Test Is Flow 8 Added
- [Documentation] Checks if flow is configured and operational
- Init Flow Variables f8.xml
- Check Config Flow ${True}
- Check Operational Table ${True}
-
-Test Is Flow 9 Added
- [Documentation] Checks if flow is configured and operational
- Init Flow Variables f9.xml
- Check Config Flow ${True}
- Check Operational Table ${True}
-
-Test Is Flow 10 Added
- [Documentation] Checks if flow is configured and operational
- Init Flow Variables f10.xml
- Check Config Flow ${True}
- Check Operational Table ${True}
-
-Test Is Flow 11 Added
- [Documentation] Checks if flow is configured and operational
- Init Flow Variables f11.xml
- Check Config Flow ${True}
- Check Operational Table ${True}
-
-Test Is Flow 12 Added
- [Documentation] Checks if flow is configured and operational
- Init Flow Variables f12.xml
- Check Config Flow ${True}
- Check Operational Table ${True}
-
-Test Is Flow 13 Added
- [Documentation] Checks if flow is configured and operational
- Init Flow Variables f13.xml
- Check Config Flow ${True}
- Check Operational Table ${True}
-
-Test Is Flow 14 Added
- [Documentation] Checks if flow is configured and operational
- Init Flow Variables f14.xml
- Check Config Flow ${True}
- Check Operational Table ${True}
-
-Test Is Flow 17 Added
- [Documentation] Checks if flow is configured and operational
- Init Flow Variables f17.xml
- Check Config Flow ${True}
- Check Operational Table ${True}
-
-Test Is Flow 19 Added
- [Documentation] Checks if flow is configured and operational
- Init Flow Variables f19.xml
- Check Config Flow ${True}
- Check Operational Table ${True}
-
-Test Is Flow 24 Added
- [Documentation] Checks if flow is configured and operational
- Init Flow Variables f24.xml
- Check Config Flow ${True}
- Check Operational Table ${True}
-
-Test Delete Flows
- [Documentation] Delete all flows and waits for SM to collect data
- : FOR ${flowfile} IN @{xml_files}
- \ Log ${flowfile}
- \ Init Flow Variables ${flowfile}
- \ Run Keyword And Continue On Failure Delete Flow
-
-Test Is Flow 1 Deleted
- [Documentation] Checks if flow is not configured and operational
- Init Flow Variables f1.xml
- Check Config Flow ${False}
- Check Operational Table ${False}
-
-Test Is Flow 2 Deleted
- [Documentation] Checks if flow is not configured and operational
- Init Flow Variables f2.xml
- Check Config Flow ${False}
- Check Operational Table ${False}
-
-Test Is Flow 3 Deleted
- [Documentation] Checks if flow is not configured and operational
- Init Flow Variables f3.xml
- Check Config Flow ${False}
- Check Operational Table ${False}
-
-Test Is Flow 5 Deleted
- [Documentation] Checks if flow is not configured and operational
- Init Flow Variables f5.xml
- Check Config Flow ${False}
- Check Operational Table ${False}
-
-Test Is Flow 7 Deleted
- [Documentation] Checks if flow is not configured and operational
- Init Flow Variables f7.xml
- Check Config Flow ${False}
- Check Operational Table ${False}
-
-Test Is Flow 8 Deleted
- [Documentation] Checks if flow is not configured and operational
- Init Flow Variables f8.xml
- Check Config Flow ${False}
- Check Operational Table ${False}
-
-Test Is Flow 9 Deleted
- [Documentation] Checks if flow is not configured and operational
- Init Flow Variables f9.xml
- Check Config Flow ${False}
- Check Operational Table ${False}
-
-Test Is Flow 10 Deleted
- [Documentation] Checks if flow is not configured and operational
- Init Flow Variables f10.xml
- Check Config Flow ${False}
- Check Operational Table ${False}
-
-Test Is Flow 11 Deleted
- [Documentation] Checks if flow is not configured and operational
- Init Flow Variables f11.xml
- Check Config Flow ${False}
- Check Operational Table ${False}
-
-Test Is Flow 12 Deleted
- [Documentation] Checks if flow is not configured and operational
- Init Flow Variables f12.xml
- Check Config Flow ${False}
- Check Operational Table ${False}
-
-Test Is Flow 13 Deleted
- [Documentation] Checks if flow is not configured and operational
- Init Flow Variables f13.xml
- Check Config Flow ${False}
- Check Operational Table ${False}
-
-Test Is Flow 14 Deleted
- [Documentation] Checks if flow is not configured and operational
- Init Flow Variables f14.xml
- Check Config Flow ${False}
- Check Operational Table ${False}
-
-Test Is Flow 17 Deleted
- [Documentation] Checks if flow is not configured and operational
- Init Flow Variables f17.xml
- Check Config Flow ${False}
- Check Operational Table ${False}
-
-Test Is Flow 19 Deleted
- [Documentation] Checks if flow is not configured and operational
- Init Flow Variables f19.xml
- Check Config Flow ${False}
- Check Operational Table ${False}
-
-Test Is Flow 24 Deleted
- [Documentation] Checks if flow is not configured and operational
- Init Flow Variables f24.xml
- Check Config Flow ${False}
- Check Operational Table ${False}
-
-*** Keywords ***
-Init Flow Variables
- [Arguments] ${file}
- ${data}= Get File ${XmlsDir}/${file}
- ${xmlroot}= Parse Xml ${XmlsDir}/${file}
- ${table_id}= Get Element Text ${xmlroot} table_id
- ${flow_id}= Get Element Text ${xmlroot} id
- ${flow_priority}= Get Element Text ${xmlroot} priority
- Set Suite Variable ${table_id}
- Set Suite Variable ${flow_id}
- Set Suite Variable ${flow_priority}
- Set Suite Variable ${data}
- Set Suite Variable ${xmlroot}
-
-Check Config Flow
- [Arguments] ${expected}
- Wait Until Keyword Succeeds 40s 2s Check Config Flow Presence ${expected}
-
-Check Config Flow Presence
- [Arguments] ${expected}
- ${presence_flow} ${msg}= Flow Presence Config Flow
- ${msgf}= Get Presence Failure Message config ${expected} ${presence_flow} ${msg}
- Should Be Equal ${expected} ${presence_flow} msg=${msgf}
-
-Flow Presence Config Flow
- ${headers}= Create Dictionary Accept application/xml
- ${resp}= RequestsLibrary.Get session /restconf/config/opendaylight-inventory:nodes/node/openflow:${switch_idx}/table/${table_id}/flow/${flow_id} headers=${headers}
- Log ${resp}
- Log ${resp.content}
- Return From Keyword If ${resp.status_code}!=200 ${False} ${EMPTY}
- ${pres} ${msg}= Is Flow Configured ${data} ${resp.content}
- Run Keyword If '''${msg}'''!='${EMPTY}' Log ${msg}
- Return From Keyword ${pres} ${msg}
-
-Check Operational Table
- [Arguments] ${expected}
- Wait Until Keyword Succeeds 120s 2s Check Operational Table Presence ${expected}
-
-Check Operational Table Presence
- [Arguments] ${expected}
- ${presence_table} ${msg}= Flow Presence Operational Table
- ${msgf}= Get Presence Failure Message config ${expected} ${presence_table} ${msg}
- Should Be Equal ${expected} ${presence_table} msg=${msgf}
-
-Flow Presence Operational Table
- ${headers}= Create Dictionary Accept application/xml
- ${resp}= RequestsLibrary.Get session /restconf/operational/opendaylight-inventory:nodes/node/openflow:${switch_idx}/table/${table_id} headers=${headers}
- Log ${resp}
- Log ${resp.content}
- Return From Keyword If ${resp.status_code}!=200 ${False} ${EMPTY}
- ${pres} ${msg}= Is Flow Operational2 ${data} ${resp.content}
- Run Keyword If '''${msg}'''!='${EMPTY}' Log ${msg}
- Return From Keyword ${pres} ${msg}
-
-Add Flow
- Log ${data}
- ${resp}= Putxml session /restconf/config/opendaylight-inventory:nodes/node/openflow:${switch_idx}/table/${table_id}/flow/${flow_id} data=${data}
- ${msg}= Set Variable Adding flow for /restconf/config/opendaylight-inventory:nodes/node/openflow:${switch_idx}/table/${table_id}/flow/${flow_id} failed, http response ${resp.status_code} received.
- Should Be Equal As Strings ${resp.status_code} 200 msg=${msg}
-
-Delete Flow
- ${resp}= Delete session /restconf/config/opendaylight-inventory:nodes/node/openflow:${switch_idx}/table/${table_id}/flow/${flow_id}
- ${msg}= Set Variable Delete flow for /restconf/config/opendaylight-inventory:nodes/node/openflow:${switch_idx}/table/${table_id}/flow/${flow_id} failed, http response ${resp.status_code} received.
- Should Be Equal As Strings ${resp.status_code} 200 msg=${msg}
-
-Delete All Flows
- [Documentation] Deletes all flows
- : FOR ${flowfile} IN @{xml_files}
- \ Log ${flowfile}
- \ Init Flow Variables ${flowfile}
- \ Delete Flow
-
-Initialization Phase
- [Documentation] Initiate tcp connection with controller
- Create Session session http://${CONTROLLER}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS_XML}
-
-Teardown Phase
- [Documentation] Closes tcp connection with controller and removes flows
- Delete All Sessions
-
-Get Presence Failure Message
- [Arguments] ${ds} ${expected} ${presence} ${diffmsg}
- Return From Keyword If '''${diffmsg}'''!='${EMPTY}' Flow found in ${ds} data store but: ${diffmsg}
- ${msgf}= Set Variable If ${expected}==${True} The flow is expected in operational data store, but The flow is not expected in operational data store, but
- ${msgp}= Set Variable If ${presence}==${True} it is present. it is not present.
- Return From Keyword ${msgf} ${msgp}