summaryrefslogtreecommitdiffstats
path: root/robot/resources/stack_validation/darkstat_interface.robot
blob: 3537408aaeae34bfe1a025aff42e21888d70fda6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
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}