Network tests which needs user input moved to extended folder
Resolves openbmc/openbmc-test-automation#16
Change-Id: I351bdc8ec876355736fee1732c841d12863c013b
Signed-off-by: Rahul Maheshwari <rahulmaheshwari@in.ibm.com>
diff --git a/extended/test_networkd_ext.robot b/extended/test_networkd_ext.robot
new file mode 100755
index 0000000..0b82030
--- /dev/null
+++ b/extended/test_networkd_ext.robot
@@ -0,0 +1,138 @@
+*** 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'
+
+
+***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}