summaryrefslogtreecommitdiffstats
path: root/documentapi/src/tests/systemstate/systemstate.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'documentapi/src/tests/systemstate/systemstate.cpp')
-rw-r--r--documentapi/src/tests/systemstate/systemstate.cpp226
1 files changed, 0 insertions, 226 deletions
diff --git a/documentapi/src/tests/systemstate/systemstate.cpp b/documentapi/src/tests/systemstate/systemstate.cpp
deleted file mode 100644
index 3e42c94950a..00000000000
--- a/documentapi/src/tests/systemstate/systemstate.cpp
+++ /dev/null
@@ -1,226 +0,0 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-
-#include <vespa/documentapi/messagebus/systemstate/systemstate.h>
-#include <vespa/documentapi/messagebus/systemstate/nodestate.h>
-#include <vespa/documentapi/messagebus/systemstate/systemstatehandle.h>
-#include <vespa/vespalib/testkit/testapp.h>
-
-#include <vespa/log/log.h>
-LOG_SETUP("systemstate_test");
-
-using namespace documentapi;
-
-class Test : public vespalib::TestApp {
-public:
- int Main() override;
- void testParser();
- void testPathing();
- void testState();
- void testEncoding();
- void testHandle();
- void testCompact();
-
-private:
- void assertParser(const string &state, const string &expected = "");
-};
-
-TEST_APPHOOK(Test);
-
-int
-Test::Main()
-{
- TEST_INIT("systemstate_test");
-
- testParser(); TEST_FLUSH();
- testPathing(); TEST_FLUSH();
- testState(); TEST_FLUSH();
- testEncoding(); TEST_FLUSH();
- testHandle(); TEST_FLUSH();
- testCompact(); TEST_FLUSH();
-
- TEST_DONE();
- return 0;
-}
-
-void
-Test::testParser()
-{
- assertParser("storage");
- assertParser("storage?", "ERROR");
- assertParser("storage?a", "ERROR");
- assertParser("storage?a=", "ERROR");
- assertParser("storage?a=1");
- assertParser("storage?a=1&", "ERROR");
- assertParser("storage?a=1&b", "ERROR");
- assertParser("storage?a=1&b=2");
- assertParser("storage?a=1&b=2 search");
- assertParser("storage?a=1&b=2 search?", "ERROR");
- assertParser("storage?a=1&b=2 search?a", "ERROR");
- assertParser("storage?a=1&b=2 search?a=", "ERROR");
- assertParser("storage?a=1&b=2 search?a=1");
- assertParser("storage?a=1&b=2 search?a=1&", "ERROR");
- assertParser("storage?a=1&b=2 search?a=1&b", "ERROR");
- assertParser("storage?a=1&b=2 search?a=1&b=", "ERROR");
- assertParser("storage?a=1&b=2 search?a=1&b=2");
-
- assertParser("storage");
- assertParser("storage/");
- assertParser("storage/?", "ERROR");
- assertParser("storage/?a", "ERROR");
- assertParser("storage/?a=", "ERROR");
- assertParser("storage/?a=1");
- assertParser("storage/cluster.storage");
- assertParser("storage/cluster.storage/");
-
- assertParser("storage?a=1");
- assertParser("storage/?a=1");
- assertParser("storage/.?a=1");
- assertParser("storage/./?a=1");
- assertParser("storage/./cluster.storage?a=1");
- assertParser("storage/./cluster.storage/?a=1");
- assertParser("storage/./cluster.storage/..?a=1");
- assertParser("storage/./cluster.storage/../?a=1");
- assertParser("storage/./cluster.storage/../storage?a=1");
- assertParser("storage/./cluster.storage/../storage/?a=1");
-}
-
-void
-Test::testPathing()
-{
- assertParser("storage?a=1", "storage?a=1");
- assertParser("storage/?a=1", "storage?a=1");
- assertParser("storage/.?a=1", "storage?a=1");
- assertParser("storage/./?a=1", "storage?a=1");
- assertParser("storage/./cluster.storage?a=1", "storage/cluster.storage?a=1");
- assertParser("storage/./cluster.storage/?a=1", "storage/cluster.storage?a=1");
- assertParser("storage/./cluster.storage/..?a=1", "storage?a=1");
- assertParser("storage/./cluster.storage/../?a=1", "storage?a=1");
- assertParser("storage/./cluster.storage/../storage?a=1", "storage/storage?a=1");
- assertParser("storage/./cluster.storage/../storage/?a=1", "storage/storage?a=1");
-
- assertParser("a?p1=1 a/b?p2=2 a/b/c?p3=3", "a?p1=1 a/b?p2=2 a/b/c?p3=3");
- assertParser("a .?p1=1 ./b?p2=2 ./b/c?p3=3", "a?p1=1 a/b?p2=2 a/b/c?p3=3");
- assertParser("a .?p1=1 ./../a/b/ .?p2=2 c?p3=3", "a?p1=1 a/b?p2=2 a/b/c?p3=3");
- assertParser("a/./ .?p1=1 ../a/b/c/.. .?p2=2 ./c/../c?p3=3", "a?p1=1 a/b?p2=2 a/b/c?p3=3");
- assertParser("a/b/c/d/ ../../ ../ ../a .?p1=1 ./b?p2=2 ./ ../a/b/c?p3=3", "a?p1=1 a/b?p2=2 a/b/c?p3=3");
-
- assertParser("a/b/c/d?p1=1 a?p2=2", "a?p2=2 a/b/c/d?p1=1");
- assertParser("a/b/c/d/?p1=1 /a?p2=2", "a?p2=2 a/b/c/d?p1=1");
- assertParser("/a/b/c/d/?p1=1 /a?p2=2", "a?p2=2 a/b/c/d?p1=1");
-
- assertParser("a .?p1=1", "a?p1=1");
- assertParser("a/b .?p1=1", "a/b?p1=1");
- assertParser("a/b c?p1=1 d?p2=2", "a/b/c?p1=1 a/b/d?p2=2");
-}
-
-void
-Test::testState()
-{
- NodeState state;
- state
- .addChild("distributor", NodeState()
- .setState("n", "27"))
- .addChild("storage", NodeState()
- .setState("n", "170")
- .addChild("2", NodeState()
- .setState("s", "d"))
- .addChild("13", NodeState()
- .setState("s", "r")
- .setState("c", "0.0")));
-
- EXPECT_EQUAL("27", state.getState("distributor/n"));
- EXPECT_EQUAL("170", state.getState("storage/n"));
- EXPECT_EQUAL("d", state.getState("storage/2/s"));
- EXPECT_EQUAL("r", state.getState("storage/13/s"));
- EXPECT_EQUAL("0.0", state.getState("storage/13/c"));
-
- EXPECT_EQUAL("27", state.getChild("distributor")->getState("n"));
- EXPECT_EQUAL("170", state.getChild("storage")->getState("n"));
- EXPECT_EQUAL("d", state.getChild("storage")->getChild("2")->getState("s"));
- EXPECT_EQUAL("r", state.getChild("storage")->getChild("13")->getState("s"));
- EXPECT_EQUAL("0.0", state.getChild("storage")->getChild("13")->getState("c"));
-}
-
-void
-Test::testEncoding()
-{
- NodeState state;
- state.setState("foo", "http://search.yahoo.com/?query=bar");
- LOG(info, "'%s'", state.toString().c_str());
- EXPECT_EQUAL(".?foo=http%3A%2F%2Fsearch.yahoo.com%2F%3Fquery%3Dbar", state.toString());
- assertParser(state.toString(), state.toString());
-
- state = NodeState()
- .addChild("foo:bar", NodeState()
- .setState("foo", "http://search.yahoo.com/?query=bar"));
- LOG(info, "'%s'", state.toString().c_str());
- EXPECT_EQUAL("foo%3Abar?foo=http%3A%2F%2Fsearch.yahoo.com%2F%3Fquery%3Dbar", state.toString());
- assertParser(state.toString(), state.toString());
-
- state = NodeState()
- .addChild("foo/bar", NodeState()
- .setState("foo", "http://search.yahoo.com/?query=bar"));
- LOG(info, "'%s'", state.toString().c_str());
- EXPECT_EQUAL("foo/bar?foo=http%3A%2F%2Fsearch.yahoo.com%2F%3Fquery%3Dbar", state.toString());
- assertParser(state.toString(), state.toString());
-}
-
-void
-Test::testHandle()
-{
- SystemState::UP state(SystemState::newInstance(""));
- ASSERT_TRUE(state.get() != NULL);
-
- SystemStateHandle handle(*state);
- ASSERT_TRUE(handle.isValid());
-
- SystemStateHandle hoe(std::move(handle));
- ASSERT_TRUE(!handle.isValid());
- ASSERT_TRUE(hoe.isValid());
-}
-
-void
-Test::testCompact()
-{
- NodeState state;
- state
- .setState("a/b0/s", "d")
- .setState("a/b0/c0/s", "d")
- .setState("a/b0/c1/s", "d")
- .setState("a/b1/s", "d")
- .setState("a/b1/c0/s", "d")
- .setState("a/b1/c1/s", "d");
- EXPECT_EQUAL("a/b0?s=d a/b0/c0?s=d a/b0/c1?s=d a/b1?s=d a/b1/c0?s=d a/b1/c1?s=d", state.toString());
-
- state.removeChild("a/b0/c0");
- EXPECT_EQUAL("a/b0?s=d a/b0/c1?s=d a/b1?s=d a/b1/c0?s=d a/b1/c1?s=d", state.toString());
-
- state.removeState("a/b0/c1/s");
- EXPECT_EQUAL("a/b0?s=d a/b1?s=d a/b1/c0?s=d a/b1/c1?s=d", state.toString());
-
- state.setState("a/b1/c0/s", "");
- EXPECT_EQUAL("a/b0?s=d a/b1?s=d a/b1/c1?s=d", state.toString());
-
- state.removeChild("a/b1");
- EXPECT_EQUAL("a/b0?s=d", state.toString());
-
- state.removeChild("a");
- EXPECT_EQUAL("", state.toString());
-}
-
-void
-Test::assertParser(const string &state, const string &expected)
-{
- SystemState::UP obj = SystemState::newInstance(state);
- if (obj.get() == NULL) {
- EXPECT_EQUAL("ERROR", expected);
- }
- else {
- SystemStateHandle handle(*obj);
- LOG(info, "'%s' => '%s'", state.c_str(), handle.getRoot().toString().c_str());
- if (!expected.empty()) {
- EXPECT_EQUAL(expected, handle.getRoot().toString());
- }
- }
-}
-