Leak mock servers

This commit is contained in:
Mubelotix 2025-07-08 15:27:35 +02:00
parent 3cc5d86598
commit 0a4f2ef891
No known key found for this signature in database
GPG key ID: 0406DF6C3A69B942
4 changed files with 36 additions and 36 deletions

View file

@ -2499,7 +2499,7 @@ pub struct LocalMeiliParams {
/// A server that exploits [`MockServer`] to provide an URL for testing network and the network. /// A server that exploits [`MockServer`] to provide an URL for testing network and the network.
pub struct LocalMeili { pub struct LocalMeili {
mock_server: MockServer, mock_server: &'static MockServer,
} }
impl LocalMeili { impl LocalMeili {
@ -2508,7 +2508,7 @@ impl LocalMeili {
} }
pub async fn with_params(server: Arc<Server>, params: LocalMeiliParams) -> Self { pub async fn with_params(server: Arc<Server>, params: LocalMeiliParams) -> Self {
let mock_server = MockServer::start().await; let mock_server = Box::leak(Box::new(MockServer::start().await));
// tokio won't let us execute asynchronous code from a sync function inside of an async test, // tokio won't let us execute asynchronous code from a sync function inside of an async test,
// so instead we spawn another thread that will call the service on a brand new tokio runtime // so instead we spawn another thread that will call the service on a brand new tokio runtime
@ -2572,7 +2572,7 @@ impl LocalMeili {
response.set_body_json(value) response.set_body_json(value)
} }
}) })
.mount(&mock_server) .mount(mock_server)
.await; .await;
Self { mock_server } Self { mock_server }
} }

View file

@ -33,7 +33,7 @@ async fn fragment_mock_server() -> String {
.into_iter() .into_iter()
.collect(); .collect();
let mock_server = MockServer::start().await; let mock_server = Box::leak(Box::new(MockServer::start().await));
Mock::given(method("POST")) Mock::given(method("POST"))
.and(path("/")) .and(path("/"))
@ -50,7 +50,7 @@ async fn fragment_mock_server() -> String {
} }
ResponseTemplate::new(200).set_body_json(json!({ "data": data })) ResponseTemplate::new(200).set_body_json(json!({ "data": data }))
}) })
.mount(&mock_server) .mount(mock_server)
.await; .await;
mock_server.uri() mock_server.uri()

View file

@ -136,7 +136,7 @@ fn long_text() -> &'static str {
}) })
} }
async fn create_mock_tokenized() -> (MockServer, Value) { async fn create_mock_tokenized() -> (&'static MockServer, Value) {
create_mock_with_template("{{doc.text}}", ModelDimensions::Large, false, false).await create_mock_with_template("{{doc.text}}", ModelDimensions::Large, false, false).await
} }
@ -145,8 +145,8 @@ async fn create_mock_with_template(
model_dimensions: ModelDimensions, model_dimensions: ModelDimensions,
fallible: bool, fallible: bool,
slow: bool, slow: bool,
) -> (MockServer, Value) { ) -> (&'static MockServer, Value) {
let mock_server = MockServer::start().await; let mock_server = Box::leak(Box::new(MockServer::start().await));
const API_KEY: &str = "my-api-key"; const API_KEY: &str = "my-api-key";
const API_KEY_BEARER: &str = "Bearer my-api-key"; const API_KEY_BEARER: &str = "Bearer my-api-key";
@ -299,7 +299,7 @@ async fn create_mock_with_template(
} }
})) }))
}) })
.mount(&mock_server) .mount(mock_server)
.await; .await;
let url = mock_server.uri(); let url = mock_server.uri();
@ -321,27 +321,27 @@ const DOGGO_TEMPLATE: &str = r#"{%- if doc.gender == "F" -%}Une chienne nommée
Un chien nommé {{doc.name}}, en {{doc.birthyear}} Un chien nommé {{doc.name}}, en {{doc.birthyear}}
{%- endif %}, de race {{doc.breed}}."#; {%- endif %}, de race {{doc.breed}}."#;
async fn create_mock() -> (MockServer, Value) { async fn create_mock() -> (&'static MockServer, Value) {
create_mock_with_template(DOGGO_TEMPLATE, ModelDimensions::Large, false, false).await create_mock_with_template(DOGGO_TEMPLATE, ModelDimensions::Large, false, false).await
} }
async fn create_mock_dimensions() -> (MockServer, Value) { async fn create_mock_dimensions() -> (&'static MockServer, Value) {
create_mock_with_template(DOGGO_TEMPLATE, ModelDimensions::Large512, false, false).await create_mock_with_template(DOGGO_TEMPLATE, ModelDimensions::Large512, false, false).await
} }
async fn create_mock_small_embedding_model() -> (MockServer, Value) { async fn create_mock_small_embedding_model() -> (&'static MockServer, Value) {
create_mock_with_template(DOGGO_TEMPLATE, ModelDimensions::Small, false, false).await create_mock_with_template(DOGGO_TEMPLATE, ModelDimensions::Small, false, false).await
} }
async fn create_mock_legacy_embedding_model() -> (MockServer, Value) { async fn create_mock_legacy_embedding_model() -> (&'static MockServer, Value) {
create_mock_with_template(DOGGO_TEMPLATE, ModelDimensions::Ada, false, false).await create_mock_with_template(DOGGO_TEMPLATE, ModelDimensions::Ada, false, false).await
} }
async fn create_fallible_mock() -> (MockServer, Value) { async fn create_fallible_mock() -> (&'static MockServer, Value) {
create_mock_with_template(DOGGO_TEMPLATE, ModelDimensions::Large, true, false).await create_mock_with_template(DOGGO_TEMPLATE, ModelDimensions::Large, true, false).await
} }
async fn create_slow_mock() -> (MockServer, Value) { async fn create_slow_mock() -> (&'static MockServer, Value) {
create_mock_with_template(DOGGO_TEMPLATE, ModelDimensions::Large, true, true).await create_mock_with_template(DOGGO_TEMPLATE, ModelDimensions::Large, true, true).await
} }

