summaryrefslogtreecommitdiffstats
path: root/robot/resources/stack_validation/packet_generator_interface.robot
blob: 802c8df7d1a49e9ea2d7153fd39fecbd586c1041 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
*** Settings ***
Documentation     The main interface for interacting with A&AI. It handles low level stuff like managing the http request library and A&AI required fields
Library         RequestsLibrary
Library           ONAPLibrary.Utilities
Library           ONAPLibrary.Templating    WITH NAME    Templating
Library           OperatingSystem
Resource          ../global_properties.robot

*** Variables ***
${PGN_URL_TEMPLATE}     http://\${host}:\${port}
${PGN_PATH}    /restconf/config/sample-plugin:sample-plugin
${PGN_PATH_V2}    /restconf/config/stream-count:stream-count
${PGN_ENABLE_STREAM_TEMPLATE}    vfw/vfw_pg_stream_enable.jinja
${PGN_ENABLE_STREAMS_TEMPLATE}    vfw/vfw_pg_streams_enable.jinja
${PGN_ENABLE_STREAMS_V2_TEMPLATE}    vfw/vfw_pg_streams_v2.jinja

*** Keywords ***
Connect To Packet Generator
    [Documentation]    Enables packet generator for the passed stream on the passed host
    [Arguments]    ${host}    ${alias}=pgn
    ${map}=  Create Dictionary     host=${host}    port=${GLOBAL_PACKET_GENERATOR_PORT}
    ${url}=    Templating.Template String    ${PGN_URL_TEMPLATE}    ${map}
    ${auth}=  Create List     ${GLOBAL_PACKET_GENERATOR_USERNAME}    ${GLOBAL_PACKET_GENERATOR_PASSWORD}
    ${session}=    Create Session   ${alias}  ${url}    auth=${auth}
    [Return]     ${session}

Enable Stream
    [Documentation]    Enable a single stream on the passed packet generator host IP
    [Arguments]    ${host}    ${stream}=udp1    ${alias}=pgn
    Connect To Packet Generator    ${host}    alias=${alias}
    ${headers}=  Create Headers
    ${data_path}=    Catenate    ${PGN_PATH}/pg-streams
    ${map}=    Create Dictionary    stream=${stream}
    Templating.Create Environment    pgi    ${GLOBAL_TEMPLATE_FOLDER}
    ${streams}=   Templating.Apply Template    pgi    ${PGN_ENABLE_STREAM_TEMPLATE}   ${map}
    ${streams}=    evaluate    json.dumps(${streams})    json
    ${map}=    Create Dictionary    pgstreams=${streams}
    ${data}=   Templating.Apply Template    pgi    ${PGN_ENABLE_STREAMS_TEMPLATE}   ${map}
    ${resp}=  Put Request   ${alias}  ${data_path}     data=${data}     headers=${headers}
    Should Be Equal As Strings    ${resp.status_code}    200
    [Return]    ${resp}

Enable Streams
    [Documentation]    Enable <stream_count> number of streams on the passed packet generator host IP
    [Arguments]    ${host}    ${stream_count}=5    ${alias}=pgn    ${prefix}=fw_udp
    Connect To Packet Generator    ${host}    alias=${alias}
    ${headers}=  Create Headers
    ${data_path}=    Catenate    ${PGN_PATH}/pg-streams
    ${streams}=    Set Variable
    ${comma}=      Set Variable
    ${stream_count}=    Evaluate    ${stream_count}+1
    Templating.Create Environment    pgi    ${GLOBAL_TEMPLATE_FOLDER}
    :FOR    ${i}    IN RANGE     1    ${stream_count}
    \    ${name}=    Catenate    ${prefix}${i}
    \    ${map}=    Create Dictionary    stream=${name}
    \    ${one}=   Templating.Apply Template    pgi    ${PGN_ENABLE_STREAM_TEMPLATE}    ${map}
    \    ${one}=    evaluate    json.dumps(${one})    json
    \    ${streams}=    Set Variable    ${streams}${comma}${one}
    \    ${comma}=      Set Variable    ,
    ${map}=    Create Dictionary    pgstreams=${streams}
    ${data}=   Templating.Apply Template    pgi    ${PGN_ENABLE_STREAMS_TEMPLATE}    ${map}
    ${resp}=  Put Request   ${alias}  ${data_path}     data=${data}     headers=${headers}
    Should Be Equal As Strings    ${resp.status_code}    200
    [Return]    ${resp}


