use std::sync::Arc;
use mongodb::{options::ClientOptions, Client};
use leaves::segment::Config;
use leaves::{Leaf, LeafDao, SegmentIDGen};
use std::time::Instant;
#[tokio::test]
async fn test_with_mongodb() {
let start = Instant::now();
dotenv::dotenv().ok();
let url = std::env::var("MONGODB_URL").expect("MONGODB_URL");
let client_options = ClientOptions::parse(url.as_str()).await.unwrap();
let client = Client::with_options(client_options).unwrap();
let collection = client.database("test_leaves").collection("leaves");
let dao = Arc::new(leaves::dao::MongoLeafDao::new(collection));
let tag = fastrand::i32(1..1_000_000);
dao.insert(Leaf {
tag,
max_id: 0,
step: 1000,
})
.await
.unwrap();
let mut service = SegmentIDGen::new(dao.clone(), Config::new());
service.init().await.unwrap();
for _ in 0..100_0000 {
service.get(tag).await.unwrap();
}
println!("{}ms", start.elapsed().as_millis());
}