Skip to content

Commit be14812

Browse files
authored
Merge pull request #1102 from Lorak-mmk/overhaul-integration-tests
Move some tests to integration
2 parents dbcb168 + 2b5a084 commit be14812

24 files changed

+500
-383
lines changed

scylla/src/history.rs

Lines changed: 2 additions & 247 deletions
Original file line numberDiff line numberDiff line change
@@ -449,28 +449,21 @@ fn write_fiber_attempts(fiber: &FiberHistory, f: &mut std::fmt::Formatter<'_>) -
449449

450450
#[cfg(test)]
451451
mod tests {
452-
use std::{
453-
net::{IpAddr, Ipv4Addr, SocketAddr},
454-
sync::Arc,
455-
};
452+
use std::net::{IpAddr, Ipv4Addr, SocketAddr};
456453

457454
use crate::{
458-
query::Query,
459455
retry_policy::RetryDecision,
460456
test_utils::setup_tracing,
461457
transport::errors::{DbError, QueryError},
462-
utils::test_utils::unique_keyspace_name,
463458
};
464459

465460
use super::{
466461
AttemptId, AttemptResult, HistoryCollector, HistoryListener, QueryHistoryResult, QueryId,
467462
SpeculativeId, StructuredHistory, TimePoint,
468463
};
469-
use crate::test_utils::create_new_session_builder;
470464
use assert_matches::assert_matches;
471465
use chrono::{DateTime, NaiveDate, NaiveDateTime, NaiveTime, Utc};
472-
use futures::StreamExt as _;
473-
use scylla_cql::{frame::response::result::Row, Consistency};
466+
use scylla_cql::Consistency;
474467

475468
// Set a single time for all timestamps within StructuredHistory.
476469
// HistoryCollector sets the timestamp to current time which changes with each test.
@@ -510,53 +503,6 @@ mod tests {
510503
history
511504
}
512505

513-
// Set a single node for all attempts within StructuredHistory.
514-
// When running against real life nodes this address may change,
515-
// setting it to one value makes it possible to run tests consistently.
516-
fn set_one_node(mut history: StructuredHistory) -> StructuredHistory {
517-
let the_node: SocketAddr = node1_addr();
518-
519-
for query in &mut history.queries {
520-
for fiber in std::iter::once(&mut query.non_speculative_fiber)
521-
.chain(query.speculative_fibers.iter_mut())
522-
{
523-
for attempt in &mut fiber.attempts {
524-
attempt.node_addr = the_node;
525-
}
526-
}
527-
}
528-
529-
history
530-
}
531-
532-
// Set a single error message for all DbErrors within StructuredHistory.
533-
// The error message changes between Scylla/Cassandra/their versions.
534-
// Setting it to one value makes it possible to run tests consistently.
535-
fn set_one_db_error_message(mut history: StructuredHistory) -> StructuredHistory {
536-
let set_msg = |err: &mut QueryError| {
537-
if let QueryError::DbError(_, msg) = err {
538-
*msg = "Error message from database".to_string();
539-
}
540-
};
541-
542-
for query in &mut history.queries {
543-
if let Some(QueryHistoryResult::Error(_, err)) = &mut query.result {
544-
set_msg(err);
545-
}
546-
for fiber in std::iter::once(&mut query.non_speculative_fiber)
547-
.chain(query.speculative_fibers.iter_mut())
548-
{
549-
for attempt in &mut fiber.attempts {
550-
if let Some(AttemptResult::Error(_, err, _)) = &mut attempt.result {
551-
set_msg(err);
552-
}
553-
}
554-
}
555-
}
556-
557-
history
558-
}
559-
560506
fn node1_addr() -> SocketAddr {
561507
SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 19042)
562508
}
@@ -913,195 +859,4 @@ mod tests {
913859
";
914860
assert_eq!(displayed, format!("{}", set_one_time(history)));
915861
}
916-
917-
#[tokio::test]
918-
async fn successful_query_history() {
919-
setup_tracing();
920-
let session = create_new_session_builder().build().await.unwrap();
921-
922-
let mut query = Query::new("SELECT * FROM system.local");
923-
let history_collector = Arc::new(HistoryCollector::new());
924-
query.set_history_listener(history_collector.clone());
925-
926-
session.query_unpaged(query.clone(), ()).await.unwrap();
927-
928-
let history: StructuredHistory = history_collector.clone_structured_history();
929-
930-
let displayed = "Queries History:
931-
=== Query #0 ===
932-
| start_time: 2022-02-22 20:22:22 UTC
933-
| Non-speculative attempts:
934-
| - Attempt #0 sent to 127.0.0.1:19042
935-
| request send time: 2022-02-22 20:22:22 UTC
936-
| Success at 2022-02-22 20:22:22 UTC
937-
|
938-
| Query successful at 2022-02-22 20:22:22 UTC
939-
=================
940-
";
941-
assert_eq!(
942-
displayed,
943-
format!(
944-
"{}",
945-
set_one_db_error_message(set_one_node(set_one_time(history)))
946-
)
947-
);
948-
949-
// Prepared queries retain the history listener set in Query.
950-
let prepared = session.prepare(query).await.unwrap();
951-
session.execute_unpaged(&prepared, ()).await.unwrap();
952-
953-
let history2: StructuredHistory = history_collector.clone_structured_history();
954-
955-
let displayed2 = "Queries History:
956-
=== Query #0 ===
957-
| start_time: 2022-02-22 20:22:22 UTC
958-
| Non-speculative attempts:
959-
| - Attempt #0 sent to 127.0.0.1:19042
960-
| request send time: 2022-02-22 20:22:22 UTC
961-
| Success at 2022-02-22 20:22:22 UTC
962-
|
963-
| Query successful at 2022-02-22 20:22:22 UTC
964-
=================
965-
=== Query #1 ===
966-
| start_time: 2022-02-22 20:22:22 UTC
967-
| Non-speculative attempts:
968-
| - Attempt #0 sent to 127.0.0.1:19042
969-
| request send time: 2022-02-22 20:22:22 UTC
970-
| Success at 2022-02-22 20:22:22 UTC
971-
|
972-
| Query successful at 2022-02-22 20:22:22 UTC
973-
=================
974-
";
975-
assert_eq!(
976-
displayed2,
977-
format!(
978-
"{}",
979-
set_one_db_error_message(set_one_node(set_one_time(history2)))
980-
)
981-
);
982-
}
983-
984-
#[tokio::test]
985-
async fn failed_query_history() {
986-
setup_tracing();
987-
let session = create_new_session_builder().build().await.unwrap();
988-
989-
let mut query = Query::new("This isnt even CQL");
990-
let history_collector = Arc::new(HistoryCollector::new());
991-
query.set_history_listener(history_collector.clone());
992-
993-
assert!(session.query_unpaged(query.clone(), ()).await.is_err());
994-
995-
let history: StructuredHistory = history_collector.clone_structured_history();
996-
997-
let displayed =
998-
"Queries History:
999-
=== Query #0 ===
1000-
| start_time: 2022-02-22 20:22:22 UTC
1001-
| Non-speculative attempts:
1002-
| - Attempt #0 sent to 127.0.0.1:19042
1003-
| request send time: 2022-02-22 20:22:22 UTC
1004-
| Error at 2022-02-22 20:22:22 UTC
1005-
| Error: Database returned an error: The submitted query has a syntax error, Error message: Error message from database
1006-
| Retry decision: DontRetry
1007-
|
1008-
| Query failed at 2022-02-22 20:22:22 UTC
1009-
| Error: Database returned an error: The submitted query has a syntax error, Error message: Error message from database
1010-
=================
1011-
";
1012-
assert_eq!(
1013-
displayed,
1014-
format!(
1015-
"{}",
1016-
set_one_db_error_message(set_one_node(set_one_time(history)))
1017-
)
1018-
);
1019-
}
1020-
1021-
#[tokio::test]
1022-
async fn iterator_query_history() {
1023-
setup_tracing();
1024-
let session = create_new_session_builder().build().await.unwrap();
1025-
let ks = unique_keyspace_name();
1026-
session
1027-
.query_unpaged(format!("CREATE KEYSPACE {} WITH REPLICATION = {{'class' : 'NetworkTopologyStrategy', 'replication_factor' : 1}}", ks), &[])
1028-
.await
1029-
.unwrap();
1030-
session.use_keyspace(ks, true).await.unwrap();
1031-
1032-
session
1033-
.query_unpaged("CREATE TABLE t (p int primary key)", ())
1034-
.await
1035-
.unwrap();
1036-
for i in 0..32 {
1037-
session
1038-
.query_unpaged("INSERT INTO t (p) VALUES (?)", (i,))
1039-
.await
1040-
.unwrap();
1041-
}
1042-
1043-
let mut iter_query: Query = Query::new("SELECT * FROM t");
1044-
iter_query.set_page_size(8);
1045-
let history_collector = Arc::new(HistoryCollector::new());
1046-
iter_query.set_history_listener(history_collector.clone());
1047-
1048-
let mut rows_iterator = session
1049-
.query_iter(iter_query, ())
1050-
.await
1051-
.unwrap()
1052-
.rows_stream::<Row>()
1053-
.unwrap();
1054-
while let Some(_row) = rows_iterator.next().await {
1055-
// Receive rows...
1056-
}
1057-
1058-
let history = history_collector.clone_structured_history();
1059-
1060-
assert!(history.queries.len() >= 4);
1061-
1062-
let displayed_prefix = "Queries History:
1063-
=== Query #0 ===
1064-
| start_time: 2022-02-22 20:22:22 UTC
1065-
| Non-speculative attempts:
1066-
| - Attempt #0 sent to 127.0.0.1:19042
1067-
| request send time: 2022-02-22 20:22:22 UTC
1068-
| Success at 2022-02-22 20:22:22 UTC
1069-
|
1070-
| Query successful at 2022-02-22 20:22:22 UTC
1071-
=================
1072-
=== Query #1 ===
1073-
| start_time: 2022-02-22 20:22:22 UTC
1074-
| Non-speculative attempts:
1075-
| - Attempt #0 sent to 127.0.0.1:19042
1076-
| request send time: 2022-02-22 20:22:22 UTC
1077-
| Success at 2022-02-22 20:22:22 UTC
1078-
|
1079-
| Query successful at 2022-02-22 20:22:22 UTC
1080-
=================
1081-
=== Query #2 ===
1082-
| start_time: 2022-02-22 20:22:22 UTC
1083-
| Non-speculative attempts:
1084-
| - Attempt #0 sent to 127.0.0.1:19042
1085-
| request send time: 2022-02-22 20:22:22 UTC
1086-
| Success at 2022-02-22 20:22:22 UTC
1087-
|
1088-
| Query successful at 2022-02-22 20:22:22 UTC
1089-
=================
1090-
=== Query #3 ===
1091-
| start_time: 2022-02-22 20:22:22 UTC
1092-
| Non-speculative attempts:
1093-
| - Attempt #0 sent to 127.0.0.1:19042
1094-
| request send time: 2022-02-22 20:22:22 UTC
1095-
| Success at 2022-02-22 20:22:22 UTC
1096-
|
1097-
| Query successful at 2022-02-22 20:22:22 UTC
1098-
=================
1099-
";
1100-
let displayed_str = format!(
1101-
"{}",
1102-
set_one_db_error_message(set_one_node(set_one_time(history)))
1103-
);
1104-
1105-
assert!(displayed_str.starts_with(displayed_prefix),);
1106-
}
1107862
}

