Fix for power supply test when host is powered on

Change-Id: Ibf194b57243e413d4f422df82ba5e47a042a24df
Signed-off-by: Marissa Garza <garzam@us.ibm.com>
Signed-off-by: William Toth <wtoth@us.ibm.com>
diff --git a/lib/open_power_utils.robot b/lib/open_power_utils.robot
index fb10abf..d936379 100644
--- a/lib/open_power_utils.robot
+++ b/lib/open_power_utils.robot
@@ -78,13 +78,14 @@
     ${cpu_list}=  Get Endpoint Paths
     ...  ${HOST_INVENTORY_URI}system/chassis/motherboard/  cpu*
 
-    :FOR  ${endpoint_path}  IN  @{cpu_list}
-    \  ${is_functional}=  Read Object Attribute  ${endpoint_path}  Functional
-    \  Continue For Loop If  ${is_functional} == ${0}
-    \  ${num}=  Set Variable  ${endpoint_path[-1]}
-    \  ${occ_active}=  Get OCC Active State  ${OPENPOWER_CONTROL}occ${num}
-    \  Should Be Equal  ${occ_active}  ${expected_occ_active}
-    ...  msg=OCC not in right state
+    FOR  ${endpoint_path}  IN  @{cpu_list}
+       ${is_functional}=  Read Object Attribute  ${endpoint_path}  Functional
+       Continue For Loop If  ${is_functional} == ${0}
+       ${num}=  Set Variable  ${endpoint_path[-1]}
+       ${occ_active}=  Get OCC Active State  ${OPENPOWER_CONTROL}occ${num}
+       Should Be Equal  ${occ_active}  ${expected_occ_active}
+       ...  msg=OCC not in right state
+    END
 
 
 Get Sensors Aggregation Data
@@ -114,8 +115,9 @@
 
     ${resp}=  Read Attribute  ${object_base_uri_path}  Values  quiet=${1}
     ${power_sensors_value_list}=  Create List
-    :FOR  ${entry}  IN  @{resp}
-    \  Append To List  ${power_sensors_value_list}  ${entry[1]}
+    FOR  ${entry}  IN  @{resp}
+       Append To List  ${power_sensors_value_list}  ${entry[1]}
+    END
     [Return]  ${power_sensors_value_list}
 
 
@@ -153,13 +155,10 @@
     ${power_supply_avg_list}=  Create List
     ${power_supply_max_list}=  Create List
 
-    :FOR  ${entry}  IN  @{content["data"]}
-    \  ${status}=
-    ...  Run keyword And Return Status  Should Contain  ${entry}  average
-    \  Run Keyword If  ${status} == ${False}
-    ...    Append To List  ${power_supply_max_list}  ${entry}
-    ...  ELSE
-    ...    Append To List  ${power_supply_avg_list}  ${entry}
+    FOR  ${entry}  IN  @{content["data"]}
+        Run Keyword If  'average' in '${entry}'  Append To List  ${power_supply_avg_list}  ${entry}
+        Run Keyword If  'maximum' in '${entry}'  Append To List  ${power_supply_max_list}  ${entry}
+    END
 
     [Return]  ${power_supply_avg_list}  ${power_supply_max_list}
 
diff --git a/tests/test_power_supply.robot b/tests/test_power_supply.robot
index 75879ad..f2c0e94 100644
--- a/tests/test_power_supply.robot
+++ b/tests/test_power_supply.robot
@@ -106,23 +106,29 @@
     # power_paths  A list of power paths (example list element
     # "/org/open_power/sensors/aggregation/per_30s/ps0_input_power/average").
 
+    Reset 30s Aggregation Power Readings
+    # sleep for 3 minutes to get 6-7 readings.
+    Sleep  3m
+
     # Check for "average" aggregation.