Enable Streams V2
    [Documentation]    V2 is for new honeycomb steams interface
    ...  Enable <stream_count> number of streams on the passed packet generator host IP
    [Arguments]    ${host}    ${stream_count}=5    ${alias}=pgn    ${prefix}=fw_udp
    Connect To Packet Generator    ${host}    alias=${alias}
    Templating.Create Environment    pgi    ${GLOBAL_TEMPLATE_FOLDER}
    ${headers}=  Create Headers
    ${data_path}=    Catenate    ${PGN_PATH_V2}/streams
    ${map}=    Create Dictionary    number_streams=${stream_count}
    ${data}=   Templating.Apply Template    pgi    ${PGN_ENABLE_STREAMS_V2_TEMPLATE}    ${map}
    ${resp}=  Put Request   ${alias}  ${data_path}     data=${data}     headers=${headers}
    Should Be Equal As Strings    ${resp.status_code}    200


Disable All Streams
    [Documentation]    Disable all streams on the passed packet generator host IP
    [Arguments]    ${host}    ${stream}=udp1    ${alias}=pgn
    Connect To Packet Generator    ${host}    alias=${alias}
    ${headers}=  Create Headers
    ${data_path}=    Catenate    ${PGN_PATH}/pg-streams
    ${data}=   Catenate    {"pg-streams":{"pg-stream": []}}
    ${resp}=  Put Request   ${alias}  ${data_path}     data=${data}     headers=${headers}
    Should Be Equal As Strings    ${resp.status_code}    200
    [Return]    ${resp}

Disable Stream
    [Documentation]    Disables packet generator for the passed stream
    [Arguments]    ${host}    ${stream}=udp1    ${alias}=pgn
    ${session}=    Connect To Packet Generator    ${host}    alias=${alias}
    ${headers}=  Create Headers
    ${data_path}=    Catenate    ${PGN_PATH}/pg-streams/pg-stream/${stream}
    ${resp}=  Delete Request  ${alias}  ${data_path}     headers=${headers}
    Should Be Equal As Strings    ${resp.status_code}    200
    [Return]    ${resp}

Get List Of Enabled Streams
    [Documentation]     Get a list of streams on the passed packet generator host IP
    [Arguments]    ${host}    ${alias}=pgn
    ${session}=    Connect To Packet Generator    ${host}    alias=${alias}
    ${headers}=  Create Headers
    ${data_path}=    Catenate    /
    ${resp}=  Get Request   ${alias}  ${PGN_PATH}     headers=${headers}
    Should Be Equal As Strings    ${resp.status_code}    200
    [Return]    ${resp.json()}

Get List Of Enabled Streams V2
    [Documentation]     V2 Get a list of streams on the passed packet generator host IP
    [Arguments]    ${host}    ${alias}=pgn
    ${session}=    Connect To Packet Generator    ${host}    alias=${alias}
    ${headers}=  Create Headers
    ${data_path}=    Catenate    /
    ${resp}=  Get Request   ${alias}  ${PGN_PATH_V2}     headers=${headers}
    Should Be Equal As Strings    ${resp.status_code}    200
    [Return]    ${resp.json()}

Create Headers
    ${uuid}=    Generate UUID4
    ${headers}=  Create Dictionary     Accept=application/json    Content-Type=application/json    X-TransactionId=${GLOBAL_APPLICATION_ID}-${uuid}    X-FromAppId=${GLOBAL_APPLICATION_ID}
    [Return]    ${headers}