diff --git a/juno_samples/rodinia/bfs/benches/bfs_bench.rs b/juno_samples/rodinia/bfs/benches/bfs_bench.rs index dbe6db381cde8420d137f1070280e29bff43f2af..9c09c180a82cf402ae75b1f6d001b1065e7efd5c 100644 --- a/juno_samples/rodinia/bfs/benches/bfs_bench.rs +++ b/juno_samples/rodinia/bfs/benches/bfs_bench.rs @@ -14,7 +14,7 @@ fn bfs_bench(c: &mut Criterion) { let mut r = runner!(bfs); let input = "data/graph4096.txt"; - let (nodes, source, edges) = parse_graph(input.into()); + let (nodes, source, edges) = parse_graph(input.into()).unwrap(); let n = nodes.len() as u64; let m = edges.len() as u64; let nodes = HerculesImmBox::from(&nodes as &[Node]); @@ -26,7 +26,7 @@ fn bfs_bench(c: &mut Criterion) { }); let input = "data/graph65536.txt"; - let (nodes, source, edges) = parse_graph(input.into()); + let (nodes, source, edges) = parse_graph(input.into()).unwrap(); let n = nodes.len() as u64; let m = edges.len() as u64; let nodes = HerculesImmBox::from(&nodes as &[Node]); @@ -38,7 +38,7 @@ fn bfs_bench(c: &mut Criterion) { }); let input = "/scratch/aaronjc4/rodinia_3.1/data/bfs/graph64M.txt"; - let (nodes, source, edges) = parse_graph(input.into()); + let (nodes, source, edges) = parse_graph(input.into()).expect("PANIC: Couldn't read input file for 64M benchmark. Currently, this benchmark uses a hard-coded path, so it can only be run on the lab machines."); let n = nodes.len() as u64; let m = edges.len() as u64; let nodes = HerculesImmBox::from(&nodes as &[Node]); diff --git a/juno_samples/rodinia/bfs/src/graph_parser.rs b/juno_samples/rodinia/bfs/src/graph_parser.rs index fecd2a3ed86c23aa64511febb5fd7a5ece8fe0f7..f761d8ea47f428a0965cbf08c27f17270a5fa0d1 100644 --- a/juno_samples/rodinia/bfs/src/graph_parser.rs +++ b/juno_samples/rodinia/bfs/src/graph_parser.rs @@ -11,16 +11,18 @@ pub struct Node { pub num_edges: u32, } -pub fn parse_graph(file: String) -> (Vec<Node>, u32, Vec<u32>) { - let mut file = File::open(file).expect("Error opening input file"); +pub fn parse_graph(file: String) -> Result<(Vec<Node>, u32, Vec<u32>), String> { + let mut file = File::open(file).map_err(|err| format!("Error opening input file: {}", err))?; let mut contents = String::new(); file.read_to_string(&mut contents) - .expect("Error reading input file"); + .map_err(|err| format!("Error reading input file: {}", err))?; let mut parser = nom::combinator::all_consuming(graph_parser); - let (_, result) = parser.parse(&contents).expect("Parser error"); + let (_, result) = parser + .parse(&contents) + .map_err(|err| format!("Parsing error: {}", err))?; - result + Ok(result) } fn graph_parser<'a>(text: &'a str) -> nom::IResult<&'a str, (Vec<Node>, u32, Vec<u32>)> { diff --git a/juno_samples/rodinia/bfs/src/lib.rs b/juno_samples/rodinia/bfs/src/lib.rs index f64035409552c5b223b54bc0be8e8bf512698d30..e48dfe2235014c3bdb26337d2bfdd9d9e104c8a4 100644 --- a/juno_samples/rodinia/bfs/src/lib.rs +++ b/juno_samples/rodinia/bfs/src/lib.rs @@ -36,7 +36,7 @@ fn run_bfs(nodes: &[Node], source: u32, edges: &[u32]) -> Vec<i32> { pub fn bfs_harness(args: BFSInputs) { let BFSInputs { input } = args; - let (nodes, source, edges) = parse_graph(input); + let (nodes, source, edges) = parse_graph(input).unwrap(); let costs_juno = run_bfs(&nodes, source, &edges); let costs_ref = rust_bfs::bfs(&nodes, source, &edges);