onap on kubernetes source files
[oom.git] / kubernetes / config / docker / init / src / config / robot / 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           StringTemplater
5 Library           UUID      
6 Library           OperatingSystem      
7 Resource          ../global_properties.robot
8 Resource          ../json_templater.robot
9
10 *** Variables ***
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
15
16 *** Keywords ***
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}
24     [Return]     ${session}    
25
26 Enable Stream
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
39     [Return]    ${resp}
40
41 Enable Streams
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
61     [Return]    ${resp}
62
63 Disable All Streams
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
72     [Return]    ${resp}
73
74  Disable Stream
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
82     [Return]    ${resp}
83     
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()}
93     
94    
95 Create Headers
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}
98     [Return]    ${headers}