| OLD | NEW |
| (Empty) | |
| 1 # Copyright (c) 2016 The Chromium Authors. All rights reserved. |
| 2 # Use of this source code is governed by a BSD-style license that can be |
| 3 # found in the LICENSE file. |
| 4 |
| 5 import json |
| 6 import os |
| 7 import unittest |
| 8 |
| 9 from infra.services.sysmon import android_device_metrics |
| 10 from infra_libs import ts_mon |
| 11 |
| 12 DATA_DIR = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'data') |
| 13 |
| 14 |
| 15 class AndroidDeviceMetricTest(unittest.TestCase): |
| 16 def setUp(self): |
| 17 ts_mon.reset_for_unittest() |
| 18 |
| 19 self.nonexistent_file = os.path.join(DATA_DIR, 'brananas.json') |
| 20 self.normal_file = os.path.join(DATA_DIR, 'normal.json') |
| 21 self.invalid_json_file = os.path.join( |
| 22 DATA_DIR, 'invalid_files', 'invalid_json_android_device_status.json') |
| 23 self.not_dict_file = os.path.join( |
| 24 DATA_DIR, 'invalid_files', 'not_dict_android_device_status.json') |
| 25 self.invalid_version_file = os.path.join( |
| 26 DATA_DIR, 'invalid_files', 'invalid_version_android_device_status.json') |
| 27 self.valid_file = os.path.join( |
| 28 DATA_DIR, 'valid_files', 'android_device_status.json') |
| 29 self.no_temp_file = os.path.join( |
| 30 DATA_DIR, 'valid_files', 'no_temp_android_device_status.json') |
| 31 |
| 32 # A test device in the representative json file. |
| 33 self.device_id = '06c38708006afff3' |
| 34 |
| 35 def _assert_read_status(self, should_equal='good'): |
| 36 read_status = android_device_metrics.metric_read_status.get() |
| 37 self.assertEqual(read_status, should_equal) |
| 38 |
| 39 def _assert_all_none(self, device_id): |
| 40 fields = {'device_id': device_id} |
| 41 |
| 42 self.assertIsNone(android_device_metrics.batt_charge.get(fields=fields)) |
| 43 self.assertIsNone(android_device_metrics.batt_temp.get(fields=fields)) |
| 44 self.assertIsNone(android_device_metrics.cpu_temp.get(fields=fields)) |
| 45 self.assertIsNone(android_device_metrics.dev_os.get(fields=fields)) |
| 46 self.assertIsNone(android_device_metrics.dev_status.get(fields=fields)) |
| 47 self.assertIsNone(android_device_metrics.dev_uptime.get(fields=fields)) |
| 48 |
| 49 def test_no_file(self): |
| 50 android_device_metrics.get_device_statuses(self.nonexistent_file) |
| 51 self._assert_read_status(should_equal='not_found') |
| 52 self._assert_all_none(self.device_id) |
| 53 |
| 54 def test_invalid_json(self): |
| 55 android_device_metrics.get_device_statuses(self.invalid_json_file) |
| 56 self._assert_read_status(should_equal='invalid_json') |
| 57 self._assert_all_none(self.device_id) |
| 58 |
| 59 def test_not_dict_file(self): |
| 60 android_device_metrics.get_device_statuses(self.not_dict_file) |
| 61 self._assert_read_status(should_equal='invalid_json') |
| 62 self._assert_all_none(self.device_id) |
| 63 |
| 64 def test_invalid_version(self): |
| 65 android_device_metrics.get_device_statuses(self.invalid_version_file) |
| 66 self._assert_read_status(should_equal='invalid_version') |
| 67 self._assert_all_none(self.device_id) |
| 68 |
| 69 def test_stale(self): |
| 70 with open(self.valid_file) as f: |
| 71 file_time = float(json.load(f)['timestamp']) |
| 72 stale_time = ( |
| 73 10 + file_time + android_device_metrics.ANDROID_DEVICE_FILE_STALENESS_S) |
| 74 |
| 75 android_device_metrics.get_device_statuses( |
| 76 self.valid_file, now=stale_time) |
| 77 self._assert_read_status(should_equal='stale_file') |
| 78 self._assert_all_none(self.device_id) |
| 79 |
| 80 def test_good(self): |
| 81 with open(self.valid_file) as f: |
| 82 file_time = float(json.load(f)['timestamp']) |
| 83 |
| 84 android_device_metrics.get_device_statuses( |
| 85 self.valid_file, now=file_time) |
| 86 self._assert_read_status(should_equal='good') |
| 87 |
| 88 fields = {'device_id': self.device_id} |
| 89 |
| 90 self.assertEqual( |
| 91 android_device_metrics.batt_charge.get(fields=fields), 100.0) |
| 92 self.assertEqual(android_device_metrics.batt_temp.get(fields=fields), 26.8) |
| 93 self.assertEqual(android_device_metrics.cpu_temp.get(fields=fields), 26) |
| 94 self.assertEqual(android_device_metrics.dev_os.get(fields=fields), 'KTU84P') |
| 95 self.assertEqual( |
| 96 android_device_metrics.dev_status.get(fields=fields), 'good') |
| 97 self.assertEqual( |
| 98 android_device_metrics.dev_uptime.get(fields=fields), 2162.74) |
| 99 |
| 100 def test_no_metric_sent(self): |
| 101 with open(self.no_temp_file) as f: |
| 102 file_time = float(json.load(f)['timestamp']) |
| 103 |
| 104 android_device_metrics.get_device_statuses( |
| 105 self.no_temp_file, now=file_time) |
| 106 self._assert_read_status(should_equal='good') |
| 107 |
| 108 fields = {'device_id': self.device_id} |
| 109 self.assertIsNone(android_device_metrics.cpu_temp.get(fields=fields)) |
| OLD | NEW |