summaryrefslogtreecommitdiffstats
path: root/src/service
diff options
context:
space:
mode:
Diffstat (limited to 'src/service')
-rw-r--r--src/service/http.rs12
-rw-r--r--src/service/systemd.rs17
-rw-r--r--src/service/tcp.rs10
3 files changed, 16 insertions, 23 deletions
diff --git a/src/service/http.rs b/src/service/http.rs
index 7c875b9..8950096 100644
--- a/src/service/http.rs
+++ b/src/service/http.rs
@@ -32,14 +32,10 @@ impl ServiceSpawner for Http {
.try_clone()
.expect("Clone with no body should never fail");
let resp = client.execute(req).await;
- let status = match resp.map(|r| r.status().as_u16()) {
- Ok(code) if code == self.status_code => Status::Pass,
- Ok(code) => Status::Fail(Some(format!("Status code: {code}"))),
- Err(err) => {
- tracing::error!("HTTP request error: {err}");
- Status::Unknown
- }
- };
+ let status = resp.map_or_else(Into::into, |r| match r.status().as_u16() {
+ c if c == self.status_code => Status::Ok,
+ c => Status::Error(Some(format!("Status code: {c}"))),
+ });
tx.send_if_modified(|s| s.update(status));
}
diff --git a/src/service/systemd.rs b/src/service/systemd.rs
index 90213a0..ee220b8 100644
--- a/src/service/systemd.rs
+++ b/src/service/systemd.rs
@@ -21,17 +21,14 @@ impl ServiceSpawner for Systemd {
loop {
interval.tick().await;
- let status = match command.output() {
- Ok(output) if output.status.success() => Status::Pass,
- Ok(output) => {
- let stdout = String::from_utf8_lossy(&output.stdout).trim().to_string();
- Status::Fail(Some(format!("Service state: {}", stdout)))
+ let status = command.output().map_or_else(Into::into, |o| {
+ if o.status.success() {
+ Status::Ok
+ } else {
+ let stdout = String::from_utf8_lossy(&o.stdout).trim().to_string();
+ Status::Error(Some(format!("Service state: {}", stdout)))
}
- Err(err) => {
- tracing::error!("Failed to spawn process: {err}");
- Status::Unknown
- }
- };
+ });
tx.send_if_modified(|s| s.update(status));
}
diff --git a/src/service/tcp.rs b/src/service/tcp.rs
index 42791bc..7b79afd 100644
--- a/src/service/tcp.rs
+++ b/src/service/tcp.rs
@@ -32,7 +32,7 @@ impl ServiceSpawner for Tcp {
Ok(conn) => {
// TODO: figure out how to wait for connection to close
conn.ready(Interest::READABLE).await?;
- tx.send_if_modified(|s| s.update(Status::Pass));
+ tx.send_if_modified(|s| s.update(Status::Ok));
}
Err(err) => {
tx.send_if_modified(|s| s.update(err.into()));
@@ -50,18 +50,18 @@ mod tests {
#[tracing_test::traced_test]
#[ignore]
async fn test_tcp_watch() {
- let (tx, mut rx) = tokio::sync::watch::channel(Status::default());
+ let (tx, mut rx) = tokio::sync::watch::channel(Status::Error(None));
let tests = tokio::spawn(async move {
- assert!(matches!(*rx.borrow_and_update(), Status::Unknown));
+ assert!(matches!(*rx.borrow_and_update(), Status::Error(None)));
rx.changed().await.unwrap();
- assert!(matches!(*rx.borrow_and_update(), Status::Pass));
+ assert!(matches!(*rx.borrow_and_update(), Status::Ok));
rx.changed().await.unwrap();
assert_eq!(
*rx.borrow_and_update(),
- Status::Fail(Some(String::from("Disconnected")))
+ Status::Error(Some(String::from("Disconnected")))
);
});