1c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch# Copyright 2014 The Chromium Authors. All rights reserved.
2c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch# Use of this source code is governed by a BSD-style license that can be
3c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch# found in the LICENSE file.
4c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch
5c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochimport os
6c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochimport unittest
7c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch
8c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochfrom telemetry.core.platform.power_monitor import android_dumpsys_power_monitor
9c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochfrom telemetry.core.util import GetUnittestDataDir
10c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch
11c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch
1203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)class DumpsysPowerMonitorMonitorTest(unittest.TestCase):
13c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  def testEnergyComsumption(self):
14c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch    package = 'com.google.android.apps.chrome'
155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    dumpsys_output = os.path.join(GetUnittestDataDir(), 'batterystats_v8.csv')
16c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch    with open(dumpsys_output, 'r') as output:
17c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch      results = (
18c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch          android_dumpsys_power_monitor.DumpsysPowerMonitor.ParseSamplingOutput(
19c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch              package, output))
20c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch    self.assertEqual(results['identifier'], 'dumpsys')
215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    self.assertAlmostEqual(results['energy_consumption_mwh'], 95.6)
22c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch
23c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  # Older version of the OS do not have the data.
24c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  def testNoData(self):
25c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch    package = 'com.android.chrome'
26c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch    dumpsys_output = os.path.join(GetUnittestDataDir(),
275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)                                  'batterystats_v8_no_data.csv')
28c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch    with open(dumpsys_output, 'r') as output:
29c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch      results = (
30c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch          android_dumpsys_power_monitor.DumpsysPowerMonitor.ParseSamplingOutput(
31c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch              package, output))
32c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch    self.assertEqual(results['identifier'], 'dumpsys')
33c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch    self.assertEqual(results['energy_consumption_mwh'], 0)
34c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch
35c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochif __name__ == '__main__':
36c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  unittest.main()
37