Include needed Assure_* keywords in BGP tests
[integration/test.git] / csit / suites / lispflowmapping / performance / 010_Southbound_MapRequest.robot
index ac512dafecb9cb6f2fbf633768831c0bc9c5c45e..96ba70d9fa2b3801f739a0593f620d3ee196cc7e 100644 (file)
 *** Settings ***
-Documentation     Test suite to determine the southbound Map-Request serving rate
+Documentation     LISP southbound performance tests
 Suite Setup       Prepare Environment
 Suite Teardown    Destroy Environment
 Library           Collections
+Library           DateTime
 Library           OperatingSystem
 Library           RequestsLibrary
 Library           String
 Resource          ../../../libraries/Utils.robot
+Resource          ../../../libraries/LISPFlowMapping.robot
 Variables         ../../../variables/Variables.py
 
 *** Variables ***
-${MAPPINGS}=          10000
-${LISP_SCAPY}         https://raw.githubusercontent.com/intouch/py-lispnetworking/master/lisp.py
-${TOOLS_DIR}          ${CURDIR}/../../../../tools/odl-lispflowmapping-performance-tests/
-${PCAP_CREATOR}       ${TOOLS_DIR}/create_map_request_pcap.py
+${MAPPINGS}       10000
+${LISP_SCAPY}     https://raw.githubusercontent.com/intouch/py-lispnetworking/master/lisp.py
+${TOOLS_DIR}      ${CURDIR}/../../../../tools/odl-lispflowmapping-performance-tests/
+${PCAP_CREATOR}    ${TOOLS_DIR}/create_lisp_control_plane_pcap.py
 ${MAPPING_BLASTER}    ${TOOLS_DIR}/mapping_blaster.py
-${REPLAY_PPS}         100000
-${REPLAY_CNT}         1000
-${REPLAY_FILE}        ${CURDIR}/encapsulated-map-requests-sequential.pcap
-${RESULTS_FILE}       pps.csv
+${REPLAY_PPS}     100000
+${REPLAY_CNT}     1000
+${REPLAY_FILE_MREQ}    encapsulated-map-requests-sequential.pcap
+${REPLAY_FILE_MREG}    map-registers-sequential.pcap
+${RPCS_RESULTS_FILE}    rpcs.csv
+${PPS_RESULTS_FILE}    pps.csv
 
 *** Test Cases ***
 Add Simple IPv4 Mappings
-    Run Process With Logging And Status Check    ${MAPPING_BLASTER}    --host    ${CONTROLLER}    --mappings    ${MAPPINGS}
+    ${start_date}=    Get Current Date
+    Run Process With Logging And Status Check    ${MAPPING_BLASTER}    --host    ${ODL_SYSTEM_IP}    --mappings    ${MAPPINGS}
+    ${end_date}=    Get Current Date
+    ${add_seconds}=    Subtract Date From Date    ${end_date}    ${start_date}
+    Log    ${add_seconds}
+    Set Suite Variable    ${add_seconds}
 
-Generate Test Traffic
+Generate Map-Request Test Traffic
     Reset Stats
-    ${result}=    Run Process With Logging And Status Check    /usr/local/bin/udpreplay    --pps    ${REPLAY_PPS}    --repeat    ${REPLAY_CNT}    --port    4342    ${REPLAY_FILE}
+    ${result}=    Run Process With Logging And Status Check    /usr/local/bin/udpreplay    --pps    ${REPLAY_PPS}    --repeat    ${REPLAY_CNT}
+    ...    --host    ${ODL_SYSTEM_IP}    --port    4342    ${REPLAY_FILE_MREQ}
     ${partial}=    Fetch From Left    ${result.stdout}    s =
     Log    ${partial}
-    ${seconds}=    Fetch From Right    ${partial}    ${SPACE}
-    ${seconds}=    Convert To Number    ${seconds}
-    Log    ${seconds}
-    Set Suite Variable    ${seconds}
+    ${get_seconds_mreq}=    Fetch From Right    ${partial}    ${SPACE}
+    ${get_seconds_mreq}=    Convert To Number    ${get_seconds_mreq}
+    Log    ${get_seconds_mreq}
+    Set Suite Variable    ${get_seconds_mreq}
 
