Skip to content

Commit 3cf7ac5

Browse files
authored
Merge pull request #2334 from Kobzol/graphs-non-default
Handle non-default benchmark parameters in the graphs endpoint
2 parents 04331d2 + 44b670d commit 3cf7ac5

File tree

3 files changed

+20
-13
lines changed

3 files changed

+20
-13
lines changed

database/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,7 @@ impl Profile {
230230

231231
/// Set of default profiles that should be benchmarked for a master/try artifact.
232232
pub fn default_profiles() -> Vec<Self> {
233-
vec![Profile::Check, Profile::Debug, Profile::Doc, Profile::Opt]
233+
vec![Profile::Check, Profile::Debug, Profile::Opt, Profile::Doc]
234234
}
235235

236236
pub fn all_values() -> &'static [Self] {

database/src/selector.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,11 @@ impl CompileBenchmarkQuery {
217217
self
218218
}
219219

220+
pub fn target(mut self, selector: Selector<Target>) -> Self {
221+
self.target = selector;
222+
self
223+
}
224+
220225
pub fn metric(mut self, selector: Selector<Metric>) -> Self {
221226
self.metric = selector.map(|v| v.as_str().into());
222227
self

site/src/request_handlers/graph.rs

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
use std::collections::HashMap;
2+
use std::str::FromStr;
23
use std::sync::Arc;
34

45
use collector::Bound;
@@ -13,7 +14,7 @@ use database::interpolate::IsInterpolated;
1314
use 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

Comments
 (0)