From 53a0daf018c4c0b5910c53959fd9b5961bcc8178 Mon Sep 17 00:00:00 2001 From: Tamo Date: Mon, 5 Feb 2024 14:05:24 +0100 Subject: [PATCH] fix the tests and add tests on the experimental features --- index-scheduler/src/features.rs | 5 +++-- meilisearch-types/src/features.rs | 1 + meilisearch/src/option.rs | 5 ++++- meilisearch/tests/dumps/mod.rs | 1 + meilisearch/tests/features/mod.rs | 8 +++++++- meilisearch/tests/logs/error.rs | 27 +++++++++++++++++++++++++++ meilisearch/tests/logs/mod.rs | 8 ++++++-- meilisearch/tests/search/hybrid.rs | 1 + 8 files changed, 50 insertions(+), 6 deletions(-) diff --git a/index-scheduler/src/features.rs b/index-scheduler/src/features.rs index 597889ce9..b17fb9206 100644 --- a/index-scheduler/src/features.rs +++ b/index-scheduler/src/features.rs @@ -61,8 +61,8 @@ impl RoFeatures { Ok(()) } else { Err(FeatureNotEnabledError { - disabled_action: "Getting logs", - feature: "logsRoute", + disabled_action: "getting logs through the `/logs` route", + feature: "logs route", /// Update the discussion link issue_link: "https://github.com/meilisearch/product/discussions/625", } @@ -108,6 +108,7 @@ impl FeatureData { runtime_features_db.get(&txn, EXPERIMENTAL_FEATURES)?.unwrap_or_default(); let runtime = Arc::new(RwLock::new(RuntimeTogglableFeatures { metrics: instance_features.metrics || persisted_features.metrics, + logs_route: instance_features.logs_route || persisted_features.logs_route, ..persisted_features })); diff --git a/meilisearch-types/src/features.rs b/meilisearch-types/src/features.rs index cca6f3d34..489dd4f50 100644 --- a/meilisearch-types/src/features.rs +++ b/meilisearch-types/src/features.rs @@ -13,4 +13,5 @@ pub struct RuntimeTogglableFeatures { #[derive(Default, Debug, Clone, Copy)] pub struct InstanceTogglableFeatures { pub metrics: bool, + pub logs_route: bool, } diff --git a/meilisearch/src/option.rs b/meilisearch/src/option.rs index d612210c8..362f7a33f 100644 --- a/meilisearch/src/option.rs +++ b/meilisearch/src/option.rs @@ -538,7 +538,10 @@ impl Opt { } pub(crate) fn to_instance_features(&self) -> InstanceTogglableFeatures { - InstanceTogglableFeatures { metrics: self.experimental_enable_metrics } + InstanceTogglableFeatures { + metrics: self.experimental_enable_metrics, + logs_route: self.experimental_enable_logs_route, + } } } diff --git a/meilisearch/tests/dumps/mod.rs b/meilisearch/tests/dumps/mod.rs index fd34268a5..f5bb76a03 100644 --- a/meilisearch/tests/dumps/mod.rs +++ b/meilisearch/tests/dumps/mod.rs @@ -1848,6 +1848,7 @@ async fn import_dump_v6_containing_experimental_features() { "scoreDetails": false, "vectorStore": false, "metrics": false, + "logsRoute": false, "exportPuffinReports": false } "###); diff --git a/meilisearch/tests/features/mod.rs b/meilisearch/tests/features/mod.rs index abb006ac8..f1791744b 100644 --- a/meilisearch/tests/features/mod.rs +++ b/meilisearch/tests/features/mod.rs @@ -21,6 +21,7 @@ async fn experimental_features() { "scoreDetails": false, "vectorStore": false, "metrics": false, + "logsRoute": false, "exportPuffinReports": false } "###); @@ -33,6 +34,7 @@ async fn experimental_features() { "scoreDetails": false, "vectorStore": true, "metrics": false, + "logsRoute": false, "exportPuffinReports": false } "###); @@ -45,6 +47,7 @@ async fn experimental_features() { "scoreDetails": false, "vectorStore": true, "metrics": false, + "logsRoute": false, "exportPuffinReports": false } "###); @@ -58,6 +61,7 @@ async fn experimental_features() { "scoreDetails": false, "vectorStore": true, "metrics": false, + "logsRoute": false, "exportPuffinReports": false } "###); @@ -71,6 +75,7 @@ async fn experimental_features() { "scoreDetails": false, "vectorStore": true, "metrics": false, + "logsRoute": false, "exportPuffinReports": false } "###); @@ -91,6 +96,7 @@ async fn experimental_feature_metrics() { "scoreDetails": false, "vectorStore": false, "metrics": true, + "logsRoute": false, "exportPuffinReports": false } "###); @@ -146,7 +152,7 @@ async fn errors() { meili_snap::snapshot!(code, @"400 Bad Request"); meili_snap::snapshot!(meili_snap::json_string!(response), @r###" { - "message": "Unknown field `NotAFeature`: expected one of `scoreDetails`, `vectorStore`, `metrics`, `exportPuffinReports`", + "message": "Unknown field `NotAFeature`: expected one of `scoreDetails`, `vectorStore`, `metrics`, `logsRoute`, `exportPuffinReports`", "code": "bad_request", "type": "invalid_request", "link": "https://docs.meilisearch.com/errors#bad_request" diff --git a/meilisearch/tests/logs/error.rs b/meilisearch/tests/logs/error.rs index 965b68d17..b6c4605ed 100644 --- a/meilisearch/tests/logs/error.rs +++ b/meilisearch/tests/logs/error.rs @@ -96,3 +96,30 @@ async fn logs_bad_mode() { } "###); } + +#[actix_rt::test] +async fn logs_without_enabling_the_route() { + let server = Server::new().await; + + let (response, code) = server.service.post("/logs", json!({})).await; + snapshot!(code, @"400 Bad Request"); + snapshot!(response, @r###" + { + "message": "getting logs through the `/logs` route requires enabling the `logs route` experimental feature. See https://github.com/meilisearch/product/discussions/625", + "code": "feature_not_enabled", + "type": "invalid_request", + "link": "https://docs.meilisearch.com/errors#feature_not_enabled" + } + "###); + + let (response, code) = server.service.delete("/logs").await; + snapshot!(code, @"400 Bad Request"); + snapshot!(response, @r###" + { + "message": "getting logs through the `/logs` route requires enabling the `logs route` experimental feature. See https://github.com/meilisearch/product/discussions/625", + "code": "feature_not_enabled", + "type": "invalid_request", + "link": "https://docs.meilisearch.com/errors#feature_not_enabled" + } + "###); +} diff --git a/meilisearch/tests/logs/mod.rs b/meilisearch/tests/logs/mod.rs index 4aba0a4cd..ad1fa4048 100644 --- a/meilisearch/tests/logs/mod.rs +++ b/meilisearch/tests/logs/mod.rs @@ -16,8 +16,12 @@ use crate::json; #[actix_web::test] async fn basic_test_log_route() { let db_path = tempfile::tempdir().unwrap(); - let server = - Server::new_with_options(Opt { ..default_settings(db_path.path()) }).await.unwrap(); + let server = Server::new_with_options(Opt { + experimental_enable_logs_route: true, + ..default_settings(db_path.path()) + }) + .await + .unwrap(); let (route_layer, route_layer_handle) = tracing_subscriber::reload::Layer::new(None.with_filter( diff --git a/meilisearch/tests/search/hybrid.rs b/meilisearch/tests/search/hybrid.rs index 79819cab2..79bc653b8 100644 --- a/meilisearch/tests/search/hybrid.rs +++ b/meilisearch/tests/search/hybrid.rs @@ -16,6 +16,7 @@ async fn index_with_documents<'a>(server: &'a Server, documents: &Value) -> Inde "scoreDetails": false, "vectorStore": true, "metrics": false, + "logsRoute": false, "exportPuffinReports": false } "###);