[][src]Function caspaxos_kv::simulate

pub fn simulate<T>(
    lossiness: Option<u32>,
    n_servers: usize,
    client_factories: Vec<fn(_: Client) -> Task<T>>,
    timeout: Option<Duration>
) -> Vec<T>

Run a simulation of a cluster of clients. Returns the result of running each client for possible verification purposes.

Examples

use caspaxos_kv::{simulate, Client};
use smol::Task;
fn set_client(mut client: Client) -> Task<()> {
    Task::local(async move {
        let responses = client.ping().await;
        println!("majority pinger got {} responses", responses);

        let set = client.set(b"k1".to_vec(), b"v1".to_vec()).await;
        println!("set response: {:?}", set);
    })
}

fn main() {
    color_backtrace::install();

    let n_servers = 5;
    let n_clients = 15;

    // drop 1 in 10 messages
    let lossiness = Some(10);
    //let lossiness = None;

    let clients = vec![set_client as fn(Client) -> Task<_>; n_clients];

    simulate(lossiness, n_servers, clients);
}