New OpenFlow REST perf test
[integration/test.git] / csit / suites / openflowplugin / Performance_Bulkomatic / 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 Suite Setup       ClusterManagement Setup
4 Suite Teardown    Delete All Sessions
5 Library           DateTime
6 Library           OperatingSystem
7 Resource          ../../../libraries/BulkomaticKeywords.robot
8 Resource          ../../../libraries/MininetKeywords.robot
9 Resource          ../../../libraries/ClusterManagement.robot
10 Resource          ../../../libraries/ClusterOpenFlow.robot
11 Variables         ../../../variables/Variables.py
12
13 *** Variables ***
14 ${operation_timeout}    250s
15 ${oper_ds_timeout}    400s
16 ${mininet_timeout}    120s
17 ${flow_count_per_switch}    1000
18 ${switch_count}    100
19 ${karaf_log_level}    log:set ERROR
20 ${orig_json_config_add}    sal_add_bulk_flow_config.json
21 ${orig_json_config_get}    sal_get_bulk_flow_config.json
22 ${orig_json_config_del}    sal_del_bulk_flow_config.json
23 ${rate_results_file}    rate.csv
24 ${time_results_file}    time.csv
25
26 *** Test Cases ***
27 Initialize Variables
28     [Documentation]    Initialize Variables and set the log.
29     Wait Until Keyword Succeeds    3x    3s    ClusterManagement.Run_Karaf_Command_On_List_Or_All    ${karaf_log_level}
30     ${flow_count_after_add}=    BuiltIn.Evaluate    ${flow_count_per_switch} * ${switch_count}
31     BuiltIn.Set Suite Variable    ${flow_count_after_add}
32     ${temp_json_config_add}    BulkomaticKeywords.Set DPN And Flow Count In Json Add    ${orig_json_config_add}    ${switch_count}    ${flow_count_per_switch}
33     ${temp_json_config_get}    BulkomaticKeywords.Set DPN And Flow Count In Json Get    ${orig_json_config_get}    ${switch_count}    ${flow_count_after_add}
34     ${temp_json_config_del}    BulkomaticKeywords.Set DPN And Flow Count In Json Del    ${orig_json_config_del}    ${switch_count}    ${flow_count_per_switch}
35     BuiltIn.Set Suite Variable    ${temp_json_config_add}
36     BuiltIn.Set Suite Variable    ${temp_json_config_get}
37     BuiltIn.Set Suite Variable    ${temp_json_config_del}
38
39 Start Mininet And verify Switches
40     [Documentation]    Start mininet.
41     ${mininet_conn_id}=    MininetKeywords.Start Mininet Single Controller    ${TOOLS_SYSTEM_IP}    ${ODL_SYSTEM_IP}    --topo linear,${switch_count} --switch ovsk,protocols=OpenFlow13
42     BuiltIn.Set Suite Variable    ${mininet_conn_id}
43     BuiltIn.Wait Until Keyword Succeeds    ${mininet_timeout}    2s    ClusterOpenFlow.Verify_Switch_Connections_Running_On_Member    ${switch_count}    1
44
45 Add Bulk Flow
46     [Documentation]    100K Flows (1K Flows per DPN) in 100 DPN added and verify it gets applied.
47     ${config_datastore_write_start_time}=    DateTime.Get Current Date    result_format=timestamp
48     BulkomaticKeywords.Add Bulk Flow In Node    ${temp_json_config_add}    1    ${operation_timeout}
49     ${config_datastore_write_end_time}=    DateTime.Get Current Date    result_format=timestamp
50     ${config_datastore_write_time}=    DateTime.Subtract Date From Date    ${config_datastore_write_end_time}    ${config_datastore_write_start_time}
51     ${config_datastore_write_rate}=    BuiltIn.Evaluate    ${flow_count_after_add} / ${config_datastore_write_time}
52     BuiltIn.Set Suite Variable    ${config_datastore_write_start_time}
53     BuiltIn.Log to console    ${\n}
54     BuiltIn.Log to console    The config_datastore_write_time is ${config_datastore_write_time}
55     BuiltIn.Log to console    The config_datastore_write_rate is ${config_datastore_write_rate}
56     BuiltIn.Set Suite Variable    ${config_datastore_write_time}
57     BuiltIn.Set Suite Variable    ${config_datastore_write_rate}
58
59 Verify Flows In Switch
60     [Documentation]    Verify 100K flows are installed in 100 switches.
61     ${Mininet_write_start_time}=    DateTime.Get Current Date    result_format=timestamp
62     MininetKeywords.Verify Aggregate Flow From Mininet Session    ${mininet_conn_id}    ${flow_count_after_add}    ${operation_timeout}
63     ${Mininet_write_end_time}=    DateTime.Get Current Date    result_format=timestamp
64     ${Mininet_write_time}=    DateTime.Subtract Date From Date    ${Mininet_write_end_time}    ${config_datastore_write_start_time}
65     ${Mininet_write_rate}=    BuiltIn.Evaluate    ${flow_count_after_add} / ${Mininet_write_time}
66     BuiltIn.Log to console    ${\n}
67     BuiltIn.Log to console    The Mininet_write_time is ${Mininet_write_time}
68     BuiltIn.Log to console    The Mininet_write_rate is ${Mininet_write_rate}
69     BuiltIn.Set Suite Variable    ${Mininet_write_time}
70     BuiltIn.Set Suite Variable    ${Mininet_write_rate}
71
72 Verify Flows In Oper DS
73     [Documentation]    Check Flows in Operational Datastore
74     BuiltIn.Wait Until Keyword Succeeds    ${oper_ds_timeout}    2s    ClusterOpenFlow.Check_Flows_Operational_Datastore_On_Member    ${flow_count_after_add}    1
75     ${oper_datastore_write_end_time}=    DateTime.Get Current Date    result_format=timestamp
76     ${oper_datastore_write_time}=    DateTime.Subtract Date From Date    ${oper_datastore_write_end_time}    ${config_datastore_write_start_time}
77     ${oper_datastore_write_rate}=    BuiltIn.Evaluate    ${flow_count_after_add} / ${oper_datastore_write_time}
78     BuiltIn.Log to console    ${\n}
79     BuiltIn.Log to console    The operational_datastore_write_time is ${oper_datastore_write_time}
80     BuiltIn.Log to console    The operational_datastore_write_rate is ${oper_datastore_write_rate}
81     BuiltIn.Set Suite Variable    ${oper_datastore_write_time}
82     BuiltIn.Set Suite Variable    ${oper_datastore_write_rate}
83
84 Stop Mininet And Verify
85     [Documentation]    Stop mininet and exit connection.
86     MininetKeywords.Stop Mininet And Exit    ${mininet_conn_id}
87     BuiltIn.Wait Until Keyword Succeeds    ${mininet_timeout}    2s    ClusterOpenFlow.Verify_Switch_Connections_Running_On_Member    0    1
88
89 Delete All Flows
90     [Documentation]    100K Flows deleted and verify.
91     ${config_datastore_delete_start_time}=    DateTime.Get Current Date    result_format=timestamp
92     BulkomaticKeywords.Delete Bulk Flow In Node    ${temp_json_config_del}    1    ${operation_timeout}
93     ${config_datastore_delete_end_time}=    Get Current Date    result_format=timestamp
94     ${config_datastore_delete_time}=    Subtract Date From Date    ${config_datastore_delete_end_time}    ${config_datastore_delete_start_time}
95     ${config_datastore_delete_rate}=    Evaluate    ${flow_count_after_add} / ${config_datastore_delete_time}
96     BuiltIn.Log to console    ${\n}
97     BuiltIn.Log to console    The config_datastore_delete_time is ${config_datastore_delete_time}
98     BuiltIn.Log to console    The config_datastore_delete_rate is ${config_datastore_delete_rate}
99     BuiltIn.Set Suite Variable    ${config_datastore_delete_time}
100     BuiltIn.Set Suite Variable    ${config_datastore_delete_rate}
101
102 Log Results And Determine Status
103     [Documentation]    Log results for plotting.
104     OperatingSystem.Append To File    ${rate_results_file}    Config DS,OVS Switch,Operational DS\n
105     OperatingSystem.Append To File    ${rate_results_file}    ${config_datastore_write_rate},${Mininet_write_rate},${oper_datastore_write_rate}\n
106     OperatingSystem.Append To File    ${time_results_file}    Config DS,OVS Switch,Operational DS\n
107     OperatingSystem.Append To File    ${time_results_file}    ${config_datastore_write_time},${Mininet_write_time},${oper_datastore_write_time}\n