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