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

Side by Side Diff: appengine/findit/util_scripts/crash_queries/delta_test/run-delta-test.py

Issue 2400283003: [Findit] Add skeleton code for delta test script. (Closed)
Patch Set: Created 4 years, 2 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 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 """Runs delta test on 2 findit versions."""
6
7 import argparse
8 from datetime import date
9 from datetime import timedelta
10 import logging
11 import os
12 import sys
13
14 from crash.type_enums import CrashClient
15 from crash_queries.delta_test import delta_test
16 from crash_queries.delta_test import delta_util
17
18 _TODAY = date.today().strftime('%Y-%m-%d')
19 _A_YEAR_AGO = (date.today() - timedelta(days=365)).strftime('%Y-%m-%d')
20
21 # App Engine APIs will fail if batch size is more than 1000.
22 _MAX_BATCH_SIZE = 1000
23 _DEFAULT_BATCH_SIZE = _MAX_BATCH_SIZE
24
25 DELTA_RESULTS_DIRECTORY = os.path.join(os.path.dirname(__file__),
26 'delta_results')
27 CHROMIUM_REPO = 'https://chromium.googlesource.com/chromium/src'
28
29
30 def RunDeltaTest():
31 """Runs delta testing between 2 different Findit versions."""
32 argparser = argparse.ArgumentParser(
33 description='Run delta test between 2 findit versions.')
34
35 argparser.add_argument(
36 '--revisions',
37 '-r',
38 nargs='+',
39 default=['HEAD^', 'HEAD'],
40 help=('2 findit revisions to be compared. It can take '
41 '1 or 2 revisions.\n'
42 '(1)-r rev1 rev2: compare rev1 and rev2\n'
43 '(2)-r rev: compare rev and current HEAD\n'
44 '(3)no revisions provided, default to compare '
45 'HEAD^ and HEAD'))
46
47 argparser.add_argument(
48 '--date',
49 '-d',
50 default='%s..%s' % (_A_YEAR_AGO, _TODAY),
51 help=('Should be in start_date..end_date format.'
52 'If it\' 2016-08-01.., default end_date to today, if it\'s '
53 '..2016-08-16, default start_date to a year ago.'
54 'Start date and end date to query data in [start_date, end_date)'))
55
56 argparser.add_argument(
57 '--batch',
58 '-b',
59 type=int,
60 default=_DEFAULT_BATCH_SIZE,
61 help=('The size of batch that can be processed at one time.\n'
62 'Note, the batch size cannot be greater than 1000, or app engine '
63 'APIs would fail.'))
64
65 argparser.add_argument(
66 '--verbose',
67 '-v',
68 action='store_true',
69 default=False,
70 help='Print findit results.')
71
72 args = argparser.parse_args()
73
74 # If in verbose mode, prints debug infos about Gqlquery.
75 if args.verbose:
76 logging.basicConfig(level=logging.DEBUG)
77 else:
78 logging.basicConfig(level=logging.INFO)
79
80 if len(args.revisions) > 2:
81 logging.error('Only support delta test between 2 versions.')
82 sys.exit(1)
83
84 if args.batch > _MAX_BATCH_SIZE:
85 logging.error('Batch size cannot be greater than %s, or app engine APIs '
86 'would fail.', _MAX_BATCH_SIZE)
87 sys.exit(1)
88
89 # If only one revision provided, default the rev2 to HEAD.
90 if len(args.revisions) == 1:
91 args.revisions.append('HEAD')
92
93 git_hash1 = delta_util.ParseGitHash(args.revisions[0])
94 git_hash2 = delta_util.ParseGitHash(args.revisions[1])
95
96 if '..' not in args.date:
97 logging.error('Invalid format for date')
98 sys.exit(1)
99
100 start_date, end_date = args.date.split('..')
101 if not start_date:
102 start_date = _A_YEAR_AGO
103 if not end_date:
104 end_date = _TODAY
105
106 delta_path = os.path.join(DELTA_RESULTS_DIRECTORY,
107 '%s_%s_%s..%s.delta.csv' % (git_hash1[:7],
108 git_hash2[:7],
109 start_date, end_date))
110
111 # Check if delta results already existed.
112 if os.path.exists(delta_path):
113 logging.info('Delta results already existed in\n%s', delta_path)
114 return
115
116
117 logging.info('Running delta test...')
118 # Get delta of results between git_hash1 and git_hash2.
119 deltas, crash_num = delta_test.DeltaEvaluator(
120 git_hash1, git_hash2, CrashClient.FRACAS,
121 start_date, end_date,
122 args.batch, verbose=args.verbose)
123
124 logging.info('\n========================= Summary =========================')
125 delta_util.PrintDelta(deltas, crash_num)
126 delta_util.WriteDeltaToCSV(deltas, crash_num,
127 git_hash1, git_hash2, delta_path)
128
129
130 if __name__ == '__main__':
131 RunDeltaTest()
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698