mirror of
https://github.com/meilisearch/MeiliSearch
synced 2025-07-02 03:18:30 +02:00
Make test more reproducible
This commit is contained in:
parent
2f82d94502
commit
59a1c5d9a7
@ -1,4 +1,5 @@
|
|||||||
use std::collections::{BTreeMap, BTreeSet};
|
use std::collections::{BTreeMap, BTreeSet};
|
||||||
|
use std::sync::atomic::AtomicUsize;
|
||||||
|
|
||||||
use meili_snap::{json_string, snapshot};
|
use meili_snap::{json_string, snapshot};
|
||||||
use reqwest::IntoUrl;
|
use reqwest::IntoUrl;
|
||||||
@ -338,36 +339,43 @@ async fn create_mock_raw() -> (MockServer, Value) {
|
|||||||
(mock_server, embedder_settings)
|
(mock_server, embedder_settings)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// A mock server that returns 500 errors, and sends a message once 5 requests are received
|
async fn create_faulty_mock_raw(sender: mpsc::Sender<()>) -> (MockServer, Value) {
|
||||||
async fn create_faulty_mock_raw(mut sender: mpsc::Sender<()>) -> (MockServer, Value) {
|
|
||||||
let mock_server = MockServer::start().await;
|
let mock_server = MockServer::start().await;
|
||||||
|
let count = AtomicUsize::new(0);
|
||||||
|
|
||||||
Mock::given(method("POST"))
|
Mock::given(method("POST"))
|
||||||
.and(path("/"))
|
.and(path("/"))
|
||||||
.respond_with(move |req: &Request| {
|
.respond_with(move |req: &Request| {
|
||||||
let req: String = match req.body_json() {
|
let count = count.fetch_add(1, std::sync::atomic::Ordering::SeqCst);
|
||||||
Ok(req) => req,
|
|
||||||
|
let req_body = match req.body_json::<Value>() {
|
||||||
|
Ok(body) => body,
|
||||||
Err(error) => {
|
Err(error) => {
|
||||||
return ResponseTemplate::new(400).set_body_json(json!({
|
return ResponseTemplate::new(400).set_body_json(json!({
|
||||||
"error": format!("Invalid request: {error}")
|
"error": format!("Invalid request: {error}")
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
let sender = sender.clone();
|
if count >= 5 {
|
||||||
spawn(async move {
|
let _ = sender.try_send(());
|
||||||
sender.send(()).await;
|
ResponseTemplate::new(500)
|
||||||
});
|
.set_delay(Duration::from_secs(u64::MAX))
|
||||||
|
.set_body_json(json!({
|
||||||
|
"error": "Service Unavailable",
|
||||||
|
"text": req_body
|
||||||
|
}))
|
||||||
|
} else {
|
||||||
|
|
||||||
ResponseTemplate::new(500)
|
ResponseTemplate::new(500).set_body_json(json!({
|
||||||
.set_delay(Duration::from_millis(500))
|
|
||||||
.set_body_json(json!({
|
|
||||||
"error": "Service Unavailable",
|
"error": "Service Unavailable",
|
||||||
"text": req
|
"text": req_body
|
||||||
}))
|
}))
|
||||||
|
}
|
||||||
})
|
})
|
||||||
.mount(&mock_server)
|
.mount(&mock_server)
|
||||||
.await;
|
.await;
|
||||||
|
|
||||||
let url = mock_server.uri();
|
let url = mock_server.uri();
|
||||||
|
|
||||||
let embedder_settings = json!({
|
let embedder_settings = json!({
|
||||||
@ -2187,12 +2195,9 @@ async fn observability() {
|
|||||||
snapshot!(code, @"202 Accepted");
|
snapshot!(code, @"202 Accepted");
|
||||||
|
|
||||||
// The task will eventually fail, so let's not wait for it.
|
// The task will eventually fail, so let's not wait for it.
|
||||||
// Let's just wait for 5 errors from the mock server.
|
// Let's just wait for the server to block
|
||||||
for _errors in 0..5 {
|
receiver.recv().await;
|
||||||
receiver.recv().await;
|
|
||||||
}
|
|
||||||
|
|
||||||
let batches = index.filtered_batches(&[], &[], &[]).await;
|
let batches = index.filtered_batches(&[], &[], &[]).await;
|
||||||
println!("Batches: {batches:?}");
|
snapshot!(task, @r###""###);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user