Use read_exact for all tests to ensure verity

next
Sayan Nandan 3 years ago
parent 7dc150c311
commit 11e0cf8426

@ -180,6 +180,19 @@ where
self.needs_iterator_pool,
)
}
/// Get a [`Workpool`] with the base config but with a custom loop-stage closure
pub fn with_loop_closure<Dlp>(&self, lp: Dlp) -> Workpool<Inp, UIn, Lv, Dlp, Ex>
where
Dlp: Fn(&mut Inp, UIn) + Clone + Send + Sync + 'static,
{
Workpool::new(
self.count,
self.init_pre_loop_var.clone(),
lp,
self.on_exit.clone(),
self.needs_iterator_pool,
)
}
}
impl<Inp: 'static, UIn, Lp, Lv, Ex> Clone for Workpool<Inp, UIn, Lv, Lp, Ex>

@ -45,6 +45,7 @@ const SIMPLE_QUERY_SIZE: usize = 3;
/// &<n>\n
/// (<tsymbol><size>\n<element>)*
/// ```
#[allow(dead_code)] // TODO(@ohsayan): Remove this lint
pub fn calculate_array_dataframe_size(element_count: usize, per_element_size: usize) -> usize {
let mut s = 0;
s += 1; // `&`
@ -90,6 +91,7 @@ fn test_monoelement_calculation() {
/// ```text
/// *<n>\n
/// ```
#[allow(dead_code)] // TODO(@ohsayan): Remove this lint
pub fn calculate_metaframe_size(queries: usize) -> usize {
let mut s = 0;
s += 1; // `*`
@ -98,6 +100,11 @@ pub fn calculate_metaframe_size(queries: usize) -> usize {
s
}
#[test]
fn test_simple_query_metaframe_size() {
assert_eq!(calculate_metaframe_size(1), SIMPLE_QUERY_SIZE);
}
/// Run the benchmark tool
pub fn runner(
host: String,
@ -144,10 +151,11 @@ pub fn runner(
let _ = stream.read_exact(&mut v).unwrap();
stream
},
|sock, packet: Vec<u8>| {
move |sock, packet: Vec<u8>| {
sock.write_all(&packet).unwrap();
// we don't care much about what's returned
let _ = sock.read(&mut [0; 1024]).unwrap();
// all `okay`s are returned (for both update and set)
let mut v = vec![0; response_okay_size];
let _ = sock.read_exact(&mut v).unwrap();
},
|socket| {
socket.shutdown(std::net::Shutdown::Both).unwrap();
@ -196,8 +204,16 @@ pub fn runner(
setpool.execute_and_finish_iter(set_packs);
dt.stop_timer("SET").unwrap();
// TODO: Update the getpool to use correct sizes
// bench GET
let getpool = pool_config.get_pool();
let get_response_packet_size =
calculate_monoelement_dataframe_size(per_kv_size) + SIMPLE_QUERY_SIZE;
let getpool = pool_config.with_loop_closure(move |sock: &mut TcpStream, packet: Vec<u8>| {
sock.write_all(&packet).unwrap();
// all `okay`s are returned (for both update and set)
let mut v = vec![0; get_response_packet_size];
let _ = sock.read(&mut v).unwrap();
});
dt.create_timer("GET").unwrap();
dt.start_timer("GET").unwrap();
getpool.execute_and_finish_iter(get_packs);

Loading…
Cancel
Save