-    :FOR  ${power_path}  IN  @{power_paths[0]}
-    \  ${averages}=  Get Sensors Aggregation Data  ${power_path}
-    \  ${max}  ${min}=  Evaluate  (max(@{averages}), min(@{averages}))
-    \  Should Be True  ${max} < ${upper_power_limit}
-    ...  msg=Wattage ${max} crossed ${upper_power_limit}.
-    \  Should Be True  ${min} >= ${lower_power_limit}
-    ...  msg=Wattage ${min} below ${lower_power_limit}.
+    FOR  ${power_path}  IN  @{power_paths[0]}
+       ${averages}=  Get Sensors Aggregation Data  ${power_path}
+       ${max}  ${min}=  Evaluate  (max(@{averages}), min(@{averages}))
+       Should Be True  ${max} < ${upper_power_limit}
+       ...  msg=Wattage ${max} crossed ${upper_power_limit}.
+       Should Be True  ${min} >= ${lower_power_limit}
+       ...  msg=Wattage ${min} below ${lower_power_limit}.
+    END
 
     # Check for "maximum" aggregation.
-    :FOR  ${power_path}  IN  @{power_paths[1]}
-    \  ${maximums}=  Get Sensors Aggregation Data  ${power_path}
-    \  ${max}  ${min}=  Evaluate  (max(@{maximums}), min(@{maximums}))
-    \  Should Be True  ${max} < ${upper_power_limit}
-    ...  msg=Wattage ${max} crossed ${upper_power_limit}.
-    \  Should Be True  ${min} >= ${lower_power_limit}
-    ...  msg=Wattage ${min} below ${lower_power_limit}.
+    FOR  ${power_path}  IN  @{power_paths[1]}
+       ${maximums}=  Get Sensors Aggregation Data  ${power_path}
+       ${max}  ${min}=  Evaluate  (max(@{maximums}), min(@{maximums}))
+       Should Be True  ${max} < ${upper_power_limit}
+     ...  msg=Wattage ${max} crossed ${upper_power_limit}.
+       Should Be True  ${min} >= ${lower_power_limit}
+     ...  msg=Wattage ${min} below ${lower_power_limit}.
+    END
 
     # Every 30 seconds the power wattage data is updated.
     Sleep  ${power_data_collection_interval}s
@@ -141,16 +147,28 @@
     Sleep  ${power_data_collection_interval}s
 
     # Check for "average" aggregation.
-    :FOR  ${power_path}  IN  @{power_paths[0]}
-    \  ${averages}=  Get Sensors Aggregation Data  ${power_path}
-    \  Should Be True  ${averages[0]} < ${lower_power_limit}
-    ...  msg=Wattage ${averages[0]} more than ${lower_power_limit}.
+    FOR  ${power_path}  IN  @{power_paths[0]}
+       ${averages}=  Get Sensors Aggregation Data  ${power_path}
+       Should Be True  ${averages[0]} < ${lower_power_limit}
+       ...  msg=Wattage ${averages[0]} more than ${lower_power_limit}.
+    END
 
     # Check for "maximum" aggregation.
-    :FOR  ${power_path}  IN  @{power_paths[1]}
-    \  ${maximums}=  Get Sensors Aggregation Data  ${power_path}
-    \  Should Be True  ${maximums[0]} < ${lower_power_limit}
-    ...  msg=Wattage ${maximums[0]} more than ${lower_power_limit}.
+    FOR  ${power_path}  IN  @{power_paths[1]}
+       ${maximums}=  Get Sensors Aggregation Data  ${power_path}
+       Should Be True  ${maximums[0]} < ${lower_power_limit}
+       ...  msg=Wattage ${maximums[0]} more than ${lower_power_limit}.
+    END
+
+
+Reset 30s Aggregation Power Readings
+    [Documentation]  Reset 30s Aggregation Power Readings to ensure readings
+    ...              are collected after Power Supplies are done powering up.
+
+    BMC Execute Command  /bin/systemctl restart power-supply-monitor@0.service
+    BMC Execute Command  /bin/systemctl restart power-supply-monitor@1.service
+    # wait for services to restart.
+    Sleep  10s
 
 
 Set Power Supply Present