execute with local tracing environment

sadly the level passed is ignored, and it warns about an invalid filter directive
but RUST_LOG environment variables work as expected
This commit is contained in:
Christof Petig
2022-04-24 17:25:46 +02:00
parent ab985b54ab
commit 2ddd1cc0a7

View File

@ -334,17 +334,20 @@ mod tests {
use rand_chacha::ChaChaRng; use rand_chacha::ChaChaRng;
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
use std::convert::TryInto; use std::convert::TryInto;
use tracing::{info, Level}; use tracing::{info, Dispatch, Level};
use tracing_subscriber::{filter::EnvFilter, FmtSubscriber}; use tracing_subscriber::{filter::EnvFilter, FmtSubscriber};
use vek::Vec2; use vek::Vec2;
// enable info! fn execute_with_tracing(level: Level, func: fn()) {
fn init() { tracing::dispatcher::with_default(
&Dispatch::new(
FmtSubscriber::builder() FmtSubscriber::builder()
.with_max_level(Level::ERROR) .with_max_level(level)
.with_env_filter(EnvFilter::from_default_env()) .with_env_filter(EnvFilter::from_default_env())
.try_init() .finish(),
.unwrap_or_default(); ),
func,
);
} }
#[derive(Debug, Serialize, Deserialize)] #[derive(Debug, Serialize, Deserialize)]
@ -461,10 +464,13 @@ mod tests {
} }
} }
/// output the economy of the currently active world
// this expensive test is for manual inspection, not to be run automated
// recommended command: cargo test test_economy0 -- --nocapture --ignored
#[test] #[test]
#[ignore] #[ignore]
fn test_economy0() { fn test_economy0() {
init(); execute_with_tracing(Level::INFO, || {
let threadpool = rayon::ThreadPoolBuilder::new().build().unwrap(); let threadpool = rayon::ThreadPoolBuilder::new().build().unwrap();
info!("init"); info!("init");
let seed = 59686; let seed = 59686;
@ -482,12 +488,15 @@ mod tests {
info!("Civs created"); info!("Civs created");
crate::sim2::simulate(&mut index, &mut sim); crate::sim2::simulate(&mut index, &mut sim);
show_economy(&index.sites); show_economy(&index.sites);
});
} }
/// output the economy of a small set of villages, loaded from ron
// this cheaper test is for manual inspection, not to be run automated
#[test] #[test]
#[ignore] #[ignore]
fn test_economy1() { fn test_economy1() {
init(); execute_with_tracing(Level::INFO, || {
let threadpool = rayon::ThreadPoolBuilder::new().build().unwrap(); let threadpool = rayon::ThreadPoolBuilder::new().build().unwrap();
info!("init"); info!("init");
let seed = 59686; let seed = 59686;
@ -567,9 +576,13 @@ mod tests {
common::terrain::site::SitesKind::Castle => crate::site::Site::castle( common::terrain::site::SitesKind::Castle => crate::site::Site::castle(
crate::site::Castle::generate(wpos, None, &mut rng), crate::site::Castle::generate(wpos, None, &mut rng),
), ),
common::terrain::site::SitesKind::Dungeon => crate::site::Site::dungeon( common::terrain::site::SitesKind::Dungeon => {
crate::site2::Site::generate_dungeon(&crate::Land::empty(), &mut rng, wpos), crate::site::Site::dungeon(crate::site2::Site::generate_dungeon(
), &crate::Land::empty(),
&mut rng,
wpos,
))
},
// common::terrain::site::SitesKind::Settlement | // common::terrain::site::SitesKind::Settlement |
_ => crate::site::Site::settlement(crate::site::Settlement::generate( _ => crate::site::Site::settlement(crate::site::Settlement::generate(
wpos, None, &mut rng, wpos, None, &mut rng,
@ -593,7 +606,9 @@ mod tests {
let mut neighbors: Vec<crate::site::economy::NeighborInformation> = e let mut neighbors: Vec<crate::site::economy::NeighborInformation> = e
.neighbors .neighbors
.iter() .iter()
.flat_map(|(nid, dist)| index.sites.recreate_id(*nid).map(|i| (i, dist))) .flat_map(|(nid, dist)| {
index.sites.recreate_id(*nid).map(|i| (i, dist))
})
.map(|(nid, dist)| crate::site::economy::NeighborInformation { .map(|(nid, dist)| crate::site::economy::NeighborInformation {
id: nid, id: nid,
travel_distance: *dist, travel_distance: *dist,
@ -612,6 +627,7 @@ mod tests {
} }
crate::sim2::simulate(&mut index, &mut sim); crate::sim2::simulate(&mut index, &mut sim);
show_economy(&index.sites); show_economy(&index.sites);
});
} }
struct Simenv { struct Simenv {
@ -621,7 +637,7 @@ mod tests {
} }
#[test] #[test]
// test whether a site in moderate climate can survive on its own /// test whether a site in moderate climate can survive on its own
fn test_economy_moderate_standalone() { fn test_economy_moderate_standalone() {
fn add_settlement( fn add_settlement(
env: &mut Simenv, env: &mut Simenv,
@ -649,7 +665,7 @@ mod tests {
id id
} }
init(); execute_with_tracing(Level::ERROR, || {
let threadpool = rayon::ThreadPoolBuilder::new().build().unwrap(); let threadpool = rayon::ThreadPoolBuilder::new().build().unwrap();
info!("init"); info!("init");
let seed = 59686; let seed = 59686;
@ -718,5 +734,6 @@ mod tests {
for (id, site) in env.index.sites.iter() { for (id, site) in env.index.sites.iter() {
assert!(site.economy.pop >= env.targets[&id]); assert!(site.economy.pop >= env.targets[&id]);
} }
});
} }
} }