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",
|
"axum",
|
||||||
"chrono",
|
"chrono",
|
||||||
"config",
|
"config",
|
||||||
|
"once_cell",
|
||||||
"reqwest",
|
"reqwest",
|
||||||
"serde",
|
"serde",
|
||||||
"sqlx",
|
"sqlx",
|
||||||
|
|||||||
@ -27,7 +27,7 @@ sqlx = { version = "0.7", features = [
|
|||||||
"chrono",
|
"chrono",
|
||||||
"migrate",
|
"migrate",
|
||||||
] }
|
] }
|
||||||
tokio = { version = "1", features = ["full"] }
|
tokio = { version = "1.36", features = ["full"] }
|
||||||
uuid = { version = "1.8", features = ["v4", "serde"] }
|
uuid = { version = "1.8", features = ["v4", "serde"] }
|
||||||
tracing = { version = "0.1", features = ["log"] }
|
tracing = { version = "0.1", features = ["log"] }
|
||||||
tracing-subscriber = { version = "0.3", features = ["registry", "env-filter"] }
|
tracing-subscriber = { version = "0.3", features = ["registry", "env-filter"] }
|
||||||
@ -37,6 +37,7 @@ tracing-log = "0.2"
|
|||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
reqwest = "0.12"
|
reqwest = "0.12"
|
||||||
|
once_cell = "1.19"
|
||||||
|
|
||||||
[package.metadata.clippy]
|
[package.metadata.clippy]
|
||||||
warn = [
|
warn = [
|
||||||
|
|||||||
@ -10,7 +10,7 @@ use zero2prod::{
|
|||||||
|
|
||||||
#[tokio::main]
|
#[tokio::main]
|
||||||
async fn main() -> Result<(), std::io::Error> {
|
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);
|
init_subscriber(subscriber);
|
||||||
let configuation = get_configuration().expect("Failed to read configuation.");
|
let configuation = get_configuration().expect("Failed to read configuation.");
|
||||||
let pool = PgPoolOptions::new()
|
let pool = PgPoolOptions::new()
|
||||||
|
|||||||
@ -1,11 +1,18 @@
|
|||||||
use tracing::{subscriber::set_global_default, Subscriber};
|
use tracing::{subscriber::set_global_default, Subscriber};
|
||||||
use tracing_bunyan_formatter::{BunyanFormattingLayer, JsonStorageLayer};
|
use tracing_bunyan_formatter::{BunyanFormattingLayer, JsonStorageLayer};
|
||||||
use tracing_log::LogTracer;
|
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 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()
|
Registry::default()
|
||||||
.with(env_filter)
|
.with(env_filter)
|
||||||
.with(JsonStorageLayer)
|
.with(JsonStorageLayer)
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
|
use once_cell::sync::Lazy;
|
||||||
use reqwest::Client;
|
use reqwest::Client;
|
||||||
use sqlx::{postgres::PgPoolOptions, Connection, Executor, PgConnection, PgPool};
|
use sqlx::{postgres::PgPoolOptions, Connection, Executor, PgConnection, PgPool};
|
||||||
use tokio::net::TcpListener;
|
use tokio::net::TcpListener;
|
||||||
@ -5,6 +6,7 @@ use uuid::Uuid;
|
|||||||
use zero2prod::{
|
use zero2prod::{
|
||||||
configuation::{get_configuration, DatabaseSettings},
|
configuation::{get_configuration, DatabaseSettings},
|
||||||
routes::route,
|
routes::route,
|
||||||
|
telemetry::{get_subscriber, init_subscriber},
|
||||||
};
|
};
|
||||||
|
|
||||||
#[tokio::test]
|
#[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 {
|
async fn spawn_app() -> TestApp {
|
||||||
|
Lazy::force(&TRACING);
|
||||||
let listener = TcpListener::bind("127.0.0.1:0")
|
let listener = TcpListener::bind("127.0.0.1:0")
|
||||||
.await
|
.await
|
||||||
.expect("Failed to bind random port");
|
.expect("Failed to bind random port");
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user