diff options
Diffstat (limited to 'robot/resources/stack_validation/darkstat_interface.robot')
-rw-r--r-- | robot/resources/stack_validation/darkstat_interface.robot | 82 |
1 files changed, 82 insertions, 0 deletions
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 |