From 5da41aa6bdfc255786c8e0430dde3f7ff4095524 Mon Sep 17 00:00:00 2001 From: Andrew Emil Date: Tue, 20 Mar 2018 19:48:57 -0400 Subject: [PATCH 1/4] Added basic resource unittests --- test/Makefile | 5 ++- test/resource_unittest.cc | 68 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 72 insertions(+), 1 deletion(-) create mode 100644 test/resource_unittest.cc diff --git a/test/Makefile b/test/Makefile index 0ce40f18..f1150410 100644 --- a/test/Makefile +++ b/test/Makefile @@ -18,7 +18,7 @@ CPPFLAGS+= \ -isystem $(GTEST_DIR)/include -I$(GMOCK_DIR)/include \ -I$(YAML_CPP_DIR)/include CXXFLAGS=-std=c++11 -g -pthread -LDLIBS=-lpthread -lboost_program_options -lyaml-cpp +LDLIBS=-lpthread -lboost_program_options -lyaml-cpp -lyajl LDFLAGS=-L$(YAML_CPP_LIBDIR) # Where to find code under test. @@ -31,6 +31,7 @@ TESTS=\ base64_unittest \ configuration_unittest \ format_unittest \ + resource_unittest \ time_unittest GTEST_LIB=gtest_lib.a @@ -79,6 +80,8 @@ base64_unittest: $(GTEST_LIB) base64_unittest.o $(SRC_DIR)/base64.o $(CXX) $(LDFLAGS) $^ $(LDLIBS) -o $@ configuration_unittest: $(GTEST_LIB) $(YAML_CPP_LIBS) configuration_unittest.o $(SRC_DIR)/configuration.o $(CXX) $(LDFLAGS) $^ $(LDLIBS) -o $@ +resource_unittest: $(GTEST_LIB) resource_unittest.o $(SRC_DIR)/resource.o $(SRC_DIR)/json.o + $(CXX) $(LDFLAGS) $^ $(LDLIBS) -o $@ time_unittest: $(GTEST_LIB) time_unittest.o $(SRC_DIR)/time.o $(CXX) $(LDFLAGS) $^ $(LDLIBS) -o $@ diff --git a/test/resource_unittest.cc b/test/resource_unittest.cc new file mode 100644 index 00000000..04ef7fe8 --- /dev/null +++ b/test/resource_unittest.cc @@ -0,0 +1,68 @@ +#include "../src/resource.h" +#include "../src/json.h" +#include "gtest/gtest.h" + +namespace { + +TEST(ResourceTest, Type) { + std::map m; + google::MonitoredResource mr("type", m); + EXPECT_EQ("type", mr.type()); +} + +TEST(ResourceTest, Labels) { + std::map m; + m["foo"] = "bar"; + m["bar"] = "baz"; + google::MonitoredResource mr("", m); + EXPECT_EQ(2, mr.labels().size()); + EXPECT_EQ("bar", mr.labels().at("foo")); + EXPECT_EQ("baz", mr.labels().at("bar")); +} + +TEST(ResourceTest, BasicEquality) { + std::map m1; + std::map m2; + google::MonitoredResource mr1("", m1); + google::MonitoredResource mr2("", m2); + + EXPECT_TRUE(mr1 == mr2); +} + +TEST(ResourceTest, BasicTypeComparison) { + std::map m1; + std::map m2; + google::MonitoredResource mr1("2", m1); + google::MonitoredResource mr2("1", m2); + + EXPECT_TRUE(mr1 < mr2); +} + +TEST(ResourceTest, BasicLabelComparison) { + std::map m1; + std::map m2; + m1["b"] = "b"; + m2["a"] = "a"; + google::MonitoredResource mr1("", m1); + google::MonitoredResource mr2("", m2); + + EXPECT_FALSE(mr1 == mr2); + EXPECT_TRUE(mr1 < mr2); +} +TEST(ResourceTest, BasicJson) { + json::value target = json::object({ + {"type", json::string("test")}, + {"labels", json::object({ + {"a", json::string("a")}, + {"b", json::string("b")} + })} + }); + + std::map m; + m["a"] = "a"; + m["b"] = "b"; + google::MonitoredResource mr("test", m); + + EXPECT_EQ(target->ToString(), mr.ToJSON()->ToString()); +} +} // namespace From eeeb6e6054257a83bd57d0cee6227994b33c1882 Mon Sep 17 00:00:00 2001 From: Andrew Emil Date: Wed, 21 Mar 2018 08:39:41 -0400 Subject: [PATCH 2/4] Addressed code review comments on PR #86 --- src/resource.h | 3 +++ test/resource_unittest.cc | 44 +++++++++++++-------------------------- 2 files changed, 18 insertions(+), 29 deletions(-) diff --git a/src/resource.h b/src/resource.h index c0db8ceb..c99ed5fa 100644 --- a/src/resource.h +++ b/src/resource.h @@ -36,6 +36,9 @@ class MonitoredResource { bool operator==(const MonitoredResource& other) const { return other.type_ == type_ && other.labels_ == labels_; } + bool operator!=(const MonitoredResource& other) const { + return !(other == *this); + } bool operator<(const MonitoredResource& other) const { return other.type_ < type_ || (other.type_ == type_ && other.labels_ < labels_); diff --git a/test/resource_unittest.cc b/test/resource_unittest.cc index 04ef7fe8..306c765c 100644 --- a/test/resource_unittest.cc +++ b/test/resource_unittest.cc @@ -6,48 +6,37 @@ namespace { TEST(ResourceTest, Type) { std::map m; - google::MonitoredResource mr("type", m); - EXPECT_EQ("type", mr.type()); + google::MonitoredResource mr("some_resource", m); + EXPECT_EQ("some_resource", mr.type()); } TEST(ResourceTest, Labels) { - std::map m; - m["foo"] = "bar"; - m["bar"] = "baz"; - google::MonitoredResource mr("", m); + google::MonitoredResource mr("", {{"foo", "bar"}, {"bar", "baz"}}); EXPECT_EQ(2, mr.labels().size()); EXPECT_EQ("bar", mr.labels().at("foo")); EXPECT_EQ("baz", mr.labels().at("bar")); } TEST(ResourceTest, BasicEquality) { - std::map m1; - std::map m2; - google::MonitoredResource mr1("", m1); - google::MonitoredResource mr2("", m2); + google::MonitoredResource mr1("", {}); + google::MonitoredResource mr2("", {}); - EXPECT_TRUE(mr1 == mr2); + EXPECT_EQ(mr1, mr2); } TEST(ResourceTest, BasicTypeComparison) { - std::map m1; - std::map m2; - google::MonitoredResource mr1("2", m1); - google::MonitoredResource mr2("1", m2); + google::MonitoredResource mr1("2", {}); + google::MonitoredResource mr2("1", {}); - EXPECT_TRUE(mr1 < mr2); + EXPECT_LT(mr1, mr2); } TEST(ResourceTest, BasicLabelComparison) { - std::map m1; - std::map m2; - m1["b"] = "b"; - m2["a"] = "a"; - google::MonitoredResource mr1("", m1); - google::MonitoredResource mr2("", m2); + google::MonitoredResource mr1("", {{"b", "b"}}); + google::MonitoredResource mr2("", {{"a", "a"}}); - EXPECT_FALSE(mr1 == mr2); - EXPECT_TRUE(mr1 < mr2); + EXPECT_NE(mr1, mr2); + EXPECT_LT(mr1, mr2); } TEST(ResourceTest, BasicJson) { json::value target = json::object({ @@ -58,11 +47,8 @@ TEST(ResourceTest, BasicJson) { })} }); - std::map m; - m["a"] = "a"; - m["b"] = "b"; - google::MonitoredResource mr("test", m); + google::MonitoredResource mr("test", {{"a", "a"}, {"b", "b"}}); EXPECT_EQ(target->ToString(), mr.ToJSON()->ToString()); } -} // namespace +} // namespace From a9b146c72937a096eec1e0a6bc61bd64e3d52a61 Mon Sep 17 00:00:00 2001 From: Andrew Emil Date: Wed, 21 Mar 2018 13:20:15 -0400 Subject: [PATCH 3/4] Addressed code review comments --- test/resource_unittest.cc | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/test/resource_unittest.cc b/test/resource_unittest.cc index 306c765c..fa72e5d8 100644 --- a/test/resource_unittest.cc +++ b/test/resource_unittest.cc @@ -5,8 +5,7 @@ namespace { TEST(ResourceTest, Type) { - std::map m; - google::MonitoredResource mr("some_resource", m); + google::MonitoredResource mr("some_resource", {}); EXPECT_EQ("some_resource", mr.type()); } @@ -28,6 +27,7 @@ TEST(ResourceTest, BasicTypeComparison) { google::MonitoredResource mr1("2", {}); google::MonitoredResource mr2("1", {}); + EXPECT_LT("2", "1"); EXPECT_LT(mr1, mr2); } @@ -35,6 +35,7 @@ TEST(ResourceTest, BasicLabelComparison) { google::MonitoredResource mr1("", {{"b", "b"}}); google::MonitoredResource mr2("", {{"a", "a"}}); + EXPECT_LT("b", "a"); EXPECT_NE(mr1, mr2); EXPECT_LT(mr1, mr2); } From c959a1ffb8643886160e7e3421a924bdf6aaffdb Mon Sep 17 00:00:00 2001 From: Andrew Emil Date: Wed, 21 Mar 2018 14:11:45 -0400 Subject: [PATCH 4/4] Addressed my confusion about comparison operator --- src/resource.h | 4 ++-- test/resource_unittest.cc | 10 ++++------ 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/src/resource.h b/src/resource.h index c99ed5fa..cab6b5cb 100644 --- a/src/resource.h +++ b/src/resource.h @@ -40,8 +40,8 @@ class MonitoredResource { return !(other == *this); } bool operator<(const MonitoredResource& other) const { - return other.type_ < type_ - || (other.type_ == type_ && other.labels_ < labels_); + return type_ < other.type_ + || (type_ == other.type_ && labels_ < other.labels_); } json::value ToJSON() const; diff --git a/test/resource_unittest.cc b/test/resource_unittest.cc index fa72e5d8..6ae903ce 100644 --- a/test/resource_unittest.cc +++ b/test/resource_unittest.cc @@ -24,18 +24,16 @@ TEST(ResourceTest, BasicEquality) { } TEST(ResourceTest, BasicTypeComparison) { - google::MonitoredResource mr1("2", {}); - google::MonitoredResource mr2("1", {}); + google::MonitoredResource mr1("1", {}); + google::MonitoredResource mr2("2", {}); - EXPECT_LT("2", "1"); EXPECT_LT(mr1, mr2); } TEST(ResourceTest, BasicLabelComparison) { - google::MonitoredResource mr1("", {{"b", "b"}}); - google::MonitoredResource mr2("", {{"a", "a"}}); + google::MonitoredResource mr1("", {{"a", "a"}}); + google::MonitoredResource mr2("", {{"b", "b"}}); - EXPECT_LT("b", "a"); EXPECT_NE(mr1, mr2); EXPECT_LT(mr1, mr2); }