mirror of
https://github.com/darkrenaissance/darkfi.git
synced 2026-04-28 03:00:18 -04:00
add test code to run 10 clients simultaneously
This commit is contained in:
@@ -25,14 +25,15 @@ async fn start(executor: Arc<Executor<'_>>, options: ClientProgramOptions) -> Re
|
||||
client.start().await?;
|
||||
|
||||
// start subscribe to gateway publisher
|
||||
|
||||
let subscriber = GatewayClient::start_subscriber(sub_addr).await?;
|
||||
let slabstore = client.get_slabstore();
|
||||
let subscriber_task = executor.spawn(GatewayClient::subscribe(slabstore, sub_addr));
|
||||
let _ = executor.spawn(GatewayClient::subscribe(subscriber, slabstore));
|
||||
|
||||
// TEST
|
||||
let _slab = Slab::new("testcoin".to_string(), vec![0, 0, 0, 0]);
|
||||
// client.put_slab(_slab).await?;
|
||||
client.put_slab(_slab).await?;
|
||||
|
||||
subscriber_task.cancel().await;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
@@ -52,6 +53,8 @@ fn main() -> Result<()> {
|
||||
LevelFilter::Off
|
||||
};
|
||||
|
||||
|
||||
|
||||
CombinedLogger::init(vec![
|
||||
TermLogger::new(debug_level, logger_config, TerminalMode::Mixed).unwrap(),
|
||||
WriteLogger::new(
|
||||
@@ -60,7 +63,9 @@ fn main() -> Result<()> {
|
||||
std::fs::File::create(options.log_path.as_path()).unwrap(),
|
||||
),
|
||||
])
|
||||
.unwrap();
|
||||
.unwrap();
|
||||
|
||||
|
||||
|
||||
let ex2 = ex.clone();
|
||||
|
||||
@@ -78,3 +83,67 @@ fn main() -> Result<()> {
|
||||
|
||||
result
|
||||
}
|
||||
|
||||
// $ cargo test --bin darkfid
|
||||
// run 10 clients simultaneously
|
||||
#[cfg(test)]
|
||||
mod test {
|
||||
|
||||
#[test]
|
||||
fn test_darkfid_client(){
|
||||
|
||||
use std::path::Path;
|
||||
|
||||
use drk::service::GatewayClient;
|
||||
use drk::slab::Slab;
|
||||
|
||||
use rand::Rng;
|
||||
use simplelog::*;
|
||||
use log::*;
|
||||
|
||||
|
||||
let logger_config = ConfigBuilder::new().set_time_format_str("%T%.6f").build();
|
||||
|
||||
CombinedLogger::init(vec![
|
||||
TermLogger::new(LevelFilter::Debug, logger_config, TerminalMode::Mixed).unwrap(),
|
||||
WriteLogger::new(
|
||||
LevelFilter::Debug,
|
||||
Config::default(),
|
||||
std::fs::File::create(Path::new("/tmp/dar.log")).unwrap(),
|
||||
),
|
||||
])
|
||||
.unwrap();
|
||||
|
||||
let mut thread_pools: Vec<std::thread::JoinHandle<()>> = vec![];
|
||||
|
||||
|
||||
|
||||
for _ in 1..11 {
|
||||
let thread = std::thread::spawn(|| {
|
||||
smol::future::block_on(async move {
|
||||
let mut rng = rand::thread_rng();
|
||||
let rnd: u32 = rng.gen();
|
||||
|
||||
|
||||
let mut client = GatewayClient::new("127.0.0.1:3333".parse().unwrap(), Path::new(&format!("slabstore_{}.db", rnd))).unwrap();
|
||||
|
||||
client.start().await.unwrap();
|
||||
|
||||
|
||||
|
||||
let _slab = Slab::new("testcoin".to_string(), rnd.to_le_bytes().to_vec());
|
||||
client.put_slab(_slab).await.unwrap();
|
||||
|
||||
|
||||
std::thread::sleep(std::time::Duration::from_secs(3));
|
||||
let last_index = client.slabstore.get_last_index().unwrap();
|
||||
info!("last index: {}", last_index);
|
||||
})
|
||||
});
|
||||
thread_pools.push(thread);
|
||||
}
|
||||
for t in thread_pools {
|
||||
t.join().unwrap();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user