| *** Settings *** |
| Documentation This suite will verifiy the Network Configuration Rest Interfaces |
| ... Details of valid interfaces can be found here... |
| ... https://github.com/openbmc/docs/blob/master/rest-api.md |
| |
| 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 FFDC On Test Case Fail |
| |
| *** Variables *** |
| |
| ${NW_MANAGER} ${NETWORK_MANAGER_URI}Interface |
| |
| *** Test Cases *** |
| |
| Get the Mac address |
| |
| [Documentation] This test case is to get the mac address |
| [Tags] network_test |
| @{arglist}= Create List eth0 |
| ${args}= Create Dictionary data=@{arglist} |
| ${resp}= Call Method ${NW_MANAGER} GetHwAddress data=${args} |
| should not be empty ${resp.content} |
| ${json}= to json ${resp.content} |
| should be equal as strings ${json['status']} ok |
| set suite variable ${OLD_MAC_ADDRESS} ${json['data']} |
| |
| |
| Get IP Address with invalid interface |
| |
| [Documentation] This test case tries to get the ip addrees with the invalid |
| ... interface,Expectation is it should get error. |
| [Tags] network_test |
| |
| @{arglist}= Create List lo01 |
| ${args}= Create Dictionary data=@{arglist} |
| ${resp}= Call Method ${NW_MANAGER} GetAddress4 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']} error |
| |
| Get IP Address with valid interface |
| |
| [Documentation] This test case tries to get the ip addrees with the invalid |
| ... interface,Expectation is it should get error. |
| [Tags] network_test |
| |
| @{arglist}= Create List eth0 |
| ${args}= Create Dictionary data=@{arglist} |
| ${resp}= Call Method ${NW_MANAGER} GetAddress4 data=${args} |
| should be equal as strings ${resp.status_code} ${HTTP_OK} |
| ${json}= to json ${resp.content} |
| should be equal as strings ${json['status']} ok |
| |
| |
| Set the IP address on invalid Interface lo01 1.1.1.1 255.255.255.0 1.1.1.1 error |
| |
| [Tags] network_test |
| [Template] AddNetworkInfo |
| [Documentation] This test case tries to set the ip addrees with the invalid |
| ... interface,Expectation is it should get error |
| |
| Set invalid IP address on the valid interface eth0 ab.cd.ef.gh 255.255.255.0 1.1.1.1 error |
| |
| [Tags] network_test |
| [Template] AddNetworkInfo |
| [Documentation] This test case tries to set the invalid ip addrees on the interface |
| ... Expectation is it should get error. |
| |
| |
| Set IP address with invalid subnet mask eth0 2.2.2.2 av.ih.jk.lm 1.1.1.1 error |
| |
| [Tags] network_test |
| [Template] AddNetworkInfo |
| [Documentation] This test case tries to set the ip addrees on the interface |
| ... with invalid subnet mask,Expectation is it should get error. |
| |
| Set empty IP address eth0 ${EMPTY} 255.255.255.0 1.1.1.1 error |
| |
| [Tags] network_test |
| [Template] AddNetworkInfo |
| [Documentation] This test case tries to set the NULL ip addrees on the interface |
| ... Expectation is it should get error. |
| |
| Set empty subnet mask eth0 2.2.2.2 ${EMPTY} 1.1.1.1 error |
| |
| [Tags] network_test |
| [Template] AddNetworkInfo |
| [Documentation] This test case tries to set the ip addrees on the interface |
| ... with empty subnet mask,Expectation is it should get error. |
| |
| Set empty gateway eth0 2.2.2.2 255.255.255.0 ${EMPTY} error |
| |
| [Tags] network_test |
| [Template] AddNetworkInfo |
| [Documentation] This test case tries to set the ip addrees on the interface |
| ... with empty gateway,Expectation is it should get error. |
| |
| |
| Get IP Address type |
| [Tags] GOOD-PATH |
| [Documentation] This test case tries to set existing ipaddress address and |
| ... later tries to verify that ip address type is set to static |
| ... due to the operation. |
| |
| ${networkInfo}= Get networkInfo from the interface eth0 |
| ${result}= convert to integer ${networkInfo['data'][1]} |
| |
| ${CURRENT_MASK}= calcDottedNetmask ${result} |
| ${CURRENT_IP}= set variable ${networkInfo['data'][2]} |
| ${CURRENT_GATEWAY}= set variable ${networkInfo['data'][3]} |
| |
| ${arglist}= Create List eth0 ${CURRENT_IP} ${CURRENT_MASK} ${CURRENT_GATEWAY} |
| ${args}= Create Dictionary data=@{arglist} |
| run keyword and ignore error Call Method ${NW_MANAGER} SetAddress4 data=${args} |
| |
| Wait For Host To Ping ${CURRENT_IP} |
| |
| Wait Until Keyword Succeeds 30 sec 5 sec Initialize OpenBMC |
| |
| @{arglist}= Create List eth0 |
| ${args}= Create Dictionary data=@{arglist} |
| ${resp}= Call Method ${NW_MANAGER} GetAddressType data=${args} |
| ${json}= to json ${resp.content} |
| Should Be Equal ${json['data']} STATIC |
| should be equal as strings ${json['status']} ok |
| |
| *** 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 ${NW_MANAGER} GetAddress4 data=${args} |
| should be equal as strings ${resp.status_code} ${HTTP_OK} |
| ${json}= to json ${resp.content} |
| log to console ${json['data'][2]} |
| log to console ${json['data'][3]} |
| [return] ${json} |
| |
| AddNetworkInfo |
| [Arguments] ${intf} ${address} ${mask} ${gateway} ${result} |
| |
| ${arglist}= Create List ${intf} ${address} ${mask} ${gateway} |
| ${args}= Create Dictionary data=@{arglist} |
| ${resp}= Call Method ${NW_MANAGER} SetAddress4 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} |