mirror of
				https://github.com/meilisearch/meilisearch.git
				synced 2025-10-26 05:26:27 +00:00 
			
		
		
		
	test(http): server & index stats
This commit is contained in:
		| @@ -161,6 +161,11 @@ impl Index<'_> { | ||||
|         let url = format!("/indexes/{}/settings", self.uid); | ||||
|         self.service.delete(url).await | ||||
|     } | ||||
|  | ||||
|     pub async fn stats(&self) -> (Value, StatusCode) { | ||||
|         let url = format!("/indexes/{}/stats", self.uid); | ||||
|         self.service.get(url).await | ||||
|     } | ||||
| } | ||||
|  | ||||
| pub struct GetDocumentOptions; | ||||
|   | ||||
| @@ -58,6 +58,10 @@ impl Server { | ||||
|     pub async fn version(&self) -> (Value, StatusCode) { | ||||
|         self.service.get("/version").await | ||||
|     } | ||||
|  | ||||
|     pub async fn stats(&self) -> (Value, StatusCode) { | ||||
|         self.service.get("/stats").await | ||||
|     } | ||||
| } | ||||
|  | ||||
| pub fn default_settings(dir: impl AsRef<Path>) -> Opt { | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| mod create_index; | ||||
| mod delete_index; | ||||
| mod get_index; | ||||
| mod stats; | ||||
| mod update_index; | ||||
|   | ||||
							
								
								
									
										48
									
								
								meilisearch-http/tests/index/stats.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								meilisearch-http/tests/index/stats.rs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,48 @@ | ||||
| use serde_json::json; | ||||
|  | ||||
| use crate::common::Server; | ||||
|  | ||||
| #[actix_rt::test] | ||||
| async fn stats() { | ||||
|     let server = Server::new().await; | ||||
|     let index = server.index("test"); | ||||
|     let (_, code) = index.create(Some("id")).await; | ||||
|  | ||||
|     assert_eq!(code, 200); | ||||
|  | ||||
|     let (response, code) = index.stats().await; | ||||
|  | ||||
|     assert_eq!(code, 200); | ||||
|     assert_eq!(response["numberOfDocuments"], 0); | ||||
|     assert_eq!(response["isIndexing"], false); | ||||
|     assert!(response["fieldsDistribution"] | ||||
|         .as_object() | ||||
|         .unwrap() | ||||
|         .is_empty()); | ||||
|  | ||||
|     let documents = json!([ | ||||
|         { | ||||
|             "id": 1, | ||||
|             "name": "Alexey", | ||||
|         }, | ||||
|         { | ||||
|             "id": 2, | ||||
|             "age": 45, | ||||
|         } | ||||
|     ]); | ||||
|  | ||||
|     let (response, code) = index.add_documents(documents, None).await; | ||||
|     assert_eq!(code, 202); | ||||
|     assert_eq!(response["updateId"], 0); | ||||
|  | ||||
|     index.wait_update_id(0).await; | ||||
|  | ||||
|     let (response, code) = index.stats().await; | ||||
|  | ||||
|     assert_eq!(code, 200); | ||||
|     assert_eq!(response["numberOfDocuments"], 2); | ||||
|     assert_eq!(response["isIndexing"], false); | ||||
|     assert_eq!(response["fieldsDistribution"]["id"], 2); | ||||
|     assert_eq!(response["fieldsDistribution"]["name"], 1); | ||||
|     assert_eq!(response["fieldsDistribution"]["age"], 1); | ||||
| } | ||||
| @@ -1,3 +1,5 @@ | ||||
| use serde_json::json; | ||||
|  | ||||
| use crate::common::Server; | ||||
|  | ||||
| #[actix_rt::test] | ||||
| @@ -19,3 +21,51 @@ async fn test_healthyness() { | ||||
|     assert_eq!(status_code, 200); | ||||
|     assert_eq!(response["status"], "available"); | ||||
| } | ||||
|  | ||||
| #[actix_rt::test] | ||||
| async fn stats() { | ||||
|     let server = Server::new().await; | ||||
|     let index = server.index("test"); | ||||
|     let (_, code) = index.create(Some("id")).await; | ||||
|  | ||||
|     assert_eq!(code, 200); | ||||
|  | ||||
|     let (response, code) = server.stats().await; | ||||
|  | ||||
|     assert_eq!(code, 200); | ||||
|     assert!(response.get("databaseSize").is_some()); | ||||
|     assert!(response.get("lastUpdate").is_some()); | ||||
|     assert!(response["indexes"].get("test").is_some()); | ||||
|     assert_eq!(response["indexes"]["test"]["numberOfDocuments"], 0); | ||||
|     assert_eq!(response["indexes"]["test"]["isIndexing"], false); | ||||
|  | ||||
|     let last_update = response["lastUpdate"].as_str().unwrap(); | ||||
|  | ||||
|     let documents = json!([ | ||||
|         { | ||||
|             "id": 1, | ||||
|             "name": "Alexey", | ||||
|         }, | ||||
|         { | ||||
|             "id": 2, | ||||
|             "age": 45, | ||||
|         } | ||||
|     ]); | ||||
|  | ||||
|     let (response, code) = index.add_documents(documents, None).await; | ||||
|     assert_eq!(code, 202); | ||||
|     assert_eq!(response["updateId"], 0); | ||||
|  | ||||
|     index.wait_update_id(0).await; | ||||
|  | ||||
|     let (response, code) = server.stats().await; | ||||
|  | ||||
|     assert_eq!(code, 200); | ||||
|     assert!(response["databaseSize"].as_u64().unwrap() > 0); | ||||
|     assert!(response["lastUpdate"].as_str().unwrap() > last_update); | ||||
|     assert_eq!(response["indexes"]["test"]["numberOfDocuments"], 2); | ||||
|     assert_eq!(response["indexes"]["test"]["isIndexing"], false); | ||||
|     assert_eq!(response["indexes"]["test"]["fieldsDistribution"]["id"], 2); | ||||
|     assert_eq!(response["indexes"]["test"]["fieldsDistribution"]["name"], 1); | ||||
|     assert_eq!(response["indexes"]["test"]["fieldsDistribution"]["age"], 1); | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user