X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=csit%2Flibraries%2FNetconfKeywords.robot;h=abf155c92ea3ea1f01d903ba47d536a8a474b48a;hb=7dc9678b294479446ce4fb72ccca9994384bd03b;hp=455d36e2d51f9e21ad27420434cac2c74f426ba0;hpb=a4146ace2b5aa902ef60efe10e6557d98f257943;p=integration%2Ftest.git diff --git a/csit/libraries/NetconfKeywords.robot b/csit/libraries/NetconfKeywords.robot index 455d36e2d5..abf155c92e 100644 --- a/csit/libraries/NetconfKeywords.robot +++ b/csit/libraries/NetconfKeywords.robot @@ -18,19 +18,22 @@ Library DateTime Library RequestsLibrary Library SSHLibrary Resource NexusKeywords.robot +Resource Restconf.robot Resource SSHKeywords.robot Resource TemplatedRequests.robot Resource Utils.robot Resource RemoteBash.robot *** Variables *** -${TESTTOOL_DEFAULT_JAVA_OPTIONS} -Xmx1G +${MAX_HEAP} 1G +${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 @@ -52,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). @@ -59,11 +77,19 @@ Count_Netconf_Connectors_For_Device # 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}= TemplatedRequests.Get_As_Json_From_Uri ${OPERATIONAL_API}/network-topology:network-topology/topology/topology-netconf session=${session} + ${uri} = Restconf.Generate URI network-topology:network-topology operational + ${mounts}= TemplatedRequests.Get_As_Json_From_Uri ${uri} session=${session} Builtin.Log ${mounts} ${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. @@ -74,25 +100,24 @@ 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}= Builtin.Set_Variable ${CONFIG_API}/network-topology:network-topology/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 + ${uri} = Restconf.Generate URI network-topology:network-topology config topology=topology-netconf node=${device_name} + 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. - ${device_status}= TemplatedRequests.Get_As_Json_From_Uri ${OPERATIONAL_API}/network-topology:network-topology/topology/topology-netconf/node/${device_name} session=${session} + ${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} 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 @@ -101,8 +126,28 @@ Remove_Device_From_Netconf ${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 + [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 @@ -111,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} @@ -139,6 +184,7 @@ NetconfKeywords__Deploy_Additional_Schemas # directory from the point of view of the process running on that # machine. SSHLibrary.Put_Directory ${schemas} destination=./schemas + SSHLibrary.List_Directory ./schemas [Return] --schemas-dir ./schemas NetconfKeywords__Deploy_Custom_RPC @@ -157,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. @@ -187,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} @@ -213,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