* Copyright (c) Huawei Technologies Co., Ltd. 2026-2026. All rights reserved.
* ubs-engine is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
* http://license.coscl.org.cn/MulanPSL2
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
*/
#include "test_ubse_mti_eid_interface.h"
#include "ubse_error.h"
#include "ubse_mti_eid_internal.h"
#include "adapter_plugins/mti/ubse_mti_eid_interface.h"
namespace ubse::utils {
void TestUbseMtiEidInterface::SetUp()
{
Test::SetUp();
}
void TestUbseMtiEidInterface::TearDown()
{
Test::TearDown();
}
* 用例描述
* 测试GenerateUrmaDevEid正常生成EID
* 测试步骤
* 1. 传入合法的superPodId、nodeId、fe0Id、fe1Id
* 2. 调用GenerateUrmaDevEid
* 预期结果
* 1. 返回非空字符串
* 2. 返回的EID格式正确(8段,每段4位十六进制)
*/
TEST_F(TestUbseMtiEidInterface, GenerateUrmaDevEid_Normal)
{
auto eid = GenerateUrmaDevEid(0, 1, 0, 0);
EXPECT_EQ(eid, "4245:4944:0000:0000:0000:0000:0100:0000");
auto eid2 = GenerateUrmaDevEid(0, 2, 0, 0);
EXPECT_EQ(eid2, "4245:4944:0000:0000:0000:0000:0200:0000");
}
TEST_F(TestUbseMtiEidInterface, GenerateUrmaDevEid_FeId)
{
auto eid1 = GenerateUrmaDevEid(0, 1, 1, 1);
EXPECT_EQ(eid1, "4245:4944:0000:0000:0100:0100:0100:0000");
auto eid2 = GenerateUrmaDevEid(0, 1, 2, 1);
EXPECT_EQ(eid2, "4245:4944:0000:0000:0100:0200:0100:0000");
}
* 用例描述
* 测试ParseBaseEid正常解析
* 测试步骤
* 1. 传入合法的EID字符串
* 2. 调用ParseBaseEid
* 预期结果
* 1. 返回UBSE_OK
* 2. bitStr长度为128
*/
TEST_F(TestUbseMtiEidInterface, ParseBaseEid_Normal)
{
std::string baseEid = "4245:4944:0000:0000:0000:0000:0100:0000";
std::string bitStr;
auto ret = ParseBaseEid(baseEid, bitStr);
EXPECT_EQ(ret, UBSE_OK);
EXPECT_EQ(bitStr.size(), 128);
std::string expectedBitStr = "01000010010001010100100101000100";
expectedBitStr += "00000000000000000000000000000000"
"00000000000000000000000000000000"
"00000001000000000000000000000000";
EXPECT_EQ(bitStr, expectedBitStr);
}
TEST_F(TestUbseMtiEidInterface, ParseBaseEid_TooFewSegments)
{
std::string baseEid = "4245:4944:0000";
std::string bitStr;
auto ret = ParseBaseEid(baseEid, bitStr);
EXPECT_EQ(ret, UBSE_ERROR);
}
TEST_F(TestUbseMtiEidInterface, ParseBaseEid_EmptyString)
{
std::string baseEid;
std::string bitStr;
auto ret = ParseBaseEid(baseEid, bitStr);
EXPECT_EQ(ret, UBSE_ERROR);
}
* 用例描述
* 测试ParseCnaFromEid正常解析
* 测试步骤
* 1. 传入合法的EID字符串
* 2. 调用ParseCnaFromEid
* 预期结果
* 1. 返回UBSE_OK
* 2. cna值正确(从第97位起取24位)
*/
TEST_F(TestUbseMtiEidInterface, ParseCnaFromEid_Normal)
{
std::string eid = "0000:0000:0044:5200:0010:0000:140b:c510";
std::string cna;
auto ret = ParseCnaFromEid(eid, cna);
EXPECT_EQ(ret, UBSE_OK);
EXPECT_EQ(cna, "0000:0000:0000:0000:0000:0000:140b:c500");
}
TEST_F(TestUbseMtiEidInterface, ParseCnaFromEid_EmptyString)
{
std::string eid;
std::string cna;
auto ret = ParseCnaFromEid(eid, cna);
EXPECT_EQ(ret, UBSE_ERROR);
}
TEST_F(TestUbseMtiEidInterface, ParseCnaFromEid_InvalidFormat)
{
std::string eid = "0000:0000:0044:5200:0010:0000:140b:c510:0000";
std::string cna;
auto ret = ParseCnaFromEid(eid, cna);
EXPECT_EQ(ret, UBSE_ERROR);
}
TEST_F(TestUbseMtiEidInterface, ParseCnaFromEid_SameCna)
{
std::string eid1 = "0000:0000:0044:5200:0010:0000:140b:c520";
std::string eid2 = "0000:0000:0044:5200:0010:0000:140b:c518";
std::string cna1;
std::string cna2;
auto ret1 = ParseCnaFromEid(eid1, cna1);
auto ret2 = ParseCnaFromEid(eid2, cna2);
EXPECT_EQ(ret1, UBSE_OK);
EXPECT_EQ(ret2, UBSE_OK);
EXPECT_EQ(cna1, cna2);
}
* 用例描述
* 测试ConstructEid正常构造
* 测试步骤
* 1. 先通过ParseBaseEid获取bitStr
* 2. 调用ConstructEid
* 预期结果
* 1. 构造出的EID与原始EID一致
*/
TEST_F(TestUbseMtiEidInterface, ConstructEid_Normal)
{
std::string baseEid = "4245:4944:0000:0000:0000:0000:0100:0000";
std::string bitStr;
ParseBaseEid(baseEid, bitStr);
std::string eid;
ConstructEid(bitStr, eid);
EXPECT_EQ(eid, baseEid);
}
TEST_F(TestUbseMtiEidInterface, ConstructEid_EmptyBitStr)
{
std::string bitStr;
std::string eid;
ConstructEid(bitStr, eid);
EXPECT_TRUE(eid.empty());
}
* 用例描述
* 测试OverwriteEid(serverIdx)正常重写
* 测试步骤
* 1. 传入合法的serverIdx和baseEid
* 2. 调用OverwriteEid
* 预期结果
* 1. 返回UBSE_OK
* 2. result非空且与baseEid相同
*/
TEST_F(TestUbseMtiEidInterface, OverwriteEid_ServerIdx_Normal)
{
std::string baseEid = "0000:0000:0004:0200:0010:0000:1404:0500";
std::string result;
auto ret = OverwriteEid(8, baseEid, result);
EXPECT_EQ(ret, UBSE_OK);
EXPECT_EQ(result, baseEid);
}
TEST_F(TestUbseMtiEidInterface, OverwriteEid_ServerIdx_DifferentResult)
{
std::string baseEid = "0000:0000:0004:0200:0010:0000:1404:0500";
std::string result1;
std::string result2;
std::string result3;
auto ret1 = OverwriteEid(0, baseEid, result1);
auto ret2 = OverwriteEid(11, baseEid, result2);
auto ret3 = OverwriteEid(511, baseEid, result3);
EXPECT_EQ(ret1, UBSE_OK);
EXPECT_EQ(ret2, UBSE_OK);
EXPECT_EQ(ret3, UBSE_OK);
EXPECT_EQ(result1, "0000:0000:0004:0200:0010:0000:1400:0500");
EXPECT_EQ(result2, "0000:0000:0004:0200:0010:0000:1405:8500");
EXPECT_EQ(result3, "0000:0000:0004:0200:0010:0000:14ff:8500");
}
TEST_F(TestUbseMtiEidInterface, OverwriteEid_ServerIdx_InvalidBaseEid)
{
std::string baseEid = "invalid";
std::string result;
auto ret = OverwriteEid(0, baseEid, result);
EXPECT_EQ(ret, UBSE_ERROR);
}
}