X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=csit%2Flibraries%2FNetconfKeywords.robot;h=868d09f6e07d4e82e241e5da8da9ae1e861cfcd3;hb=178beb4da86936dfc6f069e6b9596e576decd36e;hp=e2c292c7aba619c277b3fd8250ee9aee2ee7311c;hpb=45dcfa0dd9c50f92eee4253237798586a46a64bb;p=integration%2Ftest.git diff --git a/csit/libraries/NetconfKeywords.robot b/csit/libraries/NetconfKeywords.robot index e2c292c7ab..868d09f6e0 100644 --- a/csit/libraries/NetconfKeywords.robot +++ b/csit/libraries/NetconfKeywords.robot @@ -26,13 +26,14 @@ Resource RemoteBash.robot *** 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 @@ -54,6 +55,21 @@ Configure_Device_In_Netconf ... 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). @@ -67,6 +83,13 @@ Count_Netconf_Connectors_For_Device ${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. @@ -77,36 +100,54 @@ Check_Device_Has_No_Netconf_Connector Builtin.Should_Be_Equal_As_Strings ${count} 0 Check_Device_Completely_Gone - [Arguments] ${device_name} ${session}=default + [Arguments] ${device_name} ${session}=default ${log_response}=True [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} - 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 + [Arguments] ${device_name} ${session}=default ${log_response}=True [Documentation] Check that the specified device is accessible from Netconf. ${uri} = Restconf.Generate URI network-topology:network-topology operational topology=topology-netconf node=${device_name} - ${device_status}= TemplatedRequests.Get_As_Json_From_Uri ${uri} session=${session} + ${device_status}= TemplatedRequests.Get_As_Json_From_Uri ${uri} session=${session} log_response=${log_response} Builtin.Should_Contain ${device_status} "netconf-node-topology:connection-status": "connected" Wait_Device_Connected - [Arguments] ${device_name} ${timeout}=20s ${period}=1s ${session}=default + [Arguments] ${device_name} ${timeout}=20s ${period}=1s ${session}=default ${log_response}=True [Documentation] Wait for the device to become connected. ... It is more readable to use this keyword in a test case than to put the whole WUKS below into it. - BuiltIn.Wait_Until_Keyword_Succeeds ${timeout} ${period} Check_Device_Connected ${device_name} session=${session} + BuiltIn.Wait_Until_Keyword_Succeeds ${timeout} ${period} Check_Device_Connected ${device_name} session=${session} log_response=${log_response} Remove_Device_From_Netconf [Arguments] ${device_name} ${session}=default ${location}=location [Documentation] Tell Netconf to deconfigure the specified device ${device_type}= Collections.Pop_From_Dictionary ${NetconfKeywords__mounted_device_types} ${device_name} - ${template_as_string}= BuiltIn.Set_Variable {'DEVICE_NAME': '${device_name}'} + ${template_as_string}= BuiltIn.Create_Dictionary 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 + [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. ... Call of Remove_Device_From_Netconf returns before netconf gets ... around deleting the device's connector. To ensure the device is @@ -115,7 +156,7 @@ Wait_Device_Fully_Removed ... is not made before using this keyword, the wait will fail. ... Using this keyword is more readable than putting the WUKS below ... into a test case. - BuiltIn.Wait_Until_Keyword_Succeeds ${timeout} ${period} Check_Device_Completely_Gone ${device_name} session=${session} + BuiltIn.Wait_Until_Keyword_Succeeds ${timeout} ${period} Check_Device_Completely_Gone ${device_name} session=${session} log_response=${log_response} NetconfKeywords__Deploy_Additional_Schemas [Arguments] ${schemas} @@ -162,21 +203,21 @@ NetconfKeywords__Check_Device_Is_Up BuiltIn.Should_Be_Equal_As_Integers ${count} 1 NetconfKeywords__Wait_Device_Is_Up_And_Running - [Arguments] ${device_name} + [Arguments] ${device_name} ${log_response}=True ${number}= BuiltIn.Evaluate '${device_name}'.split('-').pop() BuiltIn.Wait_Until_Keyword_Succeeds ${TESTTOOL_BOOT_TIMEOUT} 1s Check_Device_Up_And_Running ${number} 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. @@ -192,7 +233,7 @@ Start_Testtool # 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} @@ -218,16 +259,38 @@ NetconfKeywords__Check_Netconf_Test_Timeout_Not_Expired 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} + [Arguments] ${operation} ${deadline_Date} ${log_response}=True NetconfKeywords__Check_Netconf_Test_Timeout_Not_Expired ${deadline_Date} ${number}= BuiltIn.Evaluate ${current_port}-${BASE_NETCONF_DEVICE_PORT}+1 - BuiltIn.Run_Keyword ${operation} ${DEVICE_NAME_BASE}-${number} + BuiltIn.Run_Keyword ${operation} ${DEVICE_NAME_BASE}-${number} log_response=${log_response} ${next}= BuiltIn.Evaluate ${current_port}+1 BuiltIn.Set_Suite_Variable ${current_port} ${next} Perform_Operation_On_Each_Device - [Arguments] ${operation} ${count}=${NetconfKeywords__testtool_device_count} ${timeout}=30m + [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} + 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