blob: 28725953a7bfe5193beacee126c5e2fdee3c95d3 [file] [log] [blame]
*** Settings ***
Documentation Test OpenBMC GUI "Network settings" sub-menu of
... "Server configuration".
Resource ../../lib/gui_resource.robot
Resource ../../../lib/bmc_network_utils.robot
Suite Setup Suite Setup Execution
Suite Teardown Close Browser
*** Variables ***
${xpath_network_setting_heading} //h1[text()="Network settings"]
${xpath_interface} //h2[text()="Interface"]
${xpath_system} //h2[text()="System"]
${xpath_static_ipv4} //h2[text()="Static IPv4"]
${xpath_static_dns} //h2[text()="Static DNS"]
${xpath_hostname_input} //*[@data-test-id="networkSettings-input-hostname"]
${xpath_network_save_settings} //button[@data-test-id="networkSettings-button-saveNetworkSettings"]
${xpath_default_gateway_input} //*[@data-test-id="networkSettings-input-gateway"]
${xpath_mac_address_input} //*[@data-test-id="networkSettings-input-macAddress"]
${xpath_static_input_ip0} //*[@data-test-id="networkSettings-input-staticIpv4-0"]
${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="networkSettings-select-interface"]
${xpath_input_netmask_addr0} //*[@data-test-id="networkSettings-input-subnetMask-0"]
${xpath_delete_static_ip} //*[@title="Delete IPv4 row"]
${xpath_input_dns_server} //*[@data-test-id="networkSettings-input-dnsAddress-0"]
${xpath_delete_dns_server} //*[@title="Delete DNS row"]
${xpath_ip_table} //*[@aria-colcount="3"]
@{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_subnet_mask} 255.255.0.0
*** Test Cases ***
Verify Navigation To Network Settings Page
[Documentation] Verify navigation to network settings page.
[Tags] Verify_Navigation_To_Network_Settings_Page
Page Should Contain Element ${xpath_network_setting_heading}
Verify Existence Of All Sections In Network Settings Page
[Documentation] Verify existence of all sections in network settings page.
[Tags] Verify_Existence_Of_All_Sections_In_Network_Settings_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 Settings Page
[Documentation] Verify existence of all buttons in network settings page.
[Tags] Verify_Existence_Of_All_Buttons_In_Network_Settings_Page
Page Should Contain Element ${xpath_add_static_ip}
Page Should Contain Element ${xpath_add_dns_server}
Verify Network Settings From Server Configuration
[Documentation] Verify ability to select "Network Settings" sub-menu option
... of "Server Configuration".
[Tags] Verify_Network_Settings_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
FOR ${network_configuration} IN @{network_configurations}
Textfield Value Should Be ${xpath_static_input_ip0} ${network_configuration["Address"]}
Textfield Value Should Be ${xpath_input_netmask_addr0} ${network_configuration['SubnetMask']}
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.
[Setup] Test Setup Execution
[Tags] Configure_And_Verify_Static_IP_Address
[Teardown] Run Keywords Delete And Verify Static IP Address On BMC
... AND Test Teardown Execution
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
*** Keywords ***
Suite Setup Execution
[Documentation] Do test case setup tasks.
Launch Browser And Login GUI
Click Element ${xpath_server_configuration}
Click Element ${xpath_select_network_settings}
Wait Until Keyword Succeeds 30 sec 10 sec Location Should Contain network-settings
${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="networkSettings-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="networkSettings-input-dnsAddress-${i}"]
Textfield Value Should Be //*[@data-test-id="networkSettings-input-dnsAddress-${i}"]
... ${static_name_servers}[${i}]
END
Add Static IP Address And Verify
[Documentation] Add static IP on BMC and verify.
[Arguments] ${ip_addresses} ${subnet_masks} ${expected_status}=Valid format
# Description of argument(s):
# ip_addresses A list of IP address to be added (e.g. ["10.7.7.7"]).
# subnet_masks A list of 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).
${ip_count}= Get Length ${ip_addresses}
FOR ${i} IN RANGE ${ip_count}
${ip_location}= Evaluate ${i} + ${1}
Wait Until Element Is Enabled ${xpath_add_static_ip}
Click Button ${xpath_add_static_ip}
Wait Until Element Is Enabled //*[@data-test-id="networkSettings-input-staticIpv4-${ip_location}"]
Wait Until Element Is Enabled //*[@data-test-id="networkSettings-input-subnetMask-${ip_location}"]
Input Text //*[@data-test-id="networkSettings-input-staticIpv4-${ip_location}"] ${ip_addresses}[${i}]
Input Text //*[@data-test-id="networkSettings-input-subnetMask-${ip_location}"] ${subnet_masks}[${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
Click Element ${xpath_refresh_button}
Verify IP And Netmask On BMC Using GUI ${ip_addresses} ${subnet_masks}
Delete And Verify Static IP Address On BMC
[Documentation] Delete static IP address and verify
${all_match_elements}= Get Element Count ${xpath_delete_static_ip}
FOR ${element} IN RANGE ${all_match_elements}
${ip_location}= Evaluate ${element} + ${1}
Delete Static IPv4 Addresses Except BMC IP ${element}
${status}= Run Keyword And Return Status Page Should Contain Textfield
... //*[@data-test-id="networkSettings-input-staticIpv4-${ip_location}"]
Exit For Loop IF "${status}" == "${False}"
END
Click Button ${xpath_network_save_settings}
Wait Until Page Contains Element ${xpath_setting_success} timeout=15
${all_match_elements}= Get Element Count ${xpath_delete_static_ip}
Should Be Equal ${all_match_elements} ${1}
Textfield Value Should Be ${xpath_static_input_ip0} ${BMC_IP}
Sleep ${NETWORK_TIMEOUT}s
Ping Host ${OPENBMC_HOST}
Validate Network Config On BMC
Delete Static IPv4 Addresses Except BMC IP
[Documentation] Delete static IP addresses from IPv4 section on GUI except BMC IP.
[Arguments] ${element}
# Description of argument(s):
# element IP address location on GUI(e.g. 0 or 1).
${ip_location}= Evaluate ${element} + ${1}
Wait Until Element Is Enabled //*[@data-test-id="networkSettings-input-staticIpv4-${element}"]
${input_ip}= Get Value //*[@data-test-id="networkSettings-input-staticIpv4-${element}"]
Run Keyword If "${BMC_IP}" != "${input_ip}"
... Click Button ${xpath_ip_table}/tbody/tr[${ip_location}]/td[3]/span/button
# Get delete ip elements.
${delete_ip_elements}= Get Element Count ${xpath_delete_static_ip}
# Delete IP Address on BMC if avilable more than 1.
Run Keyword If ${delete_ip_elements} != ${1}
... Delete Static IPv4 Addresses Except BMC IP ${element}
Test Setup Execution
[Documentation] Get and delete existing IPv4 addresses and netmask if any..
${ip_data}= Create List
${netmask_data}= Create List
# Get all IPv4 addresses and netmask on BMC.
${network_configurations}= Get Network Configuration
FOR ${network_configuration} IN @{network_configurations}
Continue For Loop If '${BMC_IP}' == '${network_configuration['Address']}'
Append To List ${ip_data} ${network_configuration['Address']}
Append To List ${netmask_data} ${network_configuration['SubnetMask']}
END
Set Suite Variable ${ip_data}
Set Suite Variable ${netmask_data}
# Delete existing static IPv4 addresses and netmask if avilable.
Run keyword if ${ip_data} == @{empty} and ${netmask_data} == @{empty}
... Delete And Verify Static IP Address On BMC
Test Teardown Execution
[Documentation] Restore existing IPv4 addresses and netmasks.
${ip_length}= Get Length ${ip_data}
${netmask_length}= Get Length ${netmask_data}
# Restore existing IPv4 addresses and netmasks if any..
Run keyword If ${ip_length} == ${0} and ${netmask_length} == ${0}
... Add Static IP Address And Verify ${ip_data} ${netmask_data}
Verify IP And Netmask On BMC Using GUI
[Documentation] Verify IP and netmask on GUI.
[Arguments] ${ip_addresses} ${subnet_masks}
# Description of argument(s):
# ip_addresses A list of IP address to be added (e.g. ["10.7.7.7"]).
# subnet_masks A list of Subnet mask for the IP to be added (e.g. ["255.255.0.0]").
${ip_count}= Get Length ${ip_addresses}
FOR ${i} IN RANGE ${ip_count}
${input_ip}= Get Value //*[@data-test-id="networkSettings-input-staticIpv4-${i}"]
Continue For Loop If '${BMC_IP}' == '${input_ip}'
Textfield Value Should Be //*[@data-test-id="networkSettings-input-staticIpv4-${i}"]
... ${ip_addresses}[${i}]
Textfield Value Should Be //*[@data-test-id="networkSettings-input-subnetMask-${i}"]
... ${subnet_masks}[${i}]
END
Validate Network Config On BMC