#![deny(
warnings,
missing_docs,
trivial_casts,
trivial_numeric_casts,
unused_extern_crates,
unused_import_braces,
unused_results
)]
use simplelog::{ConfigBuilder, LevelFilter, SimpleLogger};
use std::sync::Once;
pub mod average;
pub mod config;
pub mod fmt;
pub mod platform;
pub mod server;
pub mod signals;
pub const APOLLO_VERSION: &str = "1.0.3";
pub const APOLLO_REVISION: &str = "2254d3eb4cf2a97287c07b0655ad504a58e20fbc";
pub fn init_logging() {
static INIT_LOGGING: Once = Once::new();
static DATE_FORMAT: &str = "[%Y-%m-%dT%H:%M:%S%.3f]";
INIT_LOGGING.call_once(|| {
if let Err(error) = SimpleLogger::init(
LevelFilter::Debug,
ConfigBuilder::new()
.set_time_format_str(DATE_FORMAT)
.set_thread_level(LevelFilter::Trace)
.set_target_level(LevelFilter::Error)
.set_location_level(LevelFilter::Trace)
.build(),
) {
panic!("Failed to initialize logging system: {}", error);
}
});
}
#[cfg(test)]
mod testing {
use std::sync::Mutex;
lazy_static::lazy_static! {
pub static ref SHARED_TEST_RESOURCES: Mutex<()> = Mutex::new(());
}
pub fn test_async<F: std::future::Future>(future: F) {
use tokio::runtime;
let rt = runtime::Builder::new_current_thread()
.enable_all()
.build()
.unwrap();
let _ = rt.block_on(future);
}
}