* Copyright (c) 2025 Huawei Technologies Co., Ltd.
* This program is free software, you can redistribute it and/or modify it under the terms and conditions of
* CANN Open Software License Agreement Version 2.0 (the "License").
* Please refer to the License for details. You may not use this file except in compliance with the License.
* 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 FITNESS FOR A PARTICULAR PURPOSE.
* See LICENSE in the root of the software repository for the full text of the License.
*/
#include <gtest/gtest.h>
#include "mockcpp/mockcpp.hpp"
#define protected public
#define private public
#include "acl_dump.h"
#include "adx_dump_record.h"
#include "adx_dump_process.h"
#include "mmpa_api.h"
#include "error_manager_stub.h"
#include "adx_datadump_callback.h"
int32_t messageCallbackStub(const struct acldumpChunk * data, int32_t len)
{
if((sizeof(acldumpChunk) + data->bufLen) == len) {
printf("messageCallbackStub ok\n");
return 0;
} else {
return -1;
}
}
class ACL_DUMP_UTEST: public testing::Test {
protected:
virtual void SetUp() {
ClearLastReportedErrorCode();
}
virtual void TearDown() {
GlobalMockObject::verify();
ClearLastReportedErrorCode();
}
};
TEST_F(ACL_DUMP_UTEST, TestAcldumpRegCallbackSuccess)
{
acldumpUnregCallback();
aclError ret = acldumpRegCallback(messageCallbackStub, 0);
EXPECT_EQ(ret, ACL_SUCCESS);
acldumpUnregCallback();
}
TEST_F(ACL_DUMP_UTEST, TestAcldumpRegCallbackNullPointer)
{
acldumpUnregCallback();
aclError ret = acldumpRegCallback(nullptr, 0);
EXPECT_EQ(ret, ACL_ERROR_FAILURE);
EXPECT_EQ(GetLastReportedErrorCode(), "EP0007");
acldumpUnregCallback();
}
TEST_F(ACL_DUMP_UTEST, TestAcldumpRegCallbackInvalidFlag)
{
acldumpUnregCallback();
aclError ret1 = acldumpRegCallback(messageCallbackStub, 1);
EXPECT_EQ(ret1, ACL_ERROR_FAILURE);
EXPECT_EQ(GetLastReportedErrorCode(), "EP0006");
ClearLastReportedErrorCode();
aclError ret2 = acldumpRegCallback(messageCallbackStub, -1);
EXPECT_EQ(ret2, ACL_ERROR_FAILURE);
EXPECT_EQ(GetLastReportedErrorCode(), "EP0006");
ClearLastReportedErrorCode();
aclError ret3 = acldumpRegCallback(nullptr, 1);
EXPECT_EQ(ret3, ACL_ERROR_FAILURE);
EXPECT_EQ(GetLastReportedErrorCode(), "EP0007");
acldumpUnregCallback();
}
TEST_F(ACL_DUMP_UTEST, TestAcldumpRegCallbackRegisterFailed)
{
acldumpUnregCallback();
MOCKER(Adx::AdxRegDumpProcessCallBack).stubs().will(returnValue(IDE_DAEMON_ERROR));
aclError ret = acldumpRegCallback(messageCallbackStub, 0);
EXPECT_EQ(ret, ACL_ERROR_FAILURE);
acldumpUnregCallback();
}
TEST_F(ACL_DUMP_UTEST, TestAcldumpUnregCallback)
{
acldumpUnregCallback();
aclError ret = acldumpRegCallback(messageCallbackStub, 0);
EXPECT_EQ(ret, ACL_SUCCESS);
acldumpUnregCallback();
acldumpUnregCallback();
}