diff --git a/test/kubernetes_unittest.cc b/test/kubernetes_unittest.cc index 6adbef21..58a45189 100644 --- a/test/kubernetes_unittest.cc +++ b/test/kubernetes_unittest.cc @@ -14,6 +14,14 @@ class KubernetesTest : public ::testing::Test { return reader.GetNodeMetadata(node, collected_at, is_deleted); } + MetadataUpdater::ResourceMetadata GetPodMetadata( + const KubernetesReader& reader, const json::Object* pod, + json::value associations, Timestamp collected_at, bool is_deleted) const + throw(json::Exception) { + return reader.GetPodMetadata( + pod, std::move(associations), collected_at, is_deleted); + } + json::value ComputePodAssociations(const KubernetesReader& reader, const json::Object* pod) { return reader.ComputePodAssociations(pod); @@ -52,7 +60,7 @@ TEST_F(KubernetesTest, GetNodeMetadata) { {"location", "TestClusterLocation"}, }), m.resource()); EXPECT_EQ("TestVersion", 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); @@ -137,4 +145,60 @@ TEST_F(KubernetesTest, ComputePodAssociations) { ComputePodAssociations(reader, pod->As()); EXPECT_EQ(expected_associations->ToString(), associations->ToString()); } + +TEST_F(KubernetesTest, GetPodMetadata) { + Configuration config(std::stringstream( + "KubernetesClusterName: TestClusterName\n" + "KubernetesClusterLocation: TestClusterLocation\n" + "MetadataApiResourceTypePerarator: \",\"\n" + "MetadataIngestionRawContentVersion: TestVersion\n" + )); + 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")}, + })}, + }); + const auto m = GetPodMetadata(reader, pod->As(), + json::string("TestAssociations"), Timestamp(), + false); + + EXPECT_EQ(std::vector( + {"k8s_pod.TestUid", "k8s_pod.TestNamespace.TestName"}), m.ids()); + EXPECT_EQ(MonitoredResource("k8s_pod", { + {"cluster_name", "TestClusterName"}, + {"pod_name", "TestName"}, + {"location", "TestClusterLocation"}, + {"namespace_name", "TestNamespace"}, + }), m.resource()); + EXPECT_EQ("TestVersion", m.metadata().version); + 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_FALSE(m.metadata().ignore); + json::value expected_metadata = json::object({ + {"blobs", json::object({ + {"api", json::object({ + {"raw", json::object({ + {"metadata", json::object({ + {"creationTimestamp", + json::string("2018-03-03T01:23:45.678901234Z")}, + {"name", json::string("TestName")}, + {"namespace", json::string("TestNamespace")}, + {"uid", json::string("TestUid")}, + })}, + })}, + {"version", json::string("1.6")}, + })}, + {"association", json::string("TestAssociations")}, + })}, + }); + EXPECT_EQ(expected_metadata->ToString(), m.metadata().metadata->ToString()); +} } // namespace google