test: Translate the filter_on_value test using field ref (#6734)
parent
0d32662eea
commit
11233e3b3b
|
@ -2,16 +2,17 @@ use super::{dump::dump_data_frames, read_group_data, run_data_test, InfluxRpcTes
|
|||
use async_trait::async_trait;
|
||||
use futures::{prelude::*, FutureExt};
|
||||
use generated_types::{
|
||||
node::{Comparison, Logical},
|
||||
node::{Comparison, Logical, Type as NodeType, Value},
|
||||
read_response::frame::Data,
|
||||
storage_client::StorageClient,
|
||||
Predicate, ReadFilterRequest,
|
||||
Node, Predicate, ReadFilterRequest,
|
||||
};
|
||||
use influxdb_iox_client::connection::GrpcConnection;
|
||||
use std::sync::Arc;
|
||||
use test_helpers_end_to_end::{
|
||||
comparison_expression_node, maybe_skip_integration, string_value_node, DataGenerator,
|
||||
GrpcRequestBuilder, MiniCluster, Step, StepTest, StepTestState,
|
||||
comparison_expression_node, field_ref_node, float_value_node, maybe_skip_integration,
|
||||
string_value_node, tag_ref_node, DataGenerator, GrpcRequestBuilder, MiniCluster, Step,
|
||||
StepTest, StepTestState,
|
||||
};
|
||||
|
||||
#[tokio::test]
|
||||
|
@ -860,25 +861,38 @@ async fn data_plan_order() {
|
|||
.await;
|
||||
}
|
||||
|
||||
// #[tokio::test]
|
||||
// async fn filter_on_value() {
|
||||
// // This is how the test existed in query tests:
|
||||
//
|
||||
// test_helpers::maybe_start_logging();
|
||||
//
|
||||
// let predicate = Predicate::default()
|
||||
// .with_expr(col("_value").eq(lit(1.77)))
|
||||
// .with_expr(col("_field").eq(lit("load4")));
|
||||
// let predicate = InfluxRpcPredicate::new(None, predicate);
|
||||
//
|
||||
// let expected_results = vec![
|
||||
// "Series tags={_field=load4, _measurement=system, host=host.local}\n FloatPoints timestamps: [1527018806000000000, 1527018826000000000], values: [1.77, 1.77]",
|
||||
// ];
|
||||
//
|
||||
// run_read_filter_test_case(MeasurementsForDefect2845 {}, predicate, expected_results).await;
|
||||
//
|
||||
// // I can't figure out how to create a `_value=` expression.
|
||||
// }
|
||||
#[tokio::test]
|
||||
async fn filter_on_value() {
|
||||
let node1 = comparison_expression_node(
|
||||
field_ref_node("_value"),
|
||||
Comparison::Equal,
|
||||
float_value_node(1.77),
|
||||
);
|
||||
let node2 = comparison_expression_node(
|
||||
tag_ref_node([255].to_vec()),
|
||||
Comparison::Equal,
|
||||
string_value_node("load4"),
|
||||
);
|
||||
let predicate = Predicate {
|
||||
root: Some(Node {
|
||||
node_type: NodeType::LogicalExpression as i32,
|
||||
children: vec![node1, node2],
|
||||
value: Some(Value::Logical(Logical::And as i32)),
|
||||
}),
|
||||
};
|
||||
|
||||
Arc::new(ReadFilterTest {
|
||||
setup_name: "MeasurementsForDefect2845",
|
||||
request: GrpcRequestBuilder::new().predicate(predicate),
|
||||
expected_results: vec![
|
||||
"SeriesFrame, tags: _field=load4,_measurement=system,host=host.local, type: 0",
|
||||
"FloatPointsFrame, timestamps: [1527018806000000000, 1527018826000000000], \
|
||||
values: \"1.77,1.77\"",
|
||||
],
|
||||
})
|
||||
.run()
|
||||
.await;
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
#[should_panic(expected = "Unsupported _field predicate")]
|
||||
|
|
|
@ -415,6 +415,14 @@ impl GrpcRequestBuilder {
|
|||
}
|
||||
}
|
||||
|
||||
pub fn field_ref_node(field_name: impl Into<String>) -> Node {
|
||||
Node {
|
||||
node_type: NodeType::FieldRef.into(),
|
||||
children: vec![],
|
||||
value: Some(Value::FieldRefValue(field_name.into())),
|
||||
}
|
||||
}
|
||||
|
||||
pub fn tag_ref_node(tag_name: impl Into<Vec<u8>>) -> Node {
|
||||
Node {
|
||||
node_type: NodeType::TagRef as i32,
|
||||
|
@ -431,6 +439,14 @@ pub fn string_value_node(value: impl Into<String>) -> Node {
|
|||
}
|
||||
}
|
||||
|
||||
pub fn float_value_node(value: f64) -> Node {
|
||||
Node {
|
||||
node_type: NodeType::Literal as i32,
|
||||
children: vec![],
|
||||
value: Some(Value::FloatValue(value)),
|
||||
}
|
||||
}
|
||||
|
||||
pub fn comparison_expression_node(lhs: Node, comparison: Comparison, rhs: Node) -> Node {
|
||||
Node {
|
||||
node_type: NodeType::ComparisonExpression as i32,
|
||||
|
|
|
@ -22,7 +22,10 @@ pub use client::*;
|
|||
pub use config::TestConfig;
|
||||
pub use data_generator::DataGenerator;
|
||||
pub use error::{check_flight_error, check_tonic_status};
|
||||
pub use grpc::{comparison_expression_node, string_value_node, GrpcRequestBuilder};
|
||||
pub use grpc::{
|
||||
comparison_expression_node, field_ref_node, float_value_node, string_value_node, tag_ref_node,
|
||||
GrpcRequestBuilder,
|
||||
};
|
||||
pub use mini_cluster::MiniCluster;
|
||||
pub use server_fixture::{ServerFixture, TestServer};
|
||||
pub use server_type::{AddAddrEnv, ServerType};
|
||||
|
|
Loading…
Reference in New Issue