| OLD | NEW |
| 1 # Copyright 2016 The Chromium Authors. All rights reserved. | 1 # Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
| 3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
| 4 | 4 |
| 5 """Runs delta test on 2 findit versions.""" | 5 """Runs delta test on 2 findit versions.""" |
| 6 | 6 |
| 7 import argparse | 7 import argparse |
| 8 from datetime import date | 8 from datetime import date |
| 9 from datetime import timedelta | 9 from datetime import timedelta |
| 10 import pickle | |
| 11 import logging | 10 import logging |
| 12 import os | 11 import os |
| 12 import pickle |
| 13 import sys | 13 import sys |
| 14 | 14 |
| 15 _SCRIPT_DIR = os.path.join(os.path.dirname(__file__), os.path.pardir, | 15 _SCRIPT_DIR = os.path.join(os.path.dirname(__file__), os.path.pardir, |
| 16 os.path.pardir) | 16 os.path.pardir) |
| 17 sys.path.insert(1, _SCRIPT_DIR) | 17 sys.path.insert(1, _SCRIPT_DIR) |
| 18 | 18 |
| 19 import script_util | 19 import script_util |
| 20 script_util.SetUpSystemPaths() | 20 script_util.SetUpSystemPaths() |
| 21 | 21 |
| 22 from crash.type_enums import CrashClient | |
| 23 from crash_queries.delta_test import delta_test | 22 from crash_queries.delta_test import delta_test |
| 24 from crash_queries.delta_test import delta_util | 23 from crash_queries.delta_test import delta_util |
| 25 | 24 |
| 26 _TODAY = date.today().strftime('%Y-%m-%d') | 25 _TODAY = date.today().strftime('%Y-%m-%d') |
| 27 _A_YEAR_AGO = (date.today() - timedelta(days=365)).strftime('%Y-%m-%d') | 26 _A_YEAR_AGO = (date.today() - timedelta(days=365)).strftime('%Y-%m-%d') |
| 28 | 27 |
| 29 # App Engine APIs will fail if batch size is more than 1000. | 28 # App Engine APIs will fail if batch size is more than 1000. |
| 30 _MAX_BATCH_SIZE = 1000 | 29 _MAX_BATCH_SIZE = 1000 |
| 31 _DEFAULT_BATCH_SIZE = _MAX_BATCH_SIZE | 30 _DEFAULT_BATCH_SIZE = _MAX_BATCH_SIZE |
| 32 | 31 |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 118 | 117 |
| 119 # If only one revision provided, default the rev2 to HEAD. | 118 # If only one revision provided, default the rev2 to HEAD. |
| 120 if len(args.revisions) == 1: | 119 if len(args.revisions) == 1: |
| 121 args.revisions.append('HEAD') | 120 args.revisions.append('HEAD') |
| 122 | 121 |
| 123 git_hash1 = delta_util.ParseGitHash(args.revisions[0]) | 122 git_hash1 = delta_util.ParseGitHash(args.revisions[0]) |
| 124 git_hash2 = delta_util.ParseGitHash(args.revisions[1]) | 123 git_hash2 = delta_util.ParseGitHash(args.revisions[1]) |
| 125 | 124 |
| 126 delta_result_prefix = '%s_%s_%s..%s.delta' % (git_hash1[:7], git_hash2[:7], | 125 delta_result_prefix = '%s_%s_%s..%s.delta' % (git_hash1[:7], git_hash2[:7], |
| 127 args.since, args.until) | 126 args.since, args.until) |
| 128 delta_csv_path = os.path.join( | 127 delta_csv_path = os.path.join(DELTA_RESULTS_DIRECTORY, |
| 129 DELTA_RESULTS_DIRECTORY, '%s.csv' % delta_result_prefix) | 128 '%s.csv' % delta_result_prefix) |
| 130 delta_path = os.path.join( | 129 delta_path = os.path.join(DELTA_RESULTS_DIRECTORY, |
| 131 DELTA_RESULTS_DIRECTORY, '.%s' % delta_result_prefix) | 130 delta_result_prefix) |
| 132 | 131 |
| 133 # Check if delta results already existed. | 132 # Check if delta results already existed. |
| 134 if os.path.exists(delta_csv_path): | 133 if os.path.exists(delta_csv_path): |
| 135 logging.info('Delta results existed in\n%s', delta_csv_path) | 134 print 'Delta results existed in\n%s' % delta_csv_path |
| 136 if not os.path.exists(delta_path): | 135 if not os.path.exists(delta_path): |
| 137 logging.info('Cannot print out delta results, ' | 136 print 'Cannot print out delta results, please open %s to see the results.' |
| 138 'please open %s to see the results.') | |
| 139 return | 137 return |
| 140 | 138 |
| 141 with open(delta_path) as f: | 139 with open(delta_path) as f: |
| 142 deltas, crash_num = pickle.load(f) | 140 deltas, crash_num = pickle.load(f) |
| 143 else: | 141 else: |
| 144 logging.info('Running delta test...') | 142 print 'Running delta test...' |
| 145 # Get delta of results between git_hash1 and git_hash2. | 143 # Get delta of results between git_hash1 and git_hash2. |
| 146 deltas, crash_num = delta_test.DeltaEvaluator( | 144 deltas, crash_num = delta_test.DeltaEvaluator( |
| 147 git_hash1, git_hash2, args.client, args.app, | 145 git_hash1, git_hash2, args.client, args.app, |
| 148 start_date=args.since, end_date=args.until, | 146 start_date=args.since, end_date=args.until, |
| 149 batch_size=args.batch, verbose=args.verbose) | 147 batch_size=args.batch, verbose=args.verbose) |
| 150 delta_util.FlushResult([deltas, crash_num], delta_path) | 148 delta_util.FlushResult([deltas, crash_num], delta_path) |
| 151 delta_util.WriteDeltaToCSV(deltas, crash_num, | 149 delta_util.WriteDeltaToCSV(deltas, crash_num, args.app, |
| 152 git_hash1, git_hash2, delta_csv_path) | 150 git_hash1, git_hash2, delta_csv_path) |
| 153 | 151 |
| 154 # Print delta results to users. | 152 # Print delta results to users. |
| 155 logging.info('\n========================= Summary =========================') | 153 print '\n========================= Summary =========================' |
| 156 delta_util.PrintDelta(deltas, crash_num) | 154 delta_util.PrintDelta(deltas, crash_num, args.app) |
| 157 | 155 |
| 158 | 156 |
| 159 if __name__ == '__main__': | 157 if __name__ == '__main__': |
| 160 RunDeltaTest() | 158 RunDeltaTest() |
| OLD | NEW |