-Compute And Export MapReply Rate
-    ${txmrep}=    Get Transmitted Map-Requests Stats
-    ${pps}=    Evaluate    ${txmrep}/${seconds}
-    Log    ${pps}
-    Create File    ${RESULTS_FILE}    replies/s\n
-    Append To File    ${RESULTS_FILE}    ${pps}\n
+Generate Map-Register Test Traffic
+    Allow Unauthenticated Map-Registers
+    ${result}=    Run Process With Logging And Status Check    /usr/local/bin/udpreplay    --pps    ${REPLAY_PPS}    --repeat    ${REPLAY_CNT}
+    ...    --host    ${ODL_SYSTEM_IP}    --port    4342    ${REPLAY_FILE_MREG}
+    ${partial}=    Fetch From Left    ${result.stdout}    s =
+    Log    ${partial}
+    ${get_seconds_mreg}=    Fetch From Right    ${partial}    ${SPACE}
+    ${get_seconds_mreg}=    Convert To Number    ${get_seconds_mreg}
+    Log    ${get_seconds_mreg}
+    Set Suite Variable    ${get_seconds_mreg}
+
+Compute And Export Results
+    ${rpcs}=    Evaluate    ${MAPPINGS}/${add_seconds}
+    Log    ${rpcs}
+    Create File    ${RPCS_RESULTS_FILE}    store/s\n
+    Append To File    ${RPCS_RESULTS_FILE}    ${rpcs}\n
+    ${tx_mrep}=    Get Transmitted Map-Requests Stats
+    ${pps_mrep}=    Evaluate    ${tx_mrep}/${get_seconds_mreq}
+    Log    ${pps_mrep}
+    Create File    ${PPS_RESULTS_FILE}    replies/s,notifies/s\n
+    ${tx_mnot}=    Get Transmitted Map-Notifies Stats
+    ${pps_mnot}=    Evaluate    ${tx_mnot}/${get_seconds_mreg}
+    Log    ${pps_mnot}
+    Append To File    ${PPS_RESULTS_FILE}    ${pps_mrep},${pps_mnot}\n
 
 *** Keywords ***
 Reset Stats
-    ${resp}=    RequestsLibrary.Post    session    ${LFM_SB_RPC_API}:reset-stats
+    ${resp}=    RequestsLibrary.Post Request    session    ${LFM_SB_RPC_API}:reset-stats
     Log    ${resp.content}
     Should Be Equal As Strings    ${resp.status_code}    200
 
+Allow Unauthenticated Map-Registers
+    ${add_key}=    OperatingSystem.Get File    ${JSON_DIR}/rpc_add-key_default.json
+    Post Log Check    ${LFM_RPC_API}:add-key    ${add_key}
+
 Get Transmitted Map-Requests Stats
-    ${resp}=    RequestsLibrary.Post    session    ${LFM_SB_RPC_API}:get-stats
+    ${resp}=    RequestsLibrary.Post Request    session    ${LFM_SB_RPC_API}:get-stats
+    Log    ${resp.content}
+    ${output}=    Get From Dictionary    ${resp.json()}    output
+    ${stats}=    Get From Dictionary    ${output}    control-message-stats
+    ${ctrlmsg}=    Get From Dictionary    ${stats}    control-message
+    ${replies}=    Get From List    ${ctrlmsg}    2
+    ${tx_mrep}=    Get From Dictionary    ${replies}    tx-count
+    ${tx_mrep}=    Convert To Integer    ${tx_mrep}
+    Log    ${tx_mrep}
+    [Return]    ${tx_mrep}
+
+Get Transmitted Map-Notifies Stats
+    ${resp}=    RequestsLibrary.Post Request    session    ${LFM_SB_RPC_API}:get-stats
     Log    ${resp.content}
-    ${output}=     Get From Dictionary    ${resp.json()}    output
-    ${stats}=      Get From Dictionary    ${output}         control-message-stats
-    ${ctrlmsg}=    Get From Dictionary    ${stats}          control-message
-    ${replies}=    Get From List          ${ctrlmsg}        2
-    ${txmrep}=     Get From Dictionary    ${replies}        tx-count
-    ${txmrep}=     Convert To Integer     ${txmrep}
-    Log    ${txmrep}
-    [Return]    ${txmrep}
+    ${output}=    Get From Dictionary    ${resp.json()}    output
+    ${stats}=    Get From Dictionary    ${output}    control-message-stats
+    ${ctrlmsg}=    Get From Dictionary    ${stats}    control-message
+    ${notifies}=    Get From List    ${ctrlmsg}    4
+    ${tx_mnot}=    Get From Dictionary    ${notifies}    tx-count
+    ${tx_mnot}=    Convert To Integer    ${tx_mnot}
+    Log    ${tx_mnot}
+    [Return]    ${tx_mnot}
 
 Prepare Environment
-    Create Session    session    http://${CONTROLLER}:${RESTCONFPORT}    auth=${AUTH}    headers=${HEADERS}
+    Create Session    session    http://${ODL_SYSTEM_IP}:${RESTCONFPORT}    auth=${AUTH}    headers=${HEADERS}
     Run Process With Logging And Status Check    wget    -P    ${TOOLS_DIR}    ${LISP_SCAPY}
     Run Process With Logging And Status Check    ${PCAP_CREATOR}    --requests    ${MAPPINGS}
 
 Destroy Environment
     Delete All Sessions
     Remove File    ${TOOLS_DIR}/lisp.py*
-    Remove File    ${REPLAY_FILE}
+    Remove File    ${REPLAY_FILE_MREQ}
+    Remove File    ${REPLAY_FILE_MREG}