New suite for SLAAC and Static IPv6 verification

    Changes:
        Ipv6 - Verify Ping and verify SSH Connectivity.

    Tested:
        Ran and Tested on BMC Environment.

Change-Id: Ia305aac728bc63a7c540af0391b6a1c955e4ed8b
Signed-off-by: Sweta Potthuri <spotthur@in.ibm.com>
diff --git a/redfish/managers/test_bmc_config_ipv6.robot b/redfish/managers/test_bmc_config_ipv6.robot
new file mode 100644
index 0000000..60af824
--- /dev/null
+++ b/redfish/managers/test_bmc_config_ipv6.robot
@@ -0,0 +1,114 @@
+*** Settings ***
+Documentation  Network interface IPv6 configuration connected to DHCP server
+               ...   and verification tests.
+
+Resource       ../../lib/bmc_redfish_resource.robot
+Resource       ../../lib/openbmc_ffdc.robot
+Resource       ../../lib/bmc_ipv6_utils.robot
+Resource       ../../lib/bmc_network_utils.robot
+Library        Collections
+Library        Process
+Library        OperatingSystem
+Test Teardown   Test Teardown Execution
+Suite Setup     Suite Setup Execution
+Suite Teardown  Redfish.Logout
+
+Test Tags     BMC_IPv6_Config
+
+*** Variables ***
+# Remote DHCP test bed server. Leave variables EMPTY if server is configured local
+# to the test where it is running else if remote pass the server credentials
+# -v SERVER_IPv6:xx.xx.xx.xx
+# -v SERVER_USERNAME:root
+# -v SERVER_PASSWORD:*********
+
+${SERVER_USERNAME}      ${EMPTY}
+${SERVER_PASSWORD}      ${EMPTY}
+${SERVER_IPv6}          ${EMPTY}
+
+
+*** Test Cases ***
+
+Get SLAAC Address And Verify Connectivity
+    [Documentation]  Fetch the SLAAC address and verify ping and SSH connection.
+    [Tags]  Get_SLAAC_Address_And_Verify_Connectivity
+
+    @{ipv6_addressorigin_list}  ${ipv6_slaac_addr}=
+    ...  Get Address Origin List And Address For Type  SLAAC
+    IF  '${SERVER_USERNAME}' != '${EMPTY}'
+        Check IPv6 Connectivity  ${ipv6_slaac_addr}
+    ELSE
+        Wait For IPv6 Host To Ping  ${ipv6_slaac_addr}
+    END
+    Verify SSH Connection Via IPv6  ${ipv6_slaac_addr}
+
+
+*** Keywords ***
+
+Suite Setup Execution
+    [Documentation]  Do suite setup execution.
+
+    Redfish.Login
+    ${active_channel_config}=  Get Active Channel Config
+    Set Suite Variable  ${active_channel_config}
+    ${ethernet_interface}=  Set Variable  ${active_channel_config['${CHANNEL_NUMBER}']['name']}
+    Set Suite variable  ${ethernet_interface}
+
+
+Test Teardown Execution
+    [Documentation]  Test teardown execution.
+
+    FFDC On Test Case Fail
+
+
+Wait For IPv6 Host To Ping
+    [Documentation]  Verify that the IPv6 host responds successfully to ping.
+    [Arguments]  ${host}  ${timeout}=${OPENBMC_REBOOT_TIMEOUT}sec
+    ...          ${interval}=5 sec  ${expected_rc}=${0}
+    # Description of argument(s):
+    # host         The IPv6 address of the host to ping.
+    # timeout      Maximum time to wait for the host to respond to ping.
+    # interval     Time to wait between ping attempts.
+    # expected_rc  Expected return code of ping command.
+    Wait Until Keyword Succeeds  ${timeout}  ${interval}  Ping Host Over IPv6  ${host}  ${expected_rc}
+
+
+Ping Host Over IPv6
+    [Documentation]  Ping6 the given host.
+    [Arguments]     ${host}  ${expected_rc}=${0}
+    # Description of argument(s):
+    # host           IPv6 address of the host to ping.
+    # expected_rc    Expected return code of ping command.
+    Should Not Be Empty    ${host}   msg=No host provided.
+    ${rc}   ${output}=     Run and return RC and Output    ping6 -c 4 ${host}
+    Log     RC: ${rc}\nOutput:\n${output}
+    Should Be Equal     ${rc}   ${expected_rc}
+
+
+Check IPv6 Connectivity
+    [Documentation]  Check ping6 status and verify.
+    [Arguments]  ${OPENBMC_HOST_IPv6}
+
+    # Description of argument(s):
+    # OPENBMC_HOST_IPv6   IPv6 address to check connectivity.
+
+    Open Connection And Log In  ${SERVER_USERNAME}  ${SERVER_PASSWORD}  host=${SERVER_IPv6}
+    Wait For IPv6 Host To Ping  ${OPENBMC_HOST_IPv6}  30 secs
+
+
+Verify SSH Connection Via IPv6
+    [Documentation]  Verify connectivity to the IPv6 host via SSH.
+    [Arguments]  ${OPENBMC_HOST_IPv6}
+
+    # Description of argument(s):
+    # OPENBMC_HOST_IPv6   IPv6 address to check connectivity.
+
+    IF  '${SERVER_USERNAME}' == '${EMPTY}'
+        SSHLibrary.Open Connection  ${OPENBMC_HOST_IPv6}
+        SSHLibrary.Login  ${OPENBMC_USERNAME}  ${OPENBMC_PASSWORD}
+    ELSE
+        Open Connection And Log In  ${SERVER_USERNAME}  ${SERVER_PASSWORD}  host=${SERVER_IPv6}  alias=IPv6Conn
+        SSHLibrary.Open Connection  ${OPENBMC_HOST_IPv6}
+        SSHLibrary.Login  ${OPENBMC_USERNAME}  ${OPENBMC_PASSWORD}  jumphost_index_or_alias=IPv6Conn
+    END
+