-
Notifications
You must be signed in to change notification settings - Fork 1.4k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[ENH] Command-line tools for every chroma-load endpoint.
chroma-load-start start a workload chroma-load-stop stop a workload chroma-load-inhibit stop all workloads chroma-load-uninhibit reverse the effects of chroma-load-inhibit
- Loading branch information
Showing
7 changed files
with
153 additions
and
0 deletions.
There are no files selected for viewing
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
//! Inhibit chroma-load on every host provided on the command line. | ||
#[tokio::main] | ||
async fn main() { | ||
for host in std::env::args().skip(1) { | ||
let client = reqwest::Client::new(); | ||
match client.post(format!("{}/inhibit", host)).send().await { | ||
Ok(resp) => { | ||
if resp.status().is_success() { | ||
println!("Inhibited load on {}", host); | ||
} else { | ||
eprintln!("Failed to inhibit load on {}: {}", host, resp.status()); | ||
} | ||
} | ||
Err(e) => eprintln!("Failed to inhibit load on {}: {}", host, e), | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
//! Start a workload on the chroma-load server. | ||
use clap::Parser; | ||
|
||
use chroma_load::rest::StartRequest; | ||
use chroma_load::{humanize_expires, Workload}; | ||
|
||
#[derive(Parser, Debug)] | ||
struct Args { | ||
#[arg(long)] | ||
host: String, | ||
#[arg(long)] | ||
name: String, | ||
#[arg(long)] | ||
expires: String, | ||
#[arg(long)] | ||
data_set: String, | ||
#[arg(long)] | ||
workload: String, | ||
#[arg(long)] | ||
throughput: f64, | ||
} | ||
|
||
#[tokio::main] | ||
async fn main() { | ||
let args = Args::parse(); | ||
let client = reqwest::Client::new(); | ||
let req = StartRequest { | ||
name: args.name, | ||
expires: humanize_expires(&args.expires).unwrap_or(args.expires), | ||
data_set: args.data_set, | ||
workload: Workload::ByName(args.workload), | ||
throughput: args.throughput, | ||
}; | ||
match client | ||
.post(format!("{}/start", args.host)) | ||
.json(&req) | ||
.send() | ||
.await | ||
{ | ||
Ok(resp) => { | ||
if resp.status().is_success() { | ||
println!("Started workload on {}", args.host); | ||
} else { | ||
eprintln!( | ||
"Failed to start workload on {}: {}", | ||
args.host, | ||
resp.status() | ||
); | ||
} | ||
} | ||
Err(e) => eprintln!("Failed to start workload on {}: {}", args.host, e), | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
//! Stop a single workload on the chroma-load server. | ||
//! | ||
//! If you are looking to stop traffic for a SEV, see chroma-load-inhibit. | ||
use clap::Parser; | ||
use uuid::Uuid; | ||
|
||
use chroma_load::rest::StopRequest; | ||
|
||
#[derive(Parser, Debug)] | ||
struct Args { | ||
#[arg(long)] | ||
host: String, | ||
#[arg(long)] | ||
uuid: String, | ||
} | ||
|
||
#[tokio::main] | ||
async fn main() { | ||
let args = Args::parse(); | ||
let client = reqwest::Client::new(); | ||
let req = StopRequest { | ||
uuid: Uuid::parse_str(&args.uuid).unwrap(), | ||
}; | ||
match client | ||
.post(format!("{}/stop", args.host)) | ||
.json(&req) | ||
.send() | ||
.await | ||
{ | ||
Ok(resp) => { | ||
if resp.status().is_success() { | ||
println!("Stopped workload on {}", args.host); | ||
} else { | ||
eprintln!( | ||
"Failed to stop workload on {}: {}", | ||
args.host, | ||
resp.status() | ||
); | ||
} | ||
} | ||
Err(e) => eprintln!("Failed to stop workload on {}: {}", args.host, e), | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
//! Uninhibit chroma-load on every host provided on the command line. | ||
#[tokio::main] | ||
async fn main() { | ||
for host in std::env::args().skip(1) { | ||
let client = reqwest::Client::new(); | ||
match client.post(format!("{}/uninhibit", host)).send().await { | ||
Ok(resp) => { | ||
if resp.status().is_success() { | ||
println!("Resumed load on {}", host); | ||
} else { | ||
eprintln!("Failed to uninhibit load on {}: {}", host, resp.status()); | ||
} | ||
} | ||
Err(e) => eprintln!("Failed to uninhibit load on {}: {}", host, e), | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters