From ccff30b6e325f359879595998e83bbfe6624c851 Mon Sep 17 00:00:00 2001 From: DR695H Date: Fri, 17 Feb 2017 18:44:24 -0500 Subject: Initial checkin of EopenECOMP testsuite Change-Id: I64a2b6d8cf66169829866b73b3d26a4ff59b0a42 Signed-off-by: DR695H --- .../stack_validation/darkstat_interface.robot | 82 ++++++++++++++++++ .../packet_generator_interface.robot | 98 ++++++++++++++++++++++ .../stack_validation/policy_check_vfw.robot | 95 +++++++++++++++++++++ .../stack_validation/validate_common.robot | 51 +++++++++++ .../stack_validation/validate_dns_scaling.robot | 43 ++++++++++ .../resources/stack_validation/validate_vfw.robot | 94 +++++++++++++++++++++ .../resources/stack_validation/validate_vlb.robot | 60 +++++++++++++ .../resources/stack_validation/validate_vvg.robot | 17 ++++ 8 files changed, 540 insertions(+) create mode 100644 robot/resources/stack_validation/darkstat_interface.robot create mode 100644 robot/resources/stack_validation/packet_generator_interface.robot create mode 100644 robot/resources/stack_validation/policy_check_vfw.robot create mode 100644 robot/resources/stack_validation/validate_common.robot create mode 100644 robot/resources/stack_validation/validate_dns_scaling.robot create mode 100644 robot/resources/stack_validation/validate_vfw.robot create mode 100644 robot/resources/stack_validation/validate_vlb.robot create mode 100644 robot/resources/stack_validation/validate_vvg.robot (limited to 'robot/resources/stack_validation') diff --git a/robot/resources/stack_validation/darkstat_interface.robot b/robot/resources/stack_validation/darkstat_interface.robot new file mode 100644 index 00000000..3537408a --- /dev/null +++ b/robot/resources/stack_validation/darkstat_interface.robot @@ -0,0 +1,82 @@ +*** Settings *** +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 ExtendedSelenium2Library +Library StringTemplater +Library UUID +Library OperatingSystem +Resource ../global_properties.robot +Resource ../browser_setup.robot + +*** Variables *** +${SNK_HOSTS_TEMPLATE} http://\${host}:\${port}/hosts/ +${SNK_HOME_TEMPLATE} http://\${host}:\${port}/ +${SNK_PATH} +${SNK_PORT} 667 +${BYTES_PER_PACKET} 29 +${PACKETS_PER_SECOND_PER_STREAM} 11 +${MONITOR_INTERVAL_IN_SECONDS} 4 + +*** Keywords *** +Get Darkstat Bytes In + [Documentation] Get bytes received on the passed interface for the given interval + [Arguments] ${host} ${interface} ${interval}=${MONITOR_INTERVAL_IN_SECONDS} + ${map}= Create Dictionary host=${host} port=${SNK_PORT} path=${SNK_PATH} + ${url}= Template String ${SNK_HOSTS_TEMPLATE} ${map} + Connect to Darkstat ${host} ${url} + Title Should Be Hosts (darkstat3 eth1) + ${initial_bytes}= Get Current Bytes In ${interface} + Sleep ${interval} + Go To ${url} + ${new_bytes}= Get Current Bytes In ${interface} + ${return_bytes}= Evaluate int(${new_bytes}) - int(${initial_bytes}) + [Return] ${return_bytes} + +Get Darkstat Packets In + [Documentation] Get bytes received on the passed interface for the given interval + [Arguments] ${host} ${interval}=${MONITOR_INTERVAL_IN_SECONDS} + ${map}= Create Dictionary host=${host} port=${SNK_PORT} path=${SNK_PATH} + ${url}= Template String ${SNK_HOME_TEMPLATE} ${map} + Connect to Darkstat ${host} ${url} + Title Should Be Graphs (darkstat3 eth1) + ${initial_pkts}= Get Current Packets In + Sleep ${interval} + Go To ${url} + ${new_pkts}= Get Current Packets In + ${return_pkts}= Evaluate int(${new_pkts}) - int(${initial_pkts}) + [Return] ${return_pkts} + + +Connect to Darkstat + [Documentation] COnnects to the Darkstat port on passed host + [Arguments] ${host} ${url} + ## Being managed by the test case + ##Setup Browser + Go To ${url} + Maximize Browser Window + Set Selenium Speed ${GLOBAL_SELENIUM_DELAY} + Set Browser Implicit Wait ${GLOBAL_SELENIUM_BROWSER_IMPLICIT_WAIT} + Log Logging in to ${url} + Handle Proxy Warning + + +Get Current Bytes In + [Documentation] Retrieves packets input from given host from current Darkstats hosts page + [Arguments] ${interface} + ${bytes}= Get Text xpath=//tr[td/a[text() = '${interface}']]/td[4] + ${bytes}= Evaluate ${bytes.replace(',', '')} + [Return] ${bytes} + +Get Current Packets In + [Documentation] Retrieves packets input from given host from current Darkstats hosts page + ${bytes}= Get Text xpath=//span[@id = 'tp'] + ${bytes}= Evaluate ${bytes.replace(',', '')} + [Return] ${bytes} + + +Get Expected Range For Number Of Streams + [Documentation] Calculates the expected range of bytes for an interval for the given number of streams + [Arguments] ${number_of_streams} + ${bytes_per_second}= Evaluate ${BYTES_PER_PACKET}*(${PACKETS_PER_SECOND_PER_STREAM}*${number_of_streams}) + ${low_bytes}= Evaluate (${MONITOR_INTERVAL_IN_SECONDS}-1)*${bytes_per_second} + ${high_bytes}= Evaluate (${MONITOR_INTERVAL_IN_SECONDS}+1)*${bytes_per_second} + [Return] ${low_bytes} ${high_bytes} \ No newline at end of file diff --git a/robot/resources/stack_validation/packet_generator_interface.robot b/robot/resources/stack_validation/packet_generator_interface.robot new file mode 100644 index 00000000..cc9ba04f --- /dev/null +++ b/robot/resources/stack_validation/packet_generator_interface.robot @@ -0,0 +1,98 @@ +*** Settings *** +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 +Resource ../global_properties.robot +Resource ../json_templater.robot + +*** Variables *** +${PGN_URL_TEMPLATE} http://\${host}:\${port} +${PGN_PATH} /restconf/config/sample-plugin:sample-plugin +${PGN_ENABLE_STREAM_TEMPLATE} robot/assets/templates/vfw_pg_stream_enable.template +${PGN_ENABLE_STREAMS_TEMPLATE} robot/assets/templates/vfw_pg_streams_enable.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} + ${session}= Create Session ${alias} ${url} auth=${auth} + [Return] ${session} + +Enable Stream + [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 + ${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} + ${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 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 + :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 + \ ${streams}= Set Variable ${streams}${comma}${one} + \ ${comma}= Set Variable , + ${map}= Create Dictionary pgstreams=${streams} + ${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} + +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}= 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 + [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} + ${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 + [Arguments] ${host} ${alias}=pgn + ${session}= Connect To Packet Generator ${host} alias=${alias} + ${headers}= Create Headers + ${data_path}= Catenate / + ${resp}= Get Request ${alias} ${PGN_PATH} 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 diff --git a/robot/resources/stack_validation/policy_check_vfw.robot b/robot/resources/stack_validation/policy_check_vfw.robot new file mode 100644 index 00000000..a1ed3fa3 --- /dev/null +++ b/robot/resources/stack_validation/policy_check_vfw.robot @@ -0,0 +1,95 @@ +*** Settings *** +Documentation Testing openstack. +Library OperatingSystem +Library Process +Library SSHLibrary +Library RequestsLibrary +Library JSONUtils +Library OpenstackLibrary +Library HEATUtils +Library Collections +LIbrary String +Resource ../../resources/openstack/keystone_interface.robot +Resource ../../resources/openstack/nova_interface.robot +Resource ../../resources/openstack/heat_interface.robot +Resource ../../resources/ssh/files.robot +Resource ../../resources/ssh/processes.robot +Resource packet_generator_interface.robot +Resource darkstat_interface.robot +Resource validate_common.robot + + +*** Variables *** +${ASSETS} ${EXECDIR}/robot/assets/ + +*** Keywords *** +Policy Check Firewall Stack + [Documentation] Identifies the firewall servers in the VFW Stack in the GLOBAL_OPENSTACK_SERVICE_REGION + [Arguments] ${stack_name} ${policy_rate} + Run Openstack Auth Request auth + ${stack_info}= Wait for Stack to Be Deployed auth ${stack_name} + ${stack_id}= Get From Dictionary ${stack_info} id + ${server_list}= Get Openstack Servers auth + Log ${server_list} + ${vpg_unprotected_ip}= Get From Dictionary ${stack_info} vpg_private_ip_0 + ${vsn_protected_ip}= Get From Dictionary ${stack_info} vsn_private_ip_0 + ${vpg_public_ip}= Get Server Ip ${server_list} ${stack_info} vpg_name_0 network_name=public + ${vsn_public_ip}= Get Server Ip ${server_list} ${stack_info} vsn_name_0 network_name=public + ${upper_bound}= Evaluate ${policy_rate}*2 + Wait Until Keyword Succeeds 300s 1s Run VFW Policy Check ${vpg_public_ip} ${policy_rate} ${upper_bound} 1 + +Run VFW Policy Check + [Documentation] Push traffic above upper bound, wait for policy to fix it, push traffic to lower bound, wait for policy to fix it, + [Arguments] ${vpg_public_ip} ${policy_rate} ${upper_bound} ${lower_bound} + # Force traffic above threshold + Check For Policy Enforcement ${vpg_public_ip} ${policy_rate} ${upper_bound} + # Force traffic below threshold + Check For Policy Enforcement ${vpg_public_ip} ${policy_rate} ${lower_bound} + + +Check For Policy Enforcement + [Documentation] Push traffic above upper bound, wait for policy to fix it, push traffic to lower bound, wait for policy to fix it, + [Arguments] ${vpg_public_ip} ${policy_rate} ${forced_rate} + Enable Streams ${vpg_public_ip} ${forced_rate} + Wait Until Keyword Succeeds 20s 5s Test For Expected Rate ${vpg_public_ip} ${forced_rate} + Wait Until Keyword Succeeds 280s 5s Test For Expected Rate ${vpg_public_ip} ${policy_rate} + +Test For Expected Rate + [Documentation] Ge the number of pg-streams from the PGN, and test to see if it is what we expect. + [Arguments] ${vpg_public_ip} ${number_of_streams} + ${list}= Get List Of Enabled Streams ${vpg_public_ip} + ${list}= Evaluate ${list['sample-plugin']}['pg-streams']['pg-stream'] + Length Should Be ${list} ${number_of_streams} + + + +Policy Check vLB Stack + [Documentation] Identifies the firewall servers in the VFW Stack in the GLOBAL_OPENSTACK_SERVICE_REGION + [Arguments] ${stack_name} ${policy_rate} + Run Openstack Auth Request auth + ${stack_info}= Wait for Stack to Be Deployed auth ${stack_name} + ${stack_id}= Get From Dictionary ${stack_info} id + ${server_list}= Get Openstack Servers auth + ${vlb_public_ip}= Get Server Ip ${server_list} ${stack_info} vlb_name_0 network_name=public + ${upper_bound}= Evaluate ${policy_rate}*2 + Start DNS Traffic ${vlb_public_ip} ${upper_bound} + + # Now wiat for the dnsscaling stack to be deployed + ${prefix}= Get DNSScaling Prefix + ${dnsscaling}= Replace String Using Regexp ${stack_name} ^Vfmodule_ ${prefix} + ${dnsscaling_info}= Wait for Stack to Be Deployed auth ${dnsscaling} + # TO DO: Log into vLB and cehck that traffic is flowing to the new DNS + [Return] ${dnsscaling} + +Get DNSScaling Prefix + ${mapping}= Get From Dictionary ${GLOBAL_SERVICE_TEMPLATE_MAPPING} vLB + :for ${dict} in @{mapping} + \ Return From Keyword If '${dict['isBase']}' == 'false' ${dict['prefix']} + [Return] None + + +Start DNS Traffic + [Documentation] Run nslookups at rate per second. Run for 10 minutes or until it is called by the terminate process + [Arguments] ${vlb_public_ip} ${rate} + ${pid}= Start Process ./dnstraffic.sh ${vlb_public_ip} ${rate} ${GLOBAL_DNS_TRAFFIC_DURATION} + [Return] ${pid} \ No newline at end of file diff --git a/robot/resources/stack_validation/validate_common.robot b/robot/resources/stack_validation/validate_common.robot new file mode 100644 index 00000000..eb7f9f5a --- /dev/null +++ b/robot/resources/stack_validation/validate_common.robot @@ -0,0 +1,51 @@ +*** Settings *** +Documentation Testing openstack. +Library OperatingSystem +Library SSHLibrary +Library RequestsLibrary +Library JSONUtils +Library OpenstackLibrary +Library HEATUtils +Library Collections +Resource ../../resources/openstack/keystone_interface.robot +Resource ../../resources/openstack/nova_interface.robot +Resource ../../resources/openstack/heat_interface.robot +Resource ../../resources/ssh/files.robot +Resource ../../resources/ssh/processes.robot +Resource packet_generator_interface.robot + + +*** Variables *** +${ASSETS} ${EXECDIR}/robot/assets/ +${VFW_STACK_NAME} EcompETE_VFWStack +${VLB_STACK_NAME} EcompETE_VLBStack +${DNS_STACK_NAME} EcompETE_DNSStack + +*** Keywords *** +Wait For Server + [Documentation] Attempts to login to the passed server info and verify (??). Uses server info to get public ip and locate corresponding provate key file + [Arguments] ${server_ip} ${timeout}=300s + ${file}= Catenate ${ASSETS}keys/robot_ssh_private_key.pvt + Wait Until Keyword Succeeds ${timeout} 5 sec Open Connection And Log In ${server_ip} root ${file} + ${lines}= Grep Local File "Accepted publickey" /var/log/auth.log + Log ${lines} + Should Not Be Empty ${lines} + +Get Server Ip + [Arguments] ${server_list} ${stack_info} ${key_name} ${network_name}=public + ${server_name}= Get From Dictionary ${stack_info} ${key_name} + ${server}= Get From Dictionary ${server_list} ${server_name} + Log Entering Get Openstack Server Ip + ${ip}= Get Openstack Server Ip ${server} network_name=${network_name} + Log Returned Get Openstack Server Ip + [Return] ${ip} + +Find And Reboot The Server + [Documentation] Code to reboot the server by teh heat server name parameter value + [Arguments] ${stack_info} ${server_list} ${server_name_parameter} + ${server_name}= Get From Dictionary ${stack_info} ${server_name_parameter} + ${vfw_server}= Get From Dictionary ${server_list} ${server_name} + ${vfw_server_id}= Get From Dictionary ${vfw_server} id + Reboot Server auth ${vfw_server_id} + + diff --git a/robot/resources/stack_validation/validate_dns_scaling.robot b/robot/resources/stack_validation/validate_dns_scaling.robot new file mode 100644 index 00000000..f63479ea --- /dev/null +++ b/robot/resources/stack_validation/validate_dns_scaling.robot @@ -0,0 +1,43 @@ +*** Settings *** +Documentation Testing openstack. +Library OperatingSystem +Library SSHLibrary +Library RequestsLibrary +Library JSONUtils +Library OpenstackLibrary +Library HEATUtils +Library Collections +Resource ../../resources/openstack/keystone_interface.robot +Resource ../../resources/openstack/nova_interface.robot +Resource ../../resources/openstack/heat_interface.robot +Resource ../../resources/ssh/files.robot +Resource ../../resources/ssh/processes.robot +Resource packet_generator_interface.robot +Resource validate_common.robot + + +*** Variables *** +${ASSETS} ${EXECDIR}/robot/assets/ + +*** Keywords *** +Validate Dns Scaling Stack + [Documentation] Identifies the servers in the STACK_NAME in the GLOBAL_OPENSTACK_SERVICE_REGION + [Arguments] ${STACK_NAME} + Run Openstack Auth Request auth + ${stack_info}= Wait for Stack to Be Deployed auth ${STACK_NAME} + ${stack_id}= Get From Dictionary ${stack_info} id + ${server_list}= Get Openstack Servers auth + Log ${server_list} + #${vpg_unprotected_ip}= Get From Dictionary ${stack_info} vpg_private_ip_0 + #${vsn_protected_ip}= Get From Dictionary ${stack_info} vsn_private_ip_0 + ${vdns_public_ip}= Get Server Ip ${server_list} ${stack_info} vdns_name_0 network_name=public + Wait For Server ${vdns_public_ip} + Log Accessed all servers + #Wait for vDNS ${vdns_public_ip} + Log All server processes up + +Wait For vDNS + [Documentation] Wait for the defined firewall processes to come up + [Arguments] ${ip} + Wait for Process on Host java DNSServer ${ip} + diff --git a/robot/resources/stack_validation/validate_vfw.robot b/robot/resources/stack_validation/validate_vfw.robot new file mode 100644 index 00000000..51f29b4a --- /dev/null +++ b/robot/resources/stack_validation/validate_vfw.robot @@ -0,0 +1,94 @@ +*** Settings *** +Documentation Testing openstack. +Library OperatingSystem +Library SSHLibrary +Library RequestsLibrary +Library JSONUtils +Library OpenstackLibrary +Library HEATUtils +Library Collections +Resource ../../resources/openstack/keystone_interface.robot +Resource ../../resources/openstack/nova_interface.robot +Resource ../../resources/openstack/heat_interface.robot +Resource ../../resources/ssh/files.robot +Resource ../../resources/ssh/processes.robot +Resource ../appc_interface.robot +Resource packet_generator_interface.robot +Resource validate_common.robot + + +*** Variables *** +${ASSETS} ${EXECDIR}/robot/assets/ + +*** Keywords *** +Validate Firewall Stack + [Documentation] Identifies the firewall servers in the VFW Stack in the GLOBAL_OPENSTACK_SERVICE_REGION + [Arguments] ${STACK_NAME} + Run Openstack Auth Request auth + ${stack_info}= Wait for Stack to Be Deployed auth ${STACK_NAME} + ${stack_id}= Get From Dictionary ${stack_info} id + ${server_list}= Get Openstack Servers auth + + ${vpg_unprotected_ip}= Get From Dictionary ${stack_info} vpg_private_ip_0 + ${vsn_protected_ip}= Get From Dictionary ${stack_info} vsn_private_ip_0 + ${vpg_name_0}= Get From Dictionary ${stack_info} vpg_name_0 + ${vfw_public_ip}= Get Server Ip ${server_list} ${stack_info} vfw_name_0 network_name=public + ${vpg_public_ip}= Get Server Ip ${server_list} ${stack_info} vpg_name_0 network_name=public + ${vsn_public_ip}= Get Server Ip ${server_list} ${stack_info} vsn_name_0 network_name=public + + Wait For Server ${vfw_public_ip} + Wait For Server ${vpg_public_ip} + Wait For Server ${vsn_public_ip} + Log Accessed all servers + Wait For Firewall ${vfw_public_ip} + Wait For Packet Generator ${vpg_public_ip} + Wait For Packet Sink ${vsn_public_ip} + Log All server processes up + ${appc}= Create Mount Point In APPC ${vpg_name_0} ${vpg_public_ip} + + # Following hack was implemented because the stack doesn't always come up clean + # It was found that rebooting the servers at this point did not improve the + # chances of the packets flowing to the SNK + #${status} ${data}= Run Keyword And Ignore Error Wait For Packets ${vpg_public_ip} ${vpg_unprotected_ip} ${vsn_protected_ip} ${vsn_public_ip} + #Return From Keyword if '${status}' == 'PASS' + #Close All Connections + #Find And Reboot The Server ${stack_info} ${server_list} vfw_name_0 + #Find And Reboot The Server ${stack_info} ${server_list} vpg_name_0 + #Find And Reboot The Server ${stack_info} ${server_list} vsn_name_0 + ## Gives some time for servers to shutdown + #Sleep 10s + #Wait For Server ${vfw_public_ip} + #Wait For Server ${vpg_public_ip} + #Wait For Server ${vsn_public_ip} + + Wait For Packets ${vpg_public_ip} ${vpg_unprotected_ip} ${vsn_protected_ip} ${vsn_public_ip} + +Wait For Packets + [Documentation] Final vfw validation that packets are flowing from the pgn VM to the snk VM + [Arguments] ${vpg_public_ip} ${vpg_unprotected_ip} ${vsn_protected_ip} ${vsn_public_ip} + ${resp}= Enable Stream ${vpg_public_ip} + Should Be Equal As Strings ${resp.status_code} 200 + ${syslog_message}= Catenate UDP: short packet: From ${vpg_unprotected_ip}:.* to ${vsn_protected_ip}:.* + Tail File on Host Until ${vsn_public_ip} UDP: /var/log/syslog ${syslog_message} timeout=120s + Disable All Streams ${vpg_public_ip} + + +Wait For Firewall + [Documentation] Wait for the defined firewall processes to come up + [Arguments] ${ip} + Wait for Process on Host ./vpp_measurement_reporter ${ip} + Wait for Process on Host vpp -c /etc/vpp/startup.conf ${ip} + +Wait For Packet Generator + [Documentation] Wait for the defined packet generator processes to come up + [Arguments] ${ip} + Wait for Process on Host vpp -c /etc/vpp/startup.conf ${ip} + Wait for Process on Host java .* -jar /opt/honeycomb/Honeycomb/vpp-integration/minimal-distribution/target/vpp-integration-distribution-1.16.9-hc/vpp-integration-distribution-1.16.9/vpp-integration-distribution-1.16.9.jar ${ip} + Wait Until Keyword Succeeds 180s 5s Tail File on Host Until ${ip} Honeycomb /var/log/honeycomb/honeycomb.log - Honeycomb initialized options=-c +0 timeout=120s + Run Keyword And Ignore Error Wait for Process on Host run_traffic_fw_demo.sh ${ip} timeout=60s + Pkill Process On Host "/bin/bash ./run_traffic_fw_demo.sh" ${ip} + +Wait For Packet Sink + [Documentation] Wait for the defined packet sink processes to come up + [Arguments] ${ip} + Log noting to check on ${ip} diff --git a/robot/resources/stack_validation/validate_vlb.robot b/robot/resources/stack_validation/validate_vlb.robot new file mode 100644 index 00000000..9af768fa --- /dev/null +++ b/robot/resources/stack_validation/validate_vlb.robot @@ -0,0 +1,60 @@ +*** Settings *** +Documentation Testing openstack. +Library String +Library DNSUtils +Library Collections +Library SSHLibrary +Resource validate_common.robot + + +*** Variables *** +${ASSETS} ${EXECDIR}/robot/assets/ + +*** Keywords *** +Validate vLB Stack + [Documentation] Identifies the LB and DNS servers in the vLB stack in the GLOBAL_OPENSTACK_SERVICE_REGION + [Arguments] ${stack_name} + Run Openstack Auth Request auth + ${stack_info}= Wait for Stack to Be Deployed auth ${stack_name} + ${stack_id}= Get From Dictionary ${stack_info} id + ${server_list}= Get Openstack Servers auth + Log Returned from Get Openstack Servers + + #${vpg_unprotected_ip}= Get From Dictionary ${stack_info} vpg_private_ip_0 + #${vsn_protected_ip}= Get From Dictionary ${stack_info} vsn_private_ip_0 + ${vlb_public_ip}= Get Server Ip ${server_list} ${stack_info} vlb_name_0 network_name=public + ##${vdns_public_ip}= Get Server Ip ${server_list} ${stack_info} vdns_name_0 network_name=public + +# SCript hands right here. Trying to figure out what it is.... + #Wait For Server ${vlb_public_ip} + #Wait For Server ${vdns_public_ip} + #Log Accessed all servers + + + # Following is a hack because the stack doesn't always come up clean + # Give some time for VLB server to reconfigure the network so our script doesn't hang + Log Waiting for ${vlb_public_ip} to reconfigure + Sleep 180s + #${status} ${data}= Run Keyword And Ignore Error Wait For vLB ${vlb_public_ip} + #Return From Keyword if '${status}' == 'PASS' + #Close All Connections + #Find And Reboot The Server ${stack_info} ${server_list} vlb_name_0 + + # Give some time for VLB server to reconfigure the network so our script doesn't hang + #Log Waiting for ${vlb_public_ip} to reconfigure + #Sleep 180s + Wait For vLB ${vlb_public_ip} + Log All server processes up + +Wait For vLB + [Documentation] Wait for the VLB to be functioning as a DNS + [Arguments] ${ip} + Wait Until Keyword Succeeds 300s 10s DNSTest ${ip} + Log Succeeded + +DNSTest + [Documentation] Wait for the defined VLoadBalancer to process nslookup + [Arguments] ${ip} + Log Looking up ${ip} + #${returned_ip}= Dns Request host1.dnsdemo.openecomp.org ${ip} + #Should Contain '${returned_ip}' . diff --git a/robot/resources/stack_validation/validate_vvg.robot b/robot/resources/stack_validation/validate_vvg.robot new file mode 100644 index 00000000..75340a47 --- /dev/null +++ b/robot/resources/stack_validation/validate_vvg.robot @@ -0,0 +1,17 @@ +*** Settings *** +Documentation Testing openstack. +Library String +Library DNSUtils +Library Collections +Resource validate_common.robot + + +*** Variables *** +${ASSETS} ${EXECDIR}/robot/assets/ + +*** Keywords *** +Validate vVG Stack + [Documentation] Identifies the LB and DNS servers in the vLB stack in the GLOBAL_OPENSTACK_SERVICE_REGION + [Arguments] ${stack_name} + Log All server processes up + -- cgit 1.2.3-korg