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