@@ -449,28 +449,21 @@ fn write_fiber_attempts(fiber: &FiberHistory, f: &mut std::fmt::Formatter<'_>) -
449
449
450
450
#[ cfg( test) ]
451
451
mod tests {
452
- use std:: {
453
- net:: { IpAddr , Ipv4Addr , SocketAddr } ,
454
- sync:: Arc ,
455
- } ;
452
+ use std:: net:: { IpAddr , Ipv4Addr , SocketAddr } ;
456
453
457
454
use crate :: {
458
- query:: Query ,
459
455
retry_policy:: RetryDecision ,
460
456
test_utils:: setup_tracing,
461
457
transport:: errors:: { DbError , QueryError } ,
462
- utils:: test_utils:: unique_keyspace_name,
463
458
} ;
464
459
465
460
use super :: {
466
461
AttemptId , AttemptResult , HistoryCollector , HistoryListener , QueryHistoryResult , QueryId ,
467
462
SpeculativeId , StructuredHistory , TimePoint ,
468
463
} ;
469
- use crate :: test_utils:: create_new_session_builder;
470
464
use assert_matches:: assert_matches;
471
465
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 ;
474
467
475
468
// Set a single time for all timestamps within StructuredHistory.
476
469
// HistoryCollector sets the timestamp to current time which changes with each test.
@@ -510,53 +503,6 @@ mod tests {
510
503
history
511
504
}
512
505
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
-
560
506
fn node1_addr ( ) -> SocketAddr {
561
507
SocketAddr :: new ( IpAddr :: V4 ( Ipv4Addr :: new ( 127 , 0 , 0 , 1 ) ) , 19042 )
562
508
}
@@ -913,195 +859,4 @@ mod tests {
913
859
" ;
914
860
assert_eq ! ( displayed, format!( "{}" , set_one_time( history) ) ) ;
915
861
}
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
- }
1107
862
}
0 commit comments