fn get_key_data()

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)?)
}