CheckpointLogger: Refactor checkpoint usage for tests

BUG=chromium:878233
TEST=run tests that uses checkpoint function
power_LoadTest, power_Display, etc.

Change-Id: Ic1fba5193a543d05ff2f28f3c30078d4e71ba414
Signed-off-by: Sean Kao <seankao@google.com>
Reviewed-on: https://chromium-review.googlesource.com/1193203
Reviewed-by: Ruben Rodriguez Buchillon <coconutruben@chromium.org>
diff --git a/client/cros/power/power_test.py b/client/cros/power/power_test.py
index af4eb76..b6c6bc2 100644
--- a/client/cros/power/power_test.py
+++ b/client/cros/power/power_test.py
@@ -40,6 +40,8 @@
         self.keyvals = dict()
         self.status = power_status.get_status()
 
+        self._checkpoint_logger = power_status.CheckpointLogger()
+
         measurements = []
         if not self.status.on_ac():
             measurements.append(
@@ -49,15 +51,19 @@
         elif power_utils.has_rapl_support():
             measurements += power_rapl.create_rapl()
         self._plog = power_status.PowerLogger(measurements,
-                                              seconds_period=seconds_period)
+                seconds_period=seconds_period,
+                checkpoint_logger=self._checkpoint_logger)
         self._psr = power_utils.DisplayPanelSelfRefresh()
         self._services = service_stopper.ServiceStopper(
                 service_stopper.ServiceStopper.POWER_DRAW_SERVICES)
         self._services.stop_services()
         self._stats = power_status.StatoMatic()
 
-        self._tlog = power_status.TempLogger([], seconds_period=seconds_period)
-        self._clog = power_status.CPUStatsLogger(seconds_period=seconds_period)
+        self._tlog = power_status.TempLogger([],
+                seconds_period=seconds_period,
+                checkpoint_logger=self._checkpoint_logger)
+        self._clog = power_status.CPUStatsLogger(seconds_period=seconds_period,
+                checkpoint_logger=self._checkpoint_logger)
 
     def warmup(self, warmup_time=30):
         """Warm up.
@@ -95,9 +101,7 @@
         if not start_time:
             start_time = self._start_time
         self.status.refresh()
-        self._plog.checkpoint(name, start_time)
-        self._tlog.checkpoint(name, start_time)
-        self._clog.checkpoint(name, start_time)
+        self._checkpoint_logger.checkpoint(name, start_time)
         self._psr.refresh()
 
     def publish_keyvals(self):
diff --git a/client/site_tests/power_LoadTest/power_LoadTest.py b/client/site_tests/power_LoadTest/power_LoadTest.py
index 497511e..a2817a0 100755
--- a/client/site_tests/power_LoadTest/power_LoadTest.py
+++ b/client/site_tests/power_LoadTest/power_LoadTest.py
@@ -266,9 +266,16 @@
             measurements += power_rapl.create_powercap()
         elif power_utils.has_rapl_support():
             measurements += power_rapl.create_rapl()
-        self._plog = power_status.PowerLogger(measurements, seconds_period=20)
-        self._tlog = power_status.TempLogger([], seconds_period=20)
-        self._clog = power_status.CPUStatsLogger(seconds_period=20)
+        self._checkpoint_logger = power_status.CheckpointLogger()
+        self._plog = power_status.PowerLogger(measurements,
+                seconds_period=20,
+                checkpoint_logger=self._checkpoint_logger)
+        self._tlog = power_status.TempLogger([],
+                seconds_period=20,
+                checkpoint_logger=self._checkpoint_logger)
+        self._clog = power_status.CPUStatsLogger(
+                seconds_period=20,
+                checkpoint_logger=self._checkpoint_logger)
         self._meas_logs = [self._plog, self._tlog, self._clog]
         for log in self._meas_logs:
             log.start()
@@ -368,8 +375,7 @@
 
             script_logging.set();
             pagetime_tracking.set();
-            for log in self._meas_logs:
-                log.checkpoint('loop%d' % (i), start_time)
+            self._checkpoint_logger.checkpoint('loop%d' % (i), start_time)
             if self._verbose:
                 logging.debug('loop %d completed', i)
 
@@ -415,8 +421,7 @@
 
 
         for task, tstart, tend in self._task_tracker:
-            for log in self._meas_logs:
-                log.checkpoint(task, tstart, tend)
+            self._checkpoint_logger.checkpoint(task, tstart, tend)
 
         keyvals = {}
         for log in self._meas_logs:
@@ -508,9 +513,7 @@
         self.write_perf_keyval(keyvals)
         for log in self._meas_logs:
             log.save_results(self.resultsdir)
-        # checkpoint data for all measurement loggers should be the same
-        # just save checkpoint data for one of them
-        self._plog.save_checkpoint_data(self.resultsdir)
+        self._checkpoint_logger.save_checkpoint_data(self.resultsdir)
         pdash = power_dashboard.PowerLoggerDashboard( \
                 self._plog, self.tagged_testname, self.resultsdir)
         pdash.upload()