diff options
author | Jon Bratseth <bratseth@yahoo-inc.com> | 2016-06-15 23:09:44 +0200 |
---|---|---|
committer | Jon Bratseth <bratseth@yahoo-inc.com> | 2016-06-15 23:09:44 +0200 |
commit | 72231250ed81e10d66bfe70701e64fa5fe50f712 (patch) | |
tree | 2728bba1131a6f6e5bdf95afec7d7ff9358dac50 /vbench/src/tests/latency_analyzer |
Publish
Diffstat (limited to 'vbench/src/tests/latency_analyzer')
-rw-r--r-- | vbench/src/tests/latency_analyzer/.gitignore | 1 | ||||
-rw-r--r-- | vbench/src/tests/latency_analyzer/CMakeLists.txt | 9 | ||||
-rw-r--r-- | vbench/src/tests/latency_analyzer/FILES | 1 | ||||
-rw-r--r-- | vbench/src/tests/latency_analyzer/latency_analyzer_test.cpp | 36 |
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(); } |