Add auth key for 0.0.0.0/0 in LISP perf tests
[integration/test.git] / csit / suites / lispflowmapping / performance / 010_Southbound_MapRequest.robot
1 *** Settings ***
2 Documentation     LISP southbound performance tests
3 Suite Setup       Prepare Environment
4 Suite Teardown    Destroy Environment
5 Library           Collections
6 Library           DateTime
7 Library           OperatingSystem
8 Library           RequestsLibrary
9 Library           String
10 Resource          ../../../libraries/Utils.robot
11 Resource          ../../../libraries/LISPFlowMapping.robot
12 Variables         ../../../variables/Variables.py
13
14 *** Variables ***
15 ${MAPPINGS}       10000
16 ${LISP_SCAPY}     https://raw.githubusercontent.com/intouch/py-lispnetworking/master/lisp.py
17 ${TOOLS_DIR}      ${CURDIR}/../../../../tools/odl-lispflowmapping-performance-tests/
18 ${PCAP_CREATOR}    ${TOOLS_DIR}/create_lisp_control_plane_pcap.py
19 ${MAPPING_BLASTER}    ${TOOLS_DIR}/mapping_blaster.py
20 ${REPLAY_PPS}     100000
21 ${REPLAY_CNT}     1000
22 ${REPLAY_FILE_MREQ}    encapsulated-map-requests-sequential.pcap
23 ${REPLAY_FILE_MREG}    map-registers-sequential.pcap
24 ${RPCS_RESULTS_FILE}    rpcs.csv
25 ${PPS_RESULTS_FILE}    pps.csv
26
27 *** Test Cases ***
28 Add Simple IPv4 Mappings
29     ${start_date}=    Get Current Date
30     Run Process With Logging And Status Check    ${MAPPING_BLASTER}    --host    ${ODL_SYSTEM_IP}    --mappings    ${MAPPINGS}
31     ${end_date}=    Get Current Date
32     ${add_seconds}=    Subtract Date From Date    ${end_date}    ${start_date}
33     Log    ${add_seconds}
34     Set Suite Variable    ${add_seconds}
35
36 Generate Map-Request Test Traffic
37     Reset Stats
38     ${result}=    Run Process With Logging And Status Check    /usr/local/bin/udpreplay    --pps    ${REPLAY_PPS}    --repeat    ${REPLAY_CNT}
39     ...    --host    ${ODL_SYSTEM_IP}    --port    4342    ${REPLAY_FILE_MREQ}
40     ${partial}=    Fetch From Left    ${result.stdout}    s =
41     Log    ${partial}
42     ${get_seconds_mreq}=    Fetch From Right    ${partial}    ${SPACE}
43     ${get_seconds_mreq}=    Convert To Number    ${get_seconds_mreq}
44     Log    ${get_seconds_mreq}
45     Set Suite Variable    ${get_seconds_mreq}
46
47 Generate Map-Register Test Traffic
48     Allow Unauthenticated Map-Registers
49     ${result}=    Run Process With Logging And Status Check    /usr/local/bin/udpreplay    --pps    ${REPLAY_PPS}    --repeat    ${REPLAY_CNT}
50     ...    --host    ${ODL_SYSTEM_IP}    --port    4342    ${REPLAY_FILE_MREG}
51     ${partial}=    Fetch From Left    ${result.stdout}    s =
52     Log    ${partial}
53     ${get_seconds_mreg}=    Fetch From Right    ${partial}    ${SPACE}
54     ${get_seconds_mreg}=    Convert To Number    ${get_seconds_mreg}
55     Log    ${get_seconds_mreg}
56     Set Suite Variable    ${get_seconds_mreg}
57
58 Compute And Export Results
59     ${rpcs}=    Evaluate    ${MAPPINGS}/${add_seconds}
60     Log    ${rpcs}
61     Create File    ${RPCS_RESULTS_FILE}    store/s\n
62     Append To File    ${RPCS_RESULTS_FILE}    ${rpcs}\n
63     ${tx_mrep}=    Get Transmitted Map-Requests Stats
64     ${pps_mrep}=    Evaluate    ${tx_mrep}/${get_seconds_mreq}
65     Log    ${pps_mrep}
66     Create File    ${PPS_RESULTS_FILE}    replies/s,notifies/s\n
67     ${tx_mnot}=    Get Transmitted Map-Notifies Stats
68     ${pps_mnot}=    Evaluate    ${tx_mnot}/${get_seconds_mreg}
69     Log    ${pps_mnot}
70     Append To File    ${PPS_RESULTS_FILE}    ${pps_mrep},${pps_mnot}\n
71
72 *** Keywords ***
73 Reset Stats
74     ${resp}=    RequestsLibrary.Post Request    session    ${LFM_SB_RPC_API}:reset-stats
75     Log    ${resp.content}
76     Should Be Equal As Strings    ${resp.status_code}    200
77
78 Allow Unauthenticated Map-Registers
79     ${add_key}=    OperatingSystem.Get File    ${JSON_DIR}/rpc_add-key_default.json
80     Post Log Check    ${LFM_RPC_API}:add-key    ${add_key}
81
82 Get Transmitted Map-Requests Stats
83     ${resp}=    RequestsLibrary.Post Request    session    ${LFM_SB_RPC_API}:get-stats
84     Log    ${resp.content}
85     ${output}=    Get From Dictionary    ${resp.json()}    output
86     ${stats}=    Get From Dictionary    ${output}    control-message-stats
87     ${ctrlmsg}=    Get From Dictionary    ${stats}    control-message
88     ${replies}=    Get From List    ${ctrlmsg}    2
89     ${tx_mrep}=    Get From Dictionary    ${replies}    tx-count
90     ${tx_mrep}=    Convert To Integer    ${tx_mrep}
91     Log    ${tx_mrep}
92     [Return]    ${tx_mrep}
93
94 Get Transmitted Map-Notifies Stats
95     ${resp}=    RequestsLibrary.Post Request    session    ${LFM_SB_RPC_API}:get-stats
96     Log    ${resp.content}
97     ${output}=    Get From Dictionary    ${resp.json()}    output
98     ${stats}=    Get From Dictionary    ${output}    control-message-stats
99     ${ctrlmsg}=    Get From Dictionary    ${stats}    control-message
100     ${notifies}=    Get From List    ${ctrlmsg}    4
101     ${tx_mnot}=    Get From Dictionary    ${notifies}    tx-count
102     ${tx_mnot}=    Convert To Integer    ${tx_mnot}
103     Log    ${tx_mnot}
104     [Return]    ${tx_mnot}
105
106 Prepare Environment
107     Create Session    session    http://${ODL_SYSTEM_IP}:${RESTCONFPORT}    auth=${AUTH}    headers=${HEADERS}
108     Run Process With Logging And Status Check    wget    -P    ${TOOLS_DIR}    ${LISP_SCAPY}
109     Run Process With Logging And Status Check    ${PCAP_CREATOR}    --requests    ${MAPPINGS}
110
111 Destroy Environment
112     Delete All Sessions
113     Remove File    ${TOOLS_DIR}/lisp.py*
114     Remove File    ${REPLAY_FILE_MREQ}
115     Remove File    ${REPLAY_FILE_MREG}