move rest of stirngtemplating off old format
[testsuite.git] / robot / resources / stack_validation / packet_generator_interface.robot
1 *** Settings ***
2 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
3 Library               RequestsLibrary
4 Library           ONAPLibrary.Utilities
5 Library           ONAPLibrary.Templating    
6 Library           OperatingSystem
7 Resource          ../global_properties.robot
8
9 *** Variables ***
10 ${PGN_URL_TEMPLATE}     http://\${host}:\${port}
11 ${PGN_PATH}    /restconf/config/sample-plugin:sample-plugin
12 ${PGN_PATH_V2}    /restconf/config/stream-count:stream-count
13 ${PGN_ENABLE_STREAM_TEMPLATE}    vfw/vfw_pg_stream_enable.jinja
14 ${PGN_ENABLE_STREAMS_TEMPLATE}    vfw/vfw_pg_streams_enable.jinja
15 ${PGN_ENABLE_STREAMS_V2_TEMPLATE}    vfw/vfw_pg_streams_v2.jinja
16
17 *** Keywords ***
18 Connect To Packet Generator
19     [Documentation]    Enables packet generator for the passed stream on the passed host
20     [Arguments]    ${host}    ${alias}=pgn
21     ${map}=  Create Dictionary     host=${host}    port=${GLOBAL_PACKET_GENERATOR_PORT}
22     ${url}=    Template String    ${PGN_URL_TEMPLATE}    ${map}
23     ${auth}=  Create List     ${GLOBAL_PACKET_GENERATOR_USERNAME}    ${GLOBAL_PACKET_GENERATOR_PASSWORD}
24     ${session}=    Create Session       ${alias}        ${url}    auth=${auth}
25     [Return]     ${session}
26
27 Enable Stream
28     [Documentation]    Enable a single stream on the passed packet generator host IP
29     [Arguments]    ${host}    ${stream}=udp1    ${alias}=pgn
30     Connect To Packet Generator    ${host}    alias=${alias}
31     ${headers}=  Create Headers
32     ${data_path}=    Catenate    ${PGN_PATH}/pg-streams
33     ${map}=    Create Dictionary    stream=${stream}
34     Create Environment    pgi    ${GLOBAL_TEMPLATE_FOLDER}
35     ${streams}=   Apply Template    pgi    ${PGN_ENABLE_STREAM_TEMPLATE}   ${map}
36     ${streams}=    evaluate    json.dumps(${streams})    json
37     ${map}=    Create Dictionary    pgstreams=${streams}
38     ${data}=   Apply Template    pgi    ${PGN_ENABLE_STREAMS_TEMPLATE}   ${map}
39     ${resp}=    Put Request     ${alias}        ${data_path}     data=${data}     headers=${headers}
40     Should Be Equal As Strings    ${resp.status_code}    200
41     [Return]    ${resp}
42
43 Enable Streams
44     [Documentation]    Enable <stream_count> number of streams on the passed packet generator host IP
45     [Arguments]    ${host}    ${stream_count}=5    ${alias}=pgn    ${prefix}=fw_udp
46     Connect To Packet Generator    ${host}    alias=${alias}
47     ${headers}=  Create Headers
48     ${data_path}=    Catenate    ${PGN_PATH}/pg-streams
49     ${streams}=    Set Variable
50     ${comma}=      Set Variable
51     ${stream_count}=    Evaluate    ${stream_count}+1
52     Create Environment    pgi    ${GLOBAL_TEMPLATE_FOLDER}
53     :FOR    ${i}    IN RANGE     1    ${stream_count}
54     \    ${name}=    Catenate    ${prefix}${i}
55     \    ${map}=    Create Dictionary    stream=${name}
56     \    ${one}=   Apply Template    pgi    ${PGN_ENABLE_STREAM_TEMPLATE}    ${map}
57     \    ${one}=    evaluate    json.dumps(${one})    json
58     \    ${streams}=    Set Variable    ${streams}${comma}${one}
59     \    ${comma}=      Set Variable    ,
60     ${map}=    Create Dictionary    pgstreams=${streams}
61     ${data}=   Apply Template    pgi    ${PGN_ENABLE_STREAMS_TEMPLATE}    ${map}
62     ${resp}=    Put Request     ${alias}        ${data_path}     data=${data}     headers=${headers}
63     Should Be Equal As Strings    ${resp.status_code}    200
64     [Return]    ${resp}
65
66
67 Enable Streams V2
68     [Documentation]    V2 is for new honeycomb steams interface
69     ...  Enable <stream_count> number of streams on the passed packet generator host IP
70     [Arguments]    ${host}    ${stream_count}=5    ${alias}=pgn    ${prefix}=fw_udp
71     Connect To Packet Generator    ${host}    alias=${alias}
72     Create Environment    pgi    ${GLOBAL_TEMPLATE_FOLDER}
73     ${headers}=  Create Headers
74     ${data_path}=    Catenate    ${PGN_PATH_V2}/streams
75     ${map}=    Create Dictionary    number_streams=${stream_count}
76     ${data}=   Apply Template    pgi    ${PGN_ENABLE_STREAMS_V2_TEMPLATE}    ${map}
77     ${resp}=    Put Request     ${alias}        ${data_path}     data=${data}     headers=${headers}
78     Should Be Equal As Strings    ${resp.status_code}    200
79
80
81 Disable All Streams
82     [Documentation]    Disable all streams on the passed packet generator host IP
83     [Arguments]    ${host}    ${stream}=udp1    ${alias}=pgn
84     Connect To Packet Generator    ${host}    alias=${alias}
85     ${headers}=  Create Headers
86     ${data_path}=    Catenate    ${PGN_PATH}/pg-streams
87     ${data}=   Catenate    {"pg-streams":{"pg-stream": []}}
88     ${resp}=    Put Request     ${alias}        ${data_path}     data=${data}     headers=${headers}
89     Should Be Equal As Strings    ${resp.status_code}    200
90     [Return]    ${resp}
91
92  Disable Stream
93     [Documentation]    Disables packet generator for the passed stream
94     [Arguments]    ${host}    ${stream}=udp1    ${alias}=pgn
95     ${session}=    Connect To Packet Generator    ${host}    alias=${alias}
96     ${headers}=  Create Headers
97     ${data_path}=    Catenate    ${PGN_PATH}/pg-streams/pg-stream/${stream}
98     ${resp}=    Delete Request  ${alias}        ${data_path}     headers=${headers}
99     Should Be Equal As Strings    ${resp.status_code}    200
100     [Return]    ${resp}
101
102 Get List Of Enabled Streams
103     [Documentation]     Get a list of streams on the passed packet generator host IP
104     [Arguments]    ${host}    ${alias}=pgn
105     ${session}=    Connect To Packet Generator    ${host}    alias=${alias}
106     ${headers}=  Create Headers
107     ${data_path}=    Catenate    /
108     ${resp}=    Get Request     ${alias}        ${PGN_PATH}     headers=${headers}
109     Should Be Equal As Strings    ${resp.status_code}    200
110     [Return]    ${resp.json()}
111
112 Get List Of Enabled Streams V2
113     [Documentation]     V2 Get a list of streams on the passed packet generator host IP
114     [Arguments]    ${host}    ${alias}=pgn
115     ${session}=    Connect To Packet Generator    ${host}    alias=${alias}
116     ${headers}=  Create Headers
117     ${data_path}=    Catenate    /
118     ${resp}=    Get Request     ${alias}        ${PGN_PATH_V2}     headers=${headers}
119     Should Be Equal As Strings    ${resp.status_code}    200
120     [Return]    ${resp.json()}
121
122 Create Headers
123     ${uuid}=    Generate UUID4
124     ${headers}=  Create Dictionary     Accept=application/json    Content-Type=application/json    X-TransactionId=${GLOBAL_APPLICATION_ID}-${uuid}    X-FromAppId=${GLOBAL_APPLICATION_ID}
125     [Return]    ${headers}