extern crate memcache;
extern crate r2d2;
extern crate r2d2_memcache;
use r2d2_memcache::MemcacheConnectionManager;
use std::thread;
#[test]
fn get_thousand_data_parallel() {
let manager = MemcacheConnectionManager::new("memcache://localhost:11211");
let pool = r2d2::Pool::builder().max_size(15).build(manager).unwrap();
pool.get().unwrap().flush().unwrap();
let mut threads = vec![];
for i in 0..1000 {
let pool = pool.clone();
let t = thread::spawn(move || {
let mut conn = pool.get().unwrap();
let value = format! {"{}{}","bar_thousand_",i};
conn.set(&format!("{}{}", "foo_thousand_", i), value, 0)
.unwrap();
});
threads.push(t);
}
for thread in threads {
thread.join().unwrap();
}
let mut threads = vec![];
for i in 0..1000 {
let pool = pool.clone();
let t = thread::spawn(move || {
let value = format! {"{}{}","bar_thousand_",i};
let mut conn = pool.get().unwrap();
let result: String = conn
.get(&format!("{}{}", "foo_thousand_", i))
.unwrap()
.unwrap();
assert!(result == value);
});
threads.push(t);
}
for thread in threads {
thread.join().unwrap();
}
}