diff options
| author | Sebastian Holmin <sebastian.holmin@mullvad.net> | 2024-09-24 15:48:27 +0200 |
|---|---|---|
| committer | Sebastian Holmin <sebastian.holmin@mullvad.net> | 2024-09-26 08:59:09 +0200 |
| commit | 76e8342a64006bc6a004c0511c3aefcae89b11cc (patch) | |
| tree | ddad81f49d478dca3ce7d7c2247119cf76632eef /test | |
| parent | d75f793ed898835e00f5ff08a259f5f64662b07f (diff) | |
| download | mullvadvpn-76e8342a64006bc6a004c0511c3aefcae89b11cc.tar.xz mullvadvpn-76e8342a64006bc6a004c0511c3aefcae89b11cc.zip | |
Update to `hyper` version 1 echosystem for e2e tests
Diffstat (limited to 'test')
| -rw-r--r-- | test/Cargo.lock | 318 | ||||
| -rw-r--r-- | test/Cargo.toml | 1 | ||||
| -rw-r--r-- | test/test-manager/Cargo.toml | 2 | ||||
| -rw-r--r-- | test/test-rpc/Cargo.toml | 10 | ||||
| -rw-r--r-- | test/test-rpc/src/net.rs | 36 |
5 files changed, 312 insertions, 55 deletions
diff --git a/test/Cargo.lock b/test/Cargo.lock index e12e3add15..2eaea12ba0 100644 --- a/test/Cargo.lock +++ b/test/Cargo.lock @@ -207,6 +207,33 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] +name = "aws-lc-rs" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f95446d919226d587817a7d21379e6eb099b97b45110a7f272a444ca5c54070" +dependencies = [ + "aws-lc-sys", + "mirai-annotations", + "paste", + "zeroize", +] + +[[package]] +name = "aws-lc-sys" +version = "0.21.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3ddc4a5b231dd6958b140ff3151b6412b3f4321fab354f399eec8f14b06df62" +dependencies = [ + "bindgen", + "cc", + "cmake", + "dunce", + "fs_extra", + "libc", + "paste", +] + +[[package]] name = "axum" version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -276,12 +303,6 @@ checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" [[package]] name = "base64" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" - -[[package]] -name = "base64" version = "0.21.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" @@ -299,6 +320,29 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" [[package]] +name = "bindgen" +version = "0.69.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a00dc851838a2120612785d195287475a3ac45514741da670b735818822129a0" +dependencies = [ + "bitflags 2.5.0", + "cexpr", + "clang-sys", + "itertools 0.12.1", + "lazy_static", + "lazycell", + "log", + "prettyplease", + "proc-macro2", + "quote", + "regex", + "rustc-hash", + "shlex", + "syn 2.0.60", + "which", +] + +[[package]] name = "bitflags" version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -386,9 +430,14 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.95" +version = "1.1.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d32a725bc159af97c3e629873bb9f88fb8cf8a4867175f76dc987815ea07c83b" +checksum = "07b1695e2c7e8fc85310cde85aeaab7e3097f593c91d209d3f9df76c928100f0" +dependencies = [ + "jobserver", + "libc", + "shlex", +] [[package]] name = "cesu8" @@ -397,6 +446,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" [[package]] +name = "cexpr" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" +dependencies = [ + "nom", +] + +[[package]] name = "cfg-if" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -457,6 +515,17 @@ dependencies = [ ] [[package]] +name = "clang-sys" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" +dependencies = [ + "glob", + "libc", + "libloading 0.8.5", +] + +[[package]] name = "clap" version = "4.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -497,6 +566,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce" [[package]] +name = "cmake" +version = "0.1.51" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb1e43aa7fd152b1f968787f7dbcdeb306d1867ff373c69955211876c053f91a" +dependencies = [ + "cc", +] + +[[package]] name = "color-eyre" version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -750,6 +828,12 @@ dependencies = [ ] [[package]] +name = "dunce" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" + +[[package]] name = "ecdsa" version = "0.16.9" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -980,6 +1064,12 @@ dependencies = [ ] [[package]] +name = "fs_extra" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c" + +[[package]] name = "fsevent-sys" version = "4.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1281,6 +1371,15 @@ dependencies = [ ] [[package]] +name = "home" +version = "0.5.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] name = "hostname" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1419,12 +1518,29 @@ dependencies = [ "futures-util", "http 0.2.12", "hyper 0.14.28", + "rustls 0.21.11", + "tokio", + "tokio-rustls 0.24.1", +] + +[[package]] +name = "hyper-rustls" +version = "0.27.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08afdbb5c31130e3034af566421053ab03787c640246a446327f550d11bcb333" +dependencies = [ + "futures-util", + "http 1.1.0", + "hyper 1.4.1", + "hyper-util", "log", - "rustls", + "rustls 0.23.13", "rustls-native-certs", + "rustls-pki-types", "tokio", - "tokio-rustls", - "webpki-roots", + "tokio-rustls 0.26.0", + "tower-service", + "webpki-roots 0.26.6", ] [[package]] @@ -1694,6 +1810,15 @@ dependencies = [ ] [[package]] +name = "jobserver" +version = "0.1.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" +dependencies = [ + "libc", +] + +[[package]] name = "js-sys" version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1729,6 +1854,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] +name = "lazycell" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" + +[[package]] name = "libc" version = "0.2.155" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1745,6 +1876,16 @@ dependencies = [ ] [[package]] +name = "libloading" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4" +dependencies = [ + "cfg-if", + "windows-targets 0.52.6", +] + +[[package]] name = "libredox" version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1894,6 +2035,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" [[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] name = "miniz_oxide" version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1928,6 +2075,12 @@ dependencies = [ ] [[package]] +name = "mirai-annotations" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9be0862c1b3f26a88803c4a49de6889c10e608b3ee9344e6ef5b45fb37ad3d1" + +[[package]] name = "mullvad-api" version = "0.0.0" dependencies = [ @@ -1935,13 +2088,13 @@ dependencies = [ "chrono", "futures", "http 0.2.12", - "hyper 0.14.28", + "hyper 1.4.1", "ipnetwork", "libc", "log", "mullvad-fs", "mullvad-types", - "rustls-pemfile 1.0.4", + "rustls-pemfile 2.1.3", "serde", "serde_json", "shadowsocks", @@ -1949,7 +2102,7 @@ dependencies = [ "talpid-types", "thiserror", "tokio", - "tokio-rustls", + "tokio-rustls 0.26.0", "tokio-socks", "uuid", ] @@ -2081,6 +2234,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "43794a0ace135be66a25d3ae77d41b91615fb68ae937f904090203e81f755b65" [[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] name = "notify" version = "6.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -2298,6 +2461,12 @@ dependencies = [ ] [[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + +[[package]] name = "pcap" version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -2307,7 +2476,7 @@ dependencies = [ "errno 0.2.8", "futures", "libc", - "libloading", + "libloading 0.6.7", "pkg-config", "regex", "tokio", @@ -2761,7 +2930,7 @@ dependencies = [ "http 0.2.12", "http-body 0.4.6", "hyper 0.14.28", - "hyper-rustls", + "hyper-rustls 0.24.2", "ipnet", "js-sys", "log", @@ -2769,7 +2938,7 @@ dependencies = [ "once_cell", "percent-encoding", "pin-project-lite", - "rustls", + "rustls 0.21.11", "rustls-pemfile 1.0.4", "serde", "serde_json", @@ -2777,13 +2946,13 @@ dependencies = [ "sync_wrapper 0.1.2", "system-configuration", "tokio", - "tokio-rustls", + "tokio-rustls 0.24.1", "tower-service", "url", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "webpki-roots", + "webpki-roots 0.25.4", "winreg", ] @@ -2844,6 +3013,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" [[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + +[[package]] name = "rustc_version" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -2873,41 +3048,64 @@ checksum = "7fecbfb7b1444f477b345853b1fce097a2c6fb637b2bfb87e6bc5db0f043fae4" dependencies = [ "log", "ring", - "rustls-webpki", + "rustls-webpki 0.101.7", "sct", ] [[package]] +name = "rustls" +version = "0.23.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2dabaac7466917e566adb06783a81ca48944c6898a1b08b9374106dd671f4c8" +dependencies = [ + "aws-lc-rs", + "log", + "once_cell", + "rustls-pki-types", + "rustls-webpki 0.102.8", + "subtle", + "zeroize", +] + +[[package]] name = "rustls-native-certs" -version = "0.6.3" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00" +checksum = "fcaf18a4f2be7326cd874a5fa579fae794320a0f388d365dca7e480e55f83f8a" dependencies = [ "openssl-probe", - "rustls-pemfile 1.0.4", + "rustls-pemfile 2.1.3", + "rustls-pki-types", "schannel", "security-framework", ] [[package]] name = "rustls-pemfile" -version = "0.2.1" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5eebeaeb360c87bfb72e84abdb3447159c0eaececf1bef2aecd65a8be949d1c9" +checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" dependencies = [ - "base64 0.13.1", + "base64 0.21.7", ] [[package]] name = "rustls-pemfile" -version = "1.0.4" +version = "2.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" +checksum = "196fe16b00e106300d3e45ecfcb764fa292a535d7326a29a5875c579c7417425" dependencies = [ - "base64 0.21.7", + "base64 0.22.0", + "rustls-pki-types", ] [[package]] +name = "rustls-pki-types" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc0a2ce646f8655401bb81e7927b812614bd5d91dbc968696be50603510fcaf0" + +[[package]] name = "rustls-webpki" version = "0.101.7" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -2918,6 +3116,18 @@ dependencies = [ ] [[package]] +name = "rustls-webpki" +version = "0.102.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" +dependencies = [ + "aws-lc-rs", + "ring", + "rustls-pki-types", + "untrusted", +] + +[[package]] name = "rustversion" version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -3153,6 +3363,12 @@ dependencies = [ ] [[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] name = "signal-hook-registry" version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -3484,16 +3700,18 @@ dependencies = [ "bytes", "colored", "futures", - "hyper 0.14.28", - "hyper-rustls", + "http-body-util", + "hyper 1.4.1", + "hyper-rustls 0.27.3", + "hyper-util", "log", - "rustls-pemfile 0.2.1", + "rustls-pemfile 2.1.3", "serde", "serde_json", "tarpc", "thiserror", "tokio", - "tokio-rustls", + "tokio-rustls 0.26.0", "tokio-serde", "tokio-util", ] @@ -3654,7 +3872,18 @@ version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" dependencies = [ - "rustls", + "rustls 0.21.11", + "tokio", +] + +[[package]] +name = "tokio-rustls" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" +dependencies = [ + "rustls 0.23.13", + "rustls-pki-types", "tokio", ] @@ -4120,6 +4349,27 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" [[package]] +name = "webpki-roots" +version = "0.26.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "841c67bff177718f1d4dfefde8d8f0e78f9b6589319ba88312f567fc5841a958" +dependencies = [ + "rustls-pki-types", +] + +[[package]] +name = "which" +version = "4.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" +dependencies = [ + "either", + "home", + "once_cell", + "rustix", +] + +[[package]] name = "widestring" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" diff --git a/test/Cargo.toml b/test/Cargo.toml index d436ee9b1e..fd50761e7e 100644 --- a/test/Cargo.toml +++ b/test/Cargo.toml @@ -60,6 +60,7 @@ tower = "0.4" prost = "0.13.3" prost-types = "0.13.3" tarpc = { version = "0.30", features = ["tokio1", "serde-transport", "serde1"] } +hyper-util = {version = "0.1.8", features = ["client", "client-legacy", "http2"]} # Logging env_logger = "0.11.0" diff --git a/test/test-manager/Cargo.toml b/test/test-manager/Cargo.toml index 3331cb19bb..80c8170635 100644 --- a/test/test-manager/Cargo.toml +++ b/test/test-manager/Cargo.toml @@ -49,7 +49,7 @@ socks-server = { path = "../socks-server" } env_logger = { workspace = true } tonic = { workspace = true } -hyper-util = "0.1.8" +hyper-util = { workspace = true } tower = { workspace = true } colored = { workspace = true } diff --git a/test/test-rpc/Cargo.toml b/test/test-rpc/Cargo.toml index c39a2a1975..2b5db31a88 100644 --- a/test/test-rpc/Cargo.toml +++ b/test/test-rpc/Cargo.toml @@ -23,10 +23,12 @@ log = { workspace = true } colored = { workspace = true } async-trait = { workspace = true } -hyper = { version = "0.14.23", features = ["client", "http2"] } -hyper-rustls = { version = "0.24", features = ["log", "webpki-roots"] } -tokio-rustls = "0.24" -rustls-pemfile = "0.2" +hyper = { version = "1.4.1", features = ["client", "http2"] } +hyper-rustls = { version = "0.27.3", features = ["log", "webpki-roots"] } +hyper-util = {workspace = true} +http-body-util = "0.1.2" +tokio-rustls = "0.26.0" +rustls-pemfile = "2.1.3" [dependencies.tokio-util] version = "0.7" diff --git a/test/test-rpc/src/net.rs b/test/test-rpc/src/net.rs index c867ccf0d0..4f79aca8d5 100644 --- a/test/test-rpc/src/net.rs +++ b/test/test-rpc/src/net.rs @@ -1,19 +1,17 @@ +use crate::{AmIMullvad, Error}; +use bytes::Bytes; use futures::channel::oneshot; -use hyper::{Client, Uri}; +use http_body_util::{BodyExt, Full}; +use hyper::Uri; +use hyper_util::client::legacy::Client; use serde::{de::DeserializeOwned, Deserialize, Serialize}; use std::{net::SocketAddr, sync::LazyLock, time::Duration}; -use tokio_rustls::rustls::ClientConfig; - -use crate::{AmIMullvad, Error}; +use tokio_rustls::rustls::{self, ClientConfig}; const LE_ROOT_CERT: &[u8] = include_bytes!("../../../mullvad-api/le_root_cert.pem"); static CLIENT_CONFIG: LazyLock<ClientConfig> = LazyLock::new(|| { ClientConfig::builder() - .with_safe_default_cipher_suites() - .with_safe_default_kx_groups() - .with_safe_default_protocol_versions() - .unwrap() .with_root_certificates(read_cert_store()) .with_no_client_auth() }); @@ -86,7 +84,8 @@ pub async fn http_get<T: DeserializeOwned>(url: Uri) -> Result<T, Error> { .enable_http1() .build(); - let client: Client<_, hyper::Body> = Client::builder().build(https); + let client: Client<_, Full<Bytes>> = + Client::builder(hyper_util::rt::TokioExecutor::new()).build(https); let body = client .get(url) .await @@ -94,10 +93,14 @@ pub async fn http_get<T: DeserializeOwned>(url: Uri) -> Result<T, Error> { .into_body(); // TODO: limit length - let bytes = hyper::body::to_bytes(body).await.map_err(|error| { - log::error!("Failed to convert body to bytes buffer: {}", error); - Error::DeserializeBody - })?; + let bytes = body + .collect() + .await + .map_err(|error| { + log::error!("Failed to collect response body: {}", error); + Error::DeserializeBody + })? + .to_bytes(); serde_json::from_slice(&bytes).map_err(|error| { log::error!("Failed to deserialize response: {}", error); @@ -114,12 +117,13 @@ pub async fn http_get_with_timeout<T: DeserializeOwned>( .map_err(|_| Error::HttpRequest("Request timed out".into()))? } -fn read_cert_store() -> tokio_rustls::rustls::RootCertStore { - let mut cert_store = tokio_rustls::rustls::RootCertStore::empty(); +fn read_cert_store() -> rustls::RootCertStore { + let mut cert_store = rustls::RootCertStore::empty(); let certs = rustls_pemfile::certs(&mut std::io::BufReader::new(LE_ROOT_CERT)) + .collect::<Result<Vec<_>, _>>() .expect("Failed to parse pem file"); - let (num_certs_added, num_failures) = cert_store.add_parsable_certificates(&certs); + let (num_certs_added, num_failures) = cert_store.add_parsable_certificates(certs); if num_failures > 0 || num_certs_added != 1 { panic!("Failed to add root cert"); } |
