Skip to content

Commit b6a6425

Browse files
committed
fix ut
1 parent 43b44b8 commit b6a6425

File tree

6 files changed

+80
-41
lines changed

6 files changed

+80
-41
lines changed

Diff for: core/ebpf/plugin/network_observer/NetworkObserverManager.cpp

+12-15
Original file line numberDiff line numberDiff line change
@@ -115,21 +115,6 @@ enum {
115115
TCP_MAX_STATES = 13,
116116
};
117117

118-
enum class JobType {
119-
METRIC_AGG,
120-
SPAN_AGG,
121-
LOG_AGG,
122-
HOST_META_UPDATE,
123-
};
124-
125-
class NetworkObserverScheduleConfig : public ScheduleConfig {
126-
public:
127-
NetworkObserverScheduleConfig(const std::chrono::seconds& interval, JobType jobType)
128-
: ScheduleConfig(PluginType::NETWORK_OBSERVE, interval), mJobType(jobType) {}
129-
130-
JobType mJobType;
131-
};
132-
133118
NetworkObserverManager::NetworkObserverManager(std::shared_ptr<ProcessCacheManager>& baseMgr,
134119
std::shared_ptr<SourceManager> sourceManager,
135120
moodycamel::BlockingConcurrentQueue<std::shared_ptr<CommonEvent>>& queue,
@@ -465,6 +450,9 @@ bool NetworkObserverManager::ConsumeLogAggregateTree(const std::chrono::steady_c
465450
if (!this->mFlag || this->mSuspendFlag) {
466451
return false;
467452
}
453+
#ifdef APSARA_UNIT_TEST_MAIN
454+
mExecTimes++;
455+
#endif
468456

469457
WriteLock lk(mLogAggLock);
470458
SIZETAggTree<AppLogGroup, std::shared_ptr<AbstractRecord>> aggTree = this->mLogAggregator.GetAndReset();
@@ -596,6 +584,9 @@ bool NetworkObserverManager::ConsumeNetMetricAggregateTree(const std::chrono::st
596584
if (!this->mFlag || this->mSuspendFlag) {
597585
return false;
598586
}
587+
#ifdef APSARA_UNIT_TEST_MAIN
588+
mExecTimes++;
589+
#endif
599590

600591
WriteLock lk(mLogAggLock);
601592
SIZETAggTreeWithSourceBuffer<NetMetricData, std::shared_ptr<AbstractRecord>> aggTree
@@ -749,6 +740,9 @@ bool NetworkObserverManager::ConsumeMetricAggregateTree(const std::chrono::stead
749740
if (!this->mFlag || this->mSuspendFlag) {
750741
return false;
751742
}
743+
#ifdef APSARA_UNIT_TEST_MAIN
744+
mExecTimes++;
745+
#endif
752746

753747
LOG_DEBUG(sLogger, ("enter aggregator ...", mAppAggregator.NodeCount()));
754748

@@ -950,6 +944,9 @@ bool NetworkObserverManager::ConsumeSpanAggregateTree(const std::chrono::steady_
950944
if (!this->mFlag || this->mSuspendFlag) {
951945
return false;
952946
}
947+
#ifdef APSARA_UNIT_TEST_MAIN
948+
mExecTimes++;
949+
#endif
953950

954951
WriteLock lk(mSpanAggLock);
955952
SIZETAggTree<AppSpanGroup, std::shared_ptr<AbstractRecord>> aggTree = this->mSpanAggregator.GetAndReset();

Diff for: core/ebpf/plugin/network_observer/NetworkObserverManager.h

+21
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,21 @@
3131

3232
namespace logtail::ebpf {
3333

34+
enum class JobType {
35+
METRIC_AGG,
36+
SPAN_AGG,
37+
LOG_AGG,
38+
HOST_META_UPDATE,
39+
};
40+
41+
class NetworkObserverScheduleConfig : public ScheduleConfig {
42+
public:
43+
NetworkObserverScheduleConfig(const std::chrono::seconds& interval, JobType jobType)
44+
: ScheduleConfig(PluginType::NETWORK_OBSERVE, interval), mJobType(jobType) {}
45+
46+
JobType mJobType;
47+
};
48+
3449
class NetworkObserverManager : public AbstractManager {
3550
public:
3651
static std::shared_ptr<NetworkObserverManager>
@@ -205,7 +220,13 @@ class NetworkObserverManager : public AbstractManager {
205220

206221
std::vector<std::string> mEnableCids;
207222
std::vector<std::string> mDisableCids;
223+
224+
std::atomic_int mExecTimes = 0;
208225
#endif
209226
};
210227

228+
#ifdef APSARA_UNIT_TEST_MAIN
229+
int GuessContainerIdOffset();
230+
#endif
231+
211232
} // namespace logtail::ebpf

Diff for: core/metadata/K8sMetadata.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ K8sMetadata::K8sMetadata(size_t ipCacheSize, size_t cidCacheSize, size_t externa
8888
mServiceHost = STRING_FLAG(singleton_service);
8989
mServicePort = INT32_FLAG(singleton_port);
9090
const char* value = getenv("_node_ip_");
91-
if (value != NULL) {
91+
if (value != nullptr) {
9292
mHostIp = StringTo<string>(value);
9393
} else {
9494
mHostIp = GetHostIp();
@@ -105,7 +105,7 @@ K8sMetadata::K8sMetadata(size_t ipCacheSize, size_t cidCacheSize, size_t externa
105105
}
106106

107107
#ifdef APSARA_UNIT_TEST_MAIN
108-
mEnable = BOOL_FLAG(disable_k8s_meta);
108+
mEnable = !BOOL_FLAG(disable_k8s_meta);
109109
#else
110110
mEnable = getenv("KUBERNETES_SERVICE_HOST") && AppConfig::GetInstance()->IsPurageContainerMode()
111111
&& mServiceHost.size() && mServicePort > 0 && !BOOL_FLAG(disable_k8s_meta);

Diff for: core/unittest/common/timer/TimerUnittest.cpp

-24
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
#include <vector>
1616

1717
#include "common/timer/Timer.h"
18-
#include "ebpf/type/AggregateEvent.h"
1918
#include "unittest/Unittest.h"
2019

2120
using namespace std;
@@ -57,30 +56,7 @@ void TimerUnittest::TestPushEvent() {
5756
timer.mQueue.pop();
5857
}
5958

60-
void TimerUnittest::TestPeriodicEvent() {
61-
// Timer::GetInstance()->Init();
62-
// mFlag = true;
63-
// std::unique_ptr<ebpf::AggregateEvent> event = std::make_unique<ebpf::AggregateEvent>(
64-
// 1, // interval second
65-
// [this](const std::chrono::steady_clock::time_point& execTime) { // handler
66-
// this->mVec.push_back(1);
67-
// return true;
68-
// },
69-
// [this]() { // validator
70-
// return !this->mFlag;
71-
// });
72-
// Timer::GetInstance()->PushEvent(std::move(event));
73-
// std::this_thread::sleep_for(std::chrono::seconds(5));
74-
// // update start uid, invalid event schedule ...
75-
// mFlag = false;
76-
// std::this_thread::sleep_for(std::chrono::seconds(2));
77-
// APSARA_TEST_TRUE(Timer::GetInstance()->mQueue.empty());
78-
// APSARA_TEST_EQUAL(mVec.size(), 5UL);
79-
// Timer::GetInstance()->Stop();
80-
}
81-
8259
UNIT_TEST_CASE(TimerUnittest, TestPushEvent)
83-
UNIT_TEST_CASE(TimerUnittest, TestPeriodicEvent)
8460

8561

8662
} // namespace logtail

Diff for: core/unittest/ebpf/NetworkObserverUnittest.cpp

+44
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@ class NetworkObserverManagerUnittest : public ::testing::Test {
4444
void TestErrorHandling();
4545
void TestPluginLifecycle();
4646
void TestHandleHostMetadataUpdate();
47+
void TestGuessContainerIdOffSet();
48+
void TestPeriodicalTask();
4749

4850
protected:
4951
void SetUp() override {
@@ -618,6 +620,45 @@ void NetworkObserverManagerUnittest::TestHandleHostMetadataUpdate() {
618620
APSARA_TEST_EQUAL(mManager->mDisableCids.size(), 2); // delete "2" "3"
619621
}
620622

623+
void NetworkObserverManagerUnittest::TestGuessContainerIdOffSet() {
624+
auto offset = GuessContainerIdOffset();
625+
APSARA_TEST_GT(offset, 0);
626+
}
627+
628+
void NetworkObserverManagerUnittest::TestPeriodicalTask() {
629+
// manager init, will execute
630+
mManager->mFlag = true;
631+
Timer::GetInstance()->Clear();
632+
eBPFServer::GetInstance()->UpdatePluginManager(PluginType::NETWORK_OBSERVE, mManager);
633+
634+
auto now = std::chrono::steady_clock::now();
635+
std::shared_ptr<ScheduleConfig> metricConfig
636+
= std::make_shared<NetworkObserverScheduleConfig>(std::chrono::seconds(15), JobType::METRIC_AGG);
637+
std::shared_ptr<ScheduleConfig> spanConfig
638+
= std::make_shared<NetworkObserverScheduleConfig>(std::chrono::seconds(2), JobType::SPAN_AGG);
639+
std::shared_ptr<ScheduleConfig> logConfig
640+
= std::make_shared<NetworkObserverScheduleConfig>(std::chrono::seconds(2), JobType::LOG_AGG);
641+
mManager->ScheduleNext(now, metricConfig);
642+
mManager->ScheduleNext(now, spanConfig);
643+
mManager->ScheduleNext(now, logConfig);
644+
APSARA_TEST_EQUAL(mManager->mExecTimes, 4);
645+
std::this_thread::sleep_for(std::chrono::seconds(3));
646+
APSARA_TEST_EQUAL(mManager->mExecTimes, 6);
647+
std::this_thread::sleep_for(std::chrono::seconds(2));
648+
APSARA_TEST_EQUAL(mManager->mExecTimes, 8);
649+
std::this_thread::sleep_for(std::chrono::seconds(2));
650+
APSARA_TEST_EQUAL(mManager->mExecTimes, 10);
651+
std::this_thread::sleep_for(std::chrono::seconds(2));
652+
APSARA_TEST_EQUAL(mManager->mExecTimes, 12);
653+
std::this_thread::sleep_for(std::chrono::seconds(2));
654+
APSARA_TEST_EQUAL(mManager->mExecTimes, 14);
655+
std::this_thread::sleep_for(std::chrono::seconds(2));
656+
APSARA_TEST_EQUAL(mManager->mExecTimes, 16);
657+
std::this_thread::sleep_for(std::chrono::seconds(3));
658+
// execute 2 metric task
659+
APSARA_TEST_EQUAL(mManager->mExecTimes, 20);
660+
}
661+
621662

622663
UNIT_TEST_CASE(NetworkObserverManagerUnittest, TestInitialization);
623664
UNIT_TEST_CASE(NetworkObserverManagerUnittest, TestEventHandling);
@@ -629,6 +670,9 @@ UNIT_TEST_CASE(NetworkObserverManagerUnittest, TestRollbackProcessing);
629670
UNIT_TEST_CASE(NetworkObserverManagerUnittest, TestConfigUpdate);
630671
UNIT_TEST_CASE(NetworkObserverManagerUnittest, TestPluginLifecycle);
631672
UNIT_TEST_CASE(NetworkObserverManagerUnittest, TestHandleHostMetadataUpdate);
673+
UNIT_TEST_CASE(NetworkObserverManagerUnittest, TestGuessContainerIdOffSet);
674+
UNIT_TEST_CASE(NetworkObserverManagerUnittest, TestPeriodicalTask);
675+
632676

633677
} // namespace ebpf
634678
} // namespace logtail

Diff for: core/unittest/metadata/K8sMetadataUnittest.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -253,6 +253,7 @@ class k8sMetadataUnittest : public ::testing::Test {
253253
auto& k8sMetadata = K8sMetadata::GetInstance();
254254
APSARA_TEST_TRUE(k8sMetadata.mIsValid);
255255
APSARA_TEST_TRUE(k8sMetadata.mEnable);
256+
APSARA_TEST_EQUAL(k8sMetadata.mFailCount, 0);
256257
for (int i = 0; i < 10; i++) {
257258
// fail request
258259
k8sMetadata.AsyncQueryMetadata(PodInfoType::IpInfo, "192.168.0." + std::to_string(i));

0 commit comments

Comments
 (0)