in below/dump/src/test.rs [28:84]
fn test_dump_sys_content() {
let logger = get_logger();
let mut collector = Collector::new(logger.clone(), Default::default());
collector
.collect_and_update_model()
.expect("Fail to get model");
let mut opts: GeneralOpt = Default::default();
let mut fields = command::expand_fields(command::DEFAULT_SYSTEM_FIELDS, true);
for subquery_id in model::SingleCpuModelFieldId::unit_variant_iter() {
fields.push(DumpField::FieldId(model::SystemModelFieldId::Cpus(
model::VecFieldId {
idx: Some(31),
subquery_id,
},
)));
}
opts.output_format = Some(OutputFormat::Json);
let system_dumper = system::System::new(&opts, fields.clone());
// update model again to populate cpu and io data
let model = collector
.collect_and_update_model()
.expect("Fail to get model");
let mut system_content: Vec<u8> = Vec::new();
let mut round = 0;
let ctx = CommonFieldContext { timestamp: 0 };
system_dumper
.dump_model(&ctx, &model, &mut system_content, &mut round, false)
.expect("Failed to dump system model");
// verify json correctness
assert!(!system_content.is_empty());
let jval: Value =
serde_json::from_slice(&system_content).expect("Fail parse json of system dump");
for dump_field in fields.iter() {
match dump_field {
DumpField::Common(_) => continue,
DumpField::FieldId(field_id) => {
let rc = model::SystemModel::get_render_config_for_dump(&field_id);
assert_eq!(
rc.render(model.system.query(&field_id), false),
jval[rc.render_title(false)]
.as_str()
.unwrap_or_else(|| panic!(
"Key not found in Json: {}",
rc.render_title(false)
))
.to_owned(),
"Model value and json value do not match for field: {}",
field_id.to_string(),
);
}
}
}
}