8
8
9
9
from code_coverage_backend .config import COVERAGE_EXTENSIONS
10
10
from code_coverage_backend .gcp import load_cache
11
+ from code_coverage_backend .report import DEFAULT_FILTER
11
12
12
13
DEFAULT_REPOSITORY = "mozilla-central"
13
14
logger = structlog .get_logger (__name__ )
@@ -39,7 +40,13 @@ def coverage_latest(repository=DEFAULT_REPOSITORY):
39
40
abort (404 )
40
41
41
42
42
- def coverage_for_path (path = "" , changeset = None , repository = DEFAULT_REPOSITORY ):
43
+ def coverage_for_path (
44
+ path = "" ,
45
+ changeset = None ,
46
+ repository = DEFAULT_REPOSITORY ,
47
+ platform = DEFAULT_FILTER ,
48
+ suite = DEFAULT_FILTER ,
49
+ ):
43
50
"""
44
51
Aggregate coverage for a path, regardless of its type:
45
52
* file, gives its coverage percent
@@ -54,17 +61,17 @@ def coverage_for_path(path="", changeset=None, repository=DEFAULT_REPOSITORY):
54
61
try :
55
62
if changeset :
56
63
# Find closest report matching this changeset
57
- changeset , _ = gcp .find_closest_report (repository , changeset )
64
+ report = gcp .find_closest_report (repository , changeset , platform , suite )
58
65
else :
59
66
# Fallback to latest report
60
- changeset , _ = gcp .find_report (repository )
67
+ report = gcp .find_report (repository , platform , suite )
61
68
except Exception as e :
62
69
logger .warn ("Failed to retrieve report: {}" .format (e ))
63
70
abort (404 )
64
71
65
72
# Load tests data from GCP
66
73
try :
67
- return gcp .get_coverage (repository , changeset , path )
74
+ return gcp .get_coverage (report , path )
68
75
except Exception as e :
69
76
logger .warn (
70
77
"Failed to load coverage" ,
@@ -76,7 +83,14 @@ def coverage_for_path(path="", changeset=None, repository=DEFAULT_REPOSITORY):
76
83
abort (400 )
77
84
78
85
79
- def coverage_history (repository = DEFAULT_REPOSITORY , path = "" , start = None , end = None ):
86
+ def coverage_history (
87
+ repository = DEFAULT_REPOSITORY ,
88
+ path = "" ,
89
+ start = None ,
90
+ end = None ,
91
+ platform = DEFAULT_FILTER ,
92
+ suite = DEFAULT_FILTER ,
93
+ ):
80
94
"""
81
95
List overall coverage from ingested reports over a period of time
82
96
"""
@@ -86,7 +100,7 @@ def coverage_history(repository=DEFAULT_REPOSITORY, path="", start=None, end=Non
86
100
abort (500 )
87
101
88
102
try :
89
- return gcp .get_history (repository , path = path , start = start , end = end )
103
+ return gcp .get_history (repository , path , start , end , platform , suite )
90
104
except Exception as e :
91
105
logger .warn (
92
106
"Failed to load history" ,
@@ -97,3 +111,22 @@ def coverage_history(repository=DEFAULT_REPOSITORY, path="", start=None, end=Non
97
111
error = str (e ),
98
112
)
99
113
abort (400 )
114
+
115
+
116
+ def coverage_filters (repository = DEFAULT_REPOSITORY ):
117
+ """
118
+ List all available filters for that repository
119
+ """
120
+ gcp = load_cache ()
121
+ if gcp is None :
122
+ logger .error ("No GCP cache available" )
123
+ abort (500 )
124
+
125
+ try :
126
+ return {
127
+ "platforms" : gcp .get_platforms (repository ),
128
+ "suites" : gcp .get_suites (repository ),
129
+ }
130
+ except Exception as e :
131
+ logger .warn ("Failed to load filters" , repo = repository , error = str (e ))
132
+ abort (400 )
0 commit comments