View file

@ -12,8 +12,8 @@ use crate::common::Value;
use crate::json; use crate::json;
use crate::vector::{get_server_vector, GetAllDocumentsOptions}; use crate::vector::{get_server_vector, GetAllDocumentsOptions};
async fn create_mock() -> (MockServer, Value) { async fn create_mock() -> (&'static MockServer, Value) {
let mock_server = MockServer::start().await; let mock_server = Box::leak(Box::new(MockServer::start().await));
let text_to_embedding: BTreeMap<_, _> = vec![ let text_to_embedding: BTreeMap<_, _> = vec![
// text -> embedding // text -> embedding
@ -32,7 +32,7 @@ async fn create_mock() -> (MockServer, Value) {
json!({ "data": text_to_embedding.get(text.as_str()).unwrap_or(&[99., 99., 99.]) }), json!({ "data": text_to_embedding.get(text.as_str()).unwrap_or(&[99., 99., 99.]) }),
) )
}) })
.mount(&mock_server) .mount(mock_server)
.await; .await;
let url = mock_server.uri(); let url = mock_server.uri();
@ -50,8 +50,8 @@ async fn create_mock() -> (MockServer, Value) {
(mock_server, embedder_settings) (mock_server, embedder_settings)
} }
async fn create_mock_default_template() -> (MockServer, Value) { async fn create_mock_default_template() -> (&'static MockServer, Value) {
let mock_server = MockServer::start().await; let mock_server = Box::leak(Box::new(MockServer::start().await));
let text_to_embedding: BTreeMap<_, _> = vec![ let text_to_embedding: BTreeMap<_, _> = vec![
// text -> embedding // text -> embedding
@ -73,7 +73,7 @@ async fn create_mock_default_template() -> (MockServer, Value) {
.set_body_json(json!({"error": "text not found", "text": text})), .set_body_json(json!({"error": "text not found", "text": text})),
} }
}) })
.mount(&mock_server) .mount(mock_server)
.await; .await;
let url = mock_server.uri(); let url = mock_server.uri();
@ -106,8 +106,8 @@ struct SingleResponse {
embedding: Vec<f32>, embedding: Vec<f32>,
} }
async fn create_mock_multiple() -> (MockServer, Value) { async fn create_mock_multiple() -> (&'static MockServer, Value) {
let mock_server = MockServer::start().await; let mock_server = Box::leak(Box::new(MockServer::start().await));
let text_to_embedding: BTreeMap<_, _> = vec![ let text_to_embedding: BTreeMap<_, _> = vec![
// text -> embedding // text -> embedding
@ -146,7 +146,7 @@ async fn create_mock_multiple() -> (MockServer, Value) {
ResponseTemplate::new(200).set_body_json(response) ResponseTemplate::new(200).set_body_json(response)
}) })
.mount(&mock_server) .mount(mock_server)
.await; .await;
let url = mock_server.uri(); let url = mock_server.uri();
@ -176,8 +176,8 @@ struct SingleRequest {
input: String, input: String,
} }
async fn create_mock_single_response_in_array() -> (MockServer, Value) { async fn create_mock_single_response_in_array() -> (&'static MockServer, Value) {
let mock_server = MockServer::start().await; let mock_server = Box::leak(Box::new(MockServer::start().await));
let text_to_embedding: BTreeMap<_, _> = vec![ let text_to_embedding: BTreeMap<_, _> = vec![
// text -> embedding // text -> embedding
@ -212,7 +212,7 @@ async fn create_mock_single_response_in_array() -> (MockServer, Value) {
ResponseTemplate::new(200).set_body_json(response) ResponseTemplate::new(200).set_body_json(response)
}) })
.mount(&mock_server) .mount(mock_server)
.await; .await;
let url = mock_server.uri(); let url = mock_server.uri();
@ -236,8 +236,8 @@ async fn create_mock_single_response_in_array() -> (MockServer, Value) {
(mock_server, embedder_settings) (mock_server, embedder_settings)
} }
async fn create_mock_raw_with_custom_header() -> (MockServer, Value) { async fn create_mock_raw_with_custom_header() -> (&'static MockServer, Value) {
let mock_server = MockServer::start().await; let mock_server = Box::leak(Box::new(MockServer::start().await));
let text_to_embedding: BTreeMap<_, _> = vec![ let text_to_embedding: BTreeMap<_, _> = vec![
// text -> embedding // text -> embedding
@ -277,7 +277,7 @@ async fn create_mock_raw_with_custom_header() -> (MockServer, Value) {
ResponseTemplate::new(200).set_body_json(output) ResponseTemplate::new(200).set_body_json(output)
}) })
.mount(&mock_server) .mount(mock_server)
.await; .await;
let url = mock_server.uri(); let url = mock_server.uri();
@ -293,8 +293,8 @@ async fn create_mock_raw_with_custom_header() -> (MockServer, Value) {
(mock_server, embedder_settings) (mock_server, embedder_settings)
} }
async fn create_mock_raw() -> (MockServer, Value) { async fn create_mock_raw() -> (&'static MockServer, Value) {
let mock_server = MockServer::start().await; let mock_server = Box::leak(Box::new(MockServer::start().await));
let text_to_embedding: BTreeMap<_, _> = vec![ let text_to_embedding: BTreeMap<_, _> = vec![
// text -> embedding // text -> embedding
@ -321,7 +321,7 @@ async fn create_mock_raw() -> (MockServer, Value) {
ResponseTemplate::new(200).set_body_json(output) ResponseTemplate::new(200).set_body_json(output)
}) })
.mount(&mock_server) .mount(mock_server)
.await; .await;
let url = mock_server.uri(); let url = mock_server.uri();
@ -337,8 +337,8 @@ async fn create_mock_raw() -> (MockServer, Value) {
(mock_server, embedder_settings) (mock_server, embedder_settings)
} }
async fn create_faulty_mock_raw(sender: mpsc::Sender<()>) -> (MockServer, Value) { async fn create_faulty_mock_raw(sender: mpsc::Sender<()>) -> (&'static MockServer, Value) {
let mock_server = MockServer::start().await; let mock_server = Box::leak(Box::new(MockServer::start().await));
let count = AtomicUsize::new(0); let count = AtomicUsize::new(0);
Mock::given(method("POST")) Mock::given(method("POST"))
@ -355,7 +355,7 @@ async fn create_faulty_mock_raw(sender: mpsc::Sender<()>) -> (MockServer, Value)
ResponseTemplate::new(500).set_body_string("Service Unavailable") ResponseTemplate::new(500).set_body_string("Service Unavailable")
} }
}) })
.mount(&mock_server) .mount(mock_server)
.await; .await;
let url = mock_server.uri(); let url = mock_server.uri();