... netconf operations into reusable keywords to make writing netconf
... test suites easier.
Library Collections
+Library DateTime
Library RequestsLibrary
Resource NetconfViaRestconf.robot
+Resource NexusKeywords.robot
Resource SSHKeywords.robot
*** Variables ***
${DIRECTORY_WITH_DEVICE_TEMPLATES} ${CURDIR}/../variables/netconf/device
${FIRST_TESTTOOL_PORT} 17830
+${BASE_NETCONF_DEVICE_PORT} 17830
+${DEVICE_NAME_BASE} netconf-scaling-device
*** Keywords ***
Setup_NetconfKeywords
... for the additional schemas is deleted on the remote machine and
... the additional schemas argument is left out.
# Install test tool on the machine.
- # TODO: The "urlbase" line is very similar to what pcep suites do. Reduce this code duplication.
- ${urlbase}= BuiltIn.Set_Variable ${NEXUSURL_PREFIX}/content/repositories/opendaylight.snapshot/org/opendaylight/netconf/netconf-testtool
- ${version}= SSHLibrary.Execute_Command curl ${urlbase}/maven-metadata.xml | grep '<version>' | cut -d '>' -f 2 | cut -d '<' -f 1
- BuiltIn.Log ${version}
- ${namepart}= SSHLibrary.Execute_Command curl ${urlbase}/${version}/maven-metadata.xml | grep value | head -n 1 | cut -d '>' -f 2 | cut -d '<' -f 1
- BuiltIn.Log ${namepart}
- BuiltIn.Set_Suite_Variable ${filename} netconf-testtool-${namepart}-executable.jar
- BuiltIn.Log ${filename}
- ${response}= SSHLibrary.Execute_Command curl ${urlbase}/${version}/${filename} >${filename}
- BuiltIn.Log ${response}
+ ${filename}= NexusKeywords.Deploy_Test_Tool netconf/netconf-testtool
${schemas_option}= NetconfKeywords__Deploy_Additional_Schemas ${schemas}
# Start the testtool
${command} BuiltIn.Set_Variable java -Xmx1G -XX:MaxPermSize=256M -jar ${filename} ${options} --device-count ${device-count} --debug ${debug} ${schemas_option}
# "Interrupt_Program_And_Download_Its_Log" which will get an argument stating the name of
# the log file to get.
SSHLibrary.Get_File testtool.log
+
+NetconfKeywords__Perform_Operation_With_Checking_On_Next_Device
+ [Arguments] ${operation} ${deadline_Date}
+ ${current_Date}= DateTime.Get_Current_Date
+ ${ellapsed_seconds}= DateTime.Subtract_Date_From_Date ${deadline_Date} ${current_Date}
+ BuiltIn.Run_Keyword_If ${ellapsed_seconds}<0 Fail The global time out period expired
+ ${number}= BuiltIn.Evaluate ${current_port}-${BASE_NETCONF_DEVICE_PORT}+1
+ BuiltIn.Wait_Until_Keyword_Succeeds 10s 1s NetconfKeywords.Check_Device_Up_And_Running ${number}
+ BuiltIn.Run_Keyword ${operation} ${DEVICE_NAME_BASE}-${number}
+ ${next}= BuiltIn.Evaluate ${current_port}+1
+ BuiltIn.Set_Suite_Variable ${current_port} ${next}
+
+Perform_Operation_On_Each_Device
+ [Arguments] ${operation} ${count}=${DEVICE_COUNT} ${timeout}=30m
+ ${current_Date}= DateTime.Get_Current_Date
+ ${deadline_Date}= DateTime.Add_Time_To_Date ${current_Date} ${timeout}
+ BuiltIn.Set_Suite_Variable ${current_port} ${BASE_NETCONF_DEVICE_PORT}
+ BuiltIn.Repeat_Keyword ${count} times NetconfKeywords__Perform_Operation_With_Checking_On_Next_Device ${operation} ${deadline_Date}