*** Variables ***
${MAX_HEAP} 1G
-${TESTTOOL_DEFAULT_JAVA_OPTIONS} -Xmx${MAX_HEAP}
+${TESTTOOL_DEFAULT_JAVA_OPTIONS} -Xmx${MAX_HEAP} -Djava.security.egd=file:/dev/./urandom
${DIRECTORY_WITH_DEVICE_TEMPLATES} ${CURDIR}/../variables/netconf/device
${FIRST_TESTTOOL_PORT} 17830
${BASE_NETCONF_DEVICE_PORT} 17830
${DEVICE_NAME_BASE} netconf-scaling-device
${TESTTOOL_BOOT_TIMEOUT} 60s
${ENABLE_NETCONF_TEST_TIMEOUT} ${ENABLE_GLOBAL_TEST_DEADLINES}
+${SSE_CFG_FILE} ${WORKSPACE}/${BUNDLEFOLDER}/etc/org.opendaylight.restconf.nb.rfc8040.cfg
*** Keywords ***
Setup_NetconfKeywords
... ELSE TemplatedRequests.Put_As_Xml_Templated folder=${DIRECTORY_WITH_DEVICE_TEMPLATES}${/}${device_type} mapping=${mapping} session=${session} http_timeout=${http_timeout}
Collections.Set_To_Dictionary ${NetconfKeywords__mounted_device_types} ${device_name} ${device_type}
+Configure_Device
+ [Arguments] ${current_name} ${log_response}=True
+ [Documentation] Operation for configuring the device.
+ KarafKeywords.Log_Message_To_Controller_Karaf Configuring device ${current_name} to Netconf
+ Configure_Device_In_Netconf ${current_name} device_type=${device_type} device_port=${current_port}
+ KarafKeywords.Log_Message_To_Controller_Karaf Device ${current_name} configured
+
+Configure_Device_And_Verify
+ [Arguments] ${current_name} ${log_response}=True
+ [Documentation] Operation for configuring the device in the Netconf subsystem and connecting to it.
+ Configure_Device ${current_name} ${log_response}
+ KarafKeywords.Log_Message_To_Controller_Karaf Waiting for device ${current_name} to connect
+ Wait_Device_Connected ${current_name} period=0.5s log_response=${log_response}
+ KarafKeywords.Log_Message_To_Controller_Karaf Device ${current_name} connected
+
Count_Netconf_Connectors_For_Device
[Arguments] ${device_name} ${session}=default
[Documentation] Count all instances of the specified device in the Netconf topology (usually 0 or 1).
${actual_count}= Builtin.Evaluate len('''${mounts}'''.split('"node-id": "${device_name}"'))-1
Builtin.Return_From_Keyword ${actual_count}
+Wait_Connected
+ [Arguments] ${current_name} ${log_response}=True
+ [Documentation] Operation for waiting until the device is connected.
+ KarafKeywords.Log_Message_To_Controller_Karaf Waiting for device ${current_name} to connect
+ Wait_Device_Connected ${current_name} period=0.5s timeout=300s log_response=${log_response}
+ KarafKeywords.Log_Message_To_Controller_Karaf Device ${current_name} connected
+
Check_Device_Has_No_Netconf_Connector
[Arguments] ${device_name} ${session}=default
[Documentation] Check that there are no instances of the specified device in the Netconf topology.
[Documentation] Check that the specified device has no Netconf connectors nor associated data.
Check_Device_Has_No_Netconf_Connector ${device_name} session=${session}
${uri} = Restconf.Generate URI network-topology:network-topology config topology=topology-netconf node=${device_name}
- ${status} ${response}= BuiltIn.Run_Keyword_And_Ignore_Error TemplatedRequests.Get_As_Xml_From_Uri ${uri} session=${session} log_response=${log_response}
- BuiltIn.Should_Be_Equal_As_Strings ${status} FAIL
- BuiltIn.Should_Contain ${response} 404
+ Utils.No Content From URI ${session} ${uri}
Check_Device_Connected
[Arguments] ${device_name} ${session}=default ${log_response}=True
${template_as_string}= BuiltIn.Set_Variable {'DEVICE_NAME': '${device_name}'}
TemplatedRequests.Delete_Templated ${DIRECTORY_WITH_DEVICE_TEMPLATES}${/}${device_type} ${template_as_string} session=${session} location=${location}
+Deconfigure_Device
+ [Arguments] ${current_name} ${log_response}=True
+ [Documentation] Operation for deconfiguring the device.
+ KarafKeywords.Log_Message_To_Controller_Karaf Deconfiguring device ${current_name}
+ Remove_Device_From_Netconf ${current_name}
+ KarafKeywords.Log_Message_To_Controller_Karaf Device ${current_name} deconfigured
+
+Deconfigure_Device_And_Verify
+ [Arguments] ${current_name} ${log_response}=True
+ [Documentation] Operation for deconfiguring the device from Netconf.
+ Deconfigure_Device ${current_name} ${log_response}
+ Check_Device_Deconfigured ${current_name}
+
+Check_Device_Deconfigured
+ [Arguments] ${current_name} ${log_response}=True
+ [Documentation] Operation for making sure the device is really deconfigured.
+ KarafKeywords.Log_Message_To_Controller_Karaf Waiting for device ${current_name} to disappear
+ Wait_Device_Fully_Removed ${current_name} period=0.5s timeout=120s
+ KarafKeywords.Log_Message_To_Controller_Karaf Device ${current_name} removed
+
Wait_Device_Fully_Removed
[Arguments] ${device_name} ${timeout}=10s ${period}=1s ${session}=default ${log_response}=True
[Documentation] Wait until all netconf connectors for the device with the given name disappear.
Install_And_Start_Testtool
[Arguments] ${device-count}=10 ${debug}=true ${schemas}=none ${rpc_config}=none ${tool_options}=${EMPTY} ${java_options}=${TESTTOOL_DEFAULT_JAVA_OPTIONS}
- ... ${mdsal}=true
+ ... ${mdsal}=true ${log_response}=True
[Documentation] Install and run testtool.
${filename}= NexusKeywords.Deploy_Test_Tool netconf netconf-testtool
Start_Testtool ${filename} ${device-count} ${debug} ${schemas} ${rpc_config} ${tool_options}
- ... ${java_options} ${mdsal}
+ ... ${java_options} ${mdsal} log_response=${log_response}
Start_Testtool
[Arguments] ${filename} ${device-count}=10 ${debug}=true ${schemas}=none ${rpc_config}=none ${tool_options}=${EMPTY}
- ... ${java_options}=${TESTTOOL_DEFAULT_JAVA_OPTIONS} ${mdsal}=true
+ ... ${java_options}=${TESTTOOL_DEFAULT_JAVA_OPTIONS} ${mdsal}=true ${log_response}=True
[Documentation] Arrange to collect tool's output into a log file.
... Will use specific ${schemas} unless argument resolves to 'none',
... which signifies that there are no additional schemas to be deployed.
# Store information needed by other keywords.
BuiltIn.Set_Suite_Variable ${NetconfKeywords__testtool_device_count} ${device-count}
# Wait for the testtool to boot up.
- Perform_Operation_On_Each_Device NetconfKeywords__Wait_Device_Is_Up_And_Running
+ Perform_Operation_On_Each_Device NetconfKeywords__Wait_Device_Is_Up_And_Running log_response=${log_response}
Check_Device_Up_And_Running
[Arguments] ${device-number}
BuiltIn.Set_Suite_Variable ${current_port} ${next}
Perform_Operation_On_Each_Device
- [Arguments] ${operation} ${count}=${NetconfKeywords__testtool_device_count} ${timeout}=30m ${log_response}=True
+ [Arguments] ${operation} ${count}=${NetconfKeywords__testtool_device_count} ${timeout}=45m ${log_response}=True
${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} log_response=${log_response}
+
+Disable SSE On Controller
+ [Arguments] ${controller_ip}
+ [Documentation] Sets the config for using SSE (Server Side Events) to false. Note that
+ ... this keyword only changes the config. A controller restart is needed for the config to
+ ... to take effect.
+ SSHLibrary.Open Connection ${controller_ip}
+ Login With Public Key ${ODL_SYSTEM_USER} ${USER_HOME}/.ssh/${SSH_KEY} any
+ ${cmd}= Set Variable echo "use-sse=false" > ${SSE_CFG_FILE}
+ SSHLibrary.Execute Command ${cmd}
+ SSHLibrary.Close Connection
+
+Enable SSE On Controller
+ [Arguments] ${controller_ip}
+ [Documentation] Sets the config for using SSE (Server Side Events) to true. Note that
+ ... this keyword only changes the config. A controller restart is needed for the config to
+ ... to take effect.
+ SSHLibrary.Open Connection ${controller_ip}
+ Login With Public Key ${ODL_SYSTEM_USER} ${USER_HOME}/.ssh/${SSH_KEY} any
+ ${cmd}= Set Variable echo "use-sse=true" > ${SSE_CFG_FILE}
+ SSHLibrary.Execute Command ${cmd}
+ SSHLibrary.Close Connection