From fa2fdfd60142abebf6f8968ca46ed5276c230758 Mon Sep 17 00:00:00 2001 From: Hendrik Eeckhaut Date: Wed, 4 Jun 2025 08:49:33 +0200 Subject: [PATCH] feat: add logging to server fixture (#903) --- Cargo.lock | 59 ++++++++++++++++-------- crates/examples/attestation/README.md | 2 +- crates/examples/interactive/README.md | 2 +- crates/server-fixture/server/Cargo.toml | 3 ++ crates/server-fixture/server/README.md | 8 ++++ crates/server-fixture/server/src/lib.rs | 12 +++++ crates/server-fixture/server/src/main.rs | 3 ++ 7 files changed, 67 insertions(+), 22 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8b58dd867..5dddcd8f3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4668,7 +4668,7 @@ dependencies = [ [[package]] name = "notary-client" -version = "0.1.0-alpha.11" +version = "0.1.0-alpha.12-pre" dependencies = [ "derive_builder 0.12.0", "futures 0.3.31", @@ -4686,14 +4686,14 @@ dependencies = [ [[package]] name = "notary-common" -version = "0.1.0-alpha.11" +version = "0.1.0-alpha.12-pre" dependencies = [ "serde", ] [[package]] name = "notary-server" -version = "0.1.0-alpha.11" +version = "0.1.0-alpha.12-pre" dependencies = [ "async-tungstenite 0.28.2", "axum 0.8.4", @@ -4736,7 +4736,7 @@ dependencies = [ "tokio", "tokio-rustls", "tokio-util", - "tower-http", + "tower-http 0.5.2", "tower-service", "tower-util", "tracing", @@ -7201,7 +7201,7 @@ dependencies = [ [[package]] name = "tlsn-cipher" -version = "0.1.0-alpha.11" +version = "0.1.0-alpha.12-pre" dependencies = [ "aes 0.8.4", "async-trait", @@ -7220,7 +7220,7 @@ dependencies = [ [[package]] name = "tlsn-common" -version = "0.1.0-alpha.11" +version = "0.1.0-alpha.12-pre" dependencies = [ "async-trait", "derive_builder 0.12.0", @@ -7251,7 +7251,7 @@ dependencies = [ [[package]] name = "tlsn-core" -version = "0.1.0-alpha.11" +version = "0.1.0-alpha.12-pre" dependencies = [ "alloy-primitives", "alloy-signer", @@ -7289,7 +7289,7 @@ version = "0.0.0" [[package]] name = "tlsn-deap" -version = "0.1.0-alpha.11" +version = "0.1.0-alpha.12-pre" dependencies = [ "async-trait", "futures 0.3.31", @@ -7343,7 +7343,7 @@ dependencies = [ [[package]] name = "tlsn-formats" -version = "0.1.0-alpha.11" +version = "0.1.0-alpha.12-pre" dependencies = [ "bytes", "rstest", @@ -7355,7 +7355,7 @@ dependencies = [ [[package]] name = "tlsn-hmac-sha256" -version = "0.1.0-alpha.11" +version = "0.1.0-alpha.12-pre" dependencies = [ "criterion", "hex", @@ -7376,7 +7376,7 @@ dependencies = [ [[package]] name = "tlsn-key-exchange" -version = "0.1.0-alpha.11" +version = "0.1.0-alpha.12-pre" dependencies = [ "async-trait", "derive_builder 0.12.0", @@ -7402,7 +7402,7 @@ dependencies = [ [[package]] name = "tlsn-mpc-tls" -version = "0.1.0-alpha.11" +version = "0.1.0-alpha.12-pre" dependencies = [ "aes 0.8.4", "aes-gcm", @@ -7452,7 +7452,7 @@ dependencies = [ [[package]] name = "tlsn-prover" -version = "0.1.0-alpha.11" +version = "0.1.0-alpha.12-pre" dependencies = [ "derive_builder 0.12.0", "futures 0.3.31", @@ -7499,7 +7499,10 @@ dependencies = [ "tokio", "tokio-util", "tower 0.5.2", + "tower-http 0.6.5", "tower-service", + "tracing", + "tracing-subscriber", ] [[package]] @@ -7508,7 +7511,7 @@ version = "0.0.0" [[package]] name = "tlsn-tls-backend" -version = "0.1.0-alpha.11" +version = "0.1.0-alpha.12-pre" dependencies = [ "async-trait", "futures 0.3.31", @@ -7518,7 +7521,7 @@ dependencies = [ [[package]] name = "tlsn-tls-client" -version = "0.1.0-alpha.11" +version = "0.1.0-alpha.12-pre" dependencies = [ "aes-gcm", "async-trait", @@ -7545,7 +7548,7 @@ dependencies = [ [[package]] name = "tlsn-tls-client-async" -version = "0.1.0-alpha.11" +version = "0.1.0-alpha.12-pre" dependencies = [ "bytes", "futures 0.3.31", @@ -7563,7 +7566,7 @@ dependencies = [ [[package]] name = "tlsn-tls-core" -version = "0.1.0-alpha.11" +version = "0.1.0-alpha.12-pre" dependencies = [ "futures 0.3.31", "hmac", @@ -7586,7 +7589,7 @@ source = "git+https://github.com/tlsnotary/tlsn-utils?rev=6168663#6168663495281f [[package]] name = "tlsn-verifier" -version = "0.1.0-alpha.11" +version = "0.1.0-alpha.12-pre" dependencies = [ "derive_builder 0.12.0", "futures 0.3.31", @@ -7616,7 +7619,7 @@ dependencies = [ [[package]] name = "tlsn-wasm" -version = "0.1.0-alpha.11" +version = "0.1.0-alpha.12-pre" dependencies = [ "bincode", "console_error_panic_hook", @@ -7669,7 +7672,7 @@ dependencies = [ "tokio", "tokio-util", "tower 0.4.13", - "tower-http", + "tower-http 0.5.2", "tracing", "tracing-subscriber", "websocket-relay", @@ -7867,6 +7870,22 @@ dependencies = [ "tracing", ] +[[package]] +name = "tower-http" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5cc2d9e086a412a451384326f521c8123a99a466b329941a9403696bff9b0da2" +dependencies = [ + "bitflags 2.9.1", + "bytes", + "http 1.3.1", + "http-body 1.0.1", + "pin-project-lite", + "tower-layer", + "tower-service", + "tracing", +] + [[package]] name = "tower-layer" version = "0.3.3" diff --git a/crates/examples/attestation/README.md b/crates/examples/attestation/README.md index 2cd38f90e..03a117382 100644 --- a/crates/examples/attestation/README.md +++ b/crates/examples/attestation/README.md @@ -13,7 +13,7 @@ Before starting the notarization, set up the local test server and local notary. 1. Run the test server: ```shell - PORT=4000 cargo run --bin tlsn-server-fixture + RUST_LOG=info PORT=4000 cargo run --bin tlsn-server-fixture ``` 2. Run the notary server: ```shell diff --git a/crates/examples/interactive/README.md b/crates/examples/interactive/README.md index e2a99c444..3d7e7ee06 100644 --- a/crates/examples/interactive/README.md +++ b/crates/examples/interactive/README.md @@ -4,7 +4,7 @@ This example demonstrates how to use TLSNotary in a simple interactive session b This example fetches data from a local test server. To start this server, run: ```shell -PORT=4000 cargo run --bin tlsn-server-fixture +RUST_LOG=info PORT=4000 cargo run --bin tlsn-server-fixture ``` Next, run the interactive example with: ```shell diff --git a/crates/server-fixture/server/Cargo.toml b/crates/server-fixture/server/Cargo.toml index c4736fe40..0cc4a0b37 100644 --- a/crates/server-fixture/server/Cargo.toml +++ b/crates/server-fixture/server/Cargo.toml @@ -19,6 +19,9 @@ tokio-util = { workspace = true, features = ["compat", "io"] } tower-service = { version = "0.3" } serde_json = { workspace = true } tlsn-server-fixture-certs = { workspace = true } +tracing.workspace = true +tracing-subscriber.workspace = true +tower-http = { version = "0.6.5", features = ["trace"] } [[bin]] name = "tlsn-server-fixture" diff --git a/crates/server-fixture/server/README.md b/crates/server-fixture/server/README.md index 1d950ffbe..ae978533b 100644 --- a/crates/server-fixture/server/README.md +++ b/crates/server-fixture/server/README.md @@ -16,6 +16,14 @@ Set the enviroment variable `PORT` to configured the port the server runs on. PORT=3001 cargo run --release ``` +## Logging + +Enable server logs by setting the log level: + +```bash +RUST_LOG=info cargo run --release +``` + ## Testing You can test the server works using curl: diff --git a/crates/server-fixture/server/src/lib.rs b/crates/server-fixture/server/src/lib.rs index 8c4a63b3a..3e42917e2 100644 --- a/crates/server-fixture/server/src/lib.rs +++ b/crates/server-fixture/server/src/lib.rs @@ -9,6 +9,8 @@ use axum::{ routing::get, Json, Router, }; +use tower_http::trace::TraceLayer; + use futures::{channel::oneshot, AsyncRead, AsyncWrite}; use futures_rustls::{ pki_types::{CertificateDer, PrivateKeyDer}, @@ -30,6 +32,7 @@ use axum::extract::FromRequest; use hyper::header; use tlsn_server_fixture_certs::*; +use tracing::info; pub const DEFAULT_FIXTURE_PORT: u16 = 3000; @@ -44,6 +47,7 @@ fn app(state: AppState) -> Router { .route("/formats/json", get(json)) .route("/formats/html", get(html)) .route("/protected", get(protected_route)) + .layer(TraceLayer::new_for_http()) .with_state(Arc::new(Mutex::new(state))) } @@ -89,6 +93,8 @@ async fn bytes( State(state): State>>, Query(params): Query>, ) -> Result { + info!("Handling /bytes with params: {:?}", params); + let size = params .get("size") .and_then(|size| size.parse::().ok()) @@ -113,6 +119,8 @@ async fn json( State(state): State>>, Query(params): Query>, ) -> Result, StatusCode> { + info!("Handling /json with params: {:?}", params); + let size = params .get("size") .and_then(|size| size.parse::().ok()) @@ -134,6 +142,8 @@ async fn html( State(state): State>>, Query(params): Query>, ) -> Html<&'static str> { + info!("Handling /html with params: {:?}", params); + if params.contains_key("shutdown") { _ = state.lock().unwrap().shutdown.take().unwrap().send(()); } @@ -173,6 +183,8 @@ where } async fn protected_route(_: AuthenticatedUser) -> Result, StatusCode> { + info!("Handling /protected"); + get_json_value(include_str!("data/protected_data.json")) } diff --git a/crates/server-fixture/server/src/main.rs b/crates/server-fixture/server/src/main.rs index 4e6a3b50a..c2e18bdc8 100644 --- a/crates/server-fixture/server/src/main.rs +++ b/crates/server-fixture/server/src/main.rs @@ -3,12 +3,15 @@ use std::{env, io}; use tlsn_server_fixture::{bind, DEFAULT_FIXTURE_PORT}; use tokio::net::TcpListener; use tokio_util::compat::TokioAsyncWriteCompatExt; +use tracing::info; #[tokio::main] async fn main() -> io::Result<()> { + tracing_subscriber::fmt::init(); let port = env::var("PORT").unwrap_or_else(|_| DEFAULT_FIXTURE_PORT.to_string()); let listener = TcpListener::bind(&format!("0.0.0.0:{port}")).await?; + info!("Starting server fixture on port {port}"); loop { let (socket, _) = listener.accept().await?; tokio::spawn(bind(socket.compat_write()));