Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(74)

Side by Side Diff: infra/services/sysmon/test/android_device_metric_test.py

Issue 1981853002: Send ts_mon metrics from android device data. (Closed) Base URL: https://chromium.googlesource.com/infra/infra.git@master
Patch Set: Address more comments. Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(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
30 # A test device in the representative json file.
31 self.device_id = '06c38708006afff3'
32
33 def _assert_read_status(self, should_equal='good'):
34 read_status = android_device_metrics.metric_read_status.get()
35 self.assertEqual(read_status, should_equal)
36
37 def _assert_all_none(self, device_id=None):
38 fields = {}
39 if device_id is not None:
Sergey Berezin 2016/05/20 21:39:23 fields must be set everywhere unconditionally, or
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()
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()
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()
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()
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)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698