24
24
from dashboard .core .cpus .models import CPUArchitecture
25
25
from dashboard .core .gpus .models import GPUType
26
26
27
- from dashboard .core .bots .reports .serializers import TestPathListSerializer , \
27
+ from dashboard .core .bots .reports .serializers import TestPathsListSerializer , \
28
28
TestsForBrowserBotListSerializer , ResultsForSubtestListSerializer , \
29
29
BotReportDataSerializer
30
30
39
39
db_character_separator = '\\ '
40
40
41
41
42
- class ReportDataBaseListViewSerializer (ListAPIView ):
42
+ class BaseReportDataListViewSerializer (ListAPIView ):
43
43
serializer_class = BotReportDataSerializer
44
44
45
45
def build_filters (self , is_improvement = True ) -> dict :
@@ -83,7 +83,7 @@ def build_filters(self, is_improvement=True) -> dict:
83
83
}
84
84
85
85
86
- class BotDataReportImprovementListView (ReportDataBaseListViewSerializer ):
86
+ class BotDataReportImprovementListView (BaseReportDataListViewSerializer ):
87
87
model = BotReportData
88
88
queryset = BotReportData .objects .filter (aggregation = 'None' )
89
89
@@ -95,7 +95,7 @@ def get_queryset(self):
95
95
prev_result__isnull = True ).order_by ('-delta' )[:limit ]
96
96
97
97
98
- class BotDataReportRegressionListView (ReportDataBaseListViewSerializer ):
98
+ class BotDataReportRegressionListView (BaseReportDataListViewSerializer ):
99
99
model = BotReportData
100
100
queryset = BotReportData .objects .filter (aggregation = 'None' )
101
101
@@ -107,60 +107,62 @@ def get_queryset(self):
107
107
prev_result__isnull = True ).order_by ('-delta' )[:limit ]
108
108
109
109
110
- class TestPathList (ListAPIView ):
111
- serializer_class = TestPathListSerializer
110
+ class TestPathsList (ListAPIView ):
111
+ serializer_class = TestPathsListSerializer
112
112
113
113
def get_queryset (self ):
114
- if self .kwargs .get ('browser' ) == 'all' :
115
- browser_obj = Browser .objects .all ()
116
- else :
117
- browser_obj = Browser .objects .filter (pk = self .kwargs .get ('browser' ))
114
+ browser_filter = self .request .query_params .get ('browser' , None )
115
+ browser_filter_by = {'pk' : browser_filter } if browser_filter else {}
116
+ browsers = Browser .objects .filter (** browser_filter_by )
117
+
118
+ root_test_filter = self .request .query_params .get ('root_test' , None )
119
+ root_test_filter_by = {'pk' : root_test_filter } if root_test_filter \
120
+ else {}
121
+ root_test = Test .objects .filter (** root_test_filter_by )
118
122
119
123
return BotReportData .objects .filter (
120
- browser__in = browser_obj ,
121
- root_test = Test .objects .filter (pk = self .kwargs .get ('test' ))
124
+ browser__in = browsers , root_test__in = root_test
122
125
).distinct ('test_path' )
123
126
124
127
125
128
class TestsForBrowserBotList (ListAPIView ):
126
129
serializer_class = TestsForBrowserBotListSerializer
127
130
128
131
def get_queryset (self ):
129
- if self .kwargs .get ('browser' ) == 'all' :
130
- browser_obj = Browser .objects .all ()
131
- else :
132
- browser_obj = Browser .objects .filter (pk = self .kwargs .get ('browser' ))
133
- try :
134
- bot = Bot .objects .get (pk = self .kwargs .get ('bot' ))
135
- return BotReportData .objects .filter (
136
- browser__in = browser_obj , bot = bot
137
- ).distinct ('root_test' )
138
- except Bot .DoesNotExist :
139
- return BotReportData .objects .filter (
140
- browser__in = browser_obj
141
- ).distinct ('root_test' )
132
+ browser_filter = self .request .query_params .get ('browser' , None )
133
+ browser_filter_by = {'pk' : browser_filter } if browser_filter else {}
134
+ browsers = Browser .objects .filter (** browser_filter_by )
142
135
136
+ bot_filter = self .request .query_params .get ('bot' , None )
137
+ bot_filter_by = {'pk' : bot_filter } if bot_filter else {}
138
+ bots = Bot .objects .filter (** bot_filter_by )
139
+
140
+ return BotReportData .objects .filter (
141
+ browser__in = browsers , bot__in = bots
142
+ ).distinct ('root_test' )
143
143
144
- class ResultsForSubtestList (ListAPIView ):
144
+
145
+ class ResultsForSubTestList (ListAPIView ):
145
146
serializer_class = ResultsForSubtestListSerializer
146
147
147
148
def get_queryset (self ):
148
- if self .kwargs .get ('browser' ) == 'all' :
149
- browser_obj = Browser .objects .all ()
150
- else :
151
- browser_obj = Browser .objects .filter (pk = self .kwargs .get ('browser' ))
152
- test = Test .objects .get (pk = self .kwargs .get ('test' ))
153
- test_path = urllib .parse .unquote (self .kwargs .get ('subtest' ))
154
- if self .kwargs .get ('bot' ) == 'all' :
155
- return BotReportData .objects .filter (
156
- browser__in = browser_obj , root_test = test , test_path = test_path
157
- ).order_by ('timestamp' )
158
- else :
159
- bot = Bot .objects .get (pk = self .kwargs .get ('bot' ))
160
- return BotReportData .objects .filter (
161
- browser__in = browser_obj , root_test = test , test_path = test_path ,
162
- bot = bot
163
- ).order_by ('timestamp' )
149
+ browser_filter = self .request .query_params .get ('browser' , None )
150
+ browser_filter_by = {'pk' : browser_filter } if browser_filter else {}
151
+ browsers = Browser .objects .filter (** browser_filter_by )
152
+
153
+ test = Test .objects .get (pk = self .request .query_params .get ('test' ))
154
+ test_path = urllib .parse .unquote (
155
+ self .request .query_params .get ('subtest' )
156
+ )
157
+
158
+ bot_filter = self .request .query_params .get ('bot' , None )
159
+ bot_filter_by = {'pk' : bot_filter } if bot_filter else {}
160
+ bots = Bot .objects .filter (** bot_filter_by )
161
+
162
+ return BotReportData .objects .filter (
163
+ browser__in = browsers , root_test = test , test_path = test_path ,
164
+ bot__in = bots
165
+ ).order_by ('timestamp' )
164
166
165
167
166
168
class BotReportView (APIView ):
@@ -248,12 +250,13 @@ def post(self, request, format=None):
248
250
bot_id = self .request .POST .get ('bot_id' )
249
251
json_data = self .request .POST .get ('test_data' )
250
252
except AttributeError :
251
- log .error ("Got invalid params from the bot: %s" % request .auth )
253
+ log .error (
254
+ 'Got invalid params from the bot: {0}' .format (request .auth ))
252
255
return HttpResponseBadRequest (
253
- " Some params are missing in the request"
256
+ ' Some params are missing in the request'
254
257
)
255
258
256
- log .info (" Started processing data from bot %s" % (bot_id ))
259
+ log .info (' Started processing data from bot {0}' . format (bot_id ))
257
260
# The timestamp may/may not be there - hence not checking
258
261
timestamp = None
259
262
if self .request .POST .get ('timestamp' ):
@@ -264,33 +267,35 @@ def post(self, request, format=None):
264
267
test_data = json .loads (json_data )
265
268
except AttributeError :
266
269
return HttpResponseBadRequest (
267
- " Error parsing JSON file from bot: %s " % request .auth
270
+ ' Error parsing JSON file from bot: {0}' . format ( request .auth )
268
271
)
269
272
270
273
bot = Bot .objects .get (pk = bot_id )
271
274
272
275
if not bot .enabled :
273
- log .error ("Got data from disabled bot: %s" % bot_id )
274
- return HttpResponseBadRequest ("The bot %s is not enabled" % bot_id )
276
+ log .error ('Got data from disabled bot: {0}' .format (bot_id ))
277
+ return HttpResponseBadRequest (
278
+ 'The bot {0} is not enabled' .format (bot_id ))
275
279
276
280
try :
277
281
browser = Browser .objects .get (pk = browser_id )
278
282
except Browser .DoesNotExist :
279
283
log .error (
280
- "Got invalid browser %s from bot: %s" % (browser_id , bot_id )
284
+ 'Got invalid browser {0} from bot: {1}' .format (
285
+ browser_id , bot_id )
281
286
)
282
- return HttpResponseBadRequest (" The browser does not exist" )
287
+ return HttpResponseBadRequest (' The browser does not exist' )
283
288
284
289
try :
285
290
root_test = Test .objects .get (pk = test_id )
286
291
except Test .DoesNotExist :
287
292
log .error (
288
- " Got invalid root test: %s from bot: %s for browser: %s, "
289
- " browser_version: %s" % (
290
- test_id , bot_id , browser_id , browser_version
291
- ) )
293
+ ' Got invalid root test: {0} from bot: {1} for browser: {2}, '
294
+ ' browser_version: {3}' . format (
295
+ test_id , bot_id , browser_id , browser_version )
296
+ )
292
297
return HttpResponseBadRequest (
293
- " The test %s does not exist" % test_id
298
+ ' The test {0} does not exist' . format ( test_id )
294
299
)
295
300
296
301
test_data_results = BenchmarkResults (test_data )
@@ -318,27 +323,28 @@ def post(self, request, format=None):
318
323
" " + current_metric .unit
319
324
except MetricUnit .DoesNotExist :
320
325
log .error (
321
- " Got wrong Metric %s for bot: %s , browser: %s, "
322
- " browser_version: %s , root_test: %s , test_description: "
323
- "%s" % ( metric_name , bot_id , browser_id , browser_version ,
324
- test_id , raw_path
325
- )
326
+ ' Got wrong Metric {0} for bot: {1} , browser: {2}, '
327
+ ' browser_version: {3} , root_test: {4} , test_description: '
328
+ '{5}' . format (
329
+ metric_name , bot_id , browser_id , browser_version ,
330
+ test_id , raw_path )
326
331
)
327
332
return HttpResponseBadRequest (
328
- " The Metric Unit %s does not exist" % metric_name
333
+ ' The Metric Unit {0} does not exist' . format ( metric_name )
329
334
)
330
335
331
336
if current_metric .unit != unit :
332
- log .error ("Got wrong unit %s for metric unit %s data for "
333
- "bot: %s, browser: %s, browser_version: %s, "
334
- "root_test: %s, test_description: %s" %
335
- (unit , metric_name , bot_id , browser_id ,
336
- browser_version , test_id , raw_path )
337
- )
338
- return HttpResponseBadRequest ("The received unit: %s field of "
339
- "Metric Unit %s does not match"
340
- % (unit , metric_name )
341
- )
337
+ log .error (
338
+ 'Got wrong unit {0} for metric unit {1} data for bot: '
339
+ '{2}, browser: {3}, browser_version: {4}, root_test: {5}, '
340
+ 'test_description: {6}' .format (
341
+ unit , metric_name , bot_id , browser_id ,
342
+ browser_version , test_id , raw_path
343
+ )
344
+ )
345
+ return HttpResponseBadRequest (
346
+ 'The received unit: {0} field of Metric Unit {1} does not '
347
+ 'match' .format (unit , metric_name ))
342
348
343
349
if self .is_aggregated (metric = result ['metric' ]):
344
350
aggregation = self .extract_aggregation (metric = result ['metric' ])
@@ -365,13 +371,13 @@ def post(self, request, format=None):
365
371
)
366
372
except Exception as e :
367
373
log .error (
368
- " Failed inserting data for bot: %s , browser: %s, "
369
- " browser_version: %s , root_test: %s , test_description: %s"
370
- " and Exception %s" %
371
- ( bot_id , browser_id , browser_version , test_id , raw_path ,
372
- str ( e ) )
374
+ ' Failed inserting data for bot: {0} , browser: {1}, '
375
+ ' browser_version: {2} , root_test: {3} , test_description: '
376
+ '{4} and Exception {5}' . format (
377
+ bot_id , browser_id , browser_version , test_id ,
378
+ raw_path , e )
373
379
)
374
- return HttpResponseBadRequest ("Exception inserting the data "
375
- "into the DB: %s" % str (e ))
380
+ return HttpResponseBadRequest (
381
+ 'Exception while inserting the data: {0}' . format (e ))
376
382
377
- return HttpResponse (" The POST went through" )
383
+ return HttpResponse (' The POST went through' )
0 commit comments