#include <stats/context.h>
#include <gtest/gtest.h>
+#include <string>
+using namespace isc::data;
using namespace isc::stats;
+using namespace std;
// Basic test that checks get, add, del methods
TEST(ContextTest, basic) {
ObservationPtr a(new Observation("alpha", 1.11));
ObservationPtr b(new Observation("beta", 2.22));
ObservationPtr c(new Observation("gamma", 3.33));
+ string expected_a = a->getJSON()->str();
+ string expected_b = b->getJSON()->str();
+ string expected_c = c->getJSON()->str();
+
// Context where we will store the observations.
StatContext ctx;
ObservationPtr from_ctx;
EXPECT_NO_THROW(from_ctx = ctx.get("alpha"));
ASSERT_TRUE(from_ctx);
- EXPECT_EQ(a->getJSON()->str(), from_ctx->getJSON()->str());
+ EXPECT_EQ(expected_a, from_ctx->getJSON()->str());
EXPECT_NO_THROW(from_ctx = ctx.get("beta"));
ASSERT_TRUE(from_ctx);
- EXPECT_EQ(b->getJSON()->str(), from_ctx->getJSON()->str());
+ EXPECT_EQ(expected_b, from_ctx->getJSON()->str());
EXPECT_NO_THROW(from_ctx = ctx.get("gamma"));
ASSERT_TRUE(from_ctx);
- EXPECT_EQ(c->getJSON()->str(), from_ctx->getJSON()->str());
+ EXPECT_EQ(expected_c, from_ctx->getJSON()->str());
// Let's try to retrieve non-existing stat
EXPECT_NO_THROW(from_ctx = ctx.get("delta"));
// Attempt to delete non-existing stat should fail.
EXPECT_FALSE(ctx.del("beta"));
+
+ ConstElementPtr result;
+ EXPECT_NO_THROW(result = ctx.getAll());
+
+ ASSERT_TRUE(result);
+ ElementPtr expected_result = Element::createMap();
+ expected_result->set("alpha", a->getJSON());
+ expected_result->set("gamma", c->getJSON());
+ EXPECT_EQ(result->str(), expected_result->str());
+
+ // Reset all statistics.
+ EXPECT_NO_THROW(ctx.reset());
+
+ EXPECT_NO_THROW(from_ctx = ctx.get("alpha"));
+ ASSERT_TRUE(from_ctx);
+ EXPECT_NE(expected_a, from_ctx->getJSON()->str());
+ EXPECT_EQ(0.0, a->getFloat().first);
+
+ EXPECT_NO_THROW(from_ctx = ctx.get("gamma"));
+ ASSERT_TRUE(from_ctx);
+ EXPECT_NE(expected_c, from_ctx->getJSON()->str());
+ EXPECT_EQ(0.0, c->getFloat().first);
+
+ // Clear all statistics.
+ EXPECT_NO_THROW(ctx.clear());
+ EXPECT_EQ(0, ctx.size());
}