summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrian Freeman <bf1936@att.com>2019-05-30 22:35:30 -0500
committerBrian Freeman <bf1936@att.com>2019-05-31 10:09:53 -0500
commitac26593edf2b6cacbe17506328f4cf56b9b1dd3a (patch)
treed60a65857518151a7105abef51a9b1757f5d2ceb
parent60e4b365588cccdcfa433ed28b0272f1127c6b33 (diff)
Cherry pick: vfwclosedloop for new vFW
Manual cherry pick from dublin Issue-ID: INT-838 Change-Id: I19f619f6e5b1c0a788e0f6014d79c07c88e3eecd Signed-off-by: Brian Freeman <bf1936@att.com>
-rw-r--r--robot/assets/templates/vfw_pg_streams_v2.template5
-rw-r--r--robot/resources/stack_validation/packet_generator_interface.robot71
-rw-r--r--robot/resources/test_templates/closedloop_test_template.robot17
-rw-r--r--robot/testsuites/closed-loop.robot1
4 files changed, 62 insertions, 32 deletions
diff --git a/robot/assets/templates/vfw_pg_streams_v2.template b/robot/assets/templates/vfw_pg_streams_v2.template
new file mode 100644
index 00000000..81626144
--- /dev/null
+++ b/robot/assets/templates/vfw_pg_streams_v2.template
@@ -0,0 +1,5 @@
+{
+ "streams": {
+ "active-streams": ${number_streams}
+ }
+}
diff --git a/robot/resources/stack_validation/packet_generator_interface.robot b/robot/resources/stack_validation/packet_generator_interface.robot
index c75e61b5..62ac91d2 100644
--- a/robot/resources/stack_validation/packet_generator_interface.robot
+++ b/robot/resources/stack_validation/packet_generator_interface.robot
@@ -2,97 +2,122 @@
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 StringTemplater
-Library UUID
-Library OperatingSystem
+Library UUID
+Library OperatingSystem
Resource ../global_properties.robot
Resource ../json_templater.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} robot/assets/templates/vfw_pg_stream_enable.template
${PGN_ENABLE_STREAMS_TEMPLATE} robot/assets/templates/vfw_pg_streams_enable.template
+${PGN_ENABLE_STREAMS_V2_TEMPLATE} robot/assets/templates/vfw_pg_streams_v2.template
*** 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} path=${PGN_PATH}
- ${url}= Template String ${PGN_URL_TEMPLATE} ${map}
- ${auth}= Create List ${GLOBAL_PACKET_GENERATOR_USERNAME} ${GLOBAL_PACKET_GENERATOR_PASSWORD}
+ ${map}= Create Dictionary host=${host} port=${GLOBAL_PACKET_GENERATOR_PORT} path=${PGN_PATH}
+ ${url}= 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}
+ [Return] ${session}
Enable Stream
- [Documentation] Enable a single stream on the passed packet generator host IP
+ [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
+ ${data_path}= Catenate ${PGN_PATH}/pg-streams
${map}= Create Dictionary stream=${stream}
${streams}= Fill JSON Template File ${PGN_ENABLE_STREAM_TEMPLATE} ${map}
${streams}= evaluate json.dumps(${streams}) json
${map}= Create Dictionary pgstreams=${streams}
- ${data}= Fill JSON Template File ${PGN_ENABLE_STREAMS_TEMPLATE} ${map}
+ ${data}= Fill JSON Template File ${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
+ [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
+ ${stream_count}= Evaluate ${stream_count}+1
:FOR ${i} IN RANGE 1 ${stream_count}
\ ${name}= Catenate ${prefix}${i}
\ ${map}= Create Dictionary stream=${name}
\ ${one}= Fill JSON Template File ${PGN_ENABLE_STREAM_TEMPLATE} ${map}
- \ ${one}= evaluate json.dumps(${one}) json
+ \ ${one}= evaluate json.dumps(${one}) json
\ ${streams}= Set Variable ${streams}${comma}${one}
- \ ${comma}= Set Variable ,
+ \ ${comma}= Set Variable ,
${map}= Create Dictionary pgstreams=${streams}
- ${data}= Fill JSON Template File ${PGN_ENABLE_STREAMS_TEMPLATE} ${map}
+ ${data}= Fill JSON Template File ${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}
+ ${headers}= Create Headers
+ ${data_path}= Catenate ${PGN_PATH_V2}/streams
+ ${map}= Create Dictionary number_streams=${stream_count}
+ ${data}= Fill JSON Template File ${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_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
+ [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}
+ ${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
+ [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 /
+ ${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 UUID
${headers}= Create Dictionary Accept=application/json Content-Type=application/json X-TransactionId=${GLOBAL_APPLICATION_ID}-${uuid} X-FromAppId=${GLOBAL_APPLICATION_ID}
- [Return] ${headers} \ No newline at end of file
+ [Return] ${headers}
diff --git a/robot/resources/test_templates/closedloop_test_template.robot b/robot/resources/test_templates/closedloop_test_template.robot
index dcbb7e65..f5c0e357 100644
--- a/robot/resources/test_templates/closedloop_test_template.robot
+++ b/robot/resources/test_templates/closedloop_test_template.robot
@@ -80,7 +80,7 @@ Get Configs VFW Policy
${configpolicy_name}= Create Dictionary config_policy_name=${getconfigpolicy}
${output} = Fill JSON Template File ${GECONFIG_VFW_TEMPLATE} ${configpolicy_name}
${get_resp} = Run Policy Get Configs Request ${RESOURCE_PATH_GET_CONFIG} ${output}
- Should Be Equal As Strings ${get_resp.status_code} 200
+ Should Be Equal As Strings ${get_resp.status_code} 200
${config}= Catenate ${get_resp.json()[0]["config"]}
${thresholds}= Get Variable Value ${config["content"]["tca_policy"]["metricsPerEventName"][0]["thresholds"]}
@@ -100,7 +100,7 @@ Get Configs VDNS Policy
${configpolicy_name}= Create Dictionary config_policy_name=${getconfigpolicy}
${output} = Fill JSON Template File ${GECONFIG_VFW_TEMPLATE} ${configpolicy_name}
${get_resp} = Run Policy Get Configs Request ${RESOURCE_PATH_GET_CONFIG} ${output}
- Should Be Equal As Strings ${get_resp.status_code} 200
+ Should Be Equal As Strings ${get_resp.status_code} 200
${config}= Catenate ${get_resp.json()[0]["config"]}
${thresholds}= Get Variable Value ${config["content"]["tca_policy"]["metricsPerEventName"][0]["thresholds"]}
@@ -196,12 +196,12 @@ Orchestrate VNF vFW closedloop
VFWCL High Test
[Documentation] Test Control Loop for High Traffic
[Arguments] ${pkg_host}
- Enable Streams ${pkg_host} 10
+ Enable Streams V2 ${pkg_host} 10
Log To Console Set number of streams to 10
:FOR ${i} IN RANGE 12
\ Sleep 15s
- \ ${resp}= Get List Of Enabled Streams ${pkg_host}
- \ ${stream_count}= Evaluate len(${resp['sample-plugin']['pg-streams']['pg-stream']})
+ \ ${resp}= Get List Of Enabled Streams V2 ${pkg_host}
+ \ ${stream_count}= Set Variable ${resp['stream-count']['streams']['active-streams']}
\ Log To Console Number of streams: ${stream_count}
\ Exit For Loop If '${stream_count}'=='5'
Should Be Equal As Integers ${stream_count} 5
@@ -209,13 +209,12 @@ VFWCL High Test
VFWCL Low Test
[Documentation] Test Control Loop for Low Traffic
[Arguments] ${pkg_host}
- Enable Streams ${pkg_host} 1
+ Enable Streams V2 ${pkg_host} 1
Log To Console Set number of streams to 1
- Get List Of Enabled Streams ${pkg_host}
:FOR ${i} IN RANGE 12
\ Sleep 15s
- \ ${resp}= Get List Of Enabled Streams ${pkg_host}
- \ ${stream_count}= Evaluate len(${resp['sample-plugin']['pg-streams']['pg-stream']})
+ \ ${resp}= Get List Of Enabled Streams V2 ${pkg_host}
+ \ ${stream_count}= Set Variable ${resp['stream-count']['streams']['active-streams']}
\ Log To Console Number of streams: ${stream_count}
\ Exit For Loop If '${stream_count}'=='5'
Should Be Equal As Integers ${stream_count} 5
diff --git a/robot/testsuites/closed-loop.robot b/robot/testsuites/closed-loop.robot
index b5986272..5fba93fe 100644
--- a/robot/testsuites/closed-loop.robot
+++ b/robot/testsuites/closed-loop.robot
@@ -15,5 +15,6 @@ VDNS Closed Loop Test
VDNS Policy
VFWCL Closed Loop Test
[TAGS] vfwclosedloop
+ Log To Console ${EMPTY}
VFWCL High Test ${pkg_host}
VFWCL Low Test ${pkg_host}