* Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. 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_mem_controller_msg.h"
#include <mockcpp/mockcpp.hpp>
#include "ubse_com.h"
#include "ubse_conf_module.h"
#include "ubse_context.h"
#include "ubse_election.h"
#include "ubse_mem_controller_api.h"
#include "ubse_mem_controller_def.h"
#include "ubse_mem_controller_def_simpo.h"
#include "ubse_mem_controller_msg.h"
#include "ubse_mem_debt_info_query.h"
#include "ubse_mem_util.h"
#include "ubse_node_controller.h"
#include "ubse_os_util.h"
#include "message/ubse_mem_controller_serial.h"
#include "message/ubse_mem_node_debt_info_conversion.h"
#include "node_mem_debt_info_simpo.h"
#include "ubse_mem_controller_msg.cpp"
namespace ubse::mem_controller::ut {
using namespace ubse::mem::controller;
using namespace ubse::mem::util;
using namespace ubse::election;
using namespace ubse::mem::def;
using namespace ubse::mem::controller::debt;
using namespace ubse::mem::controller::message;
using namespace ubse::context;
using namespace ubse::utils;
using namespace ubse::config;
void TestUbseMemControllerMsg::SetUp()
{
Test::SetUp();
NodeMemDebtInfo debt1{{{"name", UbseMemFdBorrowImportObj{}}}, {{"name", UbseMemFdBorrowExportObj{}}},
{{"name", UbseMemNumaBorrowImportObj{}}}, {{"name", UbseMemNumaBorrowExportObj{}}},
{{"name", UbseMemShareBorrowImportObj{}}}, {{"name", UbseMemShareBorrowExportObj{}}},
{{"name", UbseMemAddrBorrowImportObj{}}}, {{"name", UbseMemAddrBorrowExportObj{}}}};
mockDebtMap["1"] = debt1;
}
void TestUbseMemControllerMsg::TearDown()
{
Test::TearDown();
GlobalMockObject::verify();
}
using namespace ubse::mem::controller::message;
using namespace ubse::mem::serial;
TEST_F(TestUbseMemControllerMsg, CollectLedge)
{
std::string nodeId = "node1";
NodeMemDebtInfo info;
EXPECT_EQ(CollectLedge(nodeId, info), UBSE_ERROR_NULLPTR);
std::shared_ptr<UbseComModule> ubseComModule = std::make_shared<UbseComModule>();
MOCKER(&UbseContext::GetModule<UbseComModule>).stubs().will(returnValue(ubseComModule));
auto func = &UbseComModule::RpcSend<UbseComBaseBufferMessagePtr, UbseComBaseBufferMessagePtr>;
MOCKER(func).stubs().will(returnValue(UBSE_ERROR));
MOCKER(IsUrma).stubs().will(returnValue(true));
EXPECT_EQ(CollectLedge(nodeId, info), UBSE_ERROR);
MOCKER(IsUrma).reset();
MOCKER(IsUrma).stubs().will(returnValue(false));
MOCKER(func).stubs().will(returnValue(UBSE_ERROR));
EXPECT_EQ(CollectLedge(nodeId, info), UBSE_ERROR);
MOCKER(&UbseComBaseBufferMessage::GetDataLen).reset();
std::unique_ptr<uint8_t> ptr1 = std::make_unique<uint8_t>(1);
MOCKER(&UbseComBaseBufferMessage::GetData).stubs().will(returnValue(ptr1.get()));
MOCKER(&UbseComBaseBufferMessage::GetDataLen).stubs().will(returnValue(1));
MOCKER_CPP(&NodeMemDebtInfoDeserialize).stubs().will(returnValue(false));
EXPECT_EQ(CollectLedge(nodeId, info), UBSE_ERROR);
}
UbseResult MockErrorSerial(UbseMemLedgerRespSerial* _this)
{
return UBSE_ERROR;
}
UbseResult MockSuccessSerial(UbseMemLedgerRespSerial* _this)
{
return UBSE_OK;
}
TEST_F(TestUbseMemControllerMsg, CollectLedgeHandler)
{
std::string nodeId = "1";
MOCKER(&GetCurNodeId).stubs().will(returnValue(nodeId));
UbseByteBuffer req{};
UbseByteBuffer resp{};
MOCKER(CreateRespBuffer).stubs().will(returnValue(UBSE_OK));
UbseMemLedgerRespSerial serial{};
MOCKER_CPP_VIRTUAL(serial, &UbseMemLedgerRespSerial::Serialize)
.stubs()
.will(returnValue(UBSE_ERROR))
.then(returnValue(UBSE_OK));
EXPECT_EQ(CollectLedgeHandler(req, resp), UBSE_ERROR);
EXPECT_EQ(CollectLedgeHandler(req, resp), UBSE_OK);
MOCKER_CPP_VIRTUAL(serial, &UbseMemLedgerRespSerial::Serialize).reset();
MOCKER_CPP_VIRTUAL(serial, &UbseMemLedgerRespSerial::Serialize)
.stubs()
.will(returnValue(UBSE_ERROR))
.then(returnValue(UBSE_OK));
nodeController::UbseNodeInfo node{};
node.nodeId = nodeId;
MOCKER(&nodeController::UbseNodeController::GetCurNode).stubs().will(returnValue(node));
EXPECT_EQ(CollectLedgeHandler(req, resp), UBSE_ERROR);
EXPECT_EQ(CollectLedgeHandler(req, resp), UBSE_OK);
node.localState = UbseNodeLocalState::UBSE_NODE_READY;
MOCKER(&nodeController::UbseNodeController::GetCurNode).reset();
MOCKER(&nodeController::UbseNodeController::GetCurNode).stubs().will(returnValue(node));
EXPECT_EQ(CollectLedgeHandler(req, resp), UBSE_OK);
SafeDeleteArray(resp.data);
}
TEST_F(TestUbseMemControllerMsg, QueryFdImportObj)
{
std::string nodeId = "1";
std::string name = "name";
UbseMemFdBorrowImportObj info{};
EXPECT_EQ(QueryFdImportObj(nodeId, name, info, mockDebtMap), UBSE_OK);
}
TEST_F(TestUbseMemControllerMsg, QueryFdImportObjHandler)
{
std::string nodeId = "1";
MOCKER(&GetCurNodeId).stubs().will(returnValue(nodeId));
UbseByteBuffer req{};
UbseByteBuffer resp{};
EXPECT_EQ(QueryFdImportObjHandler(req, resp), UBSE_ERROR);
nodeController::UbseNodeInfo node{};
node.nodeId = nodeId;
MOCKER(&nodeController::UbseNodeController::GetCurNode).stubs().will(returnValue(node));
EXPECT_EQ(QueryFdImportObjHandler(req, resp), UBSE_ERROR);
node.localState = UbseNodeLocalState::UBSE_NODE_READY;
MOCKER(&nodeController::UbseNodeController::GetCurNode).reset();
MOCKER(&nodeController::UbseNodeController::GetCurNode).stubs().will(returnValue(node));
EXPECT_EQ(QueryFdImportObjHandler(req, resp), UBSE_ERROR);
req.len = 100;
req.data = new uint8_t[100];
MOCKER(&mem::serial::UbseMemFdBorrowImportObjDeserialization).stubs().will(returnValue(true));
EXPECT_EQ(QueryFdImportObjHandler(req, resp), UBSE_OK);
SafeDeleteArray(req.data);
SafeDeleteArray(resp.data);
}
TEST_F(TestUbseMemControllerMsg, QueryNumaImportObj)
{
std::string nodeId = "1";
std::string name = "name";
UbseMemNumaBorrowImportObj info{};
EXPECT_EQ(QueryNumaImportObj(nodeId, name, info, mockDebtMap), UBSE_OK);
}
TEST_F(TestUbseMemControllerMsg, QueryNumaImportObjHandler)
{
std::string nodeId = "1";
UbseByteBuffer req{};
UbseByteBuffer resp{};
MOCKER(&GetCurNodeId).stubs().will(returnValue(nodeId));
EXPECT_EQ(QueryNumaImportObjHandler(req, resp), UBSE_ERROR);
nodeController::UbseNodeInfo node{};
node.nodeId = nodeId;
MOCKER(&nodeController::UbseNodeController::GetCurNode).stubs().will(returnValue(node));
EXPECT_EQ(QueryNumaImportObjHandler(req, resp), UBSE_ERROR);
node.localState = UbseNodeLocalState::UBSE_NODE_READY;
MOCKER(&nodeController::UbseNodeController::GetCurNode).reset();
MOCKER(&nodeController::UbseNodeController::GetCurNode).stubs().will(returnValue(node));
EXPECT_EQ(QueryNumaImportObjHandler(req, resp), UBSE_ERROR);
mem::serial::UbseSerialization out;
UbseMemNumaBorrowImportObj importObj;
importObj.req.name = "test";
importObj.req.importNodeId = "1";
mem::serial::UbseMemNumaBorrowImportObjSerialization(out, importObj);
UbseByteBuffer req1{};
UbseByteBuffer resp1{};
req1.data = out.GetBuffer();
req1.len = out.GetLength();
AddNumaImport(importObj);
EXPECT_EQ(QueryNumaImportObjHandler(req1, resp1), UBSE_OK);
}
TEST_F(TestUbseMemControllerMsg, QueryAddrImportObjHandler)
{
std::string nodeId = "1";
UbseByteBuffer req{};
UbseByteBuffer resp{};
MOCKER(&GetCurNodeId).stubs().will(returnValue(nodeId));
EXPECT_EQ(QueryAddrImportObjHandler(req, resp), UBSE_ERROR);
nodeController::UbseNodeInfo node{};
node.nodeId = nodeId;
MOCKER(&nodeController::UbseNodeController::GetCurNode).stubs().will(returnValue(node));
EXPECT_EQ(QueryAddrImportObjHandler(req, resp), UBSE_ERROR);
node.localState = UbseNodeLocalState::UBSE_NODE_READY;
MOCKER(&nodeController::UbseNodeController::GetCurNode).reset();
MOCKER(&nodeController::UbseNodeController::GetCurNode).stubs().will(returnValue(node));
EXPECT_EQ(QueryAddrImportObjHandler(req, resp), UBSE_ERROR);
mem::serial::UbseSerialization out;
UbseMemAddrBorrowImportObj importObj;
importObj.req.name = "test";
importObj.req.importNodeId = "1";
mem::serial::UbseMemAddrBorrowImportObjSerialization(out, importObj);
req.data = out.GetBuffer();
req.len = out.GetLength();
AddAddrImport(importObj);
EXPECT_EQ(QueryAddrImportObjHandler(req, resp), UBSE_OK);
}
TEST_F(TestUbseMemControllerMsg, QueryAddrImportObj)
{
std::string nodeId = "1";
std::string name = "name";
UbseMemAddrBorrowImportObj info;
EXPECT_EQ(QueryAddrImportObj(nodeId, name, info, mockDebtMap), UBSE_OK);
}
TEST_F(TestUbseMemControllerMsg, PreOnLineRequest)
{
std::string nodeId = "1";
PreOnLineReq req;
SocketCnaInfo cna;
cna.importNodeId = "1";
cna.exportNodeId = "2";
cna.dcna = 10;
cna.exportSocketId = 216;
cna.deid = 1;
cna.importSocketId = 216;
cna.marId = 1;
cna.seid = 1;
req.cnas.push_back(cna);
req.taskName = "task";
EXPECT_NE(PreOnLineRequest(nodeId, req), UBSE_OK);
}
TEST_F(TestUbseMemControllerMsg, PreOnLineHandler)
{
PreOnLineReq req;
SocketCnaInfo cna;
cna.importNodeId = "1";
cna.exportNodeId = "2";
cna.dcna = 10;
cna.exportSocketId = 216;
cna.deid = 1;
cna.importSocketId = 216;
cna.marId = 1;
cna.seid = 1;
req.cnas.push_back(cna);
req.taskName = "task";
UbseByteBuffer request;
UbseByteBuffer resp;
SerializePreOnLine(req, request.data, request.len);
MOCKER(DeSerializePreOnLine).stubs().will(returnValue(UBSE_ERROR));
EXPECT_EQ(PreOnLineHandler(request, resp), UBSE_OK);
MOCKER(DeSerializePreOnLine).reset();
EXPECT_EQ(PreOnLineHandler(request, resp), UBSE_OK);
}
TEST_F(TestUbseMemControllerMsg, PreOnLineReply)
{
PreOnLineResp resp{.taskName = "task", .operateNode = "1", .ret = 0};
EXPECT_NE(PreOnLineReply(resp), UBSE_OK);
MOCKER(UbseGetMasterInfo).stubs().will(returnValue(UBSE_OK));
EXPECT_NE(PreOnLineReply(resp), UBSE_OK);
}
TEST_F(TestUbseMemControllerMsg, PreOnLineReplyHandler)
{
UbseByteBuffer req{};
UbseByteBuffer resp{};
PreOnLineResp res{.taskName = "task", .operateNode = "1", .ret = 0};
SerializePreOnlineResp(res, req.data, req.len);
MOCKER(DeSerializePreOnLineResp).stubs().will(returnValue(UBSE_ERROR));
EXPECT_EQ(UBSE_OK, PreOnLineReplyHandler(req, resp));
MOCKER(DeSerializePreOnLineResp).reset();
EXPECT_EQ(UBSE_OK, PreOnLineReplyHandler(req, resp));
}
TEST_F(TestUbseMemControllerMsg, GetLocalNumaInfoByPid)
{
uint64_t pid = 1234;
uint32_t numaId = 1;
uint32_t socketId = 0;
MOCKER(UbseOsUtil::GetNumaIdByPid).stubs().with(pid, _).will(returnValue(UBSE_OK));
ubse::nodeController::UbseNodeInfo node;
node.nodeId = "node1";
ubse::nodeController::UbseNumaLocation location{node.nodeId, numaId};
UbseNumaInfo numaInfo;
numaInfo.socketId = socketId;
node.numaInfos[location] = numaInfo;
MOCKER(&ubse::nodeController::UbseNodeController::GetCurNode).stubs().will(returnValue(node));
EXPECT_EQ(GetLocalNumaInfoByPid(pid, numaId, socketId), UBSE_OK);
EXPECT_EQ(numaId, 1);
EXPECT_EQ(socketId, 0);
}
UbseResult MockGetLocalNumaInfoByPid([[maybe_unused]] const uint64_t& pid, uint32_t& numaId, uint32_t& socketId)
{
numaId = 1;
socketId = 0;
return UBSE_OK;
}
TEST_F(TestUbseMemControllerMsg, GetNumaInfoByPidHandler)
{
uint64_t pid = 1234;
uint32_t numaId = 1;
uint32_t socketId = 0;
MOCKER(GetLocalNumaInfoByPid).stubs().will(invoke(MockGetLocalNumaInfoByPid));
serial::UbseSerialization output;
output << pid;
UbseByteBuffer req{output.GetBuffer(true), output.GetLength(), [](uint8_t* p) {
SafeDeleteArray(p);
}};
UbseByteBuffer resp;
EXPECT_EQ(GetNumaInfoByPidHandler(req, resp), UBSE_OK);
serial::UbseDeSerialization input(resp.data, resp.len);
uint32_t respNumaId;
uint32_t respSocketId;
input >> respNumaId >> respSocketId;
EXPECT_EQ(respNumaId, numaId);
EXPECT_EQ(respSocketId, socketId);
}
TEST_F(TestUbseMemControllerMsg, GetNumaInfoFromRemoteRespHandler)
{
uint32_t numaId = 1;
uint32_t socketId = 0;
UbseResult getRet = UBSE_OK;
serial::UbseSerialization output;
output << numaId << socketId;
UbseByteBuffer resp{output.GetBuffer(true), output.GetLength(), [](uint8_t* p) {
SafeDeleteArray(p);
}};
GetNumaInfoFromRemoteRespHandler(resp, UBSE_OK, numaId, socketId, getRet);
EXPECT_EQ(getRet, UBSE_OK);
EXPECT_EQ(numaId, 1);
EXPECT_EQ(socketId, 0);
}
TEST_F(TestUbseMemControllerMsg, GetNumaInfoFromAgent)
{
std::string nodeId = "node1";
uint64_t pid = 1234;
uint32_t numaId = 1;
uint32_t socketId = 0;
MOCKER(GetLocalNumaInfoByPid).stubs().with(pid, _, _).will(returnValue(UBSE_OK));
MOCKER(UbseRpcSend).stubs().will(returnValue(UBSE_OK));
EXPECT_EQ(GetNumaInfoFromAgent(nodeId, pid, numaId, socketId), UBSE_OK);
}
TEST_F(TestUbseMemControllerMsg, QueryFdExport)
{
UbseMemDebtQueryRequest request;
request.exportNodeId = "1";
request.name = "name";
UbseMemFdBorrowExportObj obj{};
std::shared_ptr<UbseComModule> ubseComModule = std::make_shared<UbseComModule>();
MOCKER(&UbseContext::GetModule<UbseComModule>).stubs().will(returnValue(ubseComModule));
auto func = &UbseComModule::RpcSend<UbseMemDebtQueryRequestSimpoPtr, UbseBaseMessagePtr>;
MOCKER(func).stubs().will(returnValue(UBSE_OK));
EXPECT_EQ(QueryFdExport(request, obj), UBSE_OK);
}
TEST_F(TestUbseMemControllerMsg, QueryFdExportHandler)
{
UbseMemDebtQueryRequest request;
request.exportNodeId = "1";
request.name = "name";
UbseMemFdBorrowExportObj obj{};
UbseByteBuffer req{};
UbseMemDebtQueryRequestSimpo simpo{};
simpo.SetUbseMemDebtQueryRequest(request);
simpo.Serialize();
req.data = simpo.mOutputRawData.get();
req.len = simpo.mOutputRawDataSize;
UbseByteBuffer resp;
EXPECT_EQ(QueryFdExportHandler(req, resp), UBSE_OK);
}
TEST_F(TestUbseMemControllerMsg, QueryNumaExport)
{
UbseMemDebtQueryRequest request;
request.exportNodeId = "1";
request.name = "name";
UbseMemNumaBorrowExportObj obj{};
std::shared_ptr<UbseComModule> ubseComModule = std::make_shared<UbseComModule>();
MOCKER(&UbseContext::GetModule<UbseComModule>).stubs().will(returnValue(ubseComModule));
auto func = &UbseComModule::RpcSend<UbseMemDebtQueryRequestSimpoPtr, UbseBaseMessagePtr>;
MOCKER(func).stubs().will(returnValue(UBSE_OK));
EXPECT_EQ(QueryNumaExport(request, obj), UBSE_OK);
}
TEST_F(TestUbseMemControllerMsg, QueryNumaExportHandler)
{
UbseMemDebtQueryRequest request;
request.exportNodeId = "1";
request.name = "name";
UbseMemNumaBorrowExportObj obj{};
UbseByteBuffer req{};
UbseMemDebtQueryRequestSimpo simpo{};
simpo.SetUbseMemDebtQueryRequest(request);
simpo.Serialize();
req.data = simpo.mOutputRawData.get();
req.len = simpo.mOutputRawDataSize;
UbseByteBuffer resp;
EXPECT_EQ(QueryNumaExportHandler(req, resp), UBSE_OK);
}
TEST_F(TestUbseMemControllerMsg, QueryAddrExport)
{
UbseMemDebtQueryRequest request;
request.exportNodeId = "1";
request.name = "name";
UbseMemAddrBorrowExportObj obj{};
std::shared_ptr<UbseComModule> ubseComModule = std::make_shared<UbseComModule>();
MOCKER(&UbseContext::GetModule<UbseComModule>).stubs().will(returnValue(ubseComModule));
auto func = &UbseComModule::RpcSend<UbseMemDebtQueryRequestSimpoPtr, UbseBaseMessagePtr>;
MOCKER(func).stubs().will(returnValue(UBSE_OK));
EXPECT_EQ(QueryAddrExport(request, obj), UBSE_OK);
}
TEST_F(TestUbseMemControllerMsg, QueryAddrExportHandler)
{
UbseMemDebtQueryRequest request;
request.exportNodeId = "1";
request.name = "name";
UbseByteBuffer req{};
UbseMemDebtQueryRequestSimpo simpo{};
simpo.SetUbseMemDebtQueryRequest(request);
simpo.Serialize();
req.data = simpo.mOutputRawData.get();
req.len = simpo.mOutputRawDataSize;
UbseByteBuffer resp;
EXPECT_EQ(QueryAddrExportHandler(req, resp), UBSE_OK);
}
TEST_F(TestUbseMemControllerMsg, QueryShareExport)
{
UbseMemDebtQueryRequest request;
request.exportNodeId = "1";
request.name = "name";
UbseMemShareBorrowExportObj obj{};
std::shared_ptr<UbseComModule> ubseComModule = std::make_shared<UbseComModule>();
MOCKER(&UbseContext::GetModule<UbseComModule>).stubs().will(returnValue(ubseComModule));
auto func = &UbseComModule::RpcSend<UbseMemDebtQueryRequestSimpoPtr, UbseBaseMessagePtr>;
MOCKER(func).stubs().will(returnValue(UBSE_OK));
EXPECT_EQ(QueryShareExport(request, obj), UBSE_OK);
}
TEST_F(TestUbseMemControllerMsg, QueryShareExportHandler)
{
UbseByteBuffer req{};
UbseByteBuffer resp{};
UbseMemDebtQueryRequest request;
request.exportNodeId = "1";
request.name = "name";
UbseMemDebtQueryRequestSimpo simpo{};
simpo.SetUbseMemDebtQueryRequest(request);
simpo.Serialize();
req.data = simpo.mOutputRawData.get();
req.len = simpo.mOutputRawDataSize;
std::shared_ptr<UbseComModule> ubseComModule = std::make_shared<UbseComModule>();
MOCKER(&UbseContext::GetModule<UbseComModule>).stubs().will(returnValue(ubseComModule));
auto func = &UbseComModule::RpcSend<UbseMemDebtQueryRequestSimpoPtr, UbseBaseMessagePtr>;
MOCKER(func).stubs().will(returnValue(UBSE_OK));
EXPECT_EQ(QueryShareExportHandler(req, resp), UBSE_OK);
}
TEST_F(TestUbseMemControllerMsg, QueryFdImport)
{
UbseMemDebtQueryRequest request;
request.exportNodeId = "1";
request.name = "name";
UbseMemFdBorrowImportObj obj{};
std::shared_ptr<UbseComModule> ubseComModule = std::make_shared<UbseComModule>();
MOCKER(&UbseContext::GetModule<UbseComModule>).stubs().will(returnValue(ubseComModule));
auto func = &UbseComModule::RpcSend<UbseMemDebtQueryRequestSimpoPtr, UbseBaseMessagePtr>;
MOCKER(func).stubs().will(returnValue(UBSE_OK));
EXPECT_EQ(QueryFdImport(request, obj), UBSE_OK);
}
TEST_F(TestUbseMemControllerMsg, QueryFdImportHandler)
{
UbseByteBuffer req{};
UbseByteBuffer resp{};
UbseMemDebtQueryRequest request;
request.exportNodeId = "1";
request.name = "name";
UbseMemDebtQueryRequestSimpo simpo{};
simpo.SetUbseMemDebtQueryRequest(request);
simpo.Serialize();
req.data = simpo.mOutputRawData.get();
req.len = simpo.mOutputRawDataSize;
std::shared_ptr<UbseComModule> ubseComModule = std::make_shared<UbseComModule>();
MOCKER(&UbseContext::GetModule<UbseComModule>).stubs().will(returnValue(ubseComModule));
auto func = &UbseComModule::RpcSend<UbseMemDebtQueryRequestSimpoPtr, UbseBaseMessagePtr>;
MOCKER(func).stubs().will(returnValue(UBSE_OK));
EXPECT_EQ(QueryFdImportHandler(req, resp), UBSE_OK);
}
TEST_F(TestUbseMemControllerMsg, QueryNumaImport)
{
UbseMemDebtQueryRequest request;
request.exportNodeId = "1";
request.name = "name";
UbseMemNumaBorrowImportObj obj{};
std::shared_ptr<UbseComModule> ubseComModule = std::make_shared<UbseComModule>();
MOCKER(&UbseContext::GetModule<UbseComModule>).stubs().will(returnValue(ubseComModule));
auto func = &UbseComModule::RpcSend<UbseMemDebtQueryRequestSimpoPtr, UbseBaseMessagePtr>;
MOCKER(func).stubs().will(returnValue(UBSE_OK));
EXPECT_EQ(QueryNumaImport(request, obj), UBSE_OK);
}
TEST_F(TestUbseMemControllerMsg, QueryNumaImportHandler)
{
UbseByteBuffer req{};
UbseByteBuffer resp{};
UbseMemDebtQueryRequest request;
request.exportNodeId = "1";
request.name = "name";
UbseMemDebtQueryRequestSimpo simpo{};
simpo.SetUbseMemDebtQueryRequest(request);
simpo.Serialize();
req.data = simpo.mOutputRawData.get();
req.len = simpo.mOutputRawDataSize;
std::shared_ptr<UbseComModule> ubseComModule = std::make_shared<UbseComModule>();
MOCKER(&UbseContext::GetModule<UbseComModule>).stubs().will(returnValue(ubseComModule));
auto func = &UbseComModule::RpcSend<UbseMemDebtQueryRequestSimpoPtr, UbseBaseMessagePtr>;
MOCKER(func).stubs().will(returnValue(UBSE_OK));
EXPECT_EQ(QueryNumaImportHandler(req, resp), UBSE_OK);
}
TEST_F(TestUbseMemControllerMsg, QueryAddrImport)
{
UbseMemDebtQueryRequest request;
request.exportNodeId = "1";
request.name = "name";
UbseMemAddrBorrowImportObj obj{};
std::shared_ptr<UbseComModule> ubseComModule = std::make_shared<UbseComModule>();
MOCKER(&UbseContext::GetModule<UbseComModule>).stubs().will(returnValue(ubseComModule));
auto func = &UbseComModule::RpcSend<UbseMemDebtQueryRequestSimpoPtr, UbseBaseMessagePtr>;
MOCKER(func).stubs().will(returnValue(UBSE_OK));
EXPECT_EQ(QueryAddrImport(request, obj), UBSE_OK);
}
TEST_F(TestUbseMemControllerMsg, QueryAddrImportHandler)
{
UbseByteBuffer req{};
UbseByteBuffer resp{};
UbseMemDebtQueryRequest request;
request.exportNodeId = "1";
request.name = "name";
UbseMemDebtQueryRequestSimpo simpo{};
simpo.SetUbseMemDebtQueryRequest(request);
simpo.Serialize();
req.data = simpo.mOutputRawData.get();
req.len = simpo.mOutputRawDataSize;
std::shared_ptr<UbseComModule> ubseComModule = std::make_shared<UbseComModule>();
MOCKER(&UbseContext::GetModule<UbseComModule>).stubs().will(returnValue(ubseComModule));
auto func = &UbseComModule::RpcSend<UbseMemDebtQueryRequestSimpoPtr, UbseBaseMessagePtr>;
MOCKER(func).stubs().will(returnValue(UBSE_OK));
EXPECT_EQ(QueryAddrImportHandler(req, resp), UBSE_OK);
}
TEST_F(TestUbseMemControllerMsg, QueryShareImport)
{
UbseMemDebtQueryRequest request;
request.exportNodeId = "1";
request.name = "name";
UbseMemShareBorrowImportObj obj{};
std::shared_ptr<UbseComModule> ubseComModule = std::make_shared<UbseComModule>();
MOCKER(&UbseContext::GetModule<UbseComModule>).stubs().will(returnValue(ubseComModule));
auto func = &UbseComModule::RpcSend<UbseMemDebtQueryRequestSimpoPtr, UbseBaseMessagePtr>;
MOCKER(func).stubs().will(returnValue(UBSE_OK));
EXPECT_EQ(QueryShareImport(request, obj), UBSE_OK);
}
TEST_F(TestUbseMemControllerMsg, QueryShareImportHandler)
{
UbseByteBuffer req{};
UbseByteBuffer resp{};
UbseMemDebtQueryRequest request;
request.exportNodeId = "1";
request.name = "name";
UbseMemDebtQueryRequestSimpo simpo{};
simpo.SetUbseMemDebtQueryRequest(request);
simpo.Serialize();
req.data = simpo.mOutputRawData.get();
req.len = simpo.mOutputRawDataSize;
std::shared_ptr<UbseComModule> ubseComModule = std::make_shared<UbseComModule>();
MOCKER(&UbseContext::GetModule<UbseComModule>).stubs().will(returnValue(ubseComModule));
auto func = &UbseComModule::RpcSend<UbseMemDebtQueryRequestSimpoPtr, UbseBaseMessagePtr>;
MOCKER(func).stubs().will(returnValue(UBSE_OK));
EXPECT_EQ(QueryShareImportHandler(req, resp), UBSE_OK);
}
TEST_F(TestUbseMemControllerMsg, IsUrma)
{
EXPECT_TRUE(IsUrma());
MOCKER_CPP(&UbseContext::GetModule<ubse::config::UbseConfModule>)
.stubs()
.will(returnValue(std::make_shared<ubse::config::UbseConfModule>()));
MOCKER_CPP(&UbseConfModule::GetConf<std::string>).stubs().will(returnValue(UBSE_ERROR));
EXPECT_TRUE(IsUrma());
MOCKER_CPP(&UbseConfModule::GetConf<std::string>).reset();
MOCKER_CPP(&UbseConfModule::GetConf<std::string>).stubs().will(returnValue(UBSE_OK));
EXPECT_FALSE(IsUrma());
}
}