scylla/src/lib.rs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -257,10 +257,8 @@ pub mod transport;
257257

258258
pub(crate) mod utils;
259259

260-
/// This module is NOT part of the public API (it is `pub` only for internal use of integration tests).
261-
/// Future minor releases are free to introduce breaking API changes inside it.
262-
#[doc(hidden)]
263-
pub use utils::test_utils;
260+
#[cfg(test)]
261+
pub(crate) use utils::test_utils;
264262

265263
pub use statement::batch;
266264
pub use statement::prepared_statement;

scylla/src/transport/load_balancing/default.rs

Lines changed: 1 addition & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -3128,7 +3128,7 @@ mod latency_awareness {
31283128
use crate::{
31293129
load_balancing::default::NodeLocationPreference,
31303130
routing::Shard,
3131-
test_utils::{create_new_session_builder, setup_tracing},
3131+
test_utils::setup_tracing,
31323132
transport::locator::test::{TABLE_INVALID, TABLE_NTS_RF_2, TABLE_NTS_RF_3},
31333133
};
31343134
use crate::{
@@ -3141,7 +3141,6 @@ mod latency_awareness {
31413141
locator::test::{id_to_invalid_addr, A, B, C, D, E, F, G},
31423142
ClusterData, NodeAddr,
31433143
},
3144-
ExecutionProfile,
31453144
};
31463145
use tokio::time::Instant;
31473146

@@ -3847,28 +3846,6 @@ mod latency_awareness {
38473846
}
38483847
}
38493848

