Skip to content

Commit

Permalink
add test
Browse files Browse the repository at this point in the history
  • Loading branch information
NameHaibinZhang committed Sep 5, 2024
1 parent cf27c99 commit 45d5eb0
Showing 1 changed file with 127 additions and 1 deletion.
128 changes: 127 additions & 1 deletion core/unittest/metadata/K8sMetadataUnittest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
#include <vector>
#include "metadata/ProcessorK8sMetadata.h"
#include "metadata/k8sMetadata.h"
#include "models/PipelineEventGroup.h"

using namespace std;

Expand Down Expand Up @@ -141,7 +142,6 @@ class k8sMetadataUnittest : public ::testing::Test {

auto& k8sMetadata = K8sMetadata::GetInstance();
k8sMetadata.SetIpCache(root);
k8sMetadata.GetByLocalHost();

auto sourceBuffer = std::make_shared<SourceBuffer>();
PipelineEventGroup eventGroup(sourceBuffer);
Expand Down Expand Up @@ -180,10 +180,136 @@ class k8sMetadataUnittest : public ::testing::Test {
APSARA_TEST_EQUAL("kube-proxy-worker", metricEvent.GetTag("peerWorkloadName").to_string());
APSARA_TEST_TRUE_FATAL(k8sMetadata.GetInfoByIpFromCache("10.41.0.2") != nullptr);
}

void TestProcessEventForMetric() {
LOG_INFO(sLogger, ("TestGetByLocalHost() begin", time(NULL)));
// Sample JSON data
const std::string jsonData = R"({
"10.41.0.2": {
"namespace": "kube-system",
"workloadName": "coredns-7b669cbb96",
"workloadKind": "replicaset",
"serviceName": "",
"labels": {
"k8s-app": "kube-dns",
"pod-template-hash": "7b669cbb96"
},
"envs": {
"COREDNS_NAMESPACE": "",
"COREDNS_POD_NAME": ""
},
"images": {
"coredns": "registry-cn-chengdu-vpc.ack.aliyuncs.com/acs/coredns:v1.9.3.10-7dfca203-aliyun"
}
},
"10.41.0.3": {
"namespace": "kube-system",
"workloadName": "csi-provisioner-8bd988c55",
"workloadKind": "replicaset",
"serviceName": "",
"labels": {
"app": "csi-provisioner",
"pod-template-hash": "8bd988c55"
},
"envs": {
"CLUSTER_ID": "c33235919ddad4f279b3a67c2f0046704",
"ENABLE_NAS_SUBPATH_FINALIZER": "true",
"KUBE_NODE_NAME": "",
"SERVICE_TYPE": "provisioner"
},
"images": {
"csi-provisioner": "registry-cn-chengdu-vpc.ack.aliyuncs.com/acs/csi-plugin:v1.30.3-921e63a-aliyun",
"external-csi-snapshotter": "registry-cn-chengdu-vpc.ack.aliyuncs.com/acs/csi-snapshotter:v4.0.0-a230d5b-aliyun",
"external-disk-attacher": "registry-cn-chengdu-vpc.ack.aliyuncs.com/acs/csi-attacher:v4.5.0-4a01fda6-aliyun",
"external-disk-provisioner": "registry-cn-chengdu-vpc.ack.aliyuncs.com/acs/csi-provisioner:v3.5.0-e7da67e52-aliyun",
"external-disk-resizer": "registry-cn-chengdu-vpc.ack.aliyuncs.com/acs/csi-resizer:v1.3-e48d981-aliyun",
"external-nas-provisioner": "registry-cn-chengdu-vpc.ack.aliyuncs.com/acs/csi-provisioner:v3.5.0-e7da67e52-aliyun",
"external-nas-resizer": "registry-cn-chengdu-vpc.ack.aliyuncs.com/acs/csi-resizer:v1.3-e48d981-aliyun",
"external-oss-provisioner": "registry-cn-chengdu-vpc.ack.aliyuncs.com/acs/csi-provisioner:v3.5.0-e7da67e52-aliyun",
"external-snapshot-controller": "registry-cn-chengdu-vpc.ack.aliyuncs.com/acs/snapshot-controller:v4.0.0-a230d5b-aliyun"
}
},
"172.16.20.108": {
"namespace": "kube-system",
"workloadName": "kube-proxy-worker",
"workloadKind": "daemonset",
"serviceName": "",
"labels": {
"controller-revision-hash": "756748b889",
"k8s-app": "kube-proxy-worker",
"pod-template-generation": "1"
},
"envs": {
"NODE_NAME": ""
},
"images": {
"kube-proxy-worker": "registry-cn-chengdu-vpc.ack.aliyuncs.com/acs/kube-proxy:v1.30.1-aliyun.1"
}
}
})";

Json::Value root;
Json::CharReaderBuilder readerBuilder;
std::istringstream jsonStream(jsonData);
std::string errors;

// Parse JSON data
if (!Json::parseFromStream(readerBuilder, jsonStream, &root, &errors)) {
std::cerr << "Failed to parse JSON: " << errors << std::endl;
return;
}


auto& k8sMetadata = K8sMetadata::GetInstance();
k8sMetadata.SetIpCache(root);
k8sMetadata.GetByLocalHost();

auto sourceBuffer = std::make_shared<SourceBuffer>();
PipelineEventGroup eventGroup(sourceBuffer);
std::string eventStr = R"({
"events" :
[
{
"name": "test",
"tags": {
"remote_ip": "172.16.20.108"
},
"timestamp" : 12345678901,
"timestampNanosecond" : 0,
"type" : 2,
"value": {
"type": "untyped_single_value",
"detail": 10.0
}
}
],
"metadata" :
{
"log.file.path" : "/var/log/message"
},
"tags" :
{
"app_name" : "xxx"
}
})";
eventGroup.FromJsonString(eventStr);
eventGroup.AddMetricEvent();
ProcessorK8sMetadata& processor = *(new ProcessorK8sMetadata);
std::vector<std::string> container_vec;
std::vector<std::string> remote_ip_vec;
EventsContainer& events = eventGroup.MutableEvents();
processor.ProcessEventForMetric(events[0].Cast<MetricEvent>(), container_vec, remote_ip_vec);
EventsContainer& eventsEnd = eventGroup.MutableEvents();
auto& metricEvent = eventsEnd[0].Cast<MetricEvent>();
APSARA_TEST_EQUAL("kube-proxy-worker", metricEvent.GetTag("peerWorkloadName").to_string());
APSARA_TEST_TRUE_FATAL(k8sMetadata.GetInfoByIpFromCache("10.41.0.2") != nullptr);
}
};

APSARA_UNIT_TEST_CASE(k8sMetadataUnittest, TestGetByContainerIds, 0);
APSARA_UNIT_TEST_CASE(k8sMetadataUnittest, TestGetByLocalHost, 1);
APSARA_UNIT_TEST_CASE(k8sMetadataUnittest, TestProcessEventForMetric, 2);


} // end of namespace logtail

Expand Down

0 comments on commit 45d5eb0

Please sign in to comment.