From 01124d719b59fbf33b3bf6e80395f9f62298e356 Mon Sep 17 00:00:00 2001 From: Joscha Date: Mon, 14 Aug 2023 14:15:38 +0200 Subject: [PATCH] Add optional run end time override --- src/server/web/api/worker.rs | 2 +- src/shared.rs | 10 ++++++++++ src/worker/run.rs | 1 + 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/server/web/api/worker.rs b/src/server/web/api/worker.rs index a6d17ea..e29a842 100644 --- a/src/server/web/api/worker.rs +++ b/src/server/web/api/worker.rs @@ -35,7 +35,7 @@ async fn save_work(finished: FinishedRun, db: &SqlitePool) -> somehow::Result<() let mut tx = db.begin().await?; let conn = tx.acquire().await?; - let end = OffsetDateTime::now_utc(); + let end = finished.end.unwrap_or_else(OffsetDateTime::now_utc); let bench_method = match finished.run.bench_method { BenchMethod::Internal => "internal".to_string(), BenchMethod::Repo { hash } => format!("bench repo, hash {hash}"), diff --git a/src/shared.rs b/src/shared.rs index 8af4575..ff52c6e 100644 --- a/src/shared.rs +++ b/src/shared.rs @@ -65,10 +65,20 @@ pub struct UnfinishedRun { pub struct FinishedRun { #[serde(flatten)] pub run: Run, + + /// Override the server's end time. + /// + /// Should not be used in normal operation, but can be used when importing + /// completed runs from other sources. + #[serde(skip_serializing_if = "Option::is_none")] + pub end: Option, + #[serde(default)] pub exit_code: i32, + #[serde(default)] pub output: Vec<(Source, String)>, + #[serde(default)] pub measurements: HashMap, } diff --git a/src/worker/run.rs b/src/worker/run.rs index 879f065..2792d88 100644 --- a/src/worker/run.rs +++ b/src/worker/run.rs @@ -97,6 +97,7 @@ impl RunInProgress { Some(FinishedRun { run: self.run.clone(), + end: None, exit_code: finished.exit_code, output, measurements: finished.measurements,