aboutsummaryrefslogtreecommitdiffstats
path: root/slobrok/src/tests/backoff
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 /slobrok/src/tests/backoff
Publish
Diffstat (limited to 'slobrok/src/tests/backoff')
-rw-r--r--slobrok/src/tests/backoff/.gitignore4
-rw-r--r--slobrok/src/tests/backoff/CMakeLists.txt9
-rw-r--r--slobrok/src/tests/backoff/DESC1
-rw-r--r--slobrok/src/tests/backoff/FILES1
-rw-r--r--slobrok/src/tests/backoff/testbackoff.cpp100
5 files changed, 115 insertions, 0 deletions
diff --git a/slobrok/src/tests/backoff/.gitignore b/slobrok/src/tests/backoff/.gitignore
new file mode 100644
index 00000000000..45529c14663
--- /dev/null
+++ b/slobrok/src/tests/backoff/.gitignore
@@ -0,0 +1,4 @@
+.depend
+Makefile
+*_test
+slobrok_backoff_test_app
diff --git a/slobrok/src/tests/backoff/CMakeLists.txt b/slobrok/src/tests/backoff/CMakeLists.txt
new file mode 100644
index 00000000000..800f984d69d
--- /dev/null
+++ b/slobrok/src/tests/backoff/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(slobrok_backoff_test_app
+ SOURCES
+ testbackoff.cpp
+ DEPENDS
+ slobrok
+ slobrok_slobrokserver
+)
+vespa_add_test(NAME slobrok_backoff_test_app COMMAND slobrok_backoff_test_app)
diff --git a/slobrok/src/tests/backoff/DESC b/slobrok/src/tests/backoff/DESC
new file mode 100644
index 00000000000..9955163994a
--- /dev/null
+++ b/slobrok/src/tests/backoff/DESC
@@ -0,0 +1 @@
+BackOff test. Take a look at testbackoff.cpp for details.
diff --git a/slobrok/src/tests/backoff/FILES b/slobrok/src/tests/backoff/FILES
new file mode 100644
index 00000000000..39cce25d2e1
--- /dev/null
+++ b/slobrok/src/tests/backoff/FILES
@@ -0,0 +1 @@
+testbackoff.cpp
diff --git a/slobrok/src/tests/backoff/testbackoff.cpp b/slobrok/src/tests/backoff/testbackoff.cpp
new file mode 100644
index 00000000000..af0dbd5bc81
--- /dev/null
+++ b/slobrok/src/tests/backoff/testbackoff.cpp
@@ -0,0 +1,100 @@
+// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+#include <vespa/fastos/fastos.h>
+#include <vespa/log/log.h>
+LOG_SETUP("backoff_test");
+#include <vespa/vespalib/testkit/testapp.h>
+#include <vespa/slobrok/backoff.h>
+#include <algorithm>
+
+using slobrok::api::BackOff;
+
+TEST_SETUP(Test);
+
+//-----------------------------------------------------------------------------
+
+static double expectWait[21] = {
+ 0.5, 1.0, 1.5, 2.0, 2.5,
+ 3.0, 3.5, 4.0, 4.5,
+ 5.0, 6.0, 7.0, 8.0, 9.0,
+ 10, 15, 20, 25, 30, 30, 30
+};
+
+int
+Test::Main()
+{
+ TEST_INIT("backoff_test");
+
+ BackOff one;
+ EXPECT_FALSE(one.shouldWarn());
+ EXPECT_EQUAL(0.500, one.get());
+ EXPECT_FALSE(one.shouldWarn());
+ EXPECT_EQUAL(1.000, one.get());
+ EXPECT_FALSE(one.shouldWarn());
+ EXPECT_EQUAL(1.500, one.get());
+ EXPECT_FALSE(one.shouldWarn());
+ EXPECT_EQUAL(2.000, one.get());
+ EXPECT_TRUE(one.shouldWarn());
+
+ EXPECT_EQUAL(2.500, one.get());
+ EXPECT_FALSE(one.shouldWarn());
+ EXPECT_EQUAL(3.000, one.get());
+ EXPECT_FALSE(one.shouldWarn());
+ EXPECT_EQUAL(3.500, one.get());
+ EXPECT_FALSE(one.shouldWarn());
+ EXPECT_EQUAL(4.000, one.get());
+ EXPECT_FALSE(one.shouldWarn());
+ EXPECT_EQUAL(4.500, one.get());
+ EXPECT_TRUE(one.shouldWarn());
+
+ EXPECT_EQUAL(5.000, one.get());
+ EXPECT_FALSE(one.shouldWarn());
+ EXPECT_EQUAL(6.000, one.get());
+ EXPECT_FALSE(one.shouldWarn());
+ EXPECT_EQUAL(7.000, one.get());
+ EXPECT_FALSE(one.shouldWarn());
+ EXPECT_EQUAL(8.000, one.get());
+ EXPECT_FALSE(one.shouldWarn());
+ EXPECT_EQUAL(9.000, one.get());
+ EXPECT_FALSE(one.shouldWarn());
+ EXPECT_EQUAL(10.00, one.get());
+ EXPECT_FALSE(one.shouldWarn());
+ EXPECT_EQUAL(15.00, one.get());
+ EXPECT_FALSE(one.shouldWarn());
+ EXPECT_EQUAL(20.00, one.get());
+ EXPECT_TRUE(one.shouldWarn());
+
+ EXPECT_EQUAL(25.00, one.get());
+ EXPECT_FALSE(one.shouldWarn());
+ EXPECT_EQUAL(30.00, one.get());
+ EXPECT_FALSE(one.shouldWarn());
+ EXPECT_EQUAL(30.00, one.get());
+ EXPECT_FALSE(one.shouldWarn());
+ EXPECT_EQUAL(30.00, one.get());
+ EXPECT_FALSE(one.shouldWarn());
+ EXPECT_EQUAL(30.00, one.get());
+ EXPECT_FALSE(one.shouldWarn());
+ EXPECT_EQUAL(30.00, one.get());
+ EXPECT_FALSE(one.shouldWarn());
+
+ TEST_FLUSH();
+
+ BackOff two;
+ for (int i = 0; i < 21; i++) {
+ EXPECT_EQUAL(expectWait[i], two.get());
+ if (i == 3 || i == 8 || i == 16) {
+ EXPECT_TRUE(two.shouldWarn());
+ } else {
+ EXPECT_FALSE(two.shouldWarn());
+ }
+ }
+ two.reset();
+ for (int i = 0; i < 21; i++) {
+ EXPECT_EQUAL(expectWait[i], two.get());
+ if (i == 7 || i == 15) {
+ EXPECT_TRUE(two.shouldWarn());
+ } else {
+ EXPECT_FALSE(two.shouldWarn());
+ }
+ }
+ TEST_DONE();
+}