51f29b4a12415564fa7995682602838cf33e58ef
[testsuite.git] / robot / resources / stack_validation / validate_vfw.robot
1 *** Settings ***
2 Documentation     Testing openstack.
3 Library    OperatingSystem
4 Library    SSHLibrary
5 Library    RequestsLibrary
6 Library    JSONUtils
7 Library    OpenstackLibrary
8 Library    HEATUtils
9 Library    Collections
10 Resource          ../../resources/openstack/keystone_interface.robot
11 Resource          ../../resources/openstack/nova_interface.robot
12 Resource          ../../resources/openstack/heat_interface.robot
13 Resource          ../../resources/ssh/files.robot
14 Resource          ../../resources/ssh/processes.robot
15 Resource          ../appc_interface.robot
16 Resource          packet_generator_interface.robot
17 Resource          validate_common.robot
18
19
20 *** Variables ***
21 ${ASSETS}              ${EXECDIR}/robot/assets/
22
23 *** Keywords ***
24 Validate Firewall Stack
25     [Documentation]    Identifies the firewall servers in the VFW Stack in the GLOBAL_OPENSTACK_SERVICE_REGION
26     [Arguments]    ${STACK_NAME}    
27     Run Openstack Auth Request    auth
28     ${stack_info}=    Wait for Stack to Be Deployed    auth    ${STACK_NAME}
29     ${stack_id}=    Get From Dictionary    ${stack_info}    id
30     ${server_list}=    Get Openstack Servers    auth 
31
32     ${vpg_unprotected_ip}=    Get From Dictionary    ${stack_info}    vpg_private_ip_0
33     ${vsn_protected_ip}=    Get From Dictionary    ${stack_info}    vsn_private_ip_0
34     ${vpg_name_0}=    Get From Dictionary    ${stack_info}    vpg_name_0
35     ${vfw_public_ip}=    Get Server Ip    ${server_list}    ${stack_info}   vfw_name_0    network_name=public     
36     ${vpg_public_ip}=    Get Server Ip    ${server_list}    ${stack_info}   vpg_name_0    network_name=public     
37     ${vsn_public_ip}=    Get Server Ip    ${server_list}    ${stack_info}   vsn_name_0    network_name=public     
38     
39     Wait For Server    ${vfw_public_ip}
40     Wait For Server    ${vpg_public_ip}
41     Wait For Server    ${vsn_public_ip}
42     Log    Accessed all servers
43     Wait For Firewall    ${vfw_public_ip}        
44     Wait For Packet Generator    ${vpg_public_ip}      
45     Wait For Packet Sink    ${vsn_public_ip}        
46     Log    All server processes up
47     ${appc}=    Create Mount Point In APPC    ${vpg_name_0}    ${vpg_public_ip}
48
49     # Following hack was implemented because the stack doesn't always come up clean
50     # It was found that rebooting the servers at this point did not improve the
51     # chances of the packets flowing to the SNK 
52     #${status}    ${data}=    Run Keyword And Ignore Error    Wait For Packets   ${vpg_public_ip}   ${vpg_unprotected_ip}   ${vsn_protected_ip}   ${vsn_public_ip}
53     #Return From Keyword if    '${status}' == 'PASS'
54     #Close All Connections
55     #Find And Reboot The Server    ${stack_info}    ${server_list}    vfw_name_0 
56     #Find And Reboot The Server    ${stack_info}    ${server_list}    vpg_name_0 
57     #Find And Reboot The Server    ${stack_info}    ${server_list}    vsn_name_0
58     ## Gives some time for servers to shutdown 
59     #Sleep    10s 
60     #Wait For Server    ${vfw_public_ip}
61     #Wait For Server    ${vpg_public_ip}
62     #Wait For Server    ${vsn_public_ip}
63
64     Wait For Packets   ${vpg_public_ip}   ${vpg_unprotected_ip}   ${vsn_protected_ip}   ${vsn_public_ip}
65     
66 Wait For Packets
67     [Documentation]    Final vfw validation that packets are flowing from the pgn VM  to the snk VM
68     [Arguments]   ${vpg_public_ip}   ${vpg_unprotected_ip}   ${vsn_protected_ip}   ${vsn_public_ip}             
69     ${resp}=    Enable Stream    ${vpg_public_ip}
70     Should Be Equal As Strings    ${resp.status_code}    200
71     ${syslog_message}=    Catenate    UDP: short packet: From ${vpg_unprotected_ip}:.* to ${vsn_protected_ip}:.* 
72     Tail File on Host Until    ${vsn_public_ip}    UDP:    /var/log/syslog    ${syslog_message}    timeout=120s
73     Disable All Streams    ${vpg_public_ip}    
74
75
76 Wait For Firewall
77     [Documentation]     Wait for the defined firewall processes to come up
78     [Arguments]    ${ip}    
79     Wait for Process on Host    ./vpp_measurement_reporter    ${ip}    
80     Wait for Process on Host    vpp -c /etc/vpp/startup.conf    ${ip}    
81
82 Wait For Packet Generator
83     [Documentation]     Wait for the defined packet generator processes to come up
84     [Arguments]    ${ip}    
85     Wait for Process on Host    vpp -c /etc/vpp/startup.conf    ${ip}    
86     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}    
87     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
88     Run Keyword And Ignore Error    Wait for Process on Host    run_traffic_fw_demo.sh    ${ip}    timeout=60s  
89     Pkill Process On Host    "/bin/bash ./run_traffic_fw_demo.sh"    ${ip}
90     
91 Wait For Packet Sink
92     [Documentation]     Wait for the defined packet sink processes to come up
93     [Arguments]    ${ip}
94     Log    noting to check on ${ip}