in src/data/java_profile.rs [141:177]
fn prepare_data_collector(&mut self, params: &CollectorParams) -> Result<()> {
let mut jids: Vec<String> = Vec::new();
let pgrep: Vec<String> = self.launch_pgrep()?;
for pid in pgrep {
if self.process_map.contains_key(&pid) {
continue;
}
self.process_map
.insert(pid.clone(), vec![String::from("Could not resolve name!")]);
}
let jps_str = self.update_process_map()?;
let jps: Vec<&str> = jps_str.split_whitespace().collect();
let jprofile_value = params.profile.get(JAVA_PROFILE_FILE_NAME);
if let Some(value) = jprofile_value {
match value.as_str() {
"jps" => {
jids = self.process_map.clone().into_keys().collect();
debug!("Jps will be run if new JVM is started during aperf record to resolve process names.",);
}
_ => {
let args: Vec<&str> = value.split(',').collect();
for arg in args {
if !jps.contains(&arg) {
error!("No JVM with name/PID '{}'.", arg);
continue;
}
jids.append(&mut self.get_jids(arg));
}
}
}
}
jids.sort();
jids.dedup();
self.launch_asprof(jids, params)
}