+++ /dev/null
-*** Settings ***
-Documentation Basic tests for odl-bgpcep-pcep-all feature.
-...
-... Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved.
-...
-... This program and the accompanying materials are made available under the
-... terms of the Eclipse Public License v1.0 which accompanies this distribution,
-... and is available at http://www.eclipse.org/legal/epl-v10.html
-Suite Setup Set_It_Up
-Suite Teardown Tear_It_Down
-Library OperatingSystem
-Library SSHLibrary prompt=]>
-Library RequestsLibrary
-Library ${CURDIR}/../../../libraries/HsfJson/hsf_json.py
-Resource ${CURDIR}/../../../libraries/PcepOperations.robot
-Variables ${CURDIR}/../../../variables/Variables.py
-Variables ${CURDIR}/../../../variables/pcepuser/variables.py ${MININET}
-
-*** Variables ***
-${ExpDir} ${CURDIR}/expected
-${ActDir} ${CURDIR}/actual
-
-*** Test Cases ***
-Topology_Precondition
- [Documentation] Compare current pcep-topology to off_json variable.
- ... Timeout is long enough to ODL boot, to see that pcep is ready, with no PCC is connected.
- [Tags] critical
- Wait_Until_Keyword_Succeeds 300 1 Compare_Topology ${off_json} 010_Topology_Precondition
-
-Start_Pcc_Mock
- [Documentation] Execute pcc-mock on Mininet, fail is Open is not sent, keep it running for next tests.
- ${command}= Set_Variable java -jar ${filename} --local-address ${MININET} --remote-address ${CONTROLLER} 2>&1 | tee pccmock.log
- Log ${command}
- Write ${command}
- Read_Until started, sent proposal Open
-
-Topology_Default
- [Documentation] Compare pcep-topology to default_json, which includes a tunnel from pcc-mock.
- ... Timeout is lower than in Precondition, as state from pcc-mock should be updated quickly.
- [Tags] critical
- Wait_Until_Keyword_succeeds 5 1 Compare_Topology ${default_json} 020_Topology_Default
-
-Update_Delegated
- [Documentation] Perform update-lsp on the mocked tunnel, check response is success.
- [Tags] critical
- ${text}= Update_Xml_Lsp_Return_Json ${update_delegated_xml}
- Pcep_Json_Is_Success ${text}
-
-Topology_Updated
- [Documentation] Compare pcep-topology to default_json, which includes the updated tunnel.
- [Tags] critical
- Wait_Until_Keyword_succeeds 5 1 Compare_Topology ${updated_json} 030_Topology_Updated
-
-Refuse_Remove_Delegated
- [Documentation] Perform remove-lsp on the mocked tunnel, check that mock-pcc has refused to remove it.
- [Tags] critical
- ${text}= Remove_Xml_Lsp_Return_Json ${remove_delegated_xml}
- Pcep_Json_Is_Refused ${text}
-
-Topology_Still_Updated
- [Documentation] Compare pcep-topology to default_json, which includes the updated tunnel, to verify that refusal did not break topology.
- [Tags] critical
- Wait_Until_Keyword_succeeds 5 1 Compare_Topology ${updated_json} 040_Topology_Still_Updated
-
-Add_Instantiated
- [Documentation] Perform add-lsp to create new tunnel, check that response is success.
- [Tags] critical
- ${text}= Add_Xml_Lsp_Return_Json ${add_instantiated_xml}
- Pcep_Json_Is_Success ${text}
-
-Topology_Second_Default
- [Documentation] Compare pcep-topology to default_json, which includes the updated delegated and default instantiated tunnel.
- [Tags] critical
- Wait_Until_Keyword_succeeds 5 1 Compare_Topology ${updated_default_json} 050_Topology_Second_Default
-
-Update_Instantiated
- [Documentation] Perform update-lsp on the newly instantiated tunnel, check that response is success.
- [Tags] critical
- ${text}= Update_Xml_Lsp_Return_Json ${update_instantiated_xml}
- Pcep_Json_Is_Success ${text}
-
-Topology_Second_Updated
- [Documentation] Compare pcep-topology to default_json, which includes the updated delegated and updated instantiated tunnel.
- [Tags] critical
- Wait_Until_Keyword_succeeds 5 1 Compare_Topology ${updated_updated_json} 060_Topology_Second_Updated
-
-Remove_Instantiated
- [Documentation] Perform remove-lsp on the instantiated tunnel, check that response is success.
- [Tags] critical
- ${text}= Remove_Xml_Lsp_Return_Json ${remove_instantiated_xml}
- Pcep_Json_Is_Success ${text}
-
-Topology_Again_Updated
- [Documentation] Compare pcep-topology to default_json, which includes the updated tunnel, to verify that instantiated tunnel was removed.
- [Tags] critical
- Wait_Until_Keyword_succeeds 5 1 Compare_Topology ${updated_json} 070_Topology_Again_Updated
-
-Stop_Pcc_Mock
- [Documentation] Send ctrl+c to pcc-mock, fails if no prompt is seen
- ... after 3 seconds (the default for SSHLibrary)
- ${command}= Evaluate chr(int(3))
- Log ${command}
- Write ${command}
- Read_Until_Prompt
-
-Topology_Postcondition
- [Documentation] Compare curent pcep-topology to "off_json" again.
- [Tags] critical
- Wait_Until_Keyword_Succeeds 5 1 Compare_Topology ${off_json} 080_Topology_Postcondition
-
-*** Keywords ***
-Set_It_Up
- [Documentation] Create SSH session to Mininet machine, prepare HTTP client session to Controller.
- ... Figure out latest pcc-mock version and download it from Nexus to Mininet.
- ... Also, delete and create directories for json diff handling.
- Open_Connection ${MININET}
- Login_With_Public_Key ${MININET_USER} ${USER_HOME}/.ssh/${SSH_KEY} any
- Create_Session ses http://${CONTROLLER}:${RESTCONFPORT}/restconf/operational/network-topology:network-topology auth=${AUTH}
- ${urlbase}= Set_Variable ${NEXUSURL_PREFIX}/content/repositories/opendaylight.snapshot/org/opendaylight/bgpcep/pcep-pcc-mock
- ${version}= Execute_Command curl ${urlbase}/maven-metadata.xml | grep latest | cut -d '>' -f 2 | cut -d '<' -f 1
- Log ${version}
- ${namepart}= Execute_Command curl ${urlbase}/${version}/maven-metadata.xml | grep value | head -n 1 | cut -d '>' -f 2 | cut -d '<' -f 1
- Log ${namepart}
- Set_Suite_Variable ${filename} pcep-pcc-mock-${namepart}-executable.jar
- Log ${filename}
- ${response}= Execute_Command wget -q -N ${urlbase}/${version}/${filename} 2>&1
- Log ${response}
- Remove_Directory ${ExpDir}
- Remove_Directory ${ActDir}
- Create_Directory ${ExpDir}
- Create_Directory ${ActDir}
- Setup_Pcep_Operations
-
-Compare_Topology
- [Arguments] ${expected} ${name}
- [Documentation] Get current pcep-topology as json, normalize both expected and actual json.
- ... Save normalized jsons to files for later processing.
- ... Error codes and normalized jsons should match exactly.
- ${normexp}= Hsf_Json ${expected}
- Log ${normexp}
- Create_File ${ExpDir}${/}${name} ${normexp}
- ${resp}= RequestsLibrary.Get ses topology/pcep-topology
- Log ${resp}
- Log ${resp.text}
- ${normresp}= Hsf_Json ${resp.text}
- Log ${normresp}
- Create_File ${ActDir}${/}${name} ${normresp}
- Should_Be_Equal_As_Strings ${resp.status_code} 200
- Should_Be_Equal ${normresp} ${normexp}
-
-Tear_It_Down
- [Documentation] Download pccmock.log and Log its contents.
- ... Compute and Log the diff between expected and actual normalized responses.
- ... Close both HTTP client session and SSH connection to Mininet.
- SSHLibrary.Get_File pccmock.log
- ${pccmocklog}= Run cat pccmock.log
- Log ${pccmocklog}
- ${diff}= Run diff -dur ${ExpDir} ${ActDir}
- Log ${diff}
- Teardown_Pcep_Operations
- Delete_All_Sessions
- Close_All_Connections