use goose::prelude::*;
use std::boxed::Box;
use std::sync::Arc;
use std::time::Duration;
#[tokio::main]
async fn main() -> Result<(), GooseError> {
let mut taskset = taskset!("WebsiteUser")
.set_wait_time(Duration::from_secs(5), Duration::from_secs(15))?;
let paths = vec!["/", "/about", "/our-team"];
for request_path in paths {
let path = request_path;
let closure: GooseTaskFunction = Arc::new(move |user| {
Box::pin(async move {
let _goose = user.get(path).await?;
Ok(())
})
});
let task = GooseTask::new(closure);
let new_taskset = taskset.register_task(task);
taskset = new_taskset;
}
GooseAttack::initialize()?
.register_taskset(taskset)
.execute()
.await?
.print();
Ok(())
}