2 Documentation Test for measuring execution time of MD-SAL DataStore operations in cluster.
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
10 ... This test suite requires odl-restconf and odl-clustering-test-app modules.
11 ... The script cluster_rest_script.py is used for generating requests for
12 ... operations on people, car and car-people DataStore test models.
13 ... (see the https://wiki.opendaylight.org/view/MD-SAL_Clustering_Test_Plan)
16 ... https://bugs.opendaylight.org/show_bug.cgi?id=4220
18 Library RequestsLibrary
21 Resource ../../../libraries/CarPeople.robot
22 Resource ../../../libraries/ClusterManagement.robot
23 Resource ../../../libraries/RemoteBash.robot
24 Resource ../../../libraries/SetupUtils.robot
25 Resource ../../../libraries/SSHKeywords.robot
26 Resource ../../../libraries/TemplatedRequests.robot
27 Resource ../../../libraries/Utils.robot
28 Variables ../../../variables/Variables.py
30 Suite Setup Start Suite
31 Suite Teardown Stop Suite
32 Test Setup SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
36 ${ITEM_COUNT} ${10000}
37 ${ITEM_BATCH} ${10000}
38 ${PROCEDURE_TIMEOUT} 5m
39 ${threads} 6 # threads are assigned to cluster nodes in round robin way
41 ... python cluster_rest_script.py --port ${RESTCONFPORT} add --itemtype car --itemcount ${ITEM_COUNT} --ipr ${ITEM_BATCH}
43 ... python cluster_rest_script.py --port ${RESTCONFPORT} add-rpc --itemtype people --itemcount ${ITEM_COUNT} --threads 6
45 ... python cluster_rest_script.py --port ${RESTCONFPORT} add-rpc --itemtype car-people --itemcount ${ITEM_COUNT} --threads 6
46 ${carurl} /restconf/config/car:cars
47 ${peopleurl} /restconf/config/people:people
48 ${carpeopleurl} /restconf/config/car-people:car-people
49 ${CONTROLLER_LOG_LEVEL} INFO
50 ${TOOL_OPTIONS} ${EMPTY}
55 [Documentation] Request to add ${ITEM_COUNT} cars (timeout in ${PROCEDURE_TIMEOUT}).
56 ${car_leader_ip}= ClusterManagement.Resolve_IP_Address_For_Member member_index=${car_leader_index}
57 Start Tool ${addcarcmd} --host ${car_leader_ip} ${TOOL_OPTIONS}
58 Wait Until Tool Finish ${PROCEDURE_TIMEOUT}
61 [Documentation] Store logs and verify result
63 Store File To Workspace cluster_rest_script.log cluster_rest_script_add_cars.log
64 ${rsp}= RequestsLibrary.Get Request ${car_leader_session} ${carurl} headers=${ACCEPT_XML}
65 ${count}= XML.Get Element Count ${rsp.content} xpath=car-entry
66 Should Be Equal As Numbers ${count} ${ITEM_COUNT}
69 [Documentation] Request to add ${ITEM_COUNT} people (timeout in ${PROCEDURE_TIMEOUT}).
70 Start Tool ${addpeoplecmd} --host ${ODL_SYSTEM_1_IP},${ODL_SYSTEM_2_IP},${ODL_SYSTEM_3_IP} ${TOOL_OPTIONS}
71 Wait Until Tool Finish ${PROCEDURE_TIMEOUT}
74 [Documentation] Store logs and verify result
76 Store File To Workspace cluster_rest_script.log cluster_rest_script_add_people.log
77 ${rsp}= RequestsLibrary.Get Request ${car_leader_session} ${peopleurl} headers=${ACCEPT_XML}
78 ${count}= XML.Get Element Count ${rsp.content} xpath=person
79 Should Be Equal As Numbers ${count} ${ITEM_COUNT}
82 [Documentation] Request to purchase ${ITEM_COUNT} cars (timeout in ${PROCEDURE_TIMEOUT}).
83 Start Tool ${purchasecmd} --host ${ODL_SYSTEM_1_IP},${ODL_SYSTEM_2_IP},${ODL_SYSTEM_3_IP} ${TOOL_OPTIONS}
84 Wait Until Tool Finish ${PROCEDURE_TIMEOUT}
87 [Documentation] Store logs and verify result
89 ${target_file}= Utils.Get_Log_File_Name cluster_rest_script.log
90 Store File To Workspace cluster_rest_script.log ${target_file}
91 Wait Until Keyword Succeeds ${PROCEDURE_TIMEOUT} 1 Purchase Is Completed ${ITEM_COUNT}
94 [Documentation] Remove cars from the datastore
95 ${rsp}= RequestsLibrary.Delete Request ${car_leader_session} ${carurl}
96 Should Be Equal As Numbers 200 ${rsp.status_code}
97 ${rsp}= RequestsLibrary.Get Request ${car_leader_session} ${carurl}
98 Should Contain ${DELETED_STATUS_CODES} ${rsp.status_code}
101 [Documentation] Remove people from the datastore
102 ${rsp}= RequestsLibrary.Delete Request ${car_leader_session} ${peopleurl}
103 Should Be Equal As Numbers 200 ${rsp.status_code}
104 ${rsp}= RequestsLibrary.Get Request ${car_leader_session} ${peopleurl}
105 Should Contain ${DELETED_STATUS_CODES} ${rsp.status_code}
108 [Documentation] Remove car-people entries from the datastore
109 ${rsp}= RequestsLibrary.Delete Request ${car_leader_session} ${carpeopleurl}
110 Should Be Equal As Numbers 200 ${rsp.status_code}
111 ${rsp}= RequestsLibrary.Get Request ${car_leader_session} ${carpeopleurl}
112 Should Contain ${DELETED_STATUS_CODES} ${rsp.status_code}
117 [Documentation] Suite setup keyword
118 SetupUtils.Setup_Utils_For_Setup_And_Teardown
119 ClusterManagement.ClusterManagement_Setup
120 CarPeople.Set_Variables_For_Shard shard_name=car
121 KarafKeywords.Execute_Controller_Karaf_Command_On_Background log:set ${CONTROLLER_LOG_LEVEL}
122 ${mininet_conn_id}= SSHLibrary.Open Connection
123 ... ${TOOLS_SYSTEM_IP}
124 ... prompt=${DEFAULT_LINUX_PROMPT}
126 Builtin.Set Suite Variable ${mininet_conn_id}
127 SSHKeywords.Flexible Mininet Login ${TOOLS_SYSTEM_USER}
128 SSHLibrary.Put File ${CURDIR}/../../../../tools/odl-mdsal-clustering-tests/scripts/cluster_rest_script.py .
129 ${stdout} ${stderr} ${rc}= SSHLibrary.Execute Command ls return_stdout=True return_stderr=True
133 [Documentation] Suite teardown keyword
134 SSHLibrary.Close All Connections
135 RequestsLibrary.Delete All Sessions
138 [Documentation] Start the tool ${command} ${tool_opt}
139 [Arguments] ${command} ${tool_opt}
140 BuiltIn.Log ${command}
141 ${output}= SSHLibrary.Write ${command} ${tool_opt}
142 BuiltIn.Log ${output}
144 Wait_Until_Tool_Finish
145 [Documentation] Wait ${timeout} for the tool exit.
146 [Arguments] ${timeout}
147 BuiltIn.Wait Until Keyword Succeeds ${timeout} 1s SSHLibrary.Read Until Prompt
149 Purchase Is Completed
150 [Documentation] Check purchase of ${item_count} is completed.
151 [Arguments] ${item_count}
152 ${rsp}= RequestsLibrary.Get Request ${car_leader_session} ${carpeopleurl} headers=${ACCEPT_XML}
153 ${count}= XML.Get Element Count ${rsp.content} xpath=car-person
154 Should Be Equal As Numbers ${count} ${item_count}
157 [Documentation] Stop the tool if still running.
158 RemoteBash.Write_Bare_Ctrl_C
159 ${output}= SSHLibrary.Read delay=1s
160 BuiltIn.Log ${output}
162 Store_File_To_Workspace
163 [Documentation] Store the ${source_file_name} to the workspace as ${target_file_name}.
164 [Arguments] ${source_file_name} ${target_file_name}
165 ${output_log}= SSHLibrary.Execute_Command cat ${source_file_name}
166 BuiltIn.Log ${output_log}
167 Create File ${target_file_name} ${output_log}