Files
ueransim/test_measurement_logic.cpp
2025-09-11 06:16:32 +00:00

64 lines
2.9 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#include <iostream>
#include <cstdlib>
#include <ctime>
// 直接包含头文件中的算法
#include "src/gnb/rrc/measurement_logic.hpp"
int main() {
std::srand(std::time(nullptr));
std::cout << "=== RRC测量报告逻辑测试 ===" << std::endl;
// 测试用例1模拟测量数据生成
std::cout << "\n1. 测量数据生成测试:" << std::endl;
for (int ueId = 1; ueId <= 3; ueId++) {
auto measurement = nr::gnb::measurement::HandoverDecisionEngine::generateSimulatedMeasurement(ueId);
std::cout << "UE " << ueId << " 测量结果:" << std::endl;
std::cout << " 服务小区 PCI=" << measurement.serving.pci
<< " RSRP=" << measurement.serving.rsrp << " dBm" << std::endl;
std::cout << " 邻居小区 PCI=" << measurement.neighbors[0].pci
<< " RSRP=" << measurement.neighbors[0].rsrp << " dBm" << std::endl;
}
// 测试用例2切换判决测试
std::cout << "\n2. 切换判决测试:" << std::endl;
// 创建需要切换的场景
nr::gnb::measurement::UeMeasurementData testMeasurement;
testMeasurement.ueId = 100;
testMeasurement.serving.pci = 1;
testMeasurement.serving.rsrp = -110; // 弱信号
testMeasurement.neighbors.resize(1);
testMeasurement.neighbors[0].pci = 2;
testMeasurement.neighbors[0].rsrp = -95; // 强信号差值15dB > 8dB阈值
int targetGnbId;
bool shouldHandover = nr::gnb::measurement::HandoverDecisionEngine::shouldTriggerHandover(testMeasurement, targetGnbId);
std::cout << "测试场景服务小区RSRP=-110dBm邻居小区RSRP=-95dBm" << std::endl;
std::cout << "RSRP差值" << (testMeasurement.neighbors[0].rsrp - testMeasurement.serving.rsrp) << " dB" << std::endl;
std::cout << "切换决定:" << (shouldHandover ? "" : "") << std::endl;
if (shouldHandover) {
std::cout << "目标gNB ID" << targetGnbId << std::endl;
}
// 测试用例3不需要切换的场景
testMeasurement.neighbors[0].rsrp = -108; // 差值只有2dB < 8dB阈值
shouldHandover = nr::gnb::measurement::HandoverDecisionEngine::shouldTriggerHandover(testMeasurement, targetGnbId);
std::cout << "\n测试场景服务小区RSRP=-110dBm邻居小区RSRP=-108dBm" << std::endl;
std::cout << "RSRP差值" << (testMeasurement.neighbors[0].rsrp - testMeasurement.serving.rsrp) << " dB" << std::endl;
std::cout << "切换决定:" << (shouldHandover ? "" : "") << std::endl;
// 测试用例4PCI到gNB ID映射
std::cout << "\n3. PCI到gNB ID映射测试" << std::endl;
for (int pci = 1; pci <= 5; pci++) {
int gnbId = nr::gnb::measurement::HandoverDecisionEngine::mapPciToGnbId(pci);
std::cout << "PCI " << pci << " -> gNB ID " << gnbId << std::endl;
}
std::cout << "\n=== 测试完成 ===" << std::endl;
return 0;
}