From 088a8b750a1e63d15cd15112465558fc3a17b845 Mon Sep 17 00:00:00 2001 From: Andrew Emil Date: Mon, 2 Apr 2018 13:09:29 -0400 Subject: [PATCH 1/7] Added test for GetContainerMetadata --- test/kubernetes_unittest.cc | 79 +++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) diff --git a/test/kubernetes_unittest.cc b/test/kubernetes_unittest.cc index 6612123c..d9d82e58 100644 --- a/test/kubernetes_unittest.cc +++ b/test/kubernetes_unittest.cc @@ -23,6 +23,16 @@ class KubernetesTest : public ::testing::Test { pod, std::move(associations), collected_at, is_deleted); } + MetadataUpdater::ResourceMetadata GetContainerMetadata( + const KubernetesReader& reader, const json::Object* pod, + const json::Object* container_spec, const json::Object* container_status, + json::value associations, Timestamp collected_at, bool is_deleted) const + throw(json::Exception) { + return reader.GetContainerMetadata(pod, container_spec, container_status, + std::move(associations), collected_at, + is_deleted); + } + MetadataUpdater::ResourceMetadata GetLegacyResource( const KubernetesReader& reader, const json::Object* pod, const std::string& container_name) const throw(json::Exception) { @@ -425,4 +435,73 @@ TEST_F(KubernetesTest, GetClusterMetadataDeletedService) { }); EXPECT_EQ(empty_cluster->ToString(), m.metadata().metadata->ToString()); } + +TEST_F(KubernetesTest, GetContainerMetadata) { + Configuration config(std::stringstream( + "KubernetesClusterName: TestClusterName\n" + "KubernetesClusterLocation: TestClusterLocation\n" + "MetadataApiResourceTypeSeparator: \".\"\n" + )); + Environment environment(config); + KubernetesReader reader(config, nullptr); // Don't need HealthChecker. + const auto m = GetContainerMetadata( + reader, + json::object({ + {"metadata", json::object({ + {"namespace", json::string("TestNamespace")}, + {"name", json::string("TestName")}, + {"uid", json::string("TestUid")}, + {"creationTimestamp", json::string("2018-03-03T01:23:45.678901234Z")}, + {"labels", json::object({{"label", json::string("TestLabel")}})}, + })} + })->As(), + json::object({{"name", json::string("TestSpecName")}})->As(), + json::object({ + {"containerID", json::string("docker://TestContainerID")} + })->As(), + json::string("TestAssociations"), + Timestamp(), + false); + + EXPECT_EQ(std::vector({ + "k8s_container.TestUid.TestSpecName", + "k8s_container.TestNamespace.TestName.TestSpecName", + "k8s_container.TestContainerID"}), m.ids()); + EXPECT_EQ(MonitoredResource("k8s_container", { + {"cluster_name", "TestClusterName"}, + {"container_name", "TestSpecName"}, + {"location", "TestClusterLocation"}, + {"namespace_name", "TestNamespace"}, + {"pod_name", "TestName"}, + }), m.resource()); + EXPECT_EQ("1.6", m.metadata().version); + EXPECT_EQ(false, m.metadata().is_deleted); + EXPECT_EQ(time::rfc3339::FromString("2018-03-03T01:23:45.678901234Z"), + m.metadata().created_at); + EXPECT_EQ(Timestamp(), m.metadata().collected_at); + EXPECT_EQ(false, m.metadata().ignore); + EXPECT_EQ(json::object({ + {"blobs", json::object({ + {"association", json::string("TestAssociations")}, + {"labels", json::object({ + {"raw", json::object({ + {"label", json::string("TestLabel")}, + })}, + {"version", json::string("1.6")}, + })}, + {"spec", json::object({ + {"raw", json::object({ + {"name", json::string("TestSpecName")}, + })}, + {"version", json::string("1.6")}, + })}, + {"status", json::object({ + {"raw", json::object({ + {"containerID", json::string("docker://TestContainerID")}, + })}, + {"version", json::string("1.6")} + })}, + })}, + })->ToString(), m.metadata().metadata->ToString()); +} } // namespace google From 2f0c48fb4656d4d00380c51c914423e51c00b924 Mon Sep 17 00:00:00 2001 From: Andrew Emil Date: Mon, 2 Apr 2018 13:14:26 -0400 Subject: [PATCH 2/7] Switched to using EXPECT_FALSE --- test/kubernetes_unittest.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/kubernetes_unittest.cc b/test/kubernetes_unittest.cc index d9d82e58..c74eeb68 100644 --- a/test/kubernetes_unittest.cc +++ b/test/kubernetes_unittest.cc @@ -475,11 +475,11 @@ TEST_F(KubernetesTest, GetContainerMetadata) { {"pod_name", "TestName"}, }), m.resource()); EXPECT_EQ("1.6", m.metadata().version); - EXPECT_EQ(false, m.metadata().is_deleted); + EXPECT_FALSE(m.metadata().is_deleted); EXPECT_EQ(time::rfc3339::FromString("2018-03-03T01:23:45.678901234Z"), m.metadata().created_at); EXPECT_EQ(Timestamp(), m.metadata().collected_at); - EXPECT_EQ(false, m.metadata().ignore); + EXPECT_FALSE(m.metadata().ignore); EXPECT_EQ(json::object({ {"blobs", json::object({ {"association", json::string("TestAssociations")}, From 9a4de615a1107e5d2e1dc30603384db5855aa263 Mon Sep 17 00:00:00 2001 From: Andrew Emil Date: Mon, 2 Apr 2018 15:12:58 -0400 Subject: [PATCH 3/7] Addressed code review comments --- test/kubernetes_unittest.cc | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/test/kubernetes_unittest.cc b/test/kubernetes_unittest.cc index c74eeb68..13de5e8a 100644 --- a/test/kubernetes_unittest.cc +++ b/test/kubernetes_unittest.cc @@ -453,20 +453,21 @@ TEST_F(KubernetesTest, GetContainerMetadata) { {"uid", json::string("TestUid")}, {"creationTimestamp", json::string("2018-03-03T01:23:45.678901234Z")}, {"labels", json::object({{"label", json::string("TestLabel")}})}, - })} + })}, })->As(), json::object({{"name", json::string("TestSpecName")}})->As(), json::object({ - {"containerID", json::string("docker://TestContainerID")} + {"containerID", json::string("docker://TestContainerID")}, })->As(), json::string("TestAssociations"), Timestamp(), - false); + /*is_deleted=*/false); EXPECT_EQ(std::vector({ "k8s_container.TestUid.TestSpecName", "k8s_container.TestNamespace.TestName.TestSpecName", - "k8s_container.TestContainerID"}), m.ids()); + "k8s_container.TestContainerID", + }), m.ids()); EXPECT_EQ(MonitoredResource("k8s_container", { {"cluster_name", "TestClusterName"}, {"container_name", "TestSpecName"}, @@ -499,7 +500,7 @@ TEST_F(KubernetesTest, GetContainerMetadata) { {"raw", json::object({ {"containerID", json::string("docker://TestContainerID")}, })}, - {"version", json::string("1.6")} + {"version", json::string("1.6")}, })}, })}, })->ToString(), m.metadata().metadata->ToString()); From f264aa4740055ea0baf06e111661525ae7f6d70f Mon Sep 17 00:00:00 2001 From: Andrew Emil Date: Mon, 2 Apr 2018 17:00:21 -0400 Subject: [PATCH 4/7] Factored out local variables --- test/kubernetes_unittest.cc | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/test/kubernetes_unittest.cc b/test/kubernetes_unittest.cc index 13de5e8a..c9167c43 100644 --- a/test/kubernetes_unittest.cc +++ b/test/kubernetes_unittest.cc @@ -444,17 +444,18 @@ TEST_F(KubernetesTest, GetContainerMetadata) { )); Environment environment(config); KubernetesReader reader(config, nullptr); // Don't need HealthChecker. + json::value pod = json::object({ + {"metadata", json::object({ + {"namespace", json::string("TestNamespace")}, + {"name", json::string("TestName")}, + {"uid", json::string("TestUid")}, + {"creationTimestamp", json::string("2018-03-03T01:23:45.678901234Z")}, + {"labels", json::object({{"label", json::string("TestLabel")}})}, + })}, + }); const auto m = GetContainerMetadata( reader, - json::object({ - {"metadata", json::object({ - {"namespace", json::string("TestNamespace")}, - {"name", json::string("TestName")}, - {"uid", json::string("TestUid")}, - {"creationTimestamp", json::string("2018-03-03T01:23:45.678901234Z")}, - {"labels", json::object({{"label", json::string("TestLabel")}})}, - })}, - })->As(), + pod->As(), json::object({{"name", json::string("TestSpecName")}})->As(), json::object({ {"containerID", json::string("docker://TestContainerID")}, @@ -481,7 +482,7 @@ TEST_F(KubernetesTest, GetContainerMetadata) { m.metadata().created_at); EXPECT_EQ(Timestamp(), m.metadata().collected_at); EXPECT_FALSE(m.metadata().ignore); - EXPECT_EQ(json::object({ + json::value expected_metadata = json::object({ {"blobs", json::object({ {"association", json::string("TestAssociations")}, {"labels", json::object({ @@ -503,6 +504,7 @@ TEST_F(KubernetesTest, GetContainerMetadata) { {"version", json::string("1.6")}, })}, })}, - })->ToString(), m.metadata().metadata->ToString()); + }); + EXPECT_EQ(expected_metadata->ToString(), m.metadata().metadata->ToString()); } } // namespace google From c5fa083dc491ff6fe6dfda3d559edb55794ae896 Mon Sep 17 00:00:00 2001 From: Andrew Emil Date: Mon, 2 Apr 2018 18:04:42 -0400 Subject: [PATCH 5/7] Pulled out more variables --- test/kubernetes_unittest.cc | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/test/kubernetes_unittest.cc b/test/kubernetes_unittest.cc index c9167c43..41b15ef9 100644 --- a/test/kubernetes_unittest.cc +++ b/test/kubernetes_unittest.cc @@ -453,13 +453,14 @@ TEST_F(KubernetesTest, GetContainerMetadata) { {"labels", json::object({{"label", json::string("TestLabel")}})}, })}, }); + json::value spec = json::object({{"name", json::string("TestSpecName")}}); + json::value status = json::object({{ + "containerID", json::string("docker://TestContainerID")}}); const auto m = GetContainerMetadata( reader, pod->As(), - json::object({{"name", json::string("TestSpecName")}})->As(), - json::object({ - {"containerID", json::string("docker://TestContainerID")}, - })->As(), + spec->As(), + status->As(), json::string("TestAssociations"), Timestamp(), /*is_deleted=*/false); From 0558b6c88e80ecafbf516eb3994d7c967410ad10 Mon Sep 17 00:00:00 2001 From: Andrew Emil Date: Tue, 3 Apr 2018 09:40:43 -0400 Subject: [PATCH 6/7] Proper formatting for split lines --- test/kubernetes_unittest.cc | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/test/kubernetes_unittest.cc b/test/kubernetes_unittest.cc index 41b15ef9..1e0ec931 100644 --- a/test/kubernetes_unittest.cc +++ b/test/kubernetes_unittest.cc @@ -454,8 +454,9 @@ TEST_F(KubernetesTest, GetContainerMetadata) { })}, }); json::value spec = json::object({{"name", json::string("TestSpecName")}}); - json::value status = json::object({{ - "containerID", json::string("docker://TestContainerID")}}); + json::value status = json::object({ + {"containerID", json::string("docker://TestContainerID")} + }); const auto m = GetContainerMetadata( reader, pod->As(), From 418ec6f6d54819cff121c627d5c0529cb04a7a57 Mon Sep 17 00:00:00 2001 From: Andrew Emil Date: Wed, 4 Apr 2018 09:19:47 -0400 Subject: [PATCH 7/7] Added trailing comma --- test/kubernetes_unittest.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/kubernetes_unittest.cc b/test/kubernetes_unittest.cc index 1e0ec931..3e05e0ef 100644 --- a/test/kubernetes_unittest.cc +++ b/test/kubernetes_unittest.cc @@ -455,7 +455,7 @@ TEST_F(KubernetesTest, GetContainerMetadata) { }); json::value spec = json::object({{"name", json::string("TestSpecName")}}); json::value status = json::object({ - {"containerID", json::string("docker://TestContainerID")} + {"containerID", json::string("docker://TestContainerID")}, }); const auto m = GetContainerMetadata( reader,