video_JDAPerf: Fix unstable power result

There is too much idle time on eve by the original flow.
This CL fixes it by removing the idle time, only measures the decoding
process to get more precise results.
It also fixes the test case naming regression.

BUG=chromium:960717
TEST=Test 10 times to check if the results are stable.

Change-Id: I4c3f4567a8f7036456fe7b2efc0a19426ca7359c
Reviewed-on: https://chromium-review.googlesource.com/1617186
Commit-Ready: Hsu Wei-Cheng <mojahsu@chromium.org>
Tested-by: Hsu Wei-Cheng <mojahsu@chromium.org>
Legacy-Commit-Queue: Commit Bot <commit-bot@chromium.org>
Reviewed-by: Ricky Liang <jcliang@chromium.org>
diff --git a/client/site_tests/video_JDAPerf/video_JDAPerf.py b/client/site_tests/video_JDAPerf/video_JDAPerf.py
index 62c2603..73657bf 100644
--- a/client/site_tests/video_JDAPerf/video_JDAPerf.py
+++ b/client/site_tests/video_JDAPerf/video_JDAPerf.py
@@ -13,14 +13,10 @@
 from autotest_lib.client.cros.power import power_status
 from autotest_lib.client.cros.power import power_utils
 from autotest_lib.client.cros.video import device_capability
-from autotest_lib.client.cros.video import helper_logger
 
 DECODE_WITH_HW_ACCELERATION = 'jpeg_decode_with_hw'
 DECODE_WITHOUT_HW_ACCELERATION = 'jpeg_decode_with_sw'
 
-# Measurement duration in seconds.
-MEASUREMENT_DURATION = 10
-
 # Time in seconds to wait for cpu idle until giveup.
 WAIT_FOR_IDLE_CPU_TIMEOUT = 60.0
 # Maximum percent of cpu usage considered as idle.
@@ -38,11 +34,11 @@
     version = 1
 
     # Decoding times for performance measurement
-    perf_jpeg_decode_times = 600
+    perf_jpeg_decode_times = 6000
 
     binary = 'jpeg_decode_accelerator_unittest'
-    jda_filter = 'JpegDecodeAcceleratorTest.PerfJDA'
-    sw_filter = 'JpegDecodeAcceleratorTest.PerfSW'
+    jda_filter = 'MjpegDecodeAcceleratorTest.PerfJDA'
+    sw_filter = 'MjpegDecodeAcceleratorTest.PerfSW'
 
     def initialize(self):
         """Initialize this test."""
@@ -51,6 +47,7 @@
         self._original_governors = None
         self._backlight = None
         self._use_ec = False
+        self._is_done = False
 
     @chrome_binary_test.nuke_chrome
     def run_once(self, capability, power_test=False):
@@ -78,7 +75,8 @@
         """
         def get_cpu_usage():
             cpu_usage_start = utils.get_cpu_usage()
-            time.sleep(MEASUREMENT_DURATION)
+            while not self._is_done:
+                time.sleep(1)
             cpu_usage_end = utils.get_cpu_usage()
             return utils.compute_active_cpu_time(cpu_usage_start,
                                                  cpu_usage_end) * 100
@@ -133,7 +131,8 @@
             power_logger = power_status.PowerLogger(measurements)
             power_logger.start()
             start_time = time.time()
-            time.sleep(MEASUREMENT_DURATION)
+            while not self._is_done:
+                time.sleep(1)
             power_logger.checkpoint('result', start_time)
             keyval = power_logger.calc()
             return keyval['result_' + measurements[0].domain + '_pwr_avg']
@@ -153,6 +152,7 @@
 
         cmd_line = ' '.join(cmd_line_list)
         self.run_chrome_test_binary(self.binary, cmd_line)
+        self._is_done = True
 
     def test_decode(self, gather_result):
         """
@@ -164,6 +164,7 @@
         """
         keyvals = {}
 
+        self._is_done = False
         thread = threading.Thread(target=self.start_decode,
                                   kwargs={'gtest_filter': self.jda_filter})
         thread.start()
@@ -171,6 +172,7 @@
         thread.join()
         keyvals[DECODE_WITH_HW_ACCELERATION] = result
 
+        self._is_done = False
         thread = threading.Thread(target=self.start_decode,
                                   kwargs={'gtest_filter': self.sw_filter})
         thread.start()