Skip to content

Commit e48e0a0

Browse files
Extract commits and published processing to separate functions
1 parent cde26de commit e48e0a0

File tree

1 file changed

+101
-84
lines changed
  • collector/src/bin/rustc-perf-collector

1 file changed

+101
-84
lines changed

collector/src/bin/rustc-perf-collector/main.rs

+101-84
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,104 @@ where
149149
Ok(v)
150150
}
151151

152+
fn process_commits(
153+
out_repo: outrepo::Repo,
154+
benchmarks: &[Benchmark],
155+
collect_self_profile: bool,
156+
) -> Result<(), Error> {
157+
println!("processing commits");
158+
let client = reqwest::Client::new();
159+
let commit: Option<String> = client
160+
.get(&format!(
161+
"{}/perf/next_commit",
162+
env::var("SITE_URL").expect("SITE_URL defined")
163+
))
164+
.send()?
165+
.json()?;
166+
let commit = if let Some(c) = commit {
167+
c
168+
} else {
169+
// no missing commits
170+
return Ok(());
171+
};
172+
173+
let commit = get_commit_or_fake_it(&commit)?;
174+
match Sysroot::install(&commit.sha, commit.date.0, "x86_64-unknown-linux-gnu") {
175+
Ok(sysroot) => {
176+
let result = out_repo.success(&bench_commit(
177+
Some(&out_repo),
178+
&commit,
179+
&[BuildKind::Check, BuildKind::Debug, BuildKind::Opt],
180+
&RunKind::all(),
181+
Compiler::from_sysroot(&sysroot),
182+
&benchmarks,
183+
3,
184+
true,
185+
collect_self_profile,
186+
));
187+
if let Err(err) = result {
188+
panic!("failed to record success: {:?}", err);
189+
}
190+
}
191+
Err(err) => {
192+
error!("failed to install sysroot for {:?}: {:?}", commit, err);
193+
}
194+
}
195+
196+
Ok(())
197+
}
198+
199+
fn bench_published(
200+
id: &str,
201+
repo: outrepo::Repo,
202+
mut benchmarks: Vec<Benchmark>,
203+
) -> Result<(), Error> {
204+
let commit = Commit {
205+
sha: String::from("<none>"),
206+
date: Date::ymd_hms(2010, 01, 01, 0, 0, 0),
207+
};
208+
let cfg = rustup::Cfg::from_env(Arc::new(|_| {})).map_err(SyncFailure::new)?;
209+
let toolchain = rustup::Toolchain::from(&cfg, id)
210+
.map_err(SyncFailure::new)
211+
.with_context(|_| format!("creating toolchain for id: {}", id))?;
212+
toolchain
213+
.install_from_dist_if_not_installed()
214+
.map_err(SyncFailure::new)?;
215+
216+
// Remove benchmarks that don't work with a stable compiler.
217+
benchmarks.retain(|b| b.supports_stable());
218+
219+
let run_kinds = if collector::version_supports_incremental(id) {
220+
RunKind::all()
221+
} else {
222+
RunKind::all_non_incr()
223+
};
224+
let CommitData {
225+
benchmarks: benchmark_data,
226+
..
227+
} = bench_commit(
228+
None,
229+
&commit,
230+
&[BuildKind::Check, BuildKind::Debug, BuildKind::Opt],
231+
&run_kinds,
232+
Compiler {
233+
rustc: &toolchain.binary_file("rustc"),
234+
cargo: &toolchain.binary_file("cargo"),
235+
is_nightly: false,
236+
triple: "x86_64-unknown-linux-gnu",
237+
},
238+
&benchmarks,
239+
3,
240+
false,
241+
false,
242+
);
243+
repo.success_artifact(&ArtifactData {
244+
id: id.to_string(),
245+
benchmarks: benchmark_data,
246+
})?;
247+
Ok(())
248+
}
249+
152250
fn bench_commit(
153251
repo: Option<&outrepo::Repo>,
154252
commit: &Commit,
@@ -358,7 +456,7 @@ fn main_result() -> Result<i32, Error> {
358456
let benchmark_dir = PathBuf::from("collector/benchmarks");
359457
let filter = matches.value_of("filter");
360458
let exclude = matches.value_of("exclude");
361-
let mut benchmarks = get_benchmarks(&benchmark_dir, filter, exclude)?;
459+
let benchmarks = get_benchmarks(&benchmark_dir, filter, exclude)?;
362460
let use_remote = matches.is_present("sync_git");
363461
let collect_self_profile = matches.is_present("skip_self_profile");
364462

@@ -436,93 +534,12 @@ fn main_result() -> Result<i32, Error> {
436534

437535
("bench_published", Some(sub_m)) => {
438536
let id = sub_m.value_of("ID").unwrap();
439-
let repo = get_out_repo(false)?;
440-
let commit = Commit {
441-
sha: String::from("<none>"),
442-
date: Date::ymd_hms(2010, 01, 01, 0, 0, 0),
443-
};
444-
let cfg = rustup::Cfg::from_env(Arc::new(|_| {})).map_err(SyncFailure::new)?;
445-
let toolchain = rustup::Toolchain::from(&cfg, id)
446-
.map_err(SyncFailure::new)
447-
.with_context(|_| format!("creating toolchain for id: {}", id))?;
448-
toolchain
449-
.install_from_dist_if_not_installed()
450-
.map_err(SyncFailure::new)?;
451-
452-
// Remove benchmarks that don't work with a stable compiler.
453-
benchmarks.retain(|b| b.supports_stable());
454-
455-
let run_kinds = if collector::version_supports_incremental(id) {
456-
RunKind::all()
457-
} else {
458-
RunKind::all_non_incr()
459-
};
460-
let CommitData {
461-
benchmarks: benchmark_data,
462-
..
463-
} = bench_commit(
464-
None,
465-
&commit,
466-
&[BuildKind::Check, BuildKind::Debug, BuildKind::Opt],
467-
&run_kinds,
468-
Compiler {
469-
rustc: &toolchain.binary_file("rustc"),
470-
cargo: &toolchain.binary_file("cargo"),
471-
is_nightly: false,
472-
triple: "x86_64-unknown-linux-gnu",
473-
},
474-
&benchmarks,
475-
3,
476-
false,
477-
false,
478-
);
479-
repo.success_artifact(&ArtifactData {
480-
id: id.to_string(),
481-
benchmarks: benchmark_data,
482-
})?;
537+
bench_published(&id, get_out_repo(false)?, benchmarks)?;
483538
Ok(0)
484539
}
485540

486541
("process", Some(_)) => {
487-
let out_repo = get_out_repo(false)?;
488-
println!("processing commits");
489-
let client = reqwest::Client::new();
490-
let commit: Option<String> = client
491-
.get(&format!(
492-
"{}/perf/next_commit",
493-
env::var("SITE_URL").expect("SITE_URL defined")
494-
))
495-
.send()?
496-
.json()?;
497-
let commit = if let Some(c) = commit {
498-
c
499-
} else {
500-
// no missing commits
501-
return Ok(0);
502-
};
503-
504-
let commit = get_commit_or_fake_it(&commit)?;
505-
match Sysroot::install(&commit.sha, commit.date.0, "x86_64-unknown-linux-gnu") {
506-
Ok(sysroot) => {
507-
let result = out_repo.success(&bench_commit(
508-
Some(&out_repo),
509-
&commit,
510-
&[BuildKind::Check, BuildKind::Debug, BuildKind::Opt],
511-
&RunKind::all(),
512-
Compiler::from_sysroot(&sysroot),
513-
&benchmarks,
514-
3,
515-
true,
516-
collect_self_profile,
517-
));
518-
if let Err(err) = result {
519-
panic!("failed to record success: {:?}", err);
520-
}
521-
}
522-
Err(err) => {
523-
error!("failed to install sysroot for {:?}: {:?}", commit, err);
524-
}
525-
}
542+
process_commits(get_out_repo(false)?, &benchmarks, collect_self_profile)?;
526543
Ok(0)
527544
}
528545

0 commit comments

Comments
 (0)