gwr_engine/
test_helpers.rs

1// Copyright (c) 2023 Graphcore Ltd. All rights reserved.
2
3use std::fs;
4use std::io::BufWriter;
5use std::path::Path;
6use std::rc::Rc;
7
8use gwr_track::tracker::{CapnProtoTracker, EntityManager};
9use gwr_track::{Tracker, Writer};
10
11use crate::engine::Engine;
12
13#[must_use]
14pub fn create_tracker(full_filepath: &str) -> Tracker {
15    // Place all trace files in one folder
16    const FOLDER: &str = "traces";
17
18    // Create that folder if it doesn't exist yet
19    fs::create_dir_all(FOLDER).unwrap();
20
21    let filename_only = Path::new(full_filepath)
22        .file_stem()
23        .and_then(|s| s.to_str())
24        .unwrap();
25
26    let bin_writer: Writer = Box::new(BufWriter::new(
27        fs::File::create(format!("{FOLDER}/{filename_only}.bin")).unwrap(),
28    ));
29
30    let default_log_level = log::Level::Trace;
31    let entity_manger = EntityManager::new(default_log_level);
32    let tracker: Tracker = Rc::new(CapnProtoTracker::new(entity_manger, bin_writer));
33    tracker
34}
35
36#[must_use]
37pub fn start_test(full_filepath: &str) -> Engine {
38    Engine::new(&create_tracker(full_filepath))
39}