subtest telemetry_disabled_stmt_mode_on
# All of these should return false since telemetry logging is disabled.

set-cluster-settings telemetryLoggingEnabled=false samplingMode=statement stmtSampleFreq=10
----

shouldEmitStatementLog unixSecs=1 isTrackedTxn=false stmtNum=1 force=false
----
emit: false, skippedQueries: 0

shouldEmitStatementLog unixSecs=1 isTrackedTxn=false stmtNum=1 force=true
----
emit: false, skippedQueries: 0

shouldEmitStatementLog unixSecs=1 isTrackedTxn=true stmtNum=1 force=false
----
emit: false, skippedQueries: 0

shouldEmitStatementLog unixSecs=2 isTrackedTxn=false stmtNum=1 force=false
----
emit: false, skippedQueries: 0

subtest end

subtest telemetry_enabled_stmt_mode_on_sampling_frequency_0
# All of these should return false since the sampling frequency is 0.

set-cluster-settings telemetryLoggingEnabled=true samplingMode=statement stmtSampleFreq=0
----

shouldEmitStatementLog unixSecs=1 isTrackedTxn=false stmtNum=1 force=false
----
emit: false, skippedQueries: 0

shouldEmitStatementLog unixSecs=1 isTrackedTxn=false stmtNum=1 force=true
----
emit: false, skippedQueries: 0

shouldEmitStatementLog unixSecs=1 isTrackedTxn=true stmtNum=1 force=false
----
emit: false, skippedQueries: 0

shouldEmitStatementLog unixSecs=2 isTrackedTxn=false stmtNum=1 force=false
----
emit: false, skippedQueries: 0

subtest end

subtest telemetry_enabled_stmt_mode_on_sampling_frequency_10
# Test statement mode.

set-cluster-settings telemetryLoggingEnabled=true samplingMode=statement stmtSampleFreq=10 stmtsPerTxnMax=10
----

shouldEmitStatementLog unixSecs=1 isTrackedTxn=false stmtNum=1 force=false
----
emit: true, skippedQueries: 0

shouldEmitStatementLog unixSecs=1.05 isTrackedTxn=false stmtNum=1 force=false
----
emit: false, skippedQueries: 1

# Force should override the sampling frequency.
shouldEmitStatementLog unixSecs=1.05 isTrackedTxn=false stmtNum=1 force=true
----
emit: true, skippedQueries: 1

# Tracked txn is true but we are not in txn mode.
shouldEmitStatementLog unixSecs=1.1 isTrackedTxn=true stmtNum=1 force=false
----
emit: false, skippedQueries: 1

# Enough time has elapsed. stmtNum is greater than stmtsPerTxnMax but we are not in txn mode.
shouldEmitStatementLog unixSecs=1.15 isTrackedTxn=false stmtNum=1000 force=false
----
emit: true, skippedQueries: 1

# Enough time has elapsed.
shouldEmitStatementLog unixSecs=2 isTrackedTxn=false stmtNum=1 force=false
----
emit: true, skippedQueries: 0

subtest end

subtest telemetry_enabled_txn_mode_on

# Set the stmtSamplingFreq to a high number, it shouldn't be observed in txn mode.
# We'll also set txnSamplingFreq to a high number - it shouldn't be used in shouldEmitStatementLog.
set-cluster-settings telemetryLoggingEnabled=true samplingMode=transaction stmtSampleFreq=1000000 txnSampleFreq=1000000 stmtsPerTxnMax=3
----

shouldEmitStatementLog unixSecs=1 isTrackedTxn=true stmtNum=1 force=false
----
emit: true, skippedQueries: 0

shouldEmitStatementLog unixSecs=1 isTrackedTxn=true stmtNum=2 force=false
----
emit: true, skippedQueries: 0

shouldEmitStatementLog unixSecs=1 isTrackedTxn=true stmtNum=3 force=false
----
emit: true, skippedQueries: 0

# Enough time has elapsed but stmtNum is greater than stmtsPerTxnMax.
shouldEmitStatementLog unixSecs=1 isTrackedTxn=true stmtNum=4 force=false
----
emit: false, skippedQueries: 1

# stmtNum is greater than stmtsPerTxnMax but force is true.
shouldEmitStatementLog unixSecs=4 isTrackedTxn=true stmtNum=4 force=true
----
emit: true, skippedQueries: 1

# Enough time has elapsed but txn is not tracked.
shouldEmitStatementLog unixSecs=5 isTrackedTxn=false stmtNum=1 force=false
----
emit: false, skippedQueries: 1

# Txn is not tracked but force is true.
shouldEmitStatementLog unixSecs=6 isTrackedTxn=false stmtNum=1 force=true
----
emit: true, skippedQueries: 1

subtest end

subtest telemetry_enabled_txn_mode_on_frequency_0
# All calls should return false, since txnSampleFreq is 0.

set-cluster-settings telemetryLoggingEnabled=true samplingMode=transaction stmtSample=10000 txnSampleFreq=0 stmtsPerTxnMax=3
----

shouldEmitStatementLog unixSecs=1 isTrackedTxn=true stmtNum=1 force=false
----
emit: false, skippedQueries: 0

shouldEmitStatementLog unixSecs=2 isTrackedTxn=true stmtNum=2 force=false
----
emit: false, skippedQueries: 0

shouldEmitStatementLog unixSecs=3 isTrackedTxn=true stmtNum=3 force=false
----
emit: false, skippedQueries: 0

shouldEmitStatementLog unixSecs=4 isTrackedTxn=true stmtNum=4 force=false
----
emit: false, skippedQueries: 0

shouldEmitStatementLog unixSecs=5 isTrackedTxn=false stmtNum=1 force=false
----
emit: false, skippedQueries: 0

shouldEmitStatementLog unixSecs=6 isTrackedTxn=false stmtNum=1 force=true
----
emit: false, skippedQueries: 0

subtest end
