Skip to content

Commit 29d09e0

Browse files
committed
scylla integration tests: introduce setup_tracing()
As described in the previous commit, setup_tracing() enables captured trace output for tests. Not to make scylla crate depend on tracing_subscriber (now it's only a dev-dependency), the function is simply copied to integration/utils.rs. Integration tests are made call that function at the beginning.
1 parent 75ea549 commit 29d09e0

File tree

9 files changed

+27
-10
lines changed

9 files changed

+27
-10
lines changed

scylla/tests/integration/consistency.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use crate::utils::test_with_3_node_cluster;
1+
use crate::utils::{setup_tracing, test_with_3_node_cluster};
22

33
use scylla::execution_profile::{ExecutionProfileBuilder, ExecutionProfileHandle};
44
use scylla::load_balancing::{DefaultPolicy, LoadBalancingPolicy, RoutingInfo};
@@ -256,6 +256,7 @@ async fn check_for_all_consistencies_and_setting_options<
256256
#[ntest::timeout(60000)]
257257
#[cfg(not(scylla_cloud_tests))]
258258
async fn consistency_is_correctly_set_in_cql_requests() {
259+
setup_tracing();
259260
let res = test_with_3_node_cluster(
260261
ShardAwareness::QueryNode,
261262
|proxy_uris, translation_map, mut running_proxy| async move {
@@ -407,6 +408,7 @@ impl LoadBalancingPolicy for RoutingInfoReportingWrapper {
407408
#[ntest::timeout(60000)]
408409
#[cfg(not(scylla_cloud_tests))]
409410
async fn consistency_is_correctly_set_in_routing_info() {
411+
setup_tracing();
410412
let uri = std::env::var("SCYLLA_URI").unwrap_or_else(|_| "127.0.0.1:9042".to_string());
411413
let ks = unique_keyspace_name();
412414

@@ -465,6 +467,7 @@ async fn consistency_is_correctly_set_in_routing_info() {
465467
#[ntest::timeout(60000)]
466468
#[cfg(not(scylla_cloud_tests))]
467469
async fn consistency_allows_for_paxos_selects() {
470+
setup_tracing();
468471
let uri = std::env::var("SCYLLA_URI").unwrap_or_else(|_| "127.0.0.1:9042".to_string());
469472

470473
let session = SessionBuilder::new()

scylla/tests/integration/execution_profiles.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use std::ops::Deref;
22
use std::sync::Arc;
33

4-
use crate::utils::test_with_3_node_cluster;
4+
use crate::utils::{setup_tracing, test_with_3_node_cluster};
55
use assert_matches::assert_matches;
66
use scylla::batch::BatchStatement;
77
use scylla::batch::{Batch, BatchType};
@@ -124,6 +124,7 @@ impl<const NODE: u8> SpeculativeExecutionPolicy for BoundToPredefinedNodePolicy<
124124
#[ntest::timeout(20000)]
125125
#[cfg(not(scylla_cloud_tests))]
126126
async fn test_execution_profiles() {
127+
setup_tracing();
127128
let res = test_with_3_node_cluster(ShardAwareness::QueryNode, |proxy_uris, translation_map, mut running_proxy| async move {
128129

129130
let (routing_tx, mut profile_rx) = mpsc::unbounded_channel();

scylla/tests/integration/lwt_optimisation.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
use crate::utils::test_with_3_node_cluster;
1+
use crate::utils::{setup_tracing, test_with_3_node_cluster};
2+
23
use scylla::frame::types;
34
use scylla::retry_policy::FallthroughRetryPolicy;
45
use scylla::transport::session::Session;
@@ -16,6 +17,8 @@ use scylla_proxy::{
1617
#[ntest::timeout(20000)]
1718
#[cfg(not(scylla_cloud_tests))]
1819
async fn if_lwt_optimisation_mark_offered_then_negotiatied_and_lwt_routed_optimally() {
20+
setup_tracing();
21+
1922
// This is just to increase the likelihood that only intended prepared statements (which contain this mark) are captured by the proxy.
2023
const MAGIC_MARK: i32 = 123;
2124

scylla/tests/integration/new_session.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
1+
use crate::utils::setup_tracing;
2+
13
use assert_matches::assert_matches;
24
use scylla::SessionBuilder;
35
use scylla_cql::errors::NewSessionError;
46

57
#[cfg(not(scylla_cloud_tests))]
68
#[tokio::test]
79
async fn proceed_if_only_some_hostnames_are_invalid() {
10+
setup_tracing();
811
// on purpose left without port
912
let uri1 = "scylladbisthefastestdb.invalid".to_owned();
1013
// correctly provided port, but unknown domain
@@ -25,6 +28,7 @@ async fn proceed_if_only_some_hostnames_are_invalid() {
2528
#[cfg(not(scylla_cloud_tests))]
2629
#[tokio::test]
2730
async fn all_hostnames_invalid() {
31+
setup_tracing();
2832
let uri = "cassandrasuckssomuch.invalid:9042".to_owned();
2933

3034
assert_matches!(

scylla/tests/integration/retries.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use crate::utils::test_with_3_node_cluster;
1+
use crate::utils::{setup_tracing, test_with_3_node_cluster};
22
use scylla::retry_policy::FallthroughRetryPolicy;
33
use scylla::speculative_execution::SimpleSpeculativeExecutionPolicy;
44
use scylla::transport::session::Session;
@@ -18,6 +18,7 @@ use scylla_proxy::{
1818
#[ntest::timeout(30000)]
1919
#[cfg(not(scylla_cloud_tests))]
2020
async fn speculative_execution_is_fired() {
21+
setup_tracing();
2122
const TIMEOUT_PER_REQUEST: Duration = Duration::from_millis(1000);
2223

2324
let res = test_with_3_node_cluster(ShardAwareness::QueryNode, |proxy_uris, translation_map, mut running_proxy| async move {
@@ -99,6 +100,7 @@ async fn speculative_execution_is_fired() {
99100
#[ntest::timeout(30000)]
100101
#[cfg(not(scylla_cloud_tests))]
101102
async fn retries_occur() {
103+
setup_tracing();
102104
let res = test_with_3_node_cluster(ShardAwareness::QueryNode, |proxy_uris, translation_map, mut running_proxy| async move {
103105

104106
// DB preparation phase

scylla/tests/integration/shards.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use std::sync::Arc;
22

3-
use crate::utils::test_with_3_node_cluster;
3+
use crate::utils::{setup_tracing, test_with_3_node_cluster};
44
use scylla::{test_utils::unique_keyspace_name, SessionBuilder};
55
use tokio::sync::mpsc;
66

@@ -14,6 +14,7 @@ use scylla_proxy::{ProxyError, RequestFrame, WorkerError};
1414
#[ntest::timeout(30000)]
1515
#[cfg(not(scylla_cloud_tests))]
1616
async fn test_consistent_shard_awareness() {
17+
setup_tracing();
1718
use std::collections::HashSet;
1819

1920
let res = test_with_3_node_cluster(ShardAwareness::QueryNode, |proxy_uris, translation_map, mut running_proxy| async move {

scylla/tests/integration/silent_prepare_query.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use crate::utils::test_with_3_node_cluster;
1+
use crate::utils::{setup_tracing, test_with_3_node_cluster};
22
use scylla::transport::session::Session;
33
use scylla::SessionBuilder;
44
use scylla::{query::Query, test_utils::unique_keyspace_name};
@@ -13,6 +13,7 @@ use std::time::Duration;
1313
#[ntest::timeout(30000)]
1414
#[cfg(not(scylla_cloud_tests))]
1515
async fn test_prepare_query_with_values() {
16+
setup_tracing();
1617
// unprepared query with non empty values should be prepared
1718
const TIMEOUT_PER_REQUEST: Duration = Duration::from_millis(1000);
1819

@@ -63,6 +64,7 @@ async fn test_prepare_query_with_values() {
6364
#[ntest::timeout(30000)]
6465
#[cfg(not(scylla_cloud_tests))]
6566
async fn test_query_with_no_values() {
67+
setup_tracing();
6668
// unprepared query with empty values should not be prepared
6769
const TIMEOUT_PER_REQUEST: Duration = Duration::from_millis(1000);
6870

scylla/tests/integration/skip_metadata_optimization.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use crate::utils::test_with_3_node_cluster;
1+
use crate::utils::{setup_tracing, test_with_3_node_cluster};
22
use scylla::transport::session::Session;
33
use scylla::SessionBuilder;
44
use scylla::{prepared_statement::PreparedStatement, test_utils::unique_keyspace_name};
@@ -13,6 +13,7 @@ use std::sync::Arc;
1313
#[ntest::timeout(20000)]
1414
#[cfg(not(scylla_cloud_tests))]
1515
async fn test_skip_result_metadata() {
16+
setup_tracing();
1617
use scylla_proxy::{ResponseOpcode, ResponseRule};
1718

1819
const NO_METADATA_FLAG: i32 = 0x0004;

scylla/tests/integration/utils.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,11 @@ use tracing::instrument::WithSubscriber;
1111

1212
use scylla_proxy::{Node, Proxy, ProxyError, RunningProxy, ShardAwareness};
1313

14-
pub(crate) fn init_logger() {
14+
#[cfg(test)]
15+
pub(crate) fn setup_tracing() {
1516
let _ = tracing_subscriber::fmt::fmt()
1617
.with_env_filter(tracing_subscriber::EnvFilter::from_default_env())
17-
.without_time()
18+
.with_writer(tracing_subscriber::fmt::TestWriter::new())
1819
.try_init();
1920
}
2021

@@ -86,7 +87,6 @@ where
8687
F: FnOnce([String; 3], HashMap<SocketAddr, SocketAddr>, RunningProxy) -> Fut,
8788
Fut: Future<Output = RunningProxy>,
8889
{
89-
init_logger();
9090
let real1_uri = env::var("SCYLLA_URI").unwrap_or_else(|_| "127.0.0.1:9042".to_string());
9191
let proxy1_uri = format!("{}:9042", scylla_proxy::get_exclusive_local_address());
9292
let real2_uri = env::var("SCYLLA_URI2").unwrap_or_else(|_| "127.0.0.2:9042".to_string());

0 commit comments

Comments
 (0)