Skip to content

Commit 00ec081

Browse files
committed
Auto merge of #706 - Mark-Simulacrum:no-state, r=Mark-Simulacrum
Remove a few unused internal details See individual commits for details.
2 parents 0f43df9 + 263bee0 commit 00ec081

File tree

7 files changed

+64
-109
lines changed

7 files changed

+64
-109
lines changed

src/agent/api.rs

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -182,14 +182,12 @@ impl AgentApi {
182182
.build_request(Method::POST, "record-progress")
183183
.json(&json!({
184184
"experiment-name": ex.name,
185-
"results": [
186-
{
187-
"crate": krate,
188-
"toolchain": toolchain,
189-
"result": result,
190-
"log": base64::engine::general_purpose::STANDARD.encode(log),
191-
},
192-
],
185+
"result": {
186+
"crate": krate,
187+
"toolchain": toolchain,
188+
"result": result,
189+
"log": base64::engine::general_purpose::STANDARD.encode(log),
190+
},
193191
"version": version
194192
}))
195193
.send()?

src/results/db.rs

Lines changed: 18 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ pub struct TaskResult {
2020

2121
#[derive(Deserialize)]
2222
pub struct ProgressData {
23-
pub results: Vec<TaskResult>,
23+
pub result: TaskResult,
2424
pub version: Option<(Crate, Crate)>,
2525
}
2626

@@ -83,25 +83,23 @@ impl<'a> DatabaseDB<'a> {
8383
data: &ProgressData,
8484
encoding_type: EncodingType,
8585
) -> Fallible<()> {
86-
for result in &data.results {
87-
self.store_result(
88-
ex,
89-
&result.krate,
90-
&result.toolchain,
91-
&result.result,
92-
&base64::engine::general_purpose::STANDARD
93-
.decode(&result.log)
94-
.with_context(|_| "invalid base64 log provided")?,
95-
encoding_type,
96-
)?;
97-
98-
if let Some((old, new)) = &data.version {
99-
self.update_crate_version(ex, old, new)?;
100-
}
101-
102-
self.mark_crate_as_completed(ex, &result.krate)?;
86+
self.store_result(
87+
ex,
88+
&data.result.krate,
89+
&data.result.toolchain,
90+
&data.result.result,
91+
&base64::engine::general_purpose::STANDARD
92+
.decode(&data.result.log)
93+
.with_context(|_| "invalid base64 log provided")?,
94+
encoding_type,
95+
)?;
96+
97+
if let Some((old, new)) = &data.version {
98+
self.update_crate_version(ex, old, new)?;
10399
}
104100

101+
self.mark_crate_as_completed(ex, &data.result.krate)?;
102+
105103
Ok(())
106104
}
107105

@@ -465,12 +463,12 @@ mod tests {
465463
.store(
466464
&ex,
467465
&ProgressData {
468-
results: vec![TaskResult {
466+
result: TaskResult {
469467
krate: updated.clone(),
470468
toolchain: MAIN_TOOLCHAIN.clone(),
471469
result: TestResult::TestPass,
472470
log: base64::engine::general_purpose::STANDARD.encode("foo"),
473-
}],
471+
},
474472
version: Some((krate.clone(), updated.clone())),
475473
},
476474
EncodingType::Plain,

src/runner/tasks.rs

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,6 @@ impl<'ctx, DB: WriteResults + 'ctx> TaskCtx<'ctx, DB> {
4848

4949
pub(super) enum TaskStep {
5050
Prepare,
51-
Cleanup,
5251
Skip { tc: Toolchain },
5352
BuildAndTest { tc: Toolchain, quiet: bool },
5453
BuildOnly { tc: Toolchain, quiet: bool },
@@ -62,7 +61,6 @@ impl fmt::Debug for TaskStep {
6261
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
6362
let (name, quiet, tc) = match *self {
6463
TaskStep::Prepare => ("prepare", false, None),
65-
TaskStep::Cleanup => ("cleanup", false, None),
6664
TaskStep::Skip { ref tc } => ("skip", false, Some(tc)),
6765
TaskStep::BuildAndTest { ref tc, quiet } => ("build and test", quiet, Some(tc)),
6866
TaskStep::BuildOnly { ref tc, quiet } => ("build", quiet, Some(tc)),
@@ -104,7 +102,7 @@ impl Task {
104102
storage: &LogStorage,
105103
) -> Fallible<()> {
106104
match self.step {
107-
TaskStep::Prepare | TaskStep::Cleanup => {}
105+
TaskStep::Prepare => {}
108106
TaskStep::Skip { ref tc }
109107
| TaskStep::BuildAndTest { ref tc, .. }
110108
| TaskStep::BuildOnly { ref tc, .. }
@@ -165,10 +163,6 @@ impl Task {
165163
tc,
166164
false,
167165
),
168-
TaskStep::Cleanup => {
169-
// Remove stored logs
170-
return Ok(());
171-
}
172166
TaskStep::Prepare => {
173167
logging::capture(logs, || {
174168
let rustwide_crate = self.krate.to_rustwide();

src/runner/worker.rs

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ impl<'a, DB: WriteResults + Sync> Worker<'a, DB> {
9191
let mut should_retry = false;
9292
if res.is_err() && self.ex.toolchains.len() == 2 {
9393
let toolchain = match &task.step {
94-
TaskStep::Prepare | TaskStep::Cleanup => None,
94+
TaskStep::Prepare => None,
9595
TaskStep::Skip { tc }
9696
| TaskStep::BuildAndTest { tc, .. }
9797
| TaskStep::BuildOnly { tc, .. }
@@ -200,10 +200,6 @@ impl<'a, DB: WriteResults + Sync> Worker<'a, DB> {
200200
},
201201
});
202202
}
203-
tasks.push(Task {
204-
krate: krate.clone(),
205-
step: TaskStep::Cleanup,
206-
});
207203
}
208204

209205
let mut result = Ok(());

src/server/auth.rs

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,6 @@ lazy_static! {
1414
Regex::new(r"^crater(-agent)?/(?P<sha>[a-f0-9]{7,40})( \(.*\))?$").unwrap();
1515
}
1616

17-
#[derive(Copy, Clone)]
18-
pub enum TokenType {
19-
Agent,
20-
}
21-
2217
pub struct AuthDetails {
2318
pub name: String,
2419
pub git_revision: Option<String>,
@@ -45,7 +40,7 @@ fn git_revision(user_agent: &str) -> Option<String> {
4540
.map(|cap| cap["sha"].to_string())
4641
}
4742

48-
fn check_auth(data: &Data, headers: &HeaderMap, token_type: TokenType) -> Option<AuthDetails> {
43+
fn check_auth(data: &Data, headers: &HeaderMap) -> Option<AuthDetails> {
4944
// Try to extract the git revision from the User-Agent header
5045
let git_revision = if let Some(ua_value) = headers.get(USER_AGENT) {
5146
if let Ok(ua) = ua_value.to_str() {
@@ -60,11 +55,7 @@ fn check_auth(data: &Data, headers: &HeaderMap, token_type: TokenType) -> Option
6055
if let Some(authorization_value) = headers.get(AUTHORIZATION) {
6156
if let Ok(authorization) = authorization_value.to_str() {
6257
if let Some(token) = parse_token(authorization) {
63-
let tokens = match token_type {
64-
TokenType::Agent => &data.tokens.agents,
65-
};
66-
67-
if let Some(name) = tokens.get(token) {
58+
if let Some(name) = data.tokens.agents.get(token) {
6859
return Some(AuthDetails {
6960
name: name.clone(),
7061
git_revision,
@@ -79,12 +70,11 @@ fn check_auth(data: &Data, headers: &HeaderMap, token_type: TokenType) -> Option
7970

8071
pub fn auth_filter(
8172
data: Arc<Data>,
82-
token_type: TokenType,
8373
) -> impl Filter<Extract = (AuthDetails,), Error = Rejection> + Clone {
8474
warp::header::headers_cloned().and_then(move |headers| {
8575
let data = data.clone();
8676
async move {
87-
match check_auth(&data, &headers, token_type) {
77+
match check_auth(&data, &headers) {
8878
Some(details) => Ok(details),
8979
None => Err(warp::reject::custom(HttpError::Forbidden)),
9080
}

src/server/metrics.rs

Lines changed: 23 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ use crate::experiments::{Assignee, Experiment};
33
use crate::prelude::*;
44
use crate::server::agents::Agent;
55
use chrono::{DateTime, Utc};
6-
use prometheus::proto::{Metric, MetricFamily};
76
use prometheus::{HistogramVec, IntCounter, IntCounterVec, IntGauge, IntGaugeVec};
87

98
const JOBS_METRIC: &str = "crater_completed_jobs_total";
@@ -26,7 +25,7 @@ impl Metrics {
2625
pub fn new() -> Fallible<Self> {
2726
let jobs_opts = prometheus::opts!(JOBS_METRIC, "total completed jobs");
2827
let crater_completed_jobs_total =
29-
prometheus::register_int_counter_vec!(jobs_opts, &["agent", "experiment"])?;
28+
prometheus::register_int_counter_vec!(jobs_opts, &["experiment"])?;
3029
let crater_bounced_record_progress = prometheus::register_int_counter!(
3130
"crater_bounced_record_progress",
3231
"hits with full record progress queue"
@@ -63,39 +62,15 @@ impl Metrics {
6362
.inc_by(1);
6463
}
6564

66-
pub fn record_completed_jobs(&self, agent: &str, experiment: &str, amount: u64) {
65+
pub fn record_completed_jobs(&self, experiment: &str, amount: u64) {
6766
self.crater_completed_jobs_total
68-
.with_label_values(&[agent, experiment])
67+
.with_label_values(&[experiment])
6968
.inc_by(amount);
7069
}
7170

72-
fn get_metric_by_name(name: &str) -> Option<MetricFamily> {
73-
let families = prometheus::gather();
74-
families.into_iter().find(|fam| fam.get_name() == name)
75-
}
76-
77-
fn get_label_by_name<'a>(metric: &'a Metric, label: &str) -> Option<&'a str> {
78-
metric
79-
.get_label()
80-
.iter()
81-
.find(|lab| lab.get_name() == label)
82-
.map(|lab| lab.get_value())
83-
}
84-
8571
fn remove_experiment_jobs(&self, experiment: &str) -> Fallible<()> {
86-
if let Some(metric) = Self::get_metric_by_name(JOBS_METRIC) {
87-
let agents = metric
88-
.get_metric()
89-
.iter()
90-
.filter(|met| Self::get_label_by_name(met, "experiment").unwrap() == experiment)
91-
.map(|met| Self::get_label_by_name(met, "agent").unwrap())
92-
.collect::<Vec<&str>>();
93-
94-
for agent in agents.iter() {
95-
self.crater_completed_jobs_total
96-
.remove_label_values(&[agent, experiment])?;
97-
}
98-
}
72+
self.crater_completed_jobs_total
73+
.remove_label_values(&[experiment])?;
9974

10075
Ok(())
10176
}
@@ -143,12 +118,27 @@ mod tests {
143118
use crate::server::tokens::Tokens;
144119
use chrono::Utc;
145120
use lazy_static::lazy_static;
146-
use prometheus::proto::MetricFamily;
121+
use prometheus::proto::{Metric, MetricFamily};
147122

148123
lazy_static! {
149124
static ref METRICS: Metrics = Metrics::new().unwrap();
150125
}
151126

127+
impl Metrics {
128+
fn get_metric_by_name(name: &str) -> Option<MetricFamily> {
129+
let families = prometheus::gather();
130+
families.into_iter().find(|fam| fam.get_name() == name)
131+
}
132+
133+
fn get_label_by_name<'a>(metric: &'a Metric, label: &str) -> Option<&'a str> {
134+
metric
135+
.get_label()
136+
.iter()
137+
.find(|lab| lab.get_name() == label)
138+
.map(|lab| lab.get_value())
139+
}
140+
}
141+
152142
fn test_experiment_presence(metric: &MetricFamily, experiment: &str) -> bool {
153143
metric
154144
.get_metric()
@@ -160,12 +150,9 @@ mod tests {
160150
fn test_on_complete_experiment() {
161151
let ex1 = "pr-0";
162152
let ex2 = "pr-1";
163-
let agent1 = "agent-1";
164-
let agent2 = "agent-2";
165153

166-
METRICS.record_completed_jobs(agent1, ex1, 1);
167-
METRICS.record_completed_jobs(agent2, ex1, 1);
168-
METRICS.record_completed_jobs(agent2, ex2, 1);
154+
METRICS.record_completed_jobs(ex1, 1);
155+
METRICS.record_completed_jobs(ex2, 1);
169156

170157
//test metrics are correctly registered
171158
let jobs = Metrics::get_metric_by_name(JOBS_METRIC).unwrap();

0 commit comments

Comments
 (0)