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