blob: 664dd14bc31bb0f7ca805a1a6da5ea46cc99b425 [file] [log] [blame]
*** Settings ***
Documentation Test OpenBMC GUI "Network" sub-menu of "Settings".
Resource ../../lib/gui_resource.robot
Resource ../../../lib/bmc_network_utils.robot
Suite Setup Suite Setup Execution
Suite Teardown Close Browser
*** Variables ***
${xpath_network_heading} //h1[text()="Network"]
${xpath_interface} //h2[text()="Interface"]
${xpath_system} //h2[text()="System"]
${xpath_static_ipv4} //h2[text()="IPV4"]
${xpath_static_dns} //h2[text()="Static DNS"]
${xpath_hostname_input} //*[@data-test-id="network-input-hostname"]
${xpath_network_save_settings} //button[@data-test-id="network-button-saveNetworkSettings"]
${xpath_default_gateway_input} //*[@data-test-id="network-input-gateway"]
${xpath_mac_address_input} //*[@data-test-id="network-input-macAddress"]
${xpath_static_input_ip0} //*[@data-test-id="network-input-staticIpv4-0"]
${xpath_static_input_ip1} //*[@data-test-id="network-input-staticIpv4-1"]
${xpath_add_static_ip} //button[contains(text(),"Add static IP")]
${xpath_setting_success} //*[contains(text(),"Successfully saved network settings.")]
${xpath_add_dns_server} //button[contains(text(),"Add DNS server")]
${xpath_network_interface} //*[@data-test-id="network-select-interface"]
${xpath_input_netmask_addr0} //*[@data-test-id="network-input-subnetMask-0"]
${xpath_input_netmask_addr1} //*[@data-test-id="network-input-subnetMask-1"]
${xpath_delete_static_ip} //*[@title="Delete IPv4 row"]
${xpath_input_dns_server} //*[@data-test-id="network-input-dnsAddress-0"]
${xpath_delete_dns_server} //*[@title="Delete DNS row"]
${xpath_delete_static_ip} //*[@title="Delete IPv4 row"]
@{static_name_servers} 10.10.10.10
@{null_value} null
@{empty_dictionary} {}
@{string_value} aa.bb.cc.dd
@{special_char_value} @@@.%%.44.11
${test_ipv4_addr} 10.7.7.7
${test_ipv4_addr2} 10.7.7.8
${test_subnet_mask} 255.255.0.0
# Valid netmask is 4 bytes long and has continuous block of 1s.
# Maximum valid value in each octet is 255 and least value is 0.
# Maximum value of octet in netmask is 255.
${alpha_netmask} ff.ff.ff.ff
${out_of_range_netmask} 255.256.255.0
${more_byte_netmask} 255.255.255.0.0
${lowest_netmask} 128.0.0.0
${test_hostname} openbmc
*** Test Cases ***
Verify Navigation To Network Page
[Documentation] Verify navigation to network page.
[Tags] Verify_Navigation_To_Network_Page
Page Should Contain Element ${xpath_network_heading}
Verify Existence Of All Sections In Network Page
[Documentation] Verify existence of all sections in network settings page.
[Tags] Verify_Existence_Of_All_Sections_In_Network_Page
Page Should Contain Element ${xpath_interface}
Page Should Contain Element ${xpath_system}
Page Should Contain Element ${xpath_static_ipv4}
Page Should Contain Element ${xpath_static_dns}
Page Should Contain Button ${xpath_delete_static_ip}
Verify Existence Of All Buttons In Network Page
[Documentation] Verify existence of all buttons in network page.
[Tags] Verify_Existence_Of_All_Buttons_In_Network_Page
Page Should Contain Element ${xpath_add_static_ip}
Page Should Contain Element ${xpath_add_dns_server}
Verify Network From Server Configuration
[Documentation] Verify ability to select "Network" sub-menu option
... of "Settings".
[Tags] Verify_Network_From_Server_Configuration
Page Should Contain IP address
Verify Hostname Text Configuration
[Documentation] Verify hostname text is configurable from "network settings"
... sub-menu.
[Tags] Verify_Hostname_Text_Configuration
Wait Until Element Is Enabled ${xpath_hostname_input}
Input Text ${xpath_hostname_input} witherspoon1
Click Button ${xpath_network_save_settings}
Wait Until Page Contains Element ${xpath_setting_success} timeout=10
Wait Until Keyword Succeeds 15 sec 5 sec Textfield Should Contain ${xpath_hostname_input}
... witherspoon1
Verify Default Gateway Editable
[Documentation] Verify default gateway text input allowed from "network
... settings".
[Tags] Verify_Default_Gateway_Editable
[Teardown] Click Element ${xpath_refresh_button}
Wait Until Page Contains Element ${xpath_default_gateway_input}
Input Text ${xpath_default_gateway_input} 10.6.6.7
Verify MAC Address Editable
[Documentation] Verify MAC address text input allowed from "network
... settings".
[Tags] Verify_MAC_Address_Editable
[Teardown] Click Element ${xpath_refresh_button}
Wait Until Element Is Enabled ${xpath_mac_address_input}
Input Text ${xpath_mac_address_input} AA:E2:84:14:28:79
Verify Static IP Address Editable
[Documentation] Verify static IP address is editable.
[Tags] Verify_Static_IP_Address_Editable
[Teardown] Click Element ${xpath_refresh_button}
${exists}= Run Keyword And Return Status Wait Until Page Contains Element ${xpath_static_input_ip0}
Run Keyword If '${exists}' == '${False}'
... Click Element ${xpath_add_static_ip}
Input Text ${xpath_static_input_ip0} ${OPENBMC_HOST}
Verify System Section In Network Setting page
[Documentation] Verify hostname, MAC address and default gateway
... under system section of network setting page.
[Tags] Verify_System_Section
${host_name}= Redfish_Utils.Get Attribute ${REDFISH_NW_PROTOCOL_URI} HostName
Textfield Value Should Be ${xpath_hostname_input} ${host_name}
${mac_address}= Get BMC MAC Address
Textfield Value Should Be ${xpath_mac_address_input} ${mac_address}
${default_gateway}= Get BMC Default Gateway
Textfield Value Should Be ${xpath_default_gateway_input} ${default_gateway}
Verify Network Interface Details
[Documentation] Verify network interface name in network setting page.
[Tags] Verify_Network_Interface_Details
${active_channel_config}= Get Active Channel Config
${ethernet_interface_redfish}= Set Variable ${active_channel_config['${CHANNEL_NUMBER}']['name']}
${ethernet_interface_gui}= Get Text ${xpath_network_interface}
Should Contain ${ethernet_interface_gui} ${ethernet_interface_redfish}
Verify Network Static IPv4 Details
[Documentation] Verify network static IPv4 details.
[Tags] Verify_Network_static_IPv4_Details
@{network_configurations}= Get Network Configuration
${ip_addresses}= Get Static IPv4 Addresses From GUI
FOR ${network_configuration} IN @{network_configurations}
List Should Contain Value ${ip_addresses} ${network_configuration["Address"]}
END
Configure Invalid Network Addresses And Verify
[Documentation] Configure invalid network addresses and verify.
[Tags] Configure_Invalid_Network_Addresses_And_Verify
[Template] Configure Invalid Network Address And Verify
# locator invalid_address
${xpath_mac_address_input} A.A.A.A
${xpath_default_gateway_input} a.b.c.d
${xpath_static_input_ip0} a.b.c.d
${xpath_input_netmask_addr0} 255.256.255.0
Configure And Verify Empty Network Addresses
[Documentation] Configure and verify empty network addresses.
[Tags] Configure_And_Verify_Empty_Network_Addresses
[Template] Configure Invalid Network Address And Verify
# locator invalid_address expected_error
${xpath_mac_address_input} ${empty} Field required
${xpath_default_gateway_input} ${empty} Field required
${xpath_static_input_ip0} ${empty} Field required
${xpath_input_netmask_addr0} ${empty} Field required
${xpath_hostname_input} ${empty} Field required
Config And Verify DNS Server Via GUI
[Documentation] Configure DNS server and verify.
[Tags] Config_And_Verify_DNS_Server_Via_GUI
[Setup] DNS Test Setup Execution
[Teardown] Run Keywords Delete DNS Server And Verify ${static_name_servers}
... AND DNS Test Teardown Execution
Add DNS Server And Verify ${static_name_servers}
Delete And Verify DNS Server Via GUI
[Documentation] Delete DNS server and verify.
[Tags] Delete_And_Verify_DNS_Server_Via_GUI
[Setup] Run Keywords DNS Test Setup Execution AND
... Add DNS Server And Verify ${static_name_servers}
[Teardown] DNS Test Teardown Execution
Delete DNS Server And Verify ${static_name_servers}
Configure And Verify Static IP Address
[Documentation] Configure and verify static ip addresses.
[Tags] Configure_And_Verify_Static_IP_Address
[Teardown] Delete And Verify Static IP Address On BMC ${test_ipv4_addr}
Add Static IP Address And Verify ${test_ipv4_addr} ${test_subnet_mask}
Configure And Verify Invalid DNS Server
[Documentation] Configure invalid DNS server and verify error.
[Tags] Configure_And_Verify_Invalid_DNS_Server
[Template] Add DNS Server And Verify
[Setup] DNS Test Setup Execution
[Teardown] Run Keywords Click Element ${xpath_refresh_button}
... AND DNS Test Teardown Execution
# invalid_ address expected_status
${string_value} Invalid format
${special_char_value} Invalid format
${empty_dictionary} Field required
${null_value} Invalid format
Modify IP Address And Verify
[Documentation] Modify IP address and verify.
[Tags] Modify_IP_Address_And_Verify
[Teardown] Delete And Verify Static IP Address On BMC ${test_ipv4_addr2}
Add Static IP Address And Verify ${test_ipv4_addr} ${test_subnet_mask}
Update IP Address And Verify ${test_ipv4_addr} ${test_ipv4_addr2}
Configure Netmask And Verify
[Documentation] Configure and verify netmask.
[Tags] Configure_And_Verify_Netmask
[Template] Add Static IP Address And Verify
[Teardown] Run Keywords Click Element ${xpath_refresh_button}
... AND Delete And Verify Static IP Address On BMC ${test_ipv4_addr}
# ip_addresses subnet_masks expected_status
${test_ipv4_addr} ${lowest_netmask} Valid format
${test_ipv4_addr} ${more_byte_netmask} Invalid format
${test_ipv4_addr} ${alpha_netmask} Invalid format
${test_ipv4_addr} ${out_of_range_netmask} Invalid format
Configure Hostname And Verify
[Documentation] Configure hostname and verify.
[Tags] Configure_Hostname_And_Verify
[Teardown] Configure And Verify Network Settings
... ${xpath_hostname_input} ${hostname}
${hostname}= Get Value ${xpath_hostname_input}
Configure And Verify Network Settings ${xpath_hostname_input} ${test_hostname}
*** Keywords ***
Suite Setup Execution
[Documentation] Do test case setup tasks.
Launch Browser And Login GUI
Click Element ${xpath_settings_menu}
Click Element ${xpath_network_sub_menu}
Wait Until Keyword Succeeds 30 sec 10 sec Location Should Contain network
${host_name} ${BMC_IP}= Get Host Name IP host=${OPENBMC_HOST}
Set Suite Variable ${BMC_IP}
Configure Invalid Network Address And Verify
[Documentation] Configure invalid network address And verify.
[Arguments] ${locator} ${invalid_address} ${expected_error}=Invalid format
[Teardown] Click Element ${xpath_refresh_button}
# Description of the argument(s):
# locator Xpath to identify an HTML element on a web page.
# invalid_address Invalid address to be added.
# expected_error Expected error optionally provided in testcase
# .... (e.g. Invalid format / Field required)
Wait Until Element Is Enabled ${locator}
Clear Element Text ${locator}
Input Text ${locator} ${invalid_address}
Click Element ${xpath_network_save_settings}
Page Should Contain ${expected_error}
Add DNS Server And Verify
[Documentation] Add DNS server on BMC and verify it via BMC CLI.
[Arguments] ${static_name_servers} ${expected_status}=Valid format
# Description of the argument(s):
# static_name_servers A list of static name server IPs to be
# configured on the BMC.
# expected_status Expected status while adding DNS server address
# ... (e.g. Invalid format / Field required).
Wait Until Page Contains Element ${xpath_add_dns_server}
${length}= Get Length ${static_name_servers}
FOR ${i} IN RANGE ${length}
Click Button ${xpath_add_dns_server}
Input Text //*[@data-test-id="network-input-dnsAddress-${i}"]
... ${static_name_servers}[${i}]
END
Click Button ${xpath_network_save_settings}
Run keyword if '${expected_status}' != 'Valid format'
... Run keywords Page Should Contain ${expected_status} AND Return From Keyword
Wait Until Page Contains Element ${xpath_setting_success} timeout=15
Sleep ${NETWORK_TIMEOUT}s
Verify Static Name Server Details On GUI ${static_name_servers}
# Check if newly added DNS server is configured on BMC.
${cli_name_servers}= CLI Get Nameservers
List Should Contain Sub List ${cli_name_servers} ${static_name_servers}
Delete DNS Server And Verify
[Documentation] Delete static name servers.
[Arguments] ${static_name_servers}
# Description of the argument(s):
# static_name_servers A list of static name server IPs to be
# configured on the BMC.
${length}= Get Length ${static_name_servers}
FOR ${i} IN RANGE ${length}
${status}= Run Keyword And Return Status
... Page Should Contain Element ${xpath_delete_dns_server}
Exit For Loop If "${status}" == "False"
Wait Until Element Is Enabled ${xpath_delete_dns_server}
Click Button ${xpath_delete_dns_server}
END
Click Button ${xpath_network_save_settings}
Wait Until Page Contains Element ${xpath_setting_success} timeout=15
Sleep ${NETWORK_TIMEOUT}s
Page Should Not Contain Element ${xpath_input_dns_server}
# Check if all name servers deleted on BMC.
${nameservers}= CLI Get Nameservers
Should Be Empty ${nameservers}
DNS Test Setup Execution
[Documentation] Do DNS test setup execution.
${original_name_server}= CLI Get Nameservers
Set Suite Variable ${original_name_server}
Run Keyword If ${original_name_server} != @{EMPTY}
... Delete DNS Server And Verify ${original_name_server}
DNS Test Teardown Execution
[Documentation] Do DNS test teardown execution.
Run Keyword If ${original_name_server} != @{EMPTY}
... Add DNS Server And Verify ${original_name_server}
Verify Static Name Server Details On GUI
[Documentation] Verify static name servers on GUI.
[Arguments] ${static_name_servers}
# Description of the argument(s):
# static_name_servers A list of static name server IPs to be
# configured on the BMC.
${length}= Get Length ${static_name_servers}
FOR ${i} IN RANGE ${length}
Page Should Contain Element //*[@data-test-id="network-input-dnsAddress-${i}"]
Textfield Value Should Be //*[@data-test-id="network-input-dnsAddress-${i}"]
... ${static_name_servers}[${i}]
END
Add Static IP Address And Verify
[Documentation] Add static IP on BMC and verify.
[Arguments] ${ip_address} ${subnet_mask} ${expected_status}=Valid format
# Description of argument(s):
# ip_address IP address to be added (e.g. 10.7.7.7).
# subnet_masks Subnet mask for the IP to be added (e.g. 255.255.0.0).
# expected_status Expected status while adding static ipv4 address
# .... (e.g. Invalid format / Field required).
${available_ip_addresses}= Get Static IPv4 Addresses From GUI
# New IP address location is GUI is equivalent to the available IP address
# in Redfish. i.e. if two IP address are available in GUI then location
# on IP address in GUI is also 2.
${location}= Get Length ${available_ip_addresses}
Wait Until Element Is Enabled ${xpath_add_static_ip}
Click Button ${xpath_add_static_ip}
Input Text
... //*[@data-test-id="network-input-staticIpv4-${location}"] ${ip_address}
Input Text
... //*[@data-test-id="network-input-subnetMask-${location}"] ${subnet_mask}
Click Button ${xpath_network_save_settings}
Run keyword if '${expected_status}' != 'Valid format'
... Run keywords Page Should Contain ${expected_status} AND Return From Keyword
Wait Until Page Contains Element ${xpath_setting_success} timeout=15
Click Element ${xpath_refresh_button}
Wait Until Page Contains Element ${xpath_static_input_ip0}
Validate Network Config On BMC
${ip_addresses}= Get Static IPv4 Addresses From GUI
Should Contain ${ip_addresses} ${ip_address}
Delete And Verify Static IP Address On BMC
[Documentation] Delete static IP address and verify
[Arguments] ${ip_address}
# Description of argument(s):
# ip_address IP address to be deleted (e.g. "10.7.7.7").
${ip_addresses}= Get Static IPv4 Addresses From GUI
Should Contain ${ip_addresses} ${ip_address} msg=${ip_address} does not exist on BMC
${delete_ip_buttons}= Get WebElements ${xpath_delete_static_ip}
FOR ${location} IN RANGE len(${ip_addresses})
${gui_ip}= Get Value //*[@data-test-id="network-input-staticIpv4-${location}"]
Run Keyword If '${gui_ip}' == '${ip_address}' and '${gui_ip}' != '${BMC_IP}'
... Run Keywords Click Element ${delete_ip_buttons}[${location}]
... AND Exit For Loop
END
Click Button ${xpath_network_save_settings}
Wait Until Page Contains Element ${xpath_setting_success} timeout=15
Wait Until Page Contains Element ${xpath_static_input_ip0}
Validate Network Config On BMC
${ip_addresses}= Get Static IPv4 Addresses From GUI
Should Not Contain ${ip_addresses} ${ip_address}
Update IP Address And Verify
[Documentation] Update and verify static IP address on BMC.
[Arguments] ${ip} ${new_ip}
# Description of argument(s):
# ip IP address to be replaced (e.g. "10.7.7.7").
# new_ip New IP address to be configured.
${ip_addresses}= Get Static IPv4 Addresses From GUI
Should Contain ${ip_addresses} ${ip} msg=${ip} does not exist on BMC
FOR ${location} IN RANGE len(${ip_addresses})
${gui_ip}= Get Value //*[@data-test-id="network-input-staticIpv4-${location}"]
Run Keyword If '${gui_ip}' == '${ip}'
... Run Keywords
... Clear Element Text //*[@data-test-id="network-input-staticIpv4-${location}"]
... AND Input Text
... //*[@data-test-id="network-input-staticIpv4-${location}"] ${new_ip}
... AND Exit For Loop
END
Click Button ${xpath_network_save_settings}
Wait Until Page Contains Element ${xpath_setting_success} timeout=15
Click Element ${xpath_refresh_button}
Wait Until Page Contains Element ${xpath_static_input_ip0}
Validate Network Config On BMC
${ip_addresses}= Get Static IPv4 Addresses From GUI
Should Contain ${ip_addresses} ${new_ip}
Get Static IPv4 Addresses From GUI
[Documentation] Get static IPV4 addresses from GUI.
${availble_ip_addresses}= Get Network Configuration
${static_ipv4_addresses}= Create List
FOR ${locator} IN RANGE len(${availble_ip_addresses})
${ip_address}= Get value //*[@data-test-id="network-input-staticIpv4-${locator}"]
Append To List ${static_ipv4_addresses} ${ip_address}
END
[Return] ${static_ipv4_addresses}
Configure And Verify Network Settings
[Documentation] Configure and verify network settings.
[Arguments] ${xpath} ${nw_settings}
# Description of argument(s):
# xpath xpath of the network settings.
# nw_settings The mac address, hostname etc.
Wait Until Element Is Enabled ${xpath}
Input Text ${xpath} ${nw_settings}
Click Button ${xpath_network_save_settings}
Wait Until Page Contains Element ${xpath_setting_success} timeout=10
Textfield Value Should Be ${xpath} ${nw_settings}