diff options
author | Henning Baldersheim <balder@oath.com> | 2018-07-18 15:43:32 +0200 |
---|---|---|
committer | Henning Baldersheim <balder@oath.com> | 2018-07-18 15:43:32 +0200 |
commit | 428829739f3d009a072045a462a8cea471f56eb5 (patch) | |
tree | a150f24b552c604f3f8d3ff2260db92f1ef2380d | |
parent | 2768ed6a3061c2c2c6d2ae8ec9821941c7f65422 (diff) |
Extend test and fix typos.
-rw-r--r-- | searchcore/src/tests/proton/matching/matching_stats_test.cpp | 24 | ||||
-rw-r--r-- | searchcore/src/vespa/searchcore/proton/matching/matching_stats.cpp | 8 |
2 files changed, 27 insertions, 5 deletions
diff --git a/searchcore/src/tests/proton/matching/matching_stats_test.cpp b/searchcore/src/tests/proton/matching/matching_stats_test.cpp index 78a53fb668d..e467c4b58b7 100644 --- a/searchcore/src/tests/proton/matching/matching_stats_test.cpp +++ b/searchcore/src/tests/proton/matching/matching_stats_test.cpp @@ -254,7 +254,7 @@ TEST("requireThatSoftDoomIsSetAndAdded") { EXPECT_EQUAL(0.5, stats2.softDoomFactor()); // Not affected by add } -TEST("requireThatSoftDoomFacorIsComputedCorrectly") { +TEST("requireThatSoftDoomFacorIsComputedCorrectlyForDownAdjustment") { MatchingStats stats; EXPECT_EQUAL(0ul, stats.softDoomed()); EXPECT_EQUAL(0.5, stats.softDoomFactor()); @@ -274,7 +274,29 @@ TEST("requireThatSoftDoomFacorIsComputedCorrectly") { stats.updatesoftDoomFactor(1.0, 0.5, 10.0); // Prevent changes above 10% EXPECT_EQUAL(1ul, stats.softDoomed()); EXPECT_EQUAL(0.396, stats.softDoomFactor()); +} +TEST("requireThatSoftDoomFacorIsComputedCorrectlyForUpAdjustment") { + MatchingStats stats; + EXPECT_EQUAL(0ul, stats.softDoomed()); + EXPECT_EQUAL(0.5, stats.softDoomFactor()); + stats.softDoomed(1); + stats.updatesoftDoomFactor(1.0, 0.9, 0.1); + EXPECT_EQUAL(1ul, stats.softDoomed()); + EXPECT_EQUAL(0.508, stats.softDoomFactor()); + stats.updatesoftDoomFactor(1.0, 0.9, 0.1); + EXPECT_EQUAL(1ul, stats.softDoomed()); + EXPECT_EQUAL(0.516, stats.softDoomFactor()); + stats.updatesoftDoomFactor(0.0009, 0.9, 0.1); // hard limits less than 1ms should be ignored + EXPECT_EQUAL(1ul, stats.softDoomed()); + EXPECT_EQUAL(0.516, stats.softDoomFactor()); + stats.updatesoftDoomFactor(1.0, 0.9, 0.1); // soft limits less than 1ms should be ignored + EXPECT_EQUAL(1ul, stats.softDoomed()); + EXPECT_EQUAL(0.524, stats.softDoomFactor()); + stats.softDoomFactor(0.1); + stats.updatesoftDoomFactor(1.0, 0.9, 0.001); // Prevent changes above 5% + EXPECT_EQUAL(1ul, stats.softDoomed()); + EXPECT_EQUAL(0.105, stats.softDoomFactor()); } TEST_MAIN() { diff --git a/searchcore/src/vespa/searchcore/proton/matching/matching_stats.cpp b/searchcore/src/vespa/searchcore/proton/matching/matching_stats.cpp index 90d0c05c349..4fb0e1d72e2 100644 --- a/searchcore/src/vespa/searchcore/proton/matching/matching_stats.cpp +++ b/searchcore/src/vespa/searchcore/proton/matching/matching_stats.cpp @@ -14,7 +14,7 @@ MatchingStats::Partition &get_writable_partition(std::vector<MatchingStats::Part return state[id]; } -constexpr double MIN_TIMEOUT = 0.001; +constexpr double MIN_TIMEOUT_SEC = 0.001; constexpr double MAX_CHANGE_FACTOR = 5; } // namespace proton::matching::<unnamed> @@ -80,11 +80,11 @@ MatchingStats::add(const MatchingStats &rhs) MatchingStats & MatchingStats::updatesoftDoomFactor(double hardLimit, double softLimit, double duration) { - // The safety capping here should normally not be necessary all input numbers + // The safety capping here should normally not be necessary as all input numbers // will normally be within reasonable values. - // It is merely a safety measure to avoid overflow on bad input as can happend with time senstive stuff + // It is merely a safety measure to avoid overflow on bad input as can happen with time senstive stuff // in any soft real time system. - if ((hardLimit >= MIN_TIMEOUT) && (softLimit >= MIN_TIMEOUT)) { + if ((hardLimit >= MIN_TIMEOUT_SEC) && (softLimit >= MIN_TIMEOUT_SEC)) { double diff = (softLimit - duration)/hardLimit; if (duration < softLimit) { diff = std::min(diff, _softDoomFactor*MAX_CHANGE_FACTOR); |