* Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved.
*/
#include <filesystem>
#include <fstream>
#include <string>
#include <gtest/gtest.h>
#include <mockcpp/GlobalMockObject.h>
#include <mockcpp/mockcpp.hpp>
#include "client/collector/collector.h"
#include "client/collector/receivers/ebpf_receiver.h"
#include "client/collector_manager.h"
#include "common/utils.h"
void test() {}
TEST(CollectorManagerTest, LaunchReceiverTest)
{
CollectorManager &mgr = CollectorManager::getInstance();
rapidjson::Document doc;
doc.SetObject();
EXPECT_FALSE(mgr.launchReceiver(doc));
doc.SetObject();
doc.AddMember("sampling_interval", "invalid", doc.GetAllocator());
EXPECT_FALSE(mgr.launchReceiver(doc));
doc.SetObject();
doc.AddMember("sampling_interval", 0, doc.GetAllocator());
EXPECT_FALSE(mgr.launchReceiver(doc));
doc.SetObject();
doc.AddMember("sampling_interval", 60, doc.GetAllocator());
MOCKER(&EBPFReceiver::launch).stubs().will(invoke(test));
EXPECT_TRUE(mgr.launchReceiver(doc));
MOCKER(&EBPFReceiver::launch).reset();
GlobalMockObject::verify();
GlobalMockObject::reset();
}
TEST(CollectorManagerTest, GetInstanceTest)
{
CollectorManager &manager1 = CollectorManager::getInstance();
CollectorManager &manager2 = CollectorManager::getInstance();
EXPECT_EQ(&manager1, &manager2);
}
TEST(CollectorManagerTest, LaunchCollectorTest)
{
CollectorManager &mgr = CollectorManager::getInstance();
rapidjson::Document doc;
doc.SetObject();
EXPECT_FALSE(mgr.launchCollector(doc));
doc.SetObject();
doc.AddMember("system", "invalid", doc.GetAllocator());
EXPECT_FALSE(mgr.launchCollector(doc));
doc.SetObject();
rapidjson::Value systemObj(rapidjson::kObjectType);
systemObj.AddMember("invalid_collector", "enable", doc.GetAllocator());
doc.AddMember("system", systemObj, doc.GetAllocator());
EXPECT_FALSE(mgr.launchCollector(doc));
doc.SetObject();
rapidjson::Value systemObj2(rapidjson::kObjectType);
systemObj2.AddMember("ipi_collection", "invalid", doc.GetAllocator());
doc.AddMember("system", systemObj2, doc.GetAllocator());
EXPECT_FALSE(mgr.launchCollector(doc));
}
TEST(CollectorManagerTest, DaemonizeTest)
{
CollectorManager &mgr = CollectorManager::getInstance();
mgr.daemonize();
MOCKER(utils::forkWithDir).expects(once()).will(returnValue(1));
mgr.daemonize();
MOCKER(utils::forkWithDir).reset();
GlobalMockObject::verify();
GlobalMockObject::reset();
}