Refactor performance suites to use keyword timeouts
[integration/test.git] / csit / suites / netconf / restperfclient / performance.robot
index fb77e16382bd414e4922958d72c1f2339d70b81d..9185e91622a1f4559afc2d653186db07f1db8721 100644 (file)
@@ -28,15 +28,15 @@ Resource          ${CURDIR}/../../../libraries/KarafKeywords.robot
 Resource          ${CURDIR}/../../../libraries/NetconfKeywords.robot
 Resource          ${CURDIR}/../../../libraries/NetconfViaRestconf.robot
 Resource          ${CURDIR}/../../../libraries/NexusKeywords.robot
+Resource          ${CURDIR}/../../../libraries/RestPerfClient.robot
 Resource          ${CURDIR}/../../../libraries/SetupUtils.robot
 Resource          ${CURDIR}/../../../libraries/Utils.robot
 Variables         ${CURDIR}/../../../variables/Variables.py
 
 *** Variables ***
-${DIRECTORY_WITH_CRUD_TEMPLATES}    ${CURDIR}/../../../variables/netconf/CRUD
-${DIRECTORY_WITH_TEMPLATE_FOLDERS}    ${CURDIR}/../../../variables/netconf/RestPerfClient
 ${DEVICE_NAME}    ${FIRST_TESTTOOL_PORT}-sim-device
 ${REQUEST_COUNT}    65536
+${directory_with_crud_templates}    ${CURDIR}/../../../variables/netconf/CRUD
 
 *** Test Cases ***
 Start_Testtool
@@ -56,58 +56,49 @@ Wait_For_Device_To_Become_Connected
 Create_Device_Data
     [Documentation]    Send some sample test data into the device and check that the request went OK.
     ${template_as_string}=    BuiltIn.Set_Variable    {'DEVICE_NAME': '${DEVICE_NAME}'}
-    NetconfViaRestconf.Post_Xml_Template_Folder_Via_Restconf    ${DIRECTORY_WITH_CRUD_TEMPLATES}${/}cars    ${template_as_string}
+    NetconfViaRestconf.Post_Xml_Template_Folder_Via_Restconf    ${directory_with_crud_templates}${/}cars    ${template_as_string}
 
-Deploy_And_Run_RestPerfClient
+Run_Restperfclient
     [Documentation]    Deploy and execute restperfclient, asking it to send the specified amount of requests to the netconf connector of the device.
-    SSHLibrary.Switch_Connection    ${restperfclient}
-    SSHLibrary.Put_File    ${CURDIR}/../../../variables/netconf/RestPerfClient/request1.json
-    ${filename}=    NexusKeywords.Deploy_Test_Tool    netconf    netconf-testtool    rest-perf-client
-    ${timeout}=    BuiltIn.Evaluate    ${REQUEST_COUNT}/100+10
-    SSHLibrary.Set_Client_Configuration    timeout=${timeout}
-    ${options}=    BuiltIn.Set_Variable    --ip ${ODL_SYSTEM_IP} --port ${RESTCONFPORT} --edits ${REQUEST_COUNT}
-    ${options}=    BuiltIn.Set_Variable    ${options} --destination /restconf/config/network-topology:network-topology/topology/topology-netconf/node/${DEVICE_NAME}/yang-ext:mount/car:cars
-    ${options}=    BuiltIn.Set_Variable    ${options} --edit-content request1.json
-    ${options}=    BuiltIn.Set_Variable    ${options} --auth ${ODL_RESTCONF_USER} ${ODL_RESTCONF_PASSWORD}
-    ${command}    BuiltIn.Set_Variable    java -Xmx1G -XX:MaxPermSize=256M -jar ${filename} ${options}
-    BuiltIn.Log    Running restperfclient: ${command}
-    ${restperfclientlog}=    Utils.Get_Log_File_Name    restperfclient
-    BuiltIn.Set_Suite_Variable    ${restperfclientlog}    ${restperfclientlog}
-    Execute_Command_Passes    ${command} >${restperfclientlog} 2>&1
-    SSHLibrary.Get_File    ${restperfclientlog}
-    ${result}=    SSHLibrary.Execute_Command    grep "FINISHED. Execution time:" ${restperfclientlog}
-    BuiltIn.Should_Not_Be_Equal    '${result}'    ''
+    ${url}=    BuiltIn.Set_Variable    /restconf/config/network-topology:network-topology/topology/topology-netconf/node/${DEVICE_NAME}/yang-ext:mount/car:cars
+    RestPerfClient.Invoke_Restperfclient    ${TESTTOOL_DEVICE_TIMEOUT}    ${url}    async=true
 
 Check_For_Failed_Requests
     [Documentation]    Make sure there are no failed requests in the restperfclient log.
     ...    This is a separate test case to distinguish between restperfclient
     ...    failure and failed requests. Failed requests are rejected because
     ...    we don't want to test performance of ODL rejecting our requests.
-    ${result}=    SSHLibrary.Execute_Command    grep "Request failed" ${restperfclientlog}
+    ${result}=    RestPerfClient.Grep_Restperfclient_Log    thread timed out
     BuiltIn.Should_Be_Equal    '${result}'    ''
-    ${result}=    SSHLibrary.Execute_Command    grep "Status code" ${restperfclientlog}
+    ${result}=    RestPerfClient.Grep_Restperfclient_Log    Request failed
+    BuiltIn.Should_Be_Equal    '${result}'    ''
+    ${result}=    RestPerfClient.Grep_Restperfclient_Log    Status code
     BuiltIn.Should_Be_Equal    '${result}'    ''
 
-Deconfigure_Device_From_Netconf
+Cleanup_And_Collect
     [Documentation]    Deconfigure the testtool device on Netconf connector.
     [Setup]    SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
+    RestPerfClient.Collect_From_Restperfclient
     NetconfKeywords.Remove_Device_From_Netconf    ${DEVICE_NAME}
 
 *** Keywords ***
 Setup_Everything
     [Documentation]    Setup everything needed for the test cases.
+    # Calculate and set the value of the timeout
+    ${value}=    BuiltIn.Evaluate    ${REQUEST_COUNT}/50+10
+    Utils.Set_User_Configurable_Variable_Default    TESTTOOL_DEVICE_TIMEOUT    ${value} s
     # Setup resources used by the suite.
     SetupUtils.Setup_Utils_For_Setup_And_Teardown
     NetconfKeywords.Setup_Netconf_Keywords
-    # Connect to the tools system (rest-perf-client)
-    ${restperfclient}=    SSHKeywords.Open_Connection_To_Tools_System
-    BuiltIn.Set_Suite_Variable    ${restperfclient}    ${restperfclient}
-    ${testtool}=    SSHLibrary.Get Connection
-    BuiltIn.Set_Suite_Variable    ${testtool}    ${testtool.index}
+    RestPerfClient.Setup_Restperfclient
+    # Connect to the tools system (testtool)
+    ${testtool}=    SSHKeywords.Open_Connection_To_Tools_System
+    BuiltIn.Set_Suite_Variable    ${testtool}    ${testtool}
 
 Teardown_Everything
     [Documentation]    Teardown the test infrastructure, perform cleanup and release all resources.
     Teardown_Netconf_Via_Restconf
     RequestsLibrary.Delete_All_Sessions
+    RestPerfClient.Teardown_Restperfclient
     SSHLibrary.Switch_Connection    ${testtool}
     BuiltIn.Run_Keyword_And_Ignore_Error    NetconfKeywords.Stop_Testtool