Separating network protocol and Manual date time Testcases

   Changes:
      - Separated test suites based on manual date, time, and NTP.

   Tested:
     - Ran and tested on BMC Environment.

Change-Id: I5edca932207df0c5060f7e59a4be0adb179e7b1d
Signed-off-by: Anvesh-Kumar_Rayankula <anvesh.kumar.rayankula@ibm.com>
diff --git a/redfish/managers/test_bmc_network_protocol.robot b/redfish/managers/test_bmc_network_protocol.robot
new file mode 100644
index 0000000..d6575a4
--- /dev/null
+++ b/redfish/managers/test_bmc_network_protocol.robot
@@ -0,0 +1,115 @@
+*** Settings ***
+Documentation                NTP configuration and verification
+                             ...  tests.
+
+Resource                     ../../lib/openbmc_ffdc.robot
+Resource                     ../../lib/bmc_date_and_time_utils.robot
+
+Test Setup                   Printn
+Test Teardown                FFDC On Test Case Fail
+Suite Setup                  Suite Setup Execution
+Suite Teardown               Suite Teardown Execution
+
+
+*** Variables ***
+
+${ntp_server_1}              9.9.9.9
+${ntp_server_2}              2.2.3.3
+&{original_ntp}              &{EMPTY}
+
+*** Test Cases ***
+
+Verify NTP Server Set
+    [Documentation]  Patch NTP servers and verify NTP servers is set.
+    [Tags]  Verify_NTP_Server_Set
+    [Setup]  Set NTP state  ${True}
+
+    Redfish.Patch  ${REDFISH_NW_PROTOCOL_URI}
+    ...  body={'NTP':{'NTPServers': ['${ntp_server_1}', '${ntp_server_2}']}}
+    ...  valid_status_codes=[${HTTP_OK}, ${HTTP_NO_CONTENT}]
+
+    # NTP network take few seconds to reload.
+    Wait Until Keyword Succeeds  30 sec  10 sec  Verify NTP Servers Are Populated
+
+
+Verify NTP Server Value Not Duplicated
+    [Documentation]  Verify NTP servers value not same for both primary and secondary server.
+    [Tags]  Verify_NTP_Server_Value_Not_Duplicated
+
+    Redfish.Patch  ${REDFISH_NW_PROTOCOL_URI}
+    ...  body={'NTP':{'NTPServers': ['${ntp_server_1}', '${ntp_server_1}']}}
+    ...  valid_status_codes=[${HTTP_OK}, ${HTTP_NO_CONTENT}]
+    ${network_protocol}=  Redfish.Get Properties  ${REDFISH_NW_PROTOCOL_URI}
+    Should Contain X Times  ${network_protocol["NTP"]["NTPServers"]}  ${ntp_server_1}  1
+    ...  msg=NTP primary and secondary server values should not be same.
+
+
+Verify NTP Server Setting Persist After BMC Reboot
+    [Documentation]  Verify NTP server setting persist after BMC reboot.
+    [Tags]  Verify_NTP_Server_Setting_Persist_After_BMC_Reboot
+    [Setup]  Set NTP state  ${True}
+
+    Redfish.Patch  ${REDFISH_NW_PROTOCOL_URI}
+    ...  body={'NTP':{'NTPServers': ['${ntp_server_1}', '${ntp_server_2}']}}
+    ...  valid_status_codes=[${HTTP_OK}, ${HTTP_NO_CONTENT}]
+    Redfish OBMC Reboot (off)
+    Redfish.Login
+
+    # NTP network take few seconds to reload.
+    Wait Until Keyword Succeeds  30 sec  10 sec  Verify NTP Servers Are Populated
+
+
+Verify Enable NTP
+    [Documentation]  Verify NTP protocol mode can be enabled.
+    [Teardown]  Restore NTP Mode
+    [Tags]  Verify_Enable_NTP
+
+    ${original_ntp}=  Redfish.Get Attribute  ${REDFISH_NW_PROTOCOL_URI}  NTP
+    Set Suite Variable  ${original_ntp}
+    Rprint Vars  original_ntp
+    # The following patch command should set the ["NTP"]["ProtocolEnabled"] property to "True".
+    Redfish.Patch  ${REDFISH_NW_PROTOCOL_URI}  body={'NTP':{'ProtocolEnabled': ${True}}}
+    ...  valid_status_codes=[${HTTP_OK}, ${HTTP_NO_CONTENT}]
+    Wait Until Keyword Succeeds  1 min  5 sec
+    ...  Verify System Time Sync Status  ${True}
+    ${ntp}=  Redfish.Get Attribute  ${REDFISH_NW_PROTOCOL_URI}  NTP
+    Rprint Vars  ntp
+    Valid Value  ntp["ProtocolEnabled"]  valid_values=[True]
+
+
+Verify Set DateTime With NTP Enabled
+    [Documentation]  Verify whether set managers dateTime is restricted with NTP enabled.
+    [Tags]  Verify_Set_DateTime_With_NTP_Enabled
+
+    Redfish.Patch  ${REDFISH_NW_PROTOCOL_URI}  body={'NTP':{'ProtocolEnabled': ${True}}}
+    ...  valid_status_codes=[${HTTP_OK}, ${HTTP_NO_CONTENT}]
+    ${ntp}=  Redfish.Get Attribute  ${REDFISH_NW_PROTOCOL_URI}  NTP
+    Valid Value  ntp["ProtocolEnabled"]  valid_values=[True]
+    ${local_system_time}=  Get Current Date
+    Redfish Set DateTime  ${local_system_time}
+    ...  valid_status_codes=[${HTTP_BAD_REQUEST}, ${HTTP_INTERNAL_SERVER_ERROR}]
+
+
+*** Keywords ***
+
+
+Suite Setup Execution
+    [Documentation]  Do the suite level setup.
+
+    Printn
+    Redfish.Login
+    Get NTP Initial Status
+    ${old_date_time}=  CLI Get BMC DateTime
+    ${year_status}=  Run Keyword And Return Status  Should Not Contain  ${old_date_time}  ${year_without_ntp}
+    Run Keyword If  ${year_status} == False
+    ...  Enable NTP And Add NTP Address
+
+
+Suite Teardown Execution
+    [Documentation]  Do the suite level teardown.
+
+    Redfish.Patch  ${REDFISH_NW_PROTOCOL_URI}
+    ...  body={'NTP':{'NTPServers': ['${EMPTY}', '${EMPTY}']}}
+    ...  valid_status_codes=[${HTTP_OK}, ${HTTP_NO_CONTENT}]
+    Restore NTP Status
+    Redfish.Logout