| *** Settings *** |
| Documentation This suite will test extended Network Configuration Rest Interfaces |
| |
| Resource ../lib/rest_client.robot |
| Resource ../lib/connection_client.robot |
| Resource ../lib/utils.robot |
| Resource ../lib/openbmc_ffdc.robot |
| Library ../lib/pythonutil.py |
| |
| Suite Setup Open Connection And Log In |
| Suite Teardown Close All Connections |
| Test Teardown Log FFDC |
| |
| *** Test Cases *** |
| |
| Set IP address on valid Interface |
| [Tags] network_test |
| [Documentation] This test case sets the ip on the interface and validates |
| ... that ip address has been set or not. |
| ... Expectation is the ip address should get added. |
| |
| validateEnvVariables |
| |
| |
| ${networkInfo}= Get networkInfo from the interface eth0 |
| ${result}= convert to integer ${networkInfo['data'][1]} |
| |
| ${MASK}= calcDottedNetmask ${result} |
| set suite variable ${OLD_MASK} ${MASK} |
| Log ${OLD_MASK} |
| set suite variable ${OLD_IP} ${networkInfo['data'][2]} |
| set suite variable ${OLD_GATEWAY} ${networkInfo['data'][3]} |
| |
| Log ${OLD_IP} |
| Log ${OLD_GATEWAY} |
| |
| |
| ${NEW_IP}= Get Environment Variable NEW_BMC_IP |
| ${NEW_MASK}= Get Environment Variable NEW_SUBNET_MASK |
| ${NEW_GATEWAY}= Get Environment Variable NEW_GATEWAY |
| |
| ${arglist}= Create List eth0 ${NEW_IP} ${NEW_MASK} ${NEW_GATEWAY} |
| ${args}= Create Dictionary data=@{arglist} |
| run keyword and ignore error Call Method /org/openbmc/NetworkManager/Interface/ SetAddress4 data=${args} |
| |
| Wait For Host To Ping ${NEW_IP} |
| Set Suite Variable ${AUTH_URI} https://${NEW_IP} |
| Log ${AUTH_URI} |
| |
| ${networkInfo}= Get networkInfo from the interface eth0 |
| ${ipaddress}= set variable ${networkInfo['data'][2]} |
| ${gateway}= set variable ${networkInfo['data'][3]} |
| |
| ${isgatewayfound} = Set Variable If '${gateway}'=='${NEW_GATEWAY}' true false |
| Log ${isgatewayfound} |
| ${isIPfound}= Set Variable if '${ipaddress}' == '${NEW_IP}' true false |
| should be true '${isIPfound}' == 'true' and '${isgatewayfound}' == 'true' |
| |
| |
| Revert the last ip address change |
| [Tags] network_test |
| [Documentation] This test case sets the ip on the interface and validates |
| ... that ip address has been set or not. |
| ... Expectation is the ip address should get added. |
| |
| |
| ${arglist}= Create List eth0 ${OLD_IP} ${OLD_MASK} ${OLD_GATEWAY} |
| ${args}= Create Dictionary data=@{arglist} |
| run keyword and ignore error Call Method /org/openbmc/NetworkManager/Interface/ SetAddress4 data=${args} |
| |
| Wait For Host To Ping ${OLD_IP} |
| Set Suite Variable ${AUTH_URI} https://${OLD_IP} |
| Log ${AUTH_URI} |
| |
| |
| ${networkInfo}= Get networkInfo from the interface eth0 |
| ${ipaddress}= set variable ${networkInfo['data'][2]} |
| ${gateway}= set variable ${networkInfo['data'][3]} |
| |
| ${isgatewayfound} = Set Variable If '${gateway}'=='${OLD_GATEWAY}' true false |
| Log ${isgatewayfound} |
| ${isIPfound}= Set Variable if '${ipaddress}' == '${OLD_IP}' true false |
| should be true '${isIPfound}' == 'true' and '${isgatewayfound}' == 'true' |
| |
| |
| Persistency check for ip address |
| [Tags] reboot_test |
| [Documentation] we reboot the service processor and after reboot |
| ... will request for the ip address to check the persistency |
| ... of the ip address. |
| ... Expectation is the ip address should persist. |
| |
| Open Connection And Log In |
| Execute Command reboot |
| Log "System is getting rebooted wait for few seconds" |
| ${networkInfo}= Get networkInfo from the interface eth0 |
| ${ipaddress}= set variable ${networkInfo['data'][2]} |
| ${gateway}= set variable ${networkInfo['data'][3]} |
| |
| ${isgatewayfound} = Set Variable If '${gateway}'=='${OLD_GATEWAY}' true false |
| Log ${isgatewayfound} |
| ${isIPfound}= Set Variable if '${ipaddress}' == '${OLD_IP}' true false |
| should be true '${isIPfound}' == 'true' and '${isgatewayfound}' == 'true' |
| |
| |
| Set invalid Mac address eth0 gg:hh:jj:kk:ll:mm error |
| [Tags] network_test Set_invalid_Mac_address |
| [Template] SetMacAddress_bad |
| [Documentation] This test case tries to set the invalid mac address |
| ... on the eth0 interface. |
| ... Expectation is that it should throw error. |
| |
| |
| Set valid Mac address eth0 00:21:cc:73:91:dd ok |
| [Tags] network_test Set_valid_Mac_address |
| [Template] SetMacAddress_good |
| [Documentation] ***GOOD PATH*** |
| ... This test case add the ip addresson the interface and validates |
| ... that ip address has been added or not. |
| ... Expectation is the ip address should get added. |
| |
| Revert old Mac address eth0 ${OLD_MAC_ADDRESS} ok |
| [Tags] network_test Revert_old_Mac_address |
| [Template] SetMacAddress_good |
| [Documentation] ***GOOD PATH*** |
| ... This test case add the ip addresson the interface and validates |
| ... that ip address has been added or not. |
| ... Expectation is the ip address should get added. |
| |
| ***keywords*** |
| |
| Get networkInfo from the interface |
| |
| [Documentation] This keyword is used to match the given ip with the configured one. |
| ... returns true if match successfull else false |
| ... eg:- Outout of getAddress4 |
| ... NewFormat:-{"data": [ 2,25,"9.3.164.147","9.3.164.129"],"message": "200 OK","status": "ok"} |
| ... OldFormat:- |
| ... {"data": [[[2,25,0,128,"9.3.164.177"],[2,8,254,128,"127.0.0.1"]],"9.3.164.129"], |
| ... "message": "200 OK", "status": "ok"} |
| |
| [arguments] ${intf} |
| @{arglist}= Create List ${intf} |
| ${args}= Create Dictionary data=@{arglist} |
| ${resp}= Call Method /org/openbmc/NetworkManager/Interface/ GetAddress4 data=${args} |
| should be equal as strings ${resp.status_code} ${HTTP_OK} |
| ${json} = to json ${resp.content} |
| Log ${json['data'][2]} |
| Log ${json['data'][3]} |
| [return] ${json} |
| |
| |
| validateEnvVariables |
| |
| ${NEW_BMC_IP}= Get Environment Variable NEW_BMC_IP |
| ${NEW_SUBNET_MASK}= Get Environment Variable NEW_SUBNET_MASK |
| ${NEW_GATEWAY}= Get Environment Variable NEW_GATEWAY |
| |
| |
| should not be empty ${NEW_BMC_IP} |
| should not be empty ${NEW_GATEWAY} |
| should not be empty ${NEW_SUBNET_MASK} |
| |
| SetMacAddress_bad |
| [Arguments] ${intf} ${address} ${result} |
| ${arglist}= Create List ${intf} ${address} |
| ${args}= Create Dictionary data=@{arglist} |
| ${resp}= Call Method /org/openbmc/NetworkManager/Interface/ SetHwAddress data=${args} |
| should not be equal as strings ${resp.status_code} ${HTTP_OK} |
| ${json} = to json ${resp.content} |
| should be equal as strings ${json['status']} ${result} |
| |
| |
| SetMacAddress_good |
| [Arguments] ${intf} ${address} ${result} |
| ${arglist}= Create List ${intf} ${address} |
| ${args}= Create Dictionary data=@{arglist} |
| ${resp}= Call Method /org/openbmc/NetworkManager/Interface/ SetHwAddress data=${args} |
| should be equal as strings ${resp.status_code} ${HTTP_OK} |
| ${json} = to json ${resp.content} |
| should be equal as strings ${json['status']} ${result} |
| Wait For Host To Ping ${OPENBMC_HOST} |
| |
| Wait Until Keyword Succeeds 30 sec 5 sec Initialize OpenBMC |
| |
| @{arglist}= Create List ${intf} |
| ${args}= Create Dictionary data=@{arglist} |
| ${resp}= Call Method /org/openbmc/NetworkManager/Interface/ GetHwAddress data=${args} |
| ${json} = to json ${resp.content} |
| should be equal as strings ${json['data']} ${address} |