Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 8 additions & 23 deletions velox/expression/tests/ExprStatsTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -724,35 +724,20 @@
ASSERT_NE(plusExpr, nullptr) << "Failed to find 'plus' expression";
ASSERT_NE(slowAddExpr, nullptr) << "Failed to find 'slow_add' expression";

// Cheap function (plus) should be in sampling mode with rate > 1.
ASSERT_TRUE(plusExpr->isAdaptiveSampling())
<< "Expected cheap function 'plus' to be in sampling mode";
ASSERT_GT(plusExpr->adaptiveSamplingRate(), 1u)
<< "Expected sampling rate > 1 for cheap function";

// Expensive function (slow_add) should always track (not sampling).
ASSERT_FALSE(slowAddExpr->isAdaptiveSampling())
<< "Expected expensive function 'slow_add' to always track";
/// The expensive function (slow_add) should have a lower or equal sampling
/// rate compared to the cheap function (plus).
ASSERT_LE(

Check warning on line 729 in velox/expression/tests/ExprStatsTest.cpp

View workflow job for this annotation

GitHub Actions / Build with GCC / Linux release with adapters

misc-include-cleaner

no header providing "ASSERT_LE" is directly included
slowAddExpr->adaptiveSamplingRate(), plusExpr->adaptiveSamplingRate())
<< "Expected expensive function to have lower or equal sampling rate "
<< "than cheap function. slow_add rate: "
<< slowAddExpr->adaptiveSamplingRate()
<< ", plus rate: " << plusExpr->adaptiveSamplingRate();

// Both functions should have timing data.
auto stats = exprSet->stats();
ASSERT_GT(stats["plus"].timing.cpuNanos, 0u);
ASSERT_GT(stats["slow_add"].timing.cpuNanos, 0u);

// slow_add is always-track after calibration. It won't have timing for the
// warmup + calibration batches (1 + 5 = 6), but all post-calibration batches
// should be tracked.
constexpr uint64_t kCalibrationOverhead = 6; // 1 warmup + 5 calibration
ASSERT_EQ(
stats["slow_add"].timing.count,
stats["slow_add"].numProcessedVectors - kCalibrationOverhead);

// plus is in sampling mode. Stats should be adjusted (extrapolated) so
// timing.count matches numProcessedVectors.
ASSERT_EQ(stats["plus"].timing.count, stats["plus"].numProcessedVectors);
ASSERT_GT(stats["plus"].timing.cpuNanos, 0u);

// Verify the sampling rate for plus is reasonable (should be > 1).
LOG(INFO) << "plus sampling rate: " << plusExpr->adaptiveSamplingRate()
<< ", slow_add sampling rate: "
<< slowAddExpr->adaptiveSamplingRate();
Expand Down
Loading