N2 handover intra-AMF 2Gnb 1ue
This commit is contained in:
63
test_measurement_logic.cpp
Normal file
63
test_measurement_logic.cpp
Normal file
@@ -0,0 +1,63 @@
|
||||
#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;
|
||||
|
||||
// 测试用例4:PCI到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;
|
||||
}
|
||||
Reference in New Issue
Block a user