Skip to content

Commit c02b7d8

Browse files
authored
Merge pull request #2221 from Jamesbarford/feat/get-collectors-config
Feat; get collectors configuration query
2 parents d4f7289 + 79adb3a commit c02b7d8

File tree

3 files changed

+75
-0
lines changed

3 files changed

+75
-0
lines changed

database/src/pool.rs

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -273,6 +273,9 @@ pub trait Connection: Send + Sync {
273273
) -> anyhow::Result<()>;
274274

275275
async fn get_status_page_data(&self) -> anyhow::Result<PartialStatusPageData>;
276+
277+
/// Get all of the configuration for all of the collectors
278+
async fn get_collector_configs(&self) -> anyhow::Result<Vec<CollectorConfig>>;
276279
}
277280

278281
#[async_trait::async_trait]
@@ -1121,4 +1124,39 @@ mod tests {
11211124
})
11221125
.await;
11231126
}
1127+
1128+
#[tokio::test]
1129+
async fn get_collector_configs() {
1130+
run_postgres_test(|ctx| async {
1131+
let db = ctx.db_client().connection().await;
1132+
let target = Target::X86_64UnknownLinuxGnu;
1133+
1134+
let benchmark_set_one = BenchmarkSet(0u32);
1135+
let collector_name_one = "collector-1";
1136+
db.add_collector_config(collector_name_one, target, benchmark_set_one.0, true)
1137+
.await
1138+
.unwrap();
1139+
1140+
let benchmark_set_two = BenchmarkSet(1u32);
1141+
let collector_name_two = "collector-2";
1142+
db.add_collector_config(collector_name_two, target, benchmark_set_two.0, true)
1143+
.await
1144+
.unwrap();
1145+
1146+
let collector_configs = db.get_collector_configs().await;
1147+
assert!(collector_configs.is_ok());
1148+
let collector_configs = collector_configs.unwrap();
1149+
1150+
assert_eq!(collector_configs[0].name(), collector_name_one);
1151+
assert_eq!(collector_configs[0].benchmark_set(), benchmark_set_one);
1152+
assert_eq!(collector_configs[0].is_active(), true);
1153+
1154+
assert_eq!(collector_configs[1].name(), collector_name_two);
1155+
assert_eq!(collector_configs[1].benchmark_set(), benchmark_set_two);
1156+
assert_eq!(collector_configs[1].is_active(), true);
1157+
1158+
Ok(ctx)
1159+
})
1160+
.await;
1161+
}
11241162
}

database/src/pool/postgres.rs

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2171,6 +2171,39 @@ where
21712171
in_progress,
21722172
})
21732173
}
2174+
2175+
async fn get_collector_configs(&self) -> anyhow::Result<Vec<CollectorConfig>> {
2176+
let rows = self
2177+
.conn()
2178+
.query(
2179+
"SELECT
2180+
name,
2181+
target,
2182+
benchmark_set,
2183+
is_active,
2184+
last_heartbeat_at,
2185+
date_added
2186+
FROM
2187+
collector_config;",
2188+
&[],
2189+
)
2190+
.await?;
2191+
2192+
let mut configs = vec![];
2193+
for row in rows {
2194+
let config = CollectorConfig {
2195+
name: row.get::<_, String>(0),
2196+
target: Target::from_str(row.get::<_, &str>(1)).map_err(|e| anyhow::anyhow!(e))?,
2197+
benchmark_set: BenchmarkSet(row.get::<_, i32>(2) as u32),
2198+
is_active: row.get::<_, bool>(3),
2199+
last_heartbeat_at: row.get::<_, DateTime<Utc>>(4),
2200+
date_added: row.get::<_, DateTime<Utc>>(5),
2201+
};
2202+
configs.push(config);
2203+
}
2204+
2205+
Ok(configs)
2206+
}
21742207
}
21752208

21762209
fn row_to_benchmark_request(row: &Row) -> BenchmarkRequest {

database/src/pool/sqlite.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1373,6 +1373,10 @@ impl Connection for SqliteConnection {
13731373
async fn get_status_page_data(&self) -> anyhow::Result<PartialStatusPageData> {
13741374
no_queue_implementation_abort!()
13751375
}
1376+
1377+
async fn get_collector_configs(&self) -> anyhow::Result<Vec<CollectorConfig>> {
1378+
no_queue_implementation_abort!()
1379+
}
13761380
}
13771381

13781382
fn parse_artifact_id(ty: &str, sha: &str, date: Option<i64>) -> ArtifactId {

0 commit comments

Comments
 (0)