X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=csit%2Flibraries%2FNetconfKeywords.robot;h=a89e449732348fae0be78c35b313589960e45b02;hb=5b6c3589c60b49fcc90aaae388ac4a5b34d363ea;hp=4a5286ff4f62525fe604c345d726c2877dcab7ac;hpb=f834876b50115b5c794d81b44e03df7530112a90;p=integration%2Ftest.git diff --git a/csit/libraries/NetconfKeywords.robot b/csit/libraries/NetconfKeywords.robot index 4a5286ff4f..a89e449732 100644 --- a/csit/libraries/NetconfKeywords.robot +++ b/csit/libraries/NetconfKeywords.robot @@ -15,13 +15,18 @@ Library Collections Library DateTime Library RequestsLibrary Resource NetconfViaRestconf.robot +Resource NexusKeywords.robot Resource SSHKeywords.robot +Resource Utils.robot *** Variables *** +${TESTTOOL_DEFAULT_JAVA_OPTIONS} -Xmx1G -XX:MaxPermSize=256M -Dorg.apache.sshd.registerBouncyCastle=false ${DIRECTORY_WITH_DEVICE_TEMPLATES} ${CURDIR}/../variables/netconf/device ${FIRST_TESTTOOL_PORT} 17830 ${BASE_NETCONF_DEVICE_PORT} 17830 ${DEVICE_NAME_BASE} netconf-scaling-device +${TESTTOOL_DEVICE_TIMEOUT} 60s +${ENABLE_NETCONF_TEST_TIMEOUT} ${ENABLE_GLOBAL_TEST_DEADLINES} *** Keywords *** Setup_NetconfKeywords @@ -29,6 +34,7 @@ Setup_NetconfKeywords ${tmp}= BuiltIn.Create_Dictionary BuiltIn.Set_Suite_Variable ${NetconfKeywords__mounted_device_types} ${tmp} NetconfViaRestconf.Setup_Netconf_Via_Restconf + NexusKeywords.Initialize_Artifact_Deployment_And_Usage Configure_Device_In_Netconf [Arguments] ${device_name} ${device_type}=default ${device_port}=${FIRST_TESTTOOL_PORT} @@ -39,15 +45,22 @@ Configure_Device_In_Netconf Count_Netconf_Connectors_For_Device [Arguments] ${device_name} - [Documentation] Count all Netconf connectors referring to the specified device (usually 0 or 1). - ${mounts}= Utils.Get_Data_From_URI operational network-topology:network-topology/topology/topology-netconf + [Documentation] Count all instances of the specified device in the Netconf topology (usually 0 or 1). + # FIXME: This no longer counts netconf connectors, it counts "device instances in Netconf topology". + # This keyword should be renamed but without an automatic keyword naming standards checker this is + # potentially destabilizing change so right now it is as FIXME. Proposed new name: + # Count_Device_Instances_In_Netconf_Topology + ${mounts}= NetconfViaRestconf.Get_Operational_Data_From_URI network-topology:network-topology/topology/topology-netconf Builtin.Log ${mounts} ${actual_count}= Builtin.Evaluate len('''${mounts}'''.split('"node-id":"${device_name}"'))-1 Builtin.Return_From_Keyword ${actual_count} Check_Device_Has_No_Netconf_Connector [Arguments] ${device_name} - [Documentation] Check that there are no Netconf connectors referring to the specified device. + [Documentation] Check that there are no instances of the specified device in the Netconf topology. + # FIXME: Similarlt to "Count_Netconf_Connectors_For_Device", this does not check whether the device has + # no netconf connector but whether the device is present in the netconf topology or not. Rename, proposed + # new name: Check_Device_Not_Present_In_Netconf_Topology ${count} Count_Netconf_Connectors_For_Device ${device_name} Builtin.Should_Be_Equal_As_Strings ${count} 0 @@ -62,7 +75,7 @@ Check_Device_Completely_Gone Check_Device_Connected [Arguments] ${device_name} [Documentation] Check that the specified device is accessible from Netconf. - ${device_status}= Utils.Get_Data_From_URI operational network-topology:network-topology/topology/topology-netconf/node/${device_name} + ${device_status}= NetconfViaRestconf.Get_Operational_Data_From_URI network-topology:network-topology/topology/topology-netconf/node/${device_name} Builtin.Should_Contain ${device_status} "netconf-node-topology:connection-status":"connected" Wait_Device_Connected @@ -123,32 +136,31 @@ NetconfKeywords__Check_Device_Is_Up ${count}= SSHKeywords.Count_Port_Occurences ${last-port} LISTEN java BuiltIn.Should_Be_Equal_As_Integers ${count} 1 +NetconfKeywords__Wait_Device_Is_Up_And_Running + [Arguments] ${device_name} + ${number}= BuiltIn.Evaluate '${device_name}'.split('-').pop() + BuiltIn.Wait_Until_Keyword_Succeeds ${TESTTOOL_DEVICE_TIMEOUT} 1s Check_Device_Up_And_Running ${number} + Install_And_Start_Testtool - [Arguments] ${device-count}=10 ${debug}=true ${schemas}=none ${options}=${EMPTY} + [Arguments] ${device-count}=10 ${debug}=true ${schemas}=none ${tool_options}=${EMPTY} ${java_options}=${TESTTOOL_DEFAULT_JAVA_OPTIONS} ${mdsal}=true [Documentation] Install and run testtool. Also arrange to collect its output into a log file. ... When the ${schemas} argument is set to 'none', it signifies that ... there are no additional schemas to be deployed, so the directory ... 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 '' | 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} + ${command} BuiltIn.Set_Variable java ${java_options} -jar ${filename} ${tool_options} --device-count ${device-count} --debug ${debug} ${schemas_option} --md-sal ${mdsal} BuiltIn.Log Running testtool: ${command} - SSHLibrary.Write ${command} >testtool.log 2>&1 + ${logfile}= Utils.Get_Log_File_Name testtool + BuiltIn.Set_Suite_Variable ${testtool_log} ${logfile} + SSHLibrary.Write ${command} >${logfile} 2>&1 + # Store information needed by other keywords. + BuiltIn.Set_Suite_Variable ${NetconfKeywords__testtool_device_count} ${device-count} # Wait for the testtool to boot up. - ${timeout}= BuiltIn.Evaluate (${device-count}/3)+5 - BuiltIn.Wait_Until_Keyword_Succeeds ${timeout}s 1s NetconfKeywords__Check_Device_Is_Up ${FIRST_TESTTOOL_PORT} + Perform_Operation_On_Each_Device NetconfKeywords__Wait_Device_Is_Up_And_Running Check_Device_Up_And_Running [Arguments] ${device-number} @@ -164,21 +176,25 @@ Stop_Testtool # TODO: Maybe this keyword's content shall be moved into SSHUtils and named somewhat like # "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 + SSHLibrary.Get_File ${testtool_log} -NetconfKeywords__Perform_Operation_With_Checking_On_Next_Device - [Arguments] ${operation} ${deadline_Date} +NetconfKeywords__Check_Netconf_Test_Timeout_Not_Expired + [Arguments] ${deadline_Date} + BuiltIn.Return_From_Keyword_If not ${ENABLE_NETCONF_TEST_TIMEOUT} ${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 + +NetconfKeywords__Perform_Operation_With_Checking_On_Next_Device + [Arguments] ${operation} ${deadline_Date} + NetconfKeywords__Check_Netconf_Test_Timeout_Not_Expired ${deadline_Date} ${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 + [Arguments] ${operation} ${count}=${NetconfKeywords__testtool_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}