test(tvix/nar-bridge): start testing handlers

We currently only had some integration tests (as part of tvix-boot)
testing nar-bridge functionality as a smoketest, but with axum-test we
can test individual handlers and peek at the store afterwards, which is
much more granular.

This adds tests for the nar-specific request handlers.

Change-Id: I7f2345df89ac43b9b372ecc66f696e95e2fcad18
Reviewed-on: https://cl.tvl.fyi/c/depot/+/12916
Tested-by: BuildkiteCI
Reviewed-by: raitobezarius <tvl@lahfa.xyz>
Autosubmit: flokli <flokli@flokli.de>
This commit is contained in:
Florian Klink 2024-11-24 18:37:03 +02:00 committed by clbot
parent 4f9112f1cd
commit 30b631ea72
5 changed files with 870 additions and 49 deletions

177
tvix/Cargo.lock generated
View file

@ -126,6 +126,16 @@ version = "0.7.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50"
[[package]]
name = "assert-json-diff"
version = "2.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "47e4f2b81832e72834d7518d8487a0396a28cc408186a2e8854c0f98011faf12"
dependencies = [
"serde",
"serde_json",
]
[[package]]
name = "async-channel"
version = "2.3.1"
@ -277,6 +287,12 @@ version = "1.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0"
[[package]]
name = "auto-future"
version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3c1e7e457ea78e524f48639f551fd79703ac3f2237f5ecccdf4708f8a75ad373"
[[package]]
name = "auto_impl"
version = "1.2.0"
@ -305,7 +321,7 @@ dependencies = [
"axum-macros",
"bytes",
"futures-util",
"http",
"http 1.1.0",
"http-body",
"http-body-util",
"hyper",
@ -338,7 +354,7 @@ dependencies = [
"async-trait",
"bytes",
"futures-util",
"http",
"http 1.1.0",
"http-body",
"http-body-util",
"mime",
@ -361,7 +377,7 @@ dependencies = [
"bytes",
"futures-util",
"headers",
"http",
"http 1.1.0",
"http-body",
"http-body-util",
"mime",
@ -399,6 +415,36 @@ dependencies = [
"tokio",
]
[[package]]
name = "axum-test"
version = "16.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "017cbca2776229a7100ebee44e065fcf5baccea6fc4cb9e5bea8328d83863a03"
dependencies = [
"anyhow",
"assert-json-diff",
"auto-future",
"axum",
"bytes",
"bytesize",
"cookie",
"http 1.1.0",
"http-body-util",
"hyper",
"hyper-util",
"mime",
"pretty_assertions",
"reserve-port",
"rust-multipart-rfc7578_2",
"serde",
"serde_json",
"serde_urlencoded",
"smallvec",
"tokio",
"tower 0.5.1",
"url",
]
[[package]]
name = "backtrace"
version = "0.3.74"
@ -438,7 +484,7 @@ version = "0.2.10"
source = "git+https://github.com/liufuyang/bigtable_rs?rev=1818355a5373a5bc2c84287e3a4e3807154ac8ef#1818355a5373a5bc2c84287e3a4e3807154ac8ef"
dependencies = [
"gcp_auth",
"http",
"http 1.1.0",
"hyper-util",
"log",
"prost",
@ -533,6 +579,12 @@ version = "1.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9ac0150caa2ae65ca5bd83f25c7de183dea78d4d366469f148435e2acfbad0da"
[[package]]
name = "bytesize"
version = "1.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a3e368af43e418a04d52505cf3dbc23dda4e3407ae2fa99fd0e4f308ce546acc"
[[package]]
name = "bzip2"
version = "0.4.4"
@ -736,6 +788,16 @@ version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6"
[[package]]
name = "cookie"
version = "0.18.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4ddef33a339a91ea89fb53151bd0a4689cfce27055c291dfa69945475d22c747"
dependencies = [
"time",
"version_check",
]
[[package]]
name = "core-foundation"
version = "0.9.4"
@ -1413,7 +1475,7 @@ dependencies = [
"bytes",
"chrono",
"home",
"http",
"http 1.1.0",
"http-body-util",
"hyper",
"hyper-rustls",
@ -1515,7 +1577,7 @@ dependencies = [
"fnv",
"futures-core",
"futures-sink",
"http",
"http 1.1.0",
"indexmap 2.6.0",
"slab",
"tokio",
@ -1565,7 +1627,7 @@ dependencies = [
"base64 0.21.7",
"bytes",
"headers-core",
"http",
"http 1.1.0",
"httpdate",
"mime",
"sha1",
@ -1577,7 +1639,7 @@ version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "54b4a22553d4242c49fddb9ba998a99962b5cc6f22cb5a3482bec22522403ce4"
dependencies = [
"http",
"http 1.1.0",
]
[[package]]
@ -1625,6 +1687,17 @@ dependencies = [
"windows-sys 0.52.0",
]
[[package]]
name = "http"
version = "0.2.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1"
dependencies = [
"bytes",
"fnv",
"itoa",
]
[[package]]
name = "http"
version = "1.1.0"
@ -1643,7 +1716,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184"
dependencies = [
"bytes",
"http",
"http 1.1.0",
]
[[package]]
@ -1654,7 +1727,7 @@ checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f"
dependencies = [
"bytes",
"futures-util",
"http",
"http 1.1.0",
"http-body",
"pin-project-lite",
]
@ -1687,7 +1760,7 @@ dependencies = [
"futures-channel",
"futures-util",
"h2",
"http",
"http 1.1.0",
"http-body",
"httparse",
"httpdate",
@ -1705,7 +1778,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "08afdbb5c31130e3034af566421053ab03787c640246a446327f550d11bcb333"
dependencies = [
"futures-util",
"http",
"http 1.1.0",
"hyper",
"hyper-util",
"rustls",
@ -1738,7 +1811,7 @@ dependencies = [
"bytes",
"futures-channel",
"futures-util",
"http",
"http 1.1.0",
"http-body",
"hyper",
"pin-project-lite",
@ -2159,6 +2232,16 @@ version = "0.3.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a"
[[package]]
name = "mime_guess"
version = "2.0.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e"
dependencies = [
"mime",
"unicase",
]
[[package]]
name = "minimal-lexical"
version = "0.2.1"
@ -2237,6 +2320,7 @@ dependencies = [
"axum",
"axum-extra",
"axum-range",
"axum-test",
"bytes",
"clap",
"data-encoding",
@ -2252,6 +2336,7 @@ dependencies = [
"prost-build",
"rstest",
"serde",
"sha2",
"thiserror",
"tokio",
"tokio-listener",
@ -2263,6 +2348,7 @@ dependencies = [
"tower-otel-http-metrics",
"tracing",
"tracing-subscriber",
"tracing-test",
"tvix-castore",
"tvix-store",
"tvix-tracing",
@ -2591,7 +2677,7 @@ checksum = "10a8a7f5f6ba7c1b286c2fbca0454eaba116f63bbe69ed250b642d36fbb04d80"
dependencies = [
"async-trait",
"bytes",
"http",
"http 1.1.0",
"opentelemetry",
]
@ -2603,7 +2689,7 @@ checksum = "91cf61a1868dacc576bf2b2a1c3e9ab150af7272909e80085c3173384fe11f76"
dependencies = [
"async-trait",
"futures-core",
"http",
"http 1.1.0",
"opentelemetry",
"opentelemetry-proto",
"opentelemetry_sdk",
@ -3303,7 +3389,7 @@ dependencies = [
"futures-core",
"futures-util",
"h2",
"http",
"http 1.1.0",
"http-body",
"http-body-util",
"hyper",
@ -3344,7 +3430,7 @@ source = "git+https://github.com/TrueLayer/reqwest-middleware?rev=8a494c165734e2
dependencies = [
"anyhow",
"async-trait",
"http",
"http 1.1.0",
"reqwest",
"serde",
"thiserror",
@ -3359,7 +3445,7 @@ dependencies = [
"anyhow",
"async-trait",
"getrandom",
"http",
"http 1.1.0",
"matchit 0.8.4",
"opentelemetry",
"reqwest",
@ -3368,6 +3454,16 @@ dependencies = [
"tracing-opentelemetry",
]
[[package]]
name = "reserve-port"
version = "2.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9838134a2bfaa8e1f40738fcc972ac799de6e0e06b5157acb95fc2b05a0ea283"
dependencies = [
"lazy_static",
"thiserror",
]
[[package]]
name = "ring"
version = "0.17.8"
@ -3445,6 +3541,22 @@ dependencies = [
"syn 2.0.79",
]
[[package]]
name = "rust-multipart-rfc7578_2"
version = "0.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "03b748410c0afdef2ebbe3685a6a862e2ee937127cdaae623336a459451c8d57"
dependencies = [
"bytes",
"futures-core",
"futures-util",
"http 0.2.12",
"mime",
"mime_guess",
"rand",
"thiserror",
]
[[package]]
name = "rustc-demangle"
version = "0.1.24"
@ -4334,7 +4446,7 @@ dependencies = [
"base64 0.22.1",
"bytes",
"h2",
"http",
"http 1.1.0",
"http-body",
"http-body-util",
"hyper",
@ -4441,7 +4553,7 @@ dependencies = [
"bitflags 2.6.0",
"bytes",
"futures-core",
"http",
"http 1.1.0",
"http-body",
"http-body-util",
"pin-project-lite",
@ -4466,7 +4578,7 @@ checksum = "ed0ba983713ec0f5d512dc28091fa3c1cb8fa5487de32a1b0bc0cb4159f9f89f"
dependencies = [
"axum",
"futures-util",
"http",
"http 1.1.0",
"opentelemetry",
"pin-project-lite",
"tower 0.5.1",
@ -4582,6 +4694,27 @@ dependencies = [
"tracing-log",
]
[[package]]
name = "tracing-test"
version = "0.2.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "557b891436fe0d5e0e363427fc7f217abf9ccd510d5136549847bdcbcd011d68"
dependencies = [
"tracing-core",
"tracing-subscriber",
"tracing-test-macro",
]
[[package]]
name = "tracing-test-macro"
version = "0.2.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "04659ddb06c87d233c566112c1c9c5b9e98256d9af50ec3bc9c8327f873a7568"
dependencies = [
"quote",
"syn 2.0.79",
]
[[package]]
name = "tracing-tracy"
version = "0.11.3"
@ -4924,7 +5057,7 @@ name = "tvix-tracing"
version = "0.1.0"
dependencies = [
"axum",
"http",
"http 1.1.0",
"indicatif",
"opentelemetry",
"opentelemetry-http",