${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
${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}
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
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
${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 ${tool_options}=${EMPTY} ${java_options}=${TESTTOOL_DEFAULT_JAVA_OPTIONS}
+ [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
${filename}= NexusKeywords.Deploy_Test_Tool netconf/netconf-testtool
${schemas_option}= NetconfKeywords__Deploy_Additional_Schemas ${schemas}
# Start the testtool
- ${command} BuiltIn.Set_Variable java ${java_options} -jar ${filename} ${tool_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
+ # 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}
# the log file to get.
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}