From 8dfebbb3e7b5b1f50ea3bc0e42ad6fc793c5ad40 Mon Sep 17 00:00:00 2001 From: Mubelotix Date: Mon, 4 Aug 2025 15:37:12 +0200 Subject: [PATCH] Fix tests --- crates/index-scheduler/src/lib.rs | 63 ++++------------------- crates/meilisearch/tests/tasks/webhook.rs | 2 - 2 files changed, 11 insertions(+), 54 deletions(-) diff --git a/crates/index-scheduler/src/lib.rs b/crates/index-scheduler/src/lib.rs index 8d7617b6c..84cb0f752 100644 --- a/crates/index-scheduler/src/lib.rs +++ b/crates/index-scheduler/src/lib.rs @@ -820,58 +820,17 @@ impl IndexScheduler { let rtxn = self.env.read_txn()?; - let task_reader = TaskReader { - rtxn: &rtxn, - index_scheduler: self, - tasks: &mut updated.into_iter(), - buffer: Vec::with_capacity(800), // on average a task is around ~600 bytes - written: 0, - }; - - enum EitherRead<'a, T: Read> { - Other(Option), - Data(&'a [u8]), - } - - impl EitherRead<'_, T> { - /// A clone that works only once for the Other variant. - fn clone(&mut self) -> Self { - match self { - Self::Other(r) => { - let r = r.take(); - Self::Other(r) - } - Self::Data(arg0) => Self::Data(arg0), - } - } - } - - impl Read for EitherRead<'_, T> { - fn read(&mut self, buf: &mut [u8]) -> std::io::Result { - match self { - EitherRead::Other(Some(reader)) => reader.read(buf), - EitherRead::Other(None) => { - Err(io::Error::new(io::ErrorKind::Other, "No reader available")) - } - EitherRead::Data(data) => data.read(buf), - } - } - } - - let mut reader = GzEncoder::new(BufReader::new(task_reader), Compression::default()); - - // When there is more than one webhook, cache the data in memory - let mut data; - let mut reader = match webhooks.webhooks.len() { - 1 => EitherRead::Other(Some(reader)), - _ => { - data = Vec::new(); - reader.read_to_end(&mut data)?; - EitherRead::Data(&data) - } - }; - for (uuid, Webhook { url, headers }) in webhooks.webhooks.iter() { + let task_reader = TaskReader { + rtxn: &rtxn, + index_scheduler: self, + tasks: &mut updated.into_iter(), + buffer: Vec::with_capacity(800), // on average a task is around ~600 bytes + written: 0, + }; + + let reader = GzEncoder::new(BufReader::new(task_reader), Compression::default()); + let mut request = ureq::post(url) .timeout(Duration::from_secs(30)) .set("Content-Encoding", "gzip") @@ -880,7 +839,7 @@ impl IndexScheduler { request = request.set(header_name, header_value); } - if let Err(e) = request.send(reader.clone()) { + if let Err(e) = request.send(reader) { tracing::error!("While sending data to the webhook {uuid}: {e}"); } } diff --git a/crates/meilisearch/tests/tasks/webhook.rs b/crates/meilisearch/tests/tasks/webhook.rs index f8fcd8ff9..beef2f5c1 100644 --- a/crates/meilisearch/tests/tasks/webhook.rs +++ b/crates/meilisearch/tests/tasks/webhook.rs @@ -99,7 +99,6 @@ async fn cli_only() { } #[actix_web::test] -#[ignore = "Broken"] async fn single_receives_data() { let WebhookHandle { server_handle, url, mut receiver } = create_webhook_server().await; @@ -166,7 +165,6 @@ async fn single_receives_data() { } #[actix_web::test] -#[ignore = "Broken"] async fn multiple_receive_data() { let server = Server::new().await;