in src/data/aperf_stats.rs [47:86]
fn get_key_data(values: Vec<AperfStat>, key: String, metrics: &mut DataMetrics) -> Result<String> {
let mut metric = Metric::new(key.clone());
let mut end_value = PerDataTypeStat {
name: key.clone(),
collect: Vec::new(),
print: Vec::new(),
metadata: GraphMetadata::new(),
};
let time_zero = &values[0].time;
for value in &values {
let time_now = value.time - *time_zero;
for (k, v) in &value.data {
if !k.contains(&key) {
continue;
}
let datapoint = DataPoint {
time: time_now,
time_taken: *v,
};
metric.insert_value(*v as f64);
end_value.metadata.update_limits(GraphLimitType::UInt64(*v));
if k.contains(&key) {
if k.contains("print") {
end_value.print.push(datapoint);
} else {
end_value.collect.push(datapoint);
}
}
}
}
add_metrics(
key,
&mut metric,
metrics,
APERF_RUN_STATS_FILE_NAME.to_string(),
)?;
Ok(serde_json::to_string(&end_value)?)
}