in src/reconfig.rs [646:683]
fn do_run_loop_raw_test(requests: &str, exp_responses: &[Response], exp_log: &[String])
-> Fallible<()> {
let fs: MockFS = Default::default();
let reader = io::BufReader::new(requests.as_bytes());
// Using a file is the lazy way of getting a concurrently-accessible buffer across the
// reconfiguration threads.
let mut file = tempfile::tempfile().unwrap();
let result = {
let output = file.try_clone().unwrap();
let writer = io::BufWriter::new(output);
run_loop(reader, writer, 1, &fs)
};
file.seek(io::SeekFrom::Start(0)).unwrap();
let mut output = io::BufReader::new(file);
let stream = serde_json::Deserializer::from_reader(&mut output).into_iter::<Response>();
let mut responses = HashMap::new();
for response in stream {
let response = response.unwrap();
responses.insert(response.id.clone(), response);
}
let exp_responses: HashMap<Option<String>, FuzzyResponse> =
exp_responses.iter().map(|v| (v.id.clone(), FuzzyResponse::from(v))).collect();
assert_eq!(exp_responses.len(), responses.len());
for response in responses {
assert_eq!(
exp_responses.get(&response.0).unwrap_or_else(
|| panic!("No expected response id={:?}, error={:?}", response.0, response.1)),
&response.1);
}
assert_eq!(exp_log, fs.get_log().as_slice());
result
}