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 StringTemplater
6 Library OperatingSystem
7 Resource ../global_properties.robot
8 Resource ../json_templater.robot
11 ${PGN_URL_TEMPLATE} http://\${host}:\${port}
12 ${PGN_PATH} /restconf/config/sample-plugin:sample-plugin
13 ${PGN_ENABLE_STREAM_TEMPLATE} robot/assets/templates/vfw_pg_stream_enable.template
14 ${PGN_ENABLE_STREAMS_TEMPLATE} robot/assets/templates/vfw_pg_streams_enable.template
17 Connect To Packet Generator
18 [Documentation] Enables packet generator for the passed stream on the passed host
19 [Arguments] ${host} ${alias}=pgn
20 ${map}= Create Dictionary host=${host} port=${GLOBAL_PACKET_GENERATOR_PORT} path=${PGN_PATH}
21 ${url}= Template String ${PGN_URL_TEMPLATE} ${map}
22 ${auth}= Create List ${GLOBAL_PACKET_GENERATOR_USERNAME} ${GLOBAL_PACKET_GENERATOR_PASSWORD}
23 ${session}= Create Session ${alias} ${url} auth=${auth}
27 [Documentation] Enable a single stream on the passed packet generator host IP
28 [Arguments] ${host} ${stream}=udp1 ${alias}=pgn
29 Connect To Packet Generator ${host} alias=${alias}
30 ${headers}= Create Headers
31 ${data_path}= Catenate ${PGN_PATH}/pg-streams
32 ${map}= Create Dictionary stream=${stream}
33 ${streams}= Fill JSON Template File ${PGN_ENABLE_STREAM_TEMPLATE} ${map}
34 ${streams}= evaluate json.dumps(${streams}) json
35 ${map}= Create Dictionary pgstreams=${streams}
36 ${data}= Fill JSON Template File ${PGN_ENABLE_STREAMS_TEMPLATE} ${map}
37 ${resp}= Put Request ${alias} ${data_path} data=${data} headers=${headers}
38 Should Be Equal As Strings ${resp.status_code} 200
42 [Documentation] Enable <stream_count> number of streams on the passed packet generator host IP
43 [Arguments] ${host} ${stream_count}=5 ${alias}=pgn ${prefix}=fw_udp
44 Connect To Packet Generator ${host} alias=${alias}
45 ${headers}= Create Headers
46 ${data_path}= Catenate ${PGN_PATH}/pg-streams
47 ${streams}= Set Variable
48 ${comma}= Set Variable
49 ${stream_count}= Evaluate ${stream_count}+1
50 :for ${i} in Range 1 ${stream_count}
51 \ ${name}= Catenate ${prefix}${i}
52 \ ${map}= Create Dictionary stream=${name}
53 \ ${one}= Fill JSON Template File ${PGN_ENABLE_STREAM_TEMPLATE} ${map}
54 \ ${one}= evaluate json.dumps(${one}) json
55 \ ${streams}= Set Variable ${streams}${comma}${one}
56 \ ${comma}= Set Variable ,
57 ${map}= Create Dictionary pgstreams=${streams}
58 ${data}= Fill JSON Template File ${PGN_ENABLE_STREAMS_TEMPLATE} ${map}
59 ${resp}= Put Request ${alias} ${data_path} data=${data} headers=${headers}
60 Should Be Equal As Strings ${resp.status_code} 200
64 [Documentation] Disable all streams on the passed packet generator host IP
65 [Arguments] ${host} ${stream}=udp1 ${alias}=pgn
66 Connect To Packet Generator ${host} alias=${alias}
67 ${headers}= Create Headers
68 ${data_path}= Catenate ${PGN_PATH}/pg-streams
69 ${data}= Catenate {"pg-streams":{"pg-stream": []}}
70 ${resp}= Put Request ${alias} ${data_path} data=${data} headers=${headers}
71 Should Be Equal As Strings ${resp.status_code} 200
75 [Documentation] Disables packet generator for the passed stream
76 [Arguments] ${host} ${stream}=udp1 ${alias}=pgn
77 ${session}= Connect To Packet Generator ${host} alias=${alias}
78 ${headers}= Create Headers
79 ${data_path}= Catenate ${PGN_PATH}/pg-streams/pg-stream/${stream}
80 ${resp}= Delete Request ${alias} ${data_path} headers=${headers}
81 Should Be Equal As Strings ${resp.status_code} 200
84 Get List Of Enabled Streams
85 [Documentation] Get a list of streams on the passed packet generator host IP
86 [Arguments] ${host} ${alias}=pgn
87 ${session}= Connect To Packet Generator ${host} alias=${alias}
88 ${headers}= Create Headers
89 ${data_path}= Catenate /
90 ${resp}= Get Request ${alias} ${PGN_PATH} headers=${headers}
91 Should Be Equal As Strings ${resp.status_code} 200
92 [Return] ${resp.json()}
96 ${uuid}= Generate UUID
97 ${headers}= Create Dictionary Accept=application/json Content-Type=application/json X-TransactionId=${GLOBAL_APPLICATION_ID}-${uuid} X-FromAppId=${GLOBAL_APPLICATION_ID}