[backend-comparison] Add URL to browse results on burn.dev website (#1573)

This commit is contained in:
Sylvain Benner 2024-04-04 10:06:30 -04:00 committed by GitHub
parent 9a1459797f
commit 65222761fd
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 41 additions and 4 deletions

1
Cargo.lock generated
View File

@ -207,6 +207,7 @@ dependencies = [
"github-device-flow",
"indicatif",
"os_info",
"percent-encoding",
"rand",
"reqwest",
"rstest",

View File

@ -48,6 +48,7 @@ proc-macro2 = "1.0.79"
protobuf = "3.3"
protobuf-codegen = "3.3"
quote = "1.0.33"
percent-encoding = "2.3.1"
r2d2 = "0.8.10"
r2d2_sqlite = { version = "0.23.0" }
rayon = "1.10.0"

View File

@ -37,6 +37,7 @@ dirs = { workspace = true }
github-device-flow = { workspace = true }
os_info = { workspace = true }
indicatif = { workspace = true }
percent-encoding = { workspace = true }
rand = { workspace = true }
reqwest = {workspace = true, features = ["blocking", "json"]}
serde = { workspace = true }

View File

@ -1,4 +1,5 @@
use clap::{Parser, Subcommand, ValueEnum};
use percent_encoding::{utf8_percent_encode, NON_ALPHANUMERIC};
use std::io;
use std::process::ExitStatus;
use std::sync::{Arc, Mutex};
@ -6,12 +7,14 @@ use strum::IntoEnumIterator;
use strum_macros::{Display, EnumIter};
use crate::burnbenchapp::auth::Tokens;
use crate::persistence::system_info::BenchmarkSystemInfo;
use super::auth::get_tokens;
use super::auth::get_username;
use super::progressbar::RunnerProgressBar;
use super::reports::{BenchmarkCollection, FailedBenchmark};
use super::runner::{CargoRunner, NiceProcessor, OutputProcessor, VerboseProcessor};
use super::USER_BENCHMARK_WEBSITE_URL;
#[derive(Parser, Debug)]
#[clap(author, version, about, long_about = None)]
@ -199,6 +202,9 @@ fn run_backend_comparison_benchmarks(
pb.lock().unwrap().finish();
}
println!("{}", report_collection.load_records());
if let Some(url) = web_results_url(token) {
println!("📊 Browse results at {}", url);
}
}
fn run_cargo(
@ -237,3 +243,23 @@ fn run_cargo(
let mut runner = CargoRunner::new(&args, processor);
runner.run()
}
fn web_results_url(token: Option<&str>) -> Option<String> {
if let Some(t) = token {
if let Some(user) = get_username(t) {
let sysinfo = BenchmarkSystemInfo::new();
let encoded_os = utf8_percent_encode(&sysinfo.os.name, NON_ALPHANUMERIC).to_string();
let output = std::process::Command::new("git")
.args(["rev-parse", "HEAD"])
.output()
.unwrap();
let git_hash = String::from_utf8(output.stdout).unwrap().trim().to_string();
return Some(format!(
"{}benchmarks/community-benchmarks?user={}&os={}&version1={}&version2={}&search=true",
USER_BENCHMARK_WEBSITE_URL, user.nickname, encoded_os, git_hash, git_hash
));
}
}
None
}

View File

@ -14,3 +14,11 @@ const USER_BENCHMARK_SERVER_URL: &str = if cfg!(debug_assertions) {
// production
"https://user-benchmark-server-gvtbw64teq-nn.a.run.app/"
};
const USER_BENCHMARK_WEBSITE_URL: &str = if cfg!(debug_assertions) {
// development
"http://localhost:4321/"
} else {
// production
"https://burn.dev/"
};

View File

@ -1,4 +1,4 @@
mod base;
mod system_info;
pub mod system_info;
pub use base::*;

View File

@ -8,12 +8,12 @@ use wgpu;
pub struct BenchmarkSystemInfo {
cpus: Vec<String>,
gpus: Vec<String>,
os: BenchmarkOSInfo,
pub os: BenchmarkOSInfo,
}
#[derive(Default, Clone, Serialize, Deserialize)]
pub(crate) struct BenchmarkOSInfo {
name: String,
pub struct BenchmarkOSInfo {
pub name: String,
#[serde(rename = "wsl")]
windows_linux_subsystem: bool,
}