summaryrefslogtreecommitdiffstats
path: root/vbench/src/tests/latency_analyzer
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@yahoo-inc.com>2016-06-15 23:09:44 +0200
committerJon Bratseth <bratseth@yahoo-inc.com>2016-06-15 23:09:44 +0200
commit72231250ed81e10d66bfe70701e64fa5fe50f712 (patch)
tree2728bba1131a6f6e5bdf95afec7d7ff9358dac50 /vbench/src/tests/latency_analyzer
Publish
Diffstat (limited to 'vbench/src/tests/latency_analyzer')
-rw-r--r--vbench/src/tests/latency_analyzer/.gitignore1
-rw-r--r--vbench/src/tests/latency_analyzer/CMakeLists.txt9
-rw-r--r--vbench/src/tests/latency_analyzer/FILES1
-rw-r--r--vbench/src/tests/latency_analyzer/latency_analyzer_test.cpp36
4 files changed, 47 insertions, 0 deletions
diff --git a/vbench/src/tests/latency_analyzer/.gitignore b/vbench/src/tests/latency_analyzer/.gitignore
new file mode 100644
index 00000000000..c82c48eb1f6
--- /dev/null
+++ b/vbench/src/tests/latency_analyzer/.gitignore
@@ -0,0 +1 @@
+vbench_latency_analyzer_test_app
diff --git a/vbench/src/tests/latency_analyzer/CMakeLists.txt b/vbench/src/tests/latency_analyzer/CMakeLists.txt
new file mode 100644
index 00000000000..01fbb5c3d5c
--- /dev/null
+++ b/vbench/src/tests/latency_analyzer/CMakeLists.txt
@@ -0,0 +1,9 @@
+# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+vespa_add_executable(vbench_latency_analyzer_test_app
+ SOURCES
+ latency_analyzer_test.cpp
+ DEPENDS
+ vbench_test
+ vbench
+)
+vespa_add_test(NAME vbench_latency_analyzer_test_app COMMAND vbench_latency_analyzer_test_app)
diff --git a/vbench/src/tests/latency_analyzer/FILES b/vbench/src/tests/latency_analyzer/FILES
new file mode 100644
index 00000000000..4d90bfb352d
--- /dev/null
+++ b/vbench/src/tests/latency_analyzer/FILES
@@ -0,0 +1 @@
+latency_analyzer_test.cpp
diff --git a/vbench/src/tests/latency_analyzer/latency_analyzer_test.cpp b/vbench/src/tests/latency_analyzer/latency_analyzer_test.cpp
new file mode 100644
index 00000000000..39d12420415
--- /dev/null
+++ b/vbench/src/tests/latency_analyzer/latency_analyzer_test.cpp
@@ -0,0 +1,36 @@
+// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+#include <vespa/vespalib/testkit/testapp.h>
+#include <vbench/test/all.h>
+
+using namespace vbench;
+
+void post(double latency, Handler<Request> &handler,
+ double startTime = 0.0, Request::Status status = Request::STATUS_OK)
+{
+ Request::UP req(new Request());
+ req->status(status).startTime(startTime).endTime(startTime + latency);
+ handler.handle(std::move(req));
+}
+
+TEST_FF("require that only OK requests are counted", RequestSink(), LatencyAnalyzer(f1)) {
+ post(1.0, f2);
+ post(2.0, f2, 3.0);
+ post(10.0, f2, 0.0, Request::STATUS_DROPPED);
+ post(20.0, f2, 0.0, Request::STATUS_FAILED);
+ EXPECT_APPROX(1.0, f2.getStats().min, 10e-6);
+ EXPECT_APPROX(1.5, f2.getStats().avg, 10e-6);
+ EXPECT_APPROX(2.0, f2.getStats().max, 10e-6);
+}
+
+TEST_FF("verify percentiles", RequestSink(), LatencyAnalyzer(f1)) {
+ for (size_t i = 0; i <= 10000; ++i) {
+ post(0.001 * i, f2);
+ }
+ LatencyAnalyzer::Stats stats = f2.getStats();
+ EXPECT_APPROX(5.0, stats.per50, 10e-6);
+ EXPECT_APPROX(9.5, stats.per95, 10e-6);
+ EXPECT_APPROX(9.9, stats.per99, 10e-6);
+ fprintf(stderr, "%s", stats.toString().c_str());
+}
+
+TEST_MAIN() { TEST_RUN_ALL(); }