From 3817892ff1bcb5117ff046e7c74f7d2f9bca5e62 Mon Sep 17 00:00:00 2001 From: Alwin Berger Date: Fri, 9 Feb 2024 20:01:19 +0100 Subject: [PATCH] Fix graph output formatting --- fuzzers/FRET/src/fuzzer.rs | 7 +++++-- fuzzers/FRET/src/systemstate/graph.rs | 9 +++++---- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/fuzzers/FRET/src/fuzzer.rs b/fuzzers/FRET/src/fuzzer.rs index 98352edaf7..8e660faaa5 100644 --- a/fuzzers/FRET/src/fuzzer.rs +++ b/fuzzers/FRET/src/fuzzer.rs @@ -45,6 +45,7 @@ use crate::{ use std::time::{SystemTime, UNIX_EPOCH}; use clap::{Parser, Subcommand}; use csv::Reader; +use petgraph::dot::{Dot, Config}; // Constants ================================================================================ @@ -194,8 +195,10 @@ macro_rules! do_dump_graph { let dump_path = $cli.dump_name.clone().unwrap().with_extension(if $c=="" {"graph"} else {$c}); println!("Dumping graph to {:?}", &dump_path); if let Some(md) = $state.named_metadata_map_mut().get_mut::("SysMap") { - let out = md.graph.map(|i,x| x.pretty_print(), |_,_| ()); - fs::write(dump_path,ron::to_string(&out).expect("Failed to serialize graph")).expect("Failed to write graph"); + let out = md.graph.map(|i,x| x.pretty_print(), |_,_| ""); + let outs = Dot::with_config(&out, &[Config::EdgeNoLabel]).to_string(); + let outs = outs.replace(';',"\\n"); + fs::write(dump_path,outs).expect("Failed to write graph"); } } }; diff --git a/fuzzers/FRET/src/systemstate/graph.rs b/fuzzers/FRET/src/systemstate/graph.rs index f29da3120d..de4599b826 100644 --- a/fuzzers/FRET/src/systemstate/graph.rs +++ b/fuzzers/FRET/src/systemstate/graph.rs @@ -115,14 +115,15 @@ impl SysGraphNode { pub fn pretty_print(&self) -> String { let mut ret = String::new(); ret.push_str(&format!("{}#{}",&self.base.current_task.0.task_name,&self.base.current_task.1)); - ret.push_str("\nRl:"); + ret.push_str(";Rl:"); for i in &self.base.ready_list_after { - ret.push_str(&format!("\n{}#{}",i.0.task_name,i.1)); + ret.push_str(&format!(";{}#{}",i.0.task_name,i.1)); } - ret.push_str("\nDl:"); + ret.push_str(";Dl:"); for i in &self.base.delay_list_after { - ret.push_str(&format!("\n{}#{}",i.0.task_name,i.1)); + ret.push_str(&format!(";{}#{}",i.0.task_name,i.1)); } + // println!("{}",ret); ret } }