summaryrefslogtreecommitdiffstats
path: root/vespalib
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2020-02-26 06:11:39 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2020-02-27 16:11:30 +0000
commit3916ae76a13e5f1e4724ff5d646f64d61741c7fc (patch)
tree80e01866205419ffd196c657e35d531dff6d5a60 /vespalib
parent29a02689e66df8801ccfe8246c36f4d2c12f3062 (diff)
Add a += operator and test ExecutorStats
Diffstat (limited to 'vespalib')
-rw-r--r--vespalib/src/tests/executor/threadstackexecutor_test.cpp12
-rw-r--r--vespalib/src/vespa/vespalib/util/executor_stats.h11
2 files changed, 22 insertions, 1 deletions
diff --git a/vespalib/src/tests/executor/threadstackexecutor_test.cpp b/vespalib/src/tests/executor/threadstackexecutor_test.cpp
index db3c4628d2f..987b10526a3 100644
--- a/vespalib/src/tests/executor/threadstackexecutor_test.cpp
+++ b/vespalib/src/tests/executor/threadstackexecutor_test.cpp
@@ -186,4 +186,16 @@ TEST_F("require that executor thread stack tag can be set", ThreadStackExecutor(
}
}
+TEST("require that stats can be accumulated") {
+ ThreadStackExecutor::Stats stats(1,2,3);
+ EXPECT_EQUAL(1u, stats.maxPendingTasks);
+ EXPECT_EQUAL(2u, stats.acceptedTasks);
+ EXPECT_EQUAL(3u, stats.rejectedTasks);
+ stats += ThreadStackExecutor::Stats(7,8,9);
+ EXPECT_EQUAL(8u, stats.maxPendingTasks);
+ EXPECT_EQUAL(10u, stats.acceptedTasks);
+ EXPECT_EQUAL(12u, stats.rejectedTasks);
+
+}
+
TEST_MAIN() { TEST_RUN_ALL(); }
diff --git a/vespalib/src/vespa/vespalib/util/executor_stats.h b/vespalib/src/vespa/vespalib/util/executor_stats.h
index e8adfc62807..771435fbabf 100644
--- a/vespalib/src/vespa/vespalib/util/executor_stats.h
+++ b/vespalib/src/vespa/vespalib/util/executor_stats.h
@@ -11,7 +11,16 @@ struct ExecutorStats {
size_t maxPendingTasks;
size_t acceptedTasks;
size_t rejectedTasks;
- ExecutorStats() : maxPendingTasks(0), acceptedTasks(0), rejectedTasks(0) {}
+ ExecutorStats() : ExecutorStats(0, 0, 0) {}
+ ExecutorStats(size_t maxPending, size_t accepted, size_t rejected)
+ : maxPendingTasks(maxPending), acceptedTasks(accepted), rejectedTasks(rejected)
+ {}
+ ExecutorStats & operator += (const ExecutorStats & rhs) {
+ maxPendingTasks += rhs.maxPendingTasks;
+ acceptedTasks += rhs.acceptedTasks;
+ rejectedTasks += rhs.rejectedTasks;
+ return *this;
+ }
};
}