local_bench/
local_bench.rs1use polybase_client::{Client, Query};
3use serde_json::json;
4use std::time::Instant;
5fn main() -> Result<(), Box<dyn std::error::Error>> {
6 let args: Vec<_> = std::env::args().skip(1).collect();
7 assert_eq!(
8 args.len(),
9 3,
10 "ADDRESS PREFIX COUNT on a disposable console"
11 );
12 let client = Client::new(args[0].parse()?)?;
13 let count = args[2].parse::<usize>()?;
14 assert!((1..=128).contains(&count));
15 let query = Query::all(args[1].as_bytes());
16 let session = client.subscribe(&query)?;
17 assert!(session.rows.is_empty());
18 let started = Instant::now();
19 for i in 0..count {
20 let key = format!("{}{i:04}", args[1]);
21 let read = client.read_revision(key.as_bytes())?;
22 assert!(read.value.is_none());
23 let value = json!({"client":"rust","n":i}).to_string();
24 let receipt = client.write_revision(&read.revision, Some(value.as_bytes()))?;
25 assert!(receipt.durable);
26 }
27 let write_us = started.elapsed().as_micros();
28 let started = Instant::now();
29 let page = client.page(&query, None, 128)?;
30 assert_eq!(page.rows.len(), count);
31 let page_us = started.elapsed().as_micros();
32 let started = Instant::now();
33 let delta = client.poll(&session, &session.token)?;
34 assert_eq!(delta.commits.len(), count);
35 let poll_us = started.elapsed().as_micros();
36 client.unsubscribe(&session, &delta.token)?;
37 println!(
38 "{}",
39 json!({"client":"rust","records":count,"revision_read_write_us":write_us,"page_us":page_us,"poll_us":poll_us,"correctness_verified":true})
40 );
41 Ok(())
42}