summaryrefslogtreecommitdiff
path: root/tester/src/genreqs.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tester/src/genreqs.rs')
-rw-r--r--tester/src/genreqs.rs52
1 files changed, 52 insertions, 0 deletions
diff --git a/tester/src/genreqs.rs b/tester/src/genreqs.rs
new file mode 100644
index 0000000..fd3d588
--- /dev/null
+++ b/tester/src/genreqs.rs
@@ -0,0 +1,52 @@
+use std::io::Write;
+use std::{fs::File, io, io::BufRead, path::Path};
+
+use anyhow::Result;
+use rand::seq::SliceRandom;
+use rand::{thread_rng, Rng};
+
+use crate::util;
+
+pub fn do_genreqs(host: &str, fprs_path: &Path) -> Result<()> {
+ let file = File::open(fprs_path)?;
+ let fingerprints: Vec<String> = io::BufReader::new(file).lines().flatten().collect();
+
+ /* possible requests:
+ * /vks/v1/by-fingerprint/
+ * /vks/v1/by-keyid/
+ * /vks/v1/by-email/
+ */
+
+ let mut rng = thread_rng();
+ let mut stdout = io::LineWriter::new(io::stdout());
+ loop {
+ let result = match rng.gen_range(0, 3) {
+ 0 => {
+ let email = util::gen_email(rng.gen_range(0, fingerprints.len() as u64));
+ stdout.write_fmt(format_args!(
+ "GET {}/vks/v1/by-email/{}\n",
+ host, email
+ ))
+ }
+ 1 => {
+ let random_fpr = fingerprints.choose(&mut rng).unwrap();
+ stdout.write_fmt(format_args!(
+ "GET {}/vks/v1/by-keyid/{}\n",
+ host,
+ &random_fpr[24..40]
+ ))
+ }
+ _ => {
+ let random_fpr = fingerprints.choose(&mut rng).unwrap();
+ stdout.write_fmt(format_args!(
+ "GET {}/vks/v1/by-fingerprint/{}\n",
+ host, random_fpr
+ ))
+ }
+ };
+
+ if result.is_err() {
+ return Ok(());
+ }
+ }
+}