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}