3850-
// This is a regression test for #696.
3851-
#[tokio::test]
3852-
#[ntest::timeout(1000)]
3853-
async fn latency_aware_query_completes() {
3854-
setup_tracing();
3855-
let policy = DefaultPolicy::builder()
3856-
.latency_awareness(LatencyAwarenessBuilder::default())
3857-
.build();
3858-
let handle = ExecutionProfile::builder()
3859-
.load_balancing_policy(policy)
3860-
.build()
3861-
.into_handle();
3862-
3863-
let session = create_new_session_builder()
3864-
.default_execution_profile_handle(handle)
3865-
.build()
3866-
.await
3867-
.unwrap();
3868-
3869-
session.query_unpaged("whatever", ()).await.unwrap_err();
3870-
}
3871-
38723849
#[tokio::test(start_paused = true)]
38733850
async fn timestamped_average_works_when_clock_stops() {
38743851
setup_tracing();

scylla/src/transport/mod.rs

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -25,21 +25,8 @@ pub use connection::SelfIdentity;
2525
pub use execution_profile::ExecutionProfile;
2626
pub use scylla_cql::frame::request::query::{PagingState, PagingStateResponse};
2727

28-
#[cfg(test)]
29-
mod authenticate_test;
30-
#[cfg(test)]
31-
mod cql_collections_test;
3228
#[cfg(test)]
3329
mod session_test;
34-
#[cfg(test)]
35-
mod silent_prepare_batch_test;
36-
37-
#[cfg(test)]
38-
mod cql_types_test;
39-
#[cfg(test)]
40-
mod cql_value_test;
41-
#[cfg(test)]
42-
mod large_batch_statements_test;
4330

4431
pub use cluster::ClusterData;
4532
pub use node::{KnownNode, Node, NodeAddr, NodeRef};

scylla/src/utils/mod.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
pub(crate) mod parse;
22

33
pub(crate) mod pretty;
4-
pub mod test_utils;
4+
5+
#[cfg(test)]
6+
pub(crate) mod test_utils;

0 commit comments

Comments
 (0)