From c06e04afbbeecbc54fe42c075a3d4ae563efdf06 Mon Sep 17 00:00:00 2001 From: Eugene Tolbakov Date: Sun, 12 Feb 2023 12:55:17 +0000 Subject: [PATCH] refactor(query): tests from query/tests to query/src (#973) * refactor(query): tests from query/tests to query/src * chore(query): address rust fmt issues * chore(query): add licence header --- src/query/src/lib.rs | 2 ++ src/query/src/tests.rs | 27 +++++++++++++++++++ src/query/{ => src}/tests/argmax_test.rs | 10 +++---- src/query/{ => src}/tests/argmin_test.rs | 10 +++---- src/query/{ => src}/tests/function.rs | 8 +++--- src/query/{ => src}/tests/mean_test.rs | 10 +++---- .../{ => src}/tests/my_sum_udaf_example.rs | 7 ++--- src/query/{ => src}/tests/percentile_test.rs | 10 ++++--- src/query/{ => src}/tests/polyval_test.rs | 9 ++++--- src/query/{ => src}/tests/pow.rs | 0 .../{ => src}/tests/query_engine_test.rs | 19 +++++-------- .../tests/scipy_stats_norm_cdf_test.rs | 9 ++++--- .../{ => src}/tests/scipy_stats_norm_pdf.rs | 9 ++++--- .../{ => src}/tests/time_range_filter_test.rs | 8 +++--- 14 files changed, 83 insertions(+), 55 deletions(-) create mode 100644 src/query/src/tests.rs rename src/query/{ => src}/tests/argmax_test.rs (96%) rename src/query/{ => src}/tests/argmin_test.rs (96%) rename src/query/{ => src}/tests/function.rs (95%) rename src/query/{ => src}/tests/mean_test.rs (96%) rename src/query/{ => src}/tests/my_sum_udaf_example.rs (98%) rename src/query/{ => src}/tests/percentile_test.rs (97%) rename src/query/{ => src}/tests/polyval_test.rs (96%) rename src/query/{ => src}/tests/pow.rs (100%) rename src/query/{ => src}/tests/query_engine_test.rs (93%) rename src/query/{ => src}/tests/scipy_stats_norm_cdf_test.rs (96%) rename src/query/{ => src}/tests/scipy_stats_norm_pdf.rs (96%) rename src/query/{ => src}/tests/time_range_filter_test.rs (96%) diff --git a/src/query/src/lib.rs b/src/query/src/lib.rs index 77203cf9bd..02fce7b982 100644 --- a/src/query/src/lib.rs +++ b/src/query/src/lib.rs @@ -26,6 +26,8 @@ pub mod plan; pub mod planner; pub mod query_engine; pub mod sql; +#[cfg(test)] +mod tests; pub use crate::datafusion::DfContextProviderAdapter; pub use crate::query_engine::{ diff --git a/src/query/src/tests.rs b/src/query/src/tests.rs new file mode 100644 index 0000000000..a95678a5fe --- /dev/null +++ b/src/query/src/tests.rs @@ -0,0 +1,27 @@ +// Copyright 2023 Greptime Team +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +mod argmax_test; +mod argmin_test; +mod mean_test; +mod my_sum_udaf_example; +mod percentile_test; +mod polyval_test; +mod query_engine_test; +mod scipy_stats_norm_cdf_test; +mod scipy_stats_norm_pdf; +mod time_range_filter_test; + +mod function; +mod pow; diff --git a/src/query/tests/argmax_test.rs b/src/query/src/tests/argmax_test.rs similarity index 96% rename from src/query/tests/argmax_test.rs rename to src/query/src/tests/argmax_test.rs index a2b45cb49b..1256b84591 100644 --- a/src/query/tests/argmax_test.rs +++ b/src/query/src/tests/argmax_test.rs @@ -12,8 +12,6 @@ // See the License for the specific language governing permissions and // limitations under the License. -mod function; - use std::sync::Arc; use common_query::Output; @@ -22,11 +20,13 @@ use common_recordbatch::{util, RecordBatch}; use datatypes::for_all_primitive_types; use datatypes::prelude::*; use datatypes::types::WrapperType; -use query::error::Result; -use query::parser::QueryLanguageParser; -use query::QueryEngine; use session::context::QueryContext; +use crate::error::Result; +use crate::parser::QueryLanguageParser; +use crate::tests::function; +use crate::QueryEngine; + #[tokio::test] async fn test_argmax_aggregator() -> Result<()> { common_telemetry::init_default_ut_logging(); diff --git a/src/query/tests/argmin_test.rs b/src/query/src/tests/argmin_test.rs similarity index 96% rename from src/query/tests/argmin_test.rs rename to src/query/src/tests/argmin_test.rs index 9ea9066cbc..17beb1d098 100644 --- a/src/query/tests/argmin_test.rs +++ b/src/query/src/tests/argmin_test.rs @@ -12,8 +12,6 @@ // See the License for the specific language governing permissions and // limitations under the License. -mod function; - use std::sync::Arc; use common_query::Output; @@ -22,11 +20,13 @@ use common_recordbatch::{util, RecordBatch}; use datatypes::for_all_primitive_types; use datatypes::prelude::*; use datatypes::types::WrapperType; -use query::error::Result; -use query::parser::QueryLanguageParser; -use query::QueryEngine; use session::context::QueryContext; +use crate::error::Result; +use crate::parser::QueryLanguageParser; +use crate::tests::function; +use crate::QueryEngine; + #[tokio::test] async fn test_argmin_aggregator() -> Result<()> { common_telemetry::init_default_ut_logging(); diff --git a/src/query/tests/function.rs b/src/query/src/tests/function.rs similarity index 95% rename from src/query/tests/function.rs rename to src/query/src/tests/function.rs index bebfad49ae..71748390c9 100644 --- a/src/query/tests/function.rs +++ b/src/query/src/tests/function.rs @@ -12,8 +12,6 @@ // See the License for the specific language governing permissions and // limitations under the License. -// FIXME(yingwen): Consider move all tests under query/tests to query/src so we could reuse -// more codes. use std::sync::Arc; use catalog::local::{MemoryCatalogManager, MemoryCatalogProvider, MemorySchemaProvider}; @@ -26,13 +24,13 @@ use datatypes::prelude::*; use datatypes::schema::{ColumnSchema, Schema}; use datatypes::types::WrapperType; use datatypes::vectors::Helper; -use query::parser::QueryLanguageParser; -use query::query_engine::QueryEngineFactory; -use query::QueryEngine; use rand::Rng; use session::context::QueryContext; use table::test_util::MemTable; +use crate::parser::QueryLanguageParser; +use crate::{QueryEngine, QueryEngineFactory}; + pub fn create_query_engine() -> Arc { let schema_provider = Arc::new(MemorySchemaProvider::new()); let catalog_provider = Arc::new(MemoryCatalogProvider::new()); diff --git a/src/query/tests/mean_test.rs b/src/query/src/tests/mean_test.rs similarity index 96% rename from src/query/tests/mean_test.rs rename to src/query/src/tests/mean_test.rs index fdc682517a..54f34a6de7 100644 --- a/src/query/tests/mean_test.rs +++ b/src/query/src/tests/mean_test.rs @@ -12,8 +12,6 @@ // See the License for the specific language governing permissions and // limitations under the License. -mod function; - use std::sync::Arc; use common_query::Output; @@ -25,11 +23,13 @@ use datatypes::types::WrapperType; use datatypes::value::OrderedFloat; use format_num::NumberFormat; use num_traits::AsPrimitive; -use query::error::Result; -use query::parser::QueryLanguageParser; -use query::QueryEngine; use session::context::QueryContext; +use crate::error::Result; +use crate::parser::QueryLanguageParser; +use crate::tests::function; +use crate::QueryEngine; + #[tokio::test] async fn test_mean_aggregator() -> Result<()> { common_telemetry::init_default_ut_logging(); diff --git a/src/query/tests/my_sum_udaf_example.rs b/src/query/src/tests/my_sum_udaf_example.rs similarity index 98% rename from src/query/tests/my_sum_udaf_example.rs rename to src/query/src/tests/my_sum_udaf_example.rs index 5e76fd6f1d..9d240ba436 100644 --- a/src/query/tests/my_sum_udaf_example.rs +++ b/src/query/src/tests/my_sum_udaf_example.rs @@ -32,12 +32,13 @@ use datatypes::types::{LogicalPrimitiveType, WrapperType}; use datatypes::vectors::Helper; use datatypes::with_match_primitive_type_id; use num_traits::AsPrimitive; -use query::error::Result; -use query::parser::QueryLanguageParser; -use query::QueryEngineFactory; use session::context::QueryContext; use table::test_util::MemTable; +use crate::error::Result; +use crate::parser::QueryLanguageParser; +use crate::QueryEngineFactory; + #[derive(Debug, Default)] struct MySumAccumulator { sum: SumT, diff --git a/src/query/tests/percentile_test.rs b/src/query/src/tests/percentile_test.rs similarity index 97% rename from src/query/tests/percentile_test.rs rename to src/query/src/tests/percentile_test.rs index 801aa22dc2..03ccae2e5a 100644 --- a/src/query/tests/percentile_test.rs +++ b/src/query/src/tests/percentile_test.rs @@ -13,7 +13,7 @@ // limitations under the License. use std::sync::Arc; -mod function; + use catalog::local::{MemoryCatalogManager, MemoryCatalogProvider, MemorySchemaProvider}; use catalog::{CatalogList, CatalogProvider, SchemaProvider}; use common_catalog::consts::{DEFAULT_CATALOG_NAME, DEFAULT_SCHEMA_NAME}; @@ -26,12 +26,14 @@ use datatypes::schema::{ColumnSchema, Schema}; use datatypes::vectors::Int32Vector; use function::{create_query_engine, get_numbers_from_table}; use num_traits::AsPrimitive; -use query::error::Result; -use query::parser::QueryLanguageParser; -use query::{QueryEngine, QueryEngineFactory}; use session::context::QueryContext; use table::test_util::MemTable; +use crate::error::Result; +use crate::parser::QueryLanguageParser; +use crate::tests::function; +use crate::{QueryEngine, QueryEngineFactory}; + #[tokio::test] async fn test_percentile_aggregator() -> Result<()> { common_telemetry::init_default_ut_logging(); diff --git a/src/query/tests/polyval_test.rs b/src/query/src/tests/polyval_test.rs similarity index 96% rename from src/query/tests/polyval_test.rs rename to src/query/src/tests/polyval_test.rs index acf2c4d236..c44a38e61a 100644 --- a/src/query/tests/polyval_test.rs +++ b/src/query/src/tests/polyval_test.rs @@ -13,7 +13,6 @@ // limitations under the License. use std::sync::Arc; -mod function; use common_query::Output; use common_recordbatch::error::Result as RecordResult; @@ -22,11 +21,13 @@ use datatypes::for_all_primitive_types; use datatypes::prelude::*; use datatypes::types::WrapperType; use num_traits::AsPrimitive; -use query::error::Result; -use query::parser::QueryLanguageParser; -use query::QueryEngine; use session::context::QueryContext; +use crate::error::Result; +use crate::parser::QueryLanguageParser; +use crate::tests::function; +use crate::QueryEngine; + #[tokio::test] async fn test_polyval_aggregator() -> Result<()> { common_telemetry::init_default_ut_logging(); diff --git a/src/query/tests/pow.rs b/src/query/src/tests/pow.rs similarity index 100% rename from src/query/tests/pow.rs rename to src/query/src/tests/pow.rs diff --git a/src/query/tests/query_engine_test.rs b/src/query/src/tests/query_engine_test.rs similarity index 93% rename from src/query/tests/query_engine_test.rs rename to src/query/src/tests/query_engine_test.rs index 9c642427f8..93053704b5 100644 --- a/src/query/tests/query_engine_test.rs +++ b/src/query/src/tests/query_engine_test.rs @@ -12,13 +12,6 @@ // See the License for the specific language governing permissions and // limitations under the License. -mod pow; -// This is used to suppress the warning: function `create_query_engine` is never used. -// FIXME(yingwen): We finally need to refactor these tests and move them to `query/src` -// so tests can share codes with other mods. -#[allow(unused)] -mod function; - use std::sync::Arc; use catalog::local::{MemoryCatalogManager, MemoryCatalogProvider, MemorySchemaProvider}; @@ -34,18 +27,18 @@ use datafusion_expr::logical_plan::builder::LogicalPlanBuilder; use datatypes::prelude::*; use datatypes::schema::{ColumnSchema, Schema}; use datatypes::vectors::UInt32Vector; -use query::error::{QueryExecutionSnafu, Result}; -use query::parser::QueryLanguageParser; -use query::plan::LogicalPlan; -use query::query_engine::options::QueryOptions; -use query::query_engine::QueryEngineFactory; use session::context::QueryContext; use snafu::ResultExt; use table::table::adapter::DfTableProviderAdapter; use table::table::numbers::NumbersTable; use table::test_util::MemTable; -use crate::pow::pow; +use crate::error::{QueryExecutionSnafu, Result}; +use crate::parser::QueryLanguageParser; +use crate::plan::LogicalPlan; +use crate::query_engine::options::QueryOptions; +use crate::query_engine::QueryEngineFactory; +use crate::tests::pow::pow; #[tokio::test] async fn test_datafusion_query_engine() -> Result<()> { diff --git a/src/query/tests/scipy_stats_norm_cdf_test.rs b/src/query/src/tests/scipy_stats_norm_cdf_test.rs similarity index 96% rename from src/query/tests/scipy_stats_norm_cdf_test.rs rename to src/query/src/tests/scipy_stats_norm_cdf_test.rs index 08e01b1a71..85a55d613b 100644 --- a/src/query/tests/scipy_stats_norm_cdf_test.rs +++ b/src/query/src/tests/scipy_stats_norm_cdf_test.rs @@ -13,7 +13,6 @@ // limitations under the License. use std::sync::Arc; -mod function; use common_query::Output; use common_recordbatch::error::Result as RecordResult; @@ -21,13 +20,15 @@ use common_recordbatch::{util, RecordBatch}; use datatypes::for_all_primitive_types; use datatypes::types::WrapperType; use num_traits::AsPrimitive; -use query::error::Result; -use query::parser::QueryLanguageParser; -use query::QueryEngine; use session::context::QueryContext; use statrs::distribution::{ContinuousCDF, Normal}; use statrs::statistics::Statistics; +use crate::error::Result; +use crate::parser::QueryLanguageParser; +use crate::tests::function; +use crate::QueryEngine; + #[tokio::test] async fn test_scipy_stats_norm_cdf_aggregator() -> Result<()> { common_telemetry::init_default_ut_logging(); diff --git a/src/query/tests/scipy_stats_norm_pdf.rs b/src/query/src/tests/scipy_stats_norm_pdf.rs similarity index 96% rename from src/query/tests/scipy_stats_norm_pdf.rs rename to src/query/src/tests/scipy_stats_norm_pdf.rs index 6e8994c4e6..c7cd7916c7 100644 --- a/src/query/tests/scipy_stats_norm_pdf.rs +++ b/src/query/src/tests/scipy_stats_norm_pdf.rs @@ -13,7 +13,6 @@ // limitations under the License. use std::sync::Arc; -mod function; use common_query::Output; use common_recordbatch::error::Result as RecordResult; @@ -21,13 +20,15 @@ use common_recordbatch::{util, RecordBatch}; use datatypes::for_all_primitive_types; use datatypes::types::WrapperType; use num_traits::AsPrimitive; -use query::error::Result; -use query::parser::QueryLanguageParser; -use query::QueryEngine; use session::context::QueryContext; use statrs::distribution::{Continuous, Normal}; use statrs::statistics::Statistics; +use crate::error::Result; +use crate::parser::QueryLanguageParser; +use crate::tests::function; +use crate::QueryEngine; + #[tokio::test] async fn test_scipy_stats_norm_pdf_aggregator() -> Result<()> { common_telemetry::init_default_ut_logging(); diff --git a/src/query/tests/time_range_filter_test.rs b/src/query/src/tests/time_range_filter_test.rs similarity index 96% rename from src/query/tests/time_range_filter_test.rs rename to src/query/src/tests/time_range_filter_test.rs index aed523c340..4e200ebdf7 100644 --- a/src/query/tests/time_range_filter_test.rs +++ b/src/query/src/tests/time_range_filter_test.rs @@ -26,7 +26,6 @@ use common_time::Timestamp; use datatypes::data_type::ConcreteDataType; use datatypes::schema::{ColumnSchema, Schema, SchemaRef}; use datatypes::vectors::{Int64Vector, TimestampMillisecondVector}; -use query::QueryEngineRef; use session::context::QueryContext; use table::metadata::{FilterPushDownType, TableInfoRef}; use table::predicate::TimeRangePredicateBuilder; @@ -34,6 +33,9 @@ use table::test_util::MemTable; use table::Table; use tokio::sync::RwLock; +use crate::parser::QueryLanguageParser; +use crate::{QueryEngineFactory, QueryEngineRef}; + struct MemTableWrapper { inner: MemTable, filter: RwLock>, @@ -115,7 +117,7 @@ fn create_test_engine() -> TimeRangeTester { .register_catalog("greptime".to_string(), default_catalog) .unwrap(); - let engine = query::QueryEngineFactory::new(catalog_list).query_engine(); + let engine = QueryEngineFactory::new(catalog_list).query_engine(); TimeRangeTester { engine, table } } @@ -126,7 +128,7 @@ struct TimeRangeTester { impl TimeRangeTester { async fn check(&self, sql: &str, expect: TimestampRange) { - let stmt = query::parser::QueryLanguageParser::parse_sql(sql).unwrap(); + let stmt = QueryLanguageParser::parse_sql(sql).unwrap(); let _ = self .engine .execute(