mirror of
https://github.com/kristoferssolo/zero2prod.git
synced 2025-10-21 20:10:40 +00:00
test(logs): add tests
This commit is contained in:
parent
db3cd40171
commit
28db61dc51
1
Cargo.lock
generated
1
Cargo.lock
generated
@ -2865,6 +2865,7 @@ dependencies = [
|
||||
"axum",
|
||||
"chrono",
|
||||
"config",
|
||||
"once_cell",
|
||||
"reqwest",
|
||||
"serde",
|
||||
"sqlx",
|
||||
|
||||
@ -27,7 +27,7 @@ sqlx = { version = "0.7", features = [
|
||||
"chrono",
|
||||
"migrate",
|
||||
] }
|
||||
tokio = { version = "1", features = ["full"] }
|
||||
tokio = { version = "1.36", features = ["full"] }
|
||||
uuid = { version = "1.8", features = ["v4", "serde"] }
|
||||
tracing = { version = "0.1", features = ["log"] }
|
||||
tracing-subscriber = { version = "0.3", features = ["registry", "env-filter"] }
|
||||
@ -37,6 +37,7 @@ tracing-log = "0.2"
|
||||
|
||||
[dev-dependencies]
|
||||
reqwest = "0.12"
|
||||
once_cell = "1.19"
|
||||
|
||||
[package.metadata.clippy]
|
||||
warn = [
|
||||
|
||||
@ -10,7 +10,7 @@ use zero2prod::{
|
||||
|
||||
#[tokio::main]
|
||||
async fn main() -> Result<(), std::io::Error> {
|
||||
let subscriber = get_subscriber("zero2prod", "info");
|
||||
let subscriber = get_subscriber("zero2prod", "info", std::io::stdout);
|
||||
init_subscriber(subscriber);
|
||||
let configuation = get_configuration().expect("Failed to read configuation.");
|
||||
let pool = PgPoolOptions::new()
|
||||
|
||||
@ -1,11 +1,18 @@
|
||||
use tracing::{subscriber::set_global_default, Subscriber};
|
||||
use tracing_bunyan_formatter::{BunyanFormattingLayer, JsonStorageLayer};
|
||||
use tracing_log::LogTracer;
|
||||
use tracing_subscriber::{layer::SubscriberExt, EnvFilter, Registry};
|
||||
use tracing_subscriber::{fmt::MakeWriter, layer::SubscriberExt, EnvFilter, Registry};
|
||||
|
||||
pub fn get_subscriber(name: &str, env_filter: &str) -> impl Subscriber + Sync + Send {
|
||||
pub fn get_subscriber<Sink>(
|
||||
name: &str,
|
||||
env_filter: &str,
|
||||
sink: Sink,
|
||||
) -> impl Subscriber + Sync + Send
|
||||
where
|
||||
Sink: for<'a> MakeWriter<'a> + Send + Sync + 'static,
|
||||
{
|
||||
let env_filter = EnvFilter::try_from_default_env().unwrap_or_else(|_| env_filter.into());
|
||||
let formatting_layer = BunyanFormattingLayer::new(name.into(), std::io::stdout);
|
||||
let formatting_layer = BunyanFormattingLayer::new(name.into(), sink);
|
||||
Registry::default()
|
||||
.with(env_filter)
|
||||
.with(JsonStorageLayer)
|
||||
|
||||
@ -1,3 +1,4 @@
|
||||
use once_cell::sync::Lazy;
|
||||
use reqwest::Client;
|
||||
use sqlx::{postgres::PgPoolOptions, Connection, Executor, PgConnection, PgPool};
|
||||
use tokio::net::TcpListener;
|
||||
@ -5,6 +6,7 @@ use uuid::Uuid;
|
||||
use zero2prod::{
|
||||
configuation::{get_configuration, DatabaseSettings},
|
||||
routes::route,
|
||||
telemetry::{get_subscriber, init_subscriber},
|
||||
};
|
||||
|
||||
#[tokio::test]
|
||||
@ -85,7 +87,20 @@ async fn subscribe_returns_400_when_data_is_missing() {
|
||||
}
|
||||
}
|
||||
|
||||
static TRACING: Lazy<()> = Lazy::new(|| {
|
||||
let default_filter_level = "info";
|
||||
let subscriber_name = "test";
|
||||
if std::env::var("TEST_LOG").is_ok() {
|
||||
let subscriber = get_subscriber(subscriber_name, default_filter_level, std::io::stdout);
|
||||
init_subscriber(subscriber);
|
||||
} else {
|
||||
let subscriber = get_subscriber(default_filter_level, subscriber_name, std::io::sink);
|
||||
init_subscriber(subscriber);
|
||||
}
|
||||
});
|
||||
|
||||
async fn spawn_app() -> TestApp {
|
||||
Lazy::force(&TRACING);
|
||||
let listener = TcpListener::bind("127.0.0.1:0")
|
||||
.await
|
||||
.expect("Failed to bind random port");
|
||||
|
||||
Loading…
Reference in New Issue
Block a user