Migrate Get Requests invocations(libraries)
[integration/test.git] / csit / suites / openflowplugin / Performance_Restconf / 100K_Flows_100DPN_1Node_Perf_Test.robot
1 *** Settings ***
2 Documentation       Test suite for 3Node Cluster - 100K flows and 10 DPNs in Cluster Scale Up scenario
3
4 Library             DateTime
5 Library             OperatingSystem
6 Library             ../../../libraries/ScaleClient.py
7 Resource            ../../../libraries/MininetKeywords.robot
8 Resource            ../../../libraries/ClusterManagement.robot
9 Resource            ../../../libraries/ClusterOpenFlow.robot
10 Resource            ../../../variables/openflowplugin/Variables.robot
11 Variables           ../../../variables/Variables.py
12
13 Suite Setup         ClusterManagement Setup
14 Suite Teardown      Delete All Sessions
15
16
17 *** Variables ***
18 ${operation_timeout}    250s
19 ${oper_ds_timeout}      400s
20 ${mininet_timeout}      120s
21 ${flow_count}           100000
22 ${switch_count}         100
23 ${swspread}             linear
24 ${tabspread}            first
25 ${fpr}                  200
26 ${nrthreads}            5
27 ${karaf_log_level}      log:set WARN
28 ${rate_results_file}    rate.csv
29 ${time_results_file}    time.csv
30
31
32 *** Test Cases ***
33 Initialize Variables
34     [Documentation]    Initialize variables and set the log.
35     Wait Until Keyword Succeeds    3x    3s    ClusterManagement.Run_Karaf_Command_On_List_Or_All    ${karaf_log_level}
36     ${controller_list}=    Create List    ${ODL_SYSTEM_IP}
37     Set Suite Variable    ${controller_list}
38     ${flows}    ${notes}=    ScaleClient.Generate New Flow Details
39     ...    flows=${flow_count}
40     ...    switches=${switch_count}
41     ...    swspread=${swspread}
42     ...    tabspread=${tabspread}
43     Set Suite Variable    ${flows}
44
45 Start Mininet And verify Switches
46     [Documentation]    Start mininet.
47     ${mininet_conn_id}=    MininetKeywords.Start Mininet Single Controller
48     ...    ${TOOLS_SYSTEM_IP}
49     ...    ${ODL_SYSTEM_IP}
50     ...    --topo linear,${switch_count}
51     BuiltIn.Set Suite Variable    ${mininet_conn_id}
52     BuiltIn.Wait Until Keyword Succeeds
53     ...    ${mininet_timeout}
54     ...    2s
55     ...    ClusterOpenFlow.Verify_Switch_Connections_Running_On_Member
56     ...    ${switch_count}
57     ...    1
58
59 Add Bulk Flow Via REST
60     [Documentation]    100K Flows (1K Flows per DPN) in 100 DPN added and verify it gets applied.
61     ${config_datastore_write_start_time}=    DateTime.Get Current Date    result_format=timestamp
62     ScaleClient.Configure Flows Bulk
63     ...    flow_details=${flows}
64     ...    controllers=${controller_list}
65     ...    nrthreads=${nrthreads}
66     ...    fpr=${fpr}
67     ${config_datastore_write_end_time}=    DateTime.Get Current Date    result_format=timestamp
68     ${config_datastore_write_time}=    DateTime.Subtract Date From Date
69     ...    ${config_datastore_write_end_time}
70     ...    ${config_datastore_write_start_time}
71     ${config_datastore_write_rate}=    BuiltIn.Evaluate    ${flow_count} / ${config_datastore_write_time}
72     BuiltIn.Set Suite Variable    ${config_datastore_write_start_time}
73     BuiltIn.Log to console    ${\n}
74     BuiltIn.Log to console    The config_datastore_write_time is ${config_datastore_write_time}
75     BuiltIn.Log to console    The config_datastore_write_rate is ${config_datastore_write_rate}
76     BuiltIn.Set Suite Variable    ${config_datastore_write_time}
77     BuiltIn.Set Suite Variable    ${config_datastore_write_rate}
78
79 Verify Flows In Switch
80     [Documentation]    Verify 100K flows are installed in 100 switches.
81     ${Mininet_write_start_time}=    DateTime.Get Current Date    result_format=timestamp
82     MininetKeywords.Verify Aggregate Flow From Mininet Session
83     ...    ${mininet_conn_id}
84     ...    ${flow_count}
85     ...    ${operation_timeout}
86     ${Mininet_write_end_time}=    DateTime.Get Current Date    result_format=timestamp
87     ${Mininet_write_time}=    DateTime.Subtract Date From Date
88     ...    ${Mininet_write_end_time}
89     ...    ${config_datastore_write_start_time}
90     ${Mininet_write_rate}=    BuiltIn.Evaluate    ${flow_count} / ${Mininet_write_time}
91     BuiltIn.Log to console    ${\n}
92     BuiltIn.Log to console    The Mininet_write_time is ${Mininet_write_time}
93     BuiltIn.Log to console    The Mininet_write_rate is ${Mininet_write_rate}
94     BuiltIn.Set Suite Variable    ${Mininet_write_time}
95     BuiltIn.Set Suite Variable    ${Mininet_write_rate}
96
97 Verify Flows In Oper DS
98     [Documentation]    Check Flows in Operational Datastore
99     BuiltIn.Wait Until Keyword Succeeds
100     ...    ${oper_ds_timeout}
101     ...    2s
102     ...    ClusterOpenFlow.Check_Flows_Operational_Datastore_On_Member
103     ...    ${flow_count}
104     ...    1
105     ${oper_datastore_write_end_time}=    DateTime.Get Current Date    result_format=timestamp
106     ${oper_datastore_write_time}=    DateTime.Subtract Date From Date
107     ...    ${oper_datastore_write_end_time}
108     ...    ${config_datastore_write_start_time}
109     ${oper_datastore_write_rate}=    BuiltIn.Evaluate    ${flow_count} / ${oper_datastore_write_time}
110     BuiltIn.Log to console    ${\n}
111     BuiltIn.Log to console    The operational_datastore_write_time is ${oper_datastore_write_time}
112     BuiltIn.Log to console    The operational_datastore_write_rate is ${oper_datastore_write_rate}
113     BuiltIn.Set Suite Variable    ${oper_datastore_write_time}
114     BuiltIn.Set Suite Variable    ${oper_datastore_write_rate}
115
116 Stop Mininet And Verify
117     [Documentation]    Stop mininet and exit connection.
118     MininetKeywords.Stop Mininet And Exit    ${mininet_conn_id}
119     BuiltIn.Wait Until Keyword Succeeds
120     ...    ${mininet_timeout}
121     ...    2s
122     ...    ClusterOpenFlow.Verify_Switch_Connections_Running_On_Member
123     ...    0
124     ...    1
125
126 Delete All Flows
127     [Documentation]    100K Flows deleted and verify.
128     ${config_datastore_delete_start_time}=    DateTime.Get Current Date    result_format=timestamp
129     ClusterManagement.Delete From Member    ${RFC8040_NODES_API}    1
130     ${config_datastore_delete_end_time}=    Get Current Date    result_format=timestamp
131     ${config_datastore_delete_time}=    Subtract Date From Date
132     ...    ${config_datastore_delete_end_time}
133     ...    ${config_datastore_delete_start_time}
134     ${config_datastore_delete_rate}=    Evaluate    ${flow_count} / ${config_datastore_delete_time}
135     BuiltIn.Log to console    ${\n}
136     BuiltIn.Log to console    The config_datastore_delete_time is ${config_datastore_delete_time}
137     BuiltIn.Log to console    The config_datastore_delete_rate is ${config_datastore_delete_rate}
138     BuiltIn.Set Suite Variable    ${config_datastore_delete_time}
139     BuiltIn.Set Suite Variable    ${config_datastore_delete_rate}
140
141 Log Results And Determine Status
142     [Documentation]    Log results for plotting.
143     OperatingSystem.Append To File    ${rate_results_file}    Config DS,OVS Switch,Operational DS\n
144     OperatingSystem.Append To File
145     ...    ${rate_results_file}
146     ...    ${config_datastore_write_rate},${Mininet_write_rate},${oper_datastore_write_rate}\n
147     OperatingSystem.Append To File    ${time_results_file}    Config DS,OVS Switch,Operational DS\n
148     OperatingSystem.Append To File
149     ...    ${time_results_file}
150     ...    ${config_datastore_write_time},${Mininet_write_time},${oper_datastore_write_time}\n