11use std:: collections:: HashMap ;
2+ use std:: str:: FromStr ;
23use std:: sync:: Arc ;
34
45use collector:: Bound ;
@@ -13,7 +14,7 @@ use database::interpolate::IsInterpolated;
1314use database:: selector:: {
1415 CompileBenchmarkQuery , CompileTestCase , RuntimeBenchmarkQuery , Selector , SeriesResponse ,
1516} ;
16- use database:: { self , ArtifactId , Profile , Scenario } ;
17+ use database:: { self , ArtifactId , CodegenBackend , Profile , Scenario , Target } ;
1718
1819/// Returns data for before/after graphs when comparing a single test result comparison
1920/// for a compile-time benchmark.
@@ -209,24 +210,28 @@ async fn create_graphs(
209210 ) ) ;
210211 let mut benchmarks = HashMap :: new ( ) ;
211212
212- let create_selector = | filter : & Option < String > | -> Selector < String > {
213+ fn create_selector < T : FromStr > ( filter : & Option < String > ) -> Option < Result < Selector < T > , T :: Err > > {
213214 filter
214215 . as_ref ( )
215216 . map ( |value| Selector :: One ( value. clone ( ) ) )
216- . unwrap_or ( Selector :: All )
217- } ;
217+ . map ( |s| s . try_map ( |v| v . parse :: < T > ( ) ) )
218+ }
218219
219- let benchmark_selector = create_selector ( & request. benchmark ) ;
220- let profile_selector = create_selector ( & request. profile ) . try_map ( |v| v. parse :: < Profile > ( ) ) ?;
221- let scenario_selector =
222- create_selector ( & request. scenario ) . try_map ( |v| v. parse :: < Scenario > ( ) ) ?;
220+ let benchmark_selector = create_selector ( & request. benchmark )
221+ . unwrap_or ( Ok ( Selector :: All ) )
222+ . unwrap ( ) ;
223+ let profile_selector = create_selector ( & request. profile )
224+ . unwrap_or_else ( || Ok ( Selector :: Subset ( Profile :: default_profiles ( ) ) ) ) ?;
225+ let scenario_selector = create_selector ( & request. scenario ) . unwrap_or ( Ok ( Selector :: All ) ) ?;
223226
224227 let interpolated_responses: Vec < _ > = ctxt
225228 . statistic_series (
226229 CompileBenchmarkQuery :: default ( )
227230 . benchmark ( benchmark_selector)
228231 . profile ( profile_selector)
229232 . scenario ( scenario_selector)
233+ . backend ( Selector :: One ( CodegenBackend :: Llvm ) )
234+ . target ( Selector :: One ( Target :: X86_64UnknownLinuxGnu ) )
230235 . metric ( Selector :: One ( request. stat . parse ( ) ?) ) ,
231236 artifact_ids. clone ( ) ,
232237 )
@@ -302,10 +307,7 @@ fn create_summary(
302307 let mut summary_benchmark = HashMap :: new ( ) ;
303308 let summary_query_cases = iproduct ! (
304309 ctxt. summary_scenarios( ) ,
305- profile. map_or_else(
306- || vec![ Profile :: Check , Profile :: Debug , Profile :: Opt , Profile :: Doc ] ,
307- |p| vec![ p]
308- )
310+ profile. map_or_else( Profile :: default_profiles, |p| vec![ p] )
309311 ) ;
310312 for ( scenario, profile) in summary_query_cases {
311313 let baseline = match baselines. entry ( ( profile, scenario) ) {
0 commit comments