2 Documentation netconf-connector scaling test suite (multi-threaded GET requests).
4 ... Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved.
6 ... This program and the accompanying materials are made available under the
7 ... terms of the Eclipse Public License v1.0 which accompanies this distribution,
8 ... and is available at http://www.eclipse.org/legal/epl-v10.html
11 ... Performs scaling tests:
12 ... - Send configurations of the devices one by one (via restconf).
13 ... - Wait for the devices to become connected.
14 ... - Send requests for configuration data using ${WORKER_COUNT} worker threads
15 ... (using external Python tool).
16 ... - Deconfigure the devices one by one.
17 Suite Setup Setup_Everything
18 Suite Teardown Teardown_Everything
21 Library SSHLibrary timeout=10s
22 Resource ${CURDIR}/../../../libraries/KarafKeywords.robot
23 Resource ${CURDIR}/../../../libraries/NetconfKeywords.robot
24 Resource ${CURDIR}/../../../libraries/SetupUtils.robot
25 Resource ${CURDIR}/../../../libraries/Utils.robot
26 Variables ${CURDIR}/../../../variables/Variables.py
31 ${device_name_base} netconf-scaling-device
35 Configure_Devices_On_Netconf
36 [Documentation] Make requests to configure the testtool devices.
37 ${timeout}= BuiltIn.Evaluate ${DEVICE_COUNT}*10
38 NetconfKeywords.Perform_Operation_On_Each_Device Configure_Device timeout=${timeout}
40 Wait_For_Devices_To_Connect
41 [Documentation] Wait for the devices to become connected.
42 ${timeout}= BuiltIn.Evaluate ${DEVICE_COUNT}*10
43 NetconfKeywords.Perform_Operation_On_Each_Device Wait_Connected timeout=${timeout}
45 Issue_Requests_On_Devices
46 [Documentation] Spawn the specified count of worker threads to issue a GET request to each of the devices.
47 ${current_ssh_connection}= SSHLibrary.Get Connection
48 SSHLibrary.Open_Connection ${TOOLS_SYSTEM_IP}
49 Utils.Flexible_Mininet_Login
50 SSHLibrary.Write python getter.py --odladdress=${ODL_SYSTEM_IP} --count=${DEVICE_COUNT} --name=${device_name_base} --workers=${WORKER_COUNT}
51 : FOR ${number} IN RANGE 1 ${DEVICE_COUNT}+1
52 \ Read_Python_Tool_Operation_Result ${number}
53 SSHLibrary.Read_Until_Prompt
54 SSHLibrary.Close_Connection
55 Restore Current SSH Connection From Index ${current_ssh_connection.index}
58 [Documentation] Make requests to deconfigure the testtool devices.
59 ${timeout}= BuiltIn.Evaluate ${DEVICE_COUNT}*10
60 NetconfKeywords.Perform_Operation_On_Each_Device Deconfigure_Device timeout=${timeout}
61 [Teardown] Report_Failure_Due_To_Bug 4547
63 Check_Devices_Are_Deconfigured
64 [Documentation] Check there are no netconf connectors or other stuff related to the testtool devices.
65 ${timeout}= BuiltIn.Evaluate ${DEVICE_COUNT}*10
66 NetconfKeywords.Perform_Operation_On_Each_Device Check_Device_Deconfigured timeout=${timeout}
70 [Documentation] Setup everything needed for the test cases.
71 # Setup resources used by the suite.
72 RequestsLibrary.Create_Session operational http://${ODL_SYSTEM_IP}:${RESTCONFPORT}${OPERATIONAL_API} auth=${AUTH}
73 SSHLibrary.Set_Default_Configuration prompt=${TOOLS_SYSTEM_PROMPT}
74 SetupUtils.Setup_Utils_For_Setup_And_Teardown
75 NetconfKeywords.Setup_Netconf_Keywords
76 # Connect to the tools machine
77 SSHLibrary.Open_Connection ${TOOLS_SYSTEM_IP}
78 Utils.Flexible_Mininet_Login
79 # Deploy testtool on it
80 NetconfKeywords.Install_And_Start_Testtool device-count=${DEVICE_COUNT}
81 SSHLibrary.Put_File ${CURDIR}/../../../../tools/netconf_tools/getter.py
82 SSHLibrary.Put_File ${CURDIR}/../../../libraries/AuthStandalone.py
85 [Documentation] Teardown the test infrastructure, perform cleanup and release all resources.
86 Teardown_Netconf_Via_Restconf
87 RequestsLibrary.Delete_All_Sessions
88 NetconfKeywords.Stop_Testtool
91 [Arguments] ${current_name}
92 [Documentation] Operation for configuring the device.
93 KarafKeywords.Log_Message_To_Controller_Karaf Configuring device ${current_name} to Netconf
94 NetconfKeywords.Configure_Device_In_Netconf ${current_name} device_port=${current_port}
95 KarafKeywords.Log_Message_To_Controller_Karaf Device ${current_name} configured
98 [Arguments] ${current_name}
99 [Documentation] Operation for waiting until the device is connected.
100 KarafKeywords.Log_Message_To_Controller_Karaf Waiting for device ${current_name} to connect
101 NetconfKeywords.Wait_Device_Connected ${current_name} period=0.5s timeout=120s
102 KarafKeywords.Log_Message_To_Controller_Karaf Device ${current_name} connected
104 Read_Python_Tool_Operation_Result
105 [Arguments] ${number}
106 [Documentation] Read and process a report line emitted from the Python tool that corresponds to the device with the given number.
107 ${test}= SSHLibrary.Read_Until_Regexp \\n
108 ${test}= String.Split_String ${test} |
109 ${response}= Collections.Get_From_List ${test} 0
110 ${message}= Collections.Get_From_List ${test} 1
111 BuiltIn.Run_Keyword_If '${response}' == 'ERROR' Fail Error getting data: ${message}
112 ${start}= Collections.Get_From_List ${test} 1
113 ${stop}= Collections.Get_From_List ${test} 2
114 ${ellapsed}= Collections.Get_From_List ${test} 3
115 BuiltIn.Log DATA REQUEST RESULT: Device=${number} StartTime=${start} StopTime=${stop} EllapsedTime=${ellapsed}
116 ${data}= Collections.Get_From_List ${test} 4
117 ${expected}= BuiltIn.Set_Variable '<data xmlns="${ODL_NETCONF_NAMESPACE}"></data>'
118 BuiltIn.Should_Be_Equal_As_Strings ${data} ${expected}
121 [Arguments] ${current_name}
122 [Documentation] Operation for deconfiguring the device.
123 KarafKeywords.Log_Message_To_Controller_Karaf Deconfiguring device ${current_name}
124 NetconfKeywords.Remove_Device_From_Netconf ${current_name}
125 KarafKeywords.Log_Message_To_Controller_Karaf Device ${current_name} deconfigured
127 Check_Device_Deconfigured
128 [Arguments] ${current_name}
129 [Documentation] Operation for making sure the device is really deconfigured.
130 KarafKeywords.Log_Message_To_Controller_Karaf Waiting for device ${current_name} to disappear
131 NetconfKeywords.Wait_Device_Fully_Removed ${current_name} period=0.5s timeout=120s
132 KarafKeywords.Log_Message_To_Controller_Karaf Device ${current_name} removed