Skip to content

Commit 69290df

Browse files
Add tests for query API for errors/no results
1 parent 8206bc0 commit 69290df

File tree

1 file changed

+74
-0
lines changed

1 file changed

+74
-0
lines changed

scylla/tests/integration/query_result.rs

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1+
use assert_matches::assert_matches;
12
use futures::TryStreamExt;
3+
use scylla::errors::PagerExecutionError;
24
use scylla::{
35
batch::{Batch, BatchType},
46
client::session::Session,
@@ -136,6 +138,44 @@ async fn query_iter_should_iterate_over_all_pages_asynchronously_cross_partition
136138
assert_eq!(i, 2 * ROWS_PER_PARTITION);
137139
}
138140

141+
#[tokio::test]
142+
async fn query_iter_no_results() {
143+
let (session, ks) = initialize_cluster_two_partitions().await;
144+
145+
let query = Query::new(format!("SELECT * FROM {}.t where k0 = ?", ks));
146+
147+
let query_result = session.query_iter(query, ("part3",)).await.unwrap();
148+
let mut iter = query_result.rows_stream::<(String, i32, i32)>().unwrap();
149+
150+
assert_eq!(iter.try_next().await.unwrap(), None);
151+
}
152+
153+
#[tokio::test]
154+
async fn query_iter_prepare_error() {
155+
let (session, ks) = initialize_cluster_two_partitions().await;
156+
157+
// Wrong table name
158+
let query = Query::new(format!("SELECT * FROM {}.test where k0 = ?", ks));
159+
160+
assert_matches!(
161+
session.query_iter(query, (PARTITION_KEY1,)).await,
162+
Err(PagerExecutionError::PrepareError(_))
163+
);
164+
}
165+
166+
#[tokio::test]
167+
async fn query_iter_serialization_error() {
168+
let (session, ks) = initialize_cluster_two_partitions().await;
169+
170+
let query = Query::new(format!("SELECT * FROM {}.t where k0 = ?", ks));
171+
172+
// Wrong value type
173+
assert_matches!(
174+
session.query_iter(query, (1,)).await,
175+
Err(PagerExecutionError::SerializationError(_))
176+
);
177+
}
178+
139179
#[tokio::test]
140180
async fn execute_single_page_should_only_iterate_over_rows_in_current_page() {
141181
let (session, ks) = initialize_cluster_two_partitions().await;
@@ -221,3 +261,37 @@ async fn execute_iter_should_iterate_over_all_pages_asynchronously_cross_partiti
221261
}
222262
assert_eq!(i, 2 * ROWS_PER_PARTITION);
223263
}
264+
265+
#[tokio::test]
266+
async fn execute_iter_no_results() {
267+
let (session, ks) = initialize_cluster_two_partitions().await;
268+
269+
let prepared_query = session
270+
.prepare(format!("SELECT * FROM {}.t where k0 = ?", ks))
271+
.await
272+
.unwrap();
273+
274+
let query_result = session
275+
.execute_iter(prepared_query, ("part3",))
276+
.await
277+
.unwrap();
278+
let mut iter = query_result.rows_stream::<(String, i32, i32)>().unwrap();
279+
280+
assert_eq!(iter.try_next().await.unwrap(), None);
281+
}
282+
283+
#[tokio::test]
284+
async fn execute_iter_serialization_error() {
285+
let (session, ks) = initialize_cluster_two_partitions().await;
286+
287+
let prepared_query = session
288+
.prepare(format!("SELECT * FROM {}.t where k0 = ?", ks))
289+
.await
290+
.unwrap();
291+
292+
// Wrong value type
293+
assert_matches!(
294+
session.execute_iter(prepared_query, (1,)).await,
295+
Err(PagerExecutionError::SerializationError(_))
296+
)
297+
}

0 commit comments

Comments
 (0)