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

Side by Side Diff: build/android/pylib/perf/perf_test_instance.py

Issue 2012323002: [Android] Implement perf tests to platform mode. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: add retry logic and some clean up Created 4 years, 6 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 2015 The Chromium Authors. All rights reserved.
mikecase (-- gone --) 2016/06/01 17:40:28 nit 2016
rnephew (Reviews Here) 2016/06/01 20:32:05 Done.
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 logging
7 import os
8 import pickle
9
10 from pylib import constants
11 from pylib.base import test_instance
12 from pylib.constants import exit_codes
13
14
15 def _GetPersistedResult(test_name):
16 file_name = os.path.join(constants.PERF_OUTPUT_DIR, test_name)
17 if not os.path.exists(file_name):
18 logging.error('File not found %s', file_name)
19 return None
20
21 with file(file_name, 'r') as f:
22 return pickle.loads(f.read())
23
24
25 class PerfTestInstance(test_instance.TestInstance):
26 def __init__(self, args, _):
27 self._STR = 'Local Device Perf Test Instance: '
jbudorick 2016/06/01 17:44:11 Nothing in here should be specific to a local devi
rnephew (Reviews Here) 2016/06/01 20:32:05 This is just left over debuggign information anywa
28 super(PerfTestInstance, self).__init__()
29
30 if args.single_step:
31 args.single_step = ' '.join(args.single_step_command)
32 self.steps = args.steps
jbudorick 2016/06/01 17:44:11 1) Why is so much of this public? It really should
rnephew (Reviews Here) 2016/06/01 20:32:05 Woops. I meant to do a pass through this and make
33 self.flaky_steps = args.flaky_steps
34 self.output_json_list = args.output_json_list
35 self.print_step = args.print_step
36 self.single_step = args.single_step
37 self.no_timeout = args.no_timeout
38 self.test_filter = args.test_filter
39 self.dry_run = args.dry_run
40 self.collect_chartjson_data = args.collect_chartjson_data
41 self._output_chartjson_data = args.output_chartjson_data
42 self._get_output_dir_archive = args.get_output_dir_archive
43 self.max_battery_temp = args.max_battery_temp
44 self.min_battery_level = args.min_battery_level
45 self.known_devices_file = args.known_devices_file
46
47 def SetUp(self):
48 pass
49
50 def TearDown(self):
51 pass
52
53 def OutputJsonList(self):
54 with file(self.steps, 'r') as i:
55 all_steps = json.load(i)
56
57 step_values = []
58 for k, v in all_steps['steps'].iteritems():
59 data = {'test': k, 'device_affinity': v['device_affinity']}
60
61 persisted_result = _GetPersistedResult(k)
62 if persisted_result:
63 data['start_time'] = persisted_result['start_time']
64 data['end_time'] = persisted_result['end_time']
65 data['total_time'] = persisted_result['total_time']
66 data['has_archive'] = persisted_result['archive_bytes'] is not None
67 step_values.append(data)
68
69 with file(self.output_json_list, 'w') as o:
70 o.write(json.dumps(step_values))
71 return 0
72
jbudorick 2016/06/01 17:44:11 nit: only one line between member functions
rnephew (Reviews Here) 2016/06/01 20:32:05 Done.
73
74 def PrintTestOutput(self):
75 """Helper method to print the output of previously executed test_name.
76
77 Test_name is passed from the command line as print_step
78
79 Returns:
80 exit code generated by the test step.
81 """
82 persisted_result = _GetPersistedResult(self.print_step)
83 if not persisted_result:
84 return exit_codes.INFRA
85 logging.info('*' * 80)
86 logging.info('Output from:')
87 logging.info(persisted_result['cmd'])
88 logging.info('*' * 80)
89
90 output_formatted = ''
91 persisted_outputs = persisted_result['output']
92 for i in xrange(len(persisted_outputs)):
93 output_formatted += '\n\nOutput from run #%d:\n\n%s' % (
94 i, persisted_outputs[i])
95 print output_formatted
96
97 if self._output_chartjson_data:
98 with file(self._output_chartjson_data, 'w') as f:
99 f.write(persisted_result['chartjson'])
100
101 if self._get_output_dir_archive:
102 if persisted_result['archive_bytes'] is not None:
103 with file(self._get_output_dir_archive, 'wb') as f:
104 f.write(persisted_result['archive_bytes'])
105 else:
106 logging.error('The output dir was not archived.')
107
108 return persisted_result['exit_code']
109
110 #override
111 def TestType(self):
112 return 'Perf'
113
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698