aboutsummaryrefslogtreecommitdiffstats
path: root/searchcore
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@oath.com>2018-07-18 15:43:32 +0200
committerHenning Baldersheim <balder@oath.com>2018-07-18 15:43:32 +0200
commit428829739f3d009a072045a462a8cea471f56eb5 (patch)
treea150f24b552c604f3f8d3ff2260db92f1ef2380d /searchcore
parent2768ed6a3061c2c2c6d2ae8ec9821941c7f65422 (diff)
Extend test and fix typos.
Diffstat (limited to 'searchcore')
-rw-r--r--searchcore/src/tests/proton/matching/matching_stats_test.cpp24
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/matching_stats.cpp8
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);