* Copyright (c) 2024 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "hisysevent_easy_test.h"
#include "easy_def.h"
#include "easy_event_builder.h"
#include "easy_event_encoder.h"
#include "easy_socket_writer.h"
#include "easy_util.h"
#include "hisysevent_easy.h"
using namespace testing::ext;
void HiSysEventEasyTest::SetUp()
{}
void HiSysEventEasyTest::TearDown()
{}
* @tc.name: HiSysEventEasyTest001
* @tc.desc: Test writing event with valid content.
* @tc.type: FUNC
* @tc.require: issueIAKQGU
*/
HWTEST_F(HiSysEventEasyTest, HiSysEventEasyTest001, TestSize.Level3)
{
int ret = OH_HiSysEvent_Easy_Write("KERNEL_VENDOR", "POWER_KEY", EASY_EVENT_TYPE_FAULT, "TEST_DATA");
ASSERT_EQ(ret, SUCCESS);
}
* @tc.name: HiSysEventEasyTest002
* @tc.desc: Test writing event with invalid domain.
* @tc.type: FUNC
* @tc.require: issueIAKQGU
*/
HWTEST_F(HiSysEventEasyTest, HiSysEventEasyTest002, TestSize.Level3)
{
int ret = OH_HiSysEvent_Easy_Write(nullptr, "POWER_KEY", EASY_EVENT_TYPE_FAULT, "TEST_DATA");
ASSERT_EQ(ret, ERR_DOMAIN_INVALID);
ret = OH_HiSysEvent_Easy_Write("KERNEL_VENDORKERNEL_VENDOR", "POWER_KEY", EASY_EVENT_TYPE_FAULT, "TEST_DATA");
ASSERT_EQ(ret, ERR_DOMAIN_INVALID);
}
* @tc.name: HiSysEventEasyTest003
* @tc.desc: Test writing event with different event type.
* @tc.type: FUNC
* @tc.require: issueIAKQGU
*/
HWTEST_F(HiSysEventEasyTest, HiSysEventEasyTest003, TestSize.Level3)
{
enum HiSysEventEasyType invalidType = (enum HiSysEventEasyType)0;
int ret = OH_HiSysEvent_Easy_Write("KERNEL_VENDOR", "POWER_KEY", invalidType, "TEST_DATA");
ASSERT_EQ(ret, ERR_TYPE_INVALID);
invalidType = (enum HiSysEventEasyType)5;
ret = OH_HiSysEvent_Easy_Write("KERNEL_VENDOR", "POWER_KEY", invalidType, "TEST_DATA");
ASSERT_EQ(ret, ERR_TYPE_INVALID);
ret = OH_HiSysEvent_Easy_Write("KERNEL_VENDOR", "POWER_KEY", EASY_EVENT_TYPE_FAULT, "TEST_DATA");
ASSERT_EQ(ret, SUCCESS);
ret = OH_HiSysEvent_Easy_Write("KERNEL_VENDOR", "POWER_KEY", EASY_EVENT_TYPE_STATISTIC, "TEST_DATA");
ASSERT_EQ(ret, SUCCESS);
ret = OH_HiSysEvent_Easy_Write("KERNEL_VENDOR", "POWER_KEY", EASY_EVENT_TYPE_SECURITY, "TEST_DATA");
ASSERT_EQ(ret, SUCCESS);
ret = OH_HiSysEvent_Easy_Write("KERNEL_VENDOR", "POWER_KEY", EASY_EVENT_TYPE_BEHAVIOR, "TEST_DATA");
ASSERT_EQ(ret, SUCCESS);
}
* @tc.name: HiSysEventEasyTest004
* @tc.desc: Test writing event with invalid name.
* @tc.type: FUNC
* @tc.require: issueIAKQGU
*/
HWTEST_F(HiSysEventEasyTest, HiSysEventEasyTest004, TestSize.Level3)
{
int ret = OH_HiSysEvent_Easy_Write("KERNEL_VENDOR", nullptr, EASY_EVENT_TYPE_FAULT, "TEST_DATA");
ASSERT_EQ(ret, ERR_NAME_INVALID);
ret = OH_HiSysEvent_Easy_Write("KERNEL_VENDOR", "POWER_KEYPOWER_KEYPOWER_KEYPOWER_KEY", EASY_EVENT_TYPE_FAULT,
"TEST_DATA");
ASSERT_EQ(ret, ERR_NAME_INVALID);
}
* @tc.name: HiSysEventEasyTest005
* @tc.desc: Test writing event with invalid customized string.
* @tc.type: FUNC
* @tc.require: issueIAKQGU
*/
HWTEST_F(HiSysEventEasyTest, HiSysEventEasyTest005, TestSize.Level3)
{
std::string strContent;
for (int i = 0; i < 102; i++) {
strContent = strContent + std::string("0123456789");
}
strContent = strContent + "01234";
int ret = OH_HiSysEvent_Easy_Write("KERNEL_VENDOR", "POWER_KEY", EASY_EVENT_TYPE_FAULT, strContent.c_str());
ASSERT_EQ(ret, ERR_PARAM_VALUE_INVALID);
ret = OH_HiSysEvent_Easy_Write("KERNEL_VENDOR", "POWER_KEY", EASY_EVENT_TYPE_FAULT, nullptr);
ASSERT_EQ(ret, ERR_PARAM_VALUE_INVALID);
}
* @tc.name: HiSysEventEasyTest006
* @tc.desc: Test AppendHeader
* @tc.type: FUNC
* @tc.require: issueIAKQGU
*/
HWTEST_F(HiSysEventEasyTest, HiSysEventEasyTest006, TestSize.Level3)
{
size_t offset = 0;
struct HiSysEventEasyHeader header;
int ret = MemoryInit((uint8_t*)(&header), sizeof(struct HiSysEventEasyHeader));
ASSERT_EQ(ret, SUCCESS);
ret = AppendHeader(nullptr, EVENT_BUFF_LEN, &offset, &header);
ASSERT_EQ(ret, ERR_EVENT_BUF_INVALID);
const int eventBufLen = 100;
uint8_t testEventBuff[eventBufLen];
ret = AppendHeader(testEventBuff, EVENT_BUFF_LEN, nullptr, &header);
ASSERT_EQ(ret, ERR_EVENT_BUF_INVALID);
ret = AppendHeader(testEventBuff, EVENT_BUFF_LEN, &offset, nullptr);
ASSERT_EQ(ret, ERR_EVENT_BUF_INVALID);
offset = EVENT_BUFF_LEN - 2;
ret = AppendHeader(testEventBuff, EVENT_BUFF_LEN, &offset, &header);
ASSERT_EQ(ret, ERR_MEM_OPT_FAILED);
offset = 0;
ret = AppendHeader(testEventBuff, EVENT_BUFF_LEN, &offset, &header);
ASSERT_EQ(ret, SUCCESS);
}
* @tc.name: HiSysEventEasyTest007
* @tc.desc: Test AppendStringParam
* @tc.type: FUNC
* @tc.require: issueIAKQGU
*/
HWTEST_F(HiSysEventEasyTest, HiSysEventEasyTest007, TestSize.Level3)
{
size_t offset = 0;
int ret = AppendStringParam(nullptr, EVENT_BUFF_LEN, &offset, nullptr, nullptr);
ASSERT_EQ(ret, ERR_EVENT_BUF_INVALID);
uint8_t testEventBuff[EVENT_BUFF_LEN];
ret = AppendStringParam(testEventBuff, EVENT_BUFF_LEN, nullptr, nullptr, nullptr);
ASSERT_EQ(ret, ERR_EVENT_BUF_INVALID);
ret = AppendStringParam(testEventBuff, EVENT_BUFF_LEN, &offset, nullptr, nullptr);
ASSERT_EQ(ret, ERR_EVENT_BUF_INVALID);
ret = AppendStringParam(testEventBuff, EVENT_BUFF_LEN, &offset, "TEST_KEY", nullptr);
ASSERT_EQ(ret, ERR_PARAM_VALUE_INVALID);
offset = EVENT_BUFF_LEN;
ret = AppendStringParam(testEventBuff, EVENT_BUFF_LEN, &offset, "TEST_KEY", "TEST_VAL");
ASSERT_EQ(ret, ERR_ENCODE_STR_FAILED);
offset = EVENT_BUFF_LEN - 9;
ret = AppendStringParam(testEventBuff, EVENT_BUFF_LEN, &offset, "TEST_KEY", "TEST_VAL");
ASSERT_EQ(ret, ERR_ENCODE_VALUE_TYPE_FAILED);
offset = 0;
ret = AppendStringParam(testEventBuff, EVENT_BUFF_LEN, &offset, "TEST_KEY", "TEST_VAL");
ASSERT_EQ(ret, SUCCESS);
}
* @tc.name: HiSysEventEasyTest008
* @tc.desc: Test EncodeValueType
* @tc.type: FUNC
* @tc.require: issueIAKQGU
*/
HWTEST_F(HiSysEventEasyTest, HiSysEventEasyTest008, TestSize.Level3)
{
size_t offset = 0;
struct HiSysEventEasyParamValueType valueType;
valueType.isArray = 0;
valueType.valueType = 0;
valueType.valueByteCnt = 0;
int ret = EncodeValueType(nullptr, EVENT_BUFF_LEN, &offset, &valueType);
ASSERT_EQ(ret, ERR_EVENT_BUF_INVALID);
uint8_t data[EVENT_BUFF_LEN];
ret = EncodeValueType(data, EVENT_BUFF_LEN, nullptr, &valueType);
ASSERT_EQ(ret, ERR_EVENT_BUF_INVALID);
ret = EncodeValueType(data, EVENT_BUFF_LEN, &offset, nullptr);
ASSERT_EQ(ret, ERR_EVENT_BUF_INVALID);
offset = EVENT_BUFF_LEN;
ret = EncodeValueType(data, EVENT_BUFF_LEN, &offset, &valueType);
ASSERT_EQ(ret, ERR_ENCODE_VALUE_TYPE_FAILED);
offset = 0;
ret = EncodeValueType(data, EVENT_BUFF_LEN, &offset, &valueType);
ASSERT_EQ(ret, SUCCESS);
}
* @tc.name: HiSysEventEasyTest009
* @tc.desc: Test EncodeStringValue
* @tc.type: FUNC
* @tc.require: issueIAKQGU
*/
HWTEST_F(HiSysEventEasyTest, HiSysEventEasyTest009, TestSize.Level3)
{
size_t offset = 0;
int ret = EncodeStringValue(nullptr, EVENT_BUFF_LEN, &offset, nullptr);
ASSERT_EQ(ret, ERR_EVENT_BUF_INVALID);
uint8_t data[EVENT_BUFF_LEN];
ret = EncodeStringValue(data, EVENT_BUFF_LEN, nullptr, nullptr);
ASSERT_EQ(ret, ERR_EVENT_BUF_INVALID);
ret = EncodeStringValue(data, EVENT_BUFF_LEN, &offset, nullptr);
ASSERT_EQ(ret, ERR_EVENT_BUF_INVALID);
std::string val = "TEST";
offset = EVENT_BUFF_LEN - val.size() + 1;
ret = EncodeStringValue(data, EVENT_BUFF_LEN, &offset, val.c_str());
ASSERT_EQ(ret, ERR_ENCODE_STR_FAILED);
offset = EVENT_BUFF_LEN - val.size() + 3;
ret = EncodeStringValue(data, EVENT_BUFF_LEN, &offset, val.c_str());
ASSERT_EQ(ret, ERR_ENCODE_STR_FAILED);
offset = EVENT_BUFF_LEN - 30;
ret = EncodeStringValue(data, EVENT_BUFF_LEN, &offset, val.c_str());
ASSERT_EQ(ret, SUCCESS);
offset = 0;
ret = EncodeStringValue(data, EVENT_BUFF_LEN, &offset, val.c_str());
ASSERT_EQ(ret, SUCCESS);
}
* @tc.name: HiSysEventEasyTest010
* @tc.desc: Test Write
* @tc.type: FUNC
* @tc.require: issueIAKQGU
*/
HWTEST_F(HiSysEventEasyTest, HiSysEventEasyTest010, TestSize.Level3)
{
int ret = Write(nullptr, 0);
ASSERT_EQ(ret, ERR_EVENT_BUF_INVALID);
uint8_t data[EVENT_BUFF_LEN];
ret = Write(data, EVENT_BUFF_LEN);
ASSERT_EQ(ret, SUCCESS);
}
* @tc.name: HiSysEventEasyTest011
* @tc.desc: Test MemoryInit
* @tc.type: FUNC
* @tc.require: issueIAKQGU
*/
HWTEST_F(HiSysEventEasyTest, HiSysEventEasyTest011, TestSize.Level3)
{
int ret = MemoryInit(nullptr, 0);
ASSERT_EQ(ret, ERR_MEM_OPT_FAILED);
ret = MemoryInit(nullptr, EVENT_BUFF_LEN);
ASSERT_EQ(ret, ERR_MEM_OPT_FAILED);
uint8_t data[EVENT_BUFF_LEN];
ret = MemoryInit(data, EVENT_BUFF_LEN);
ASSERT_EQ(ret, SUCCESS);
}
* @tc.name: HiSysEventEasyTest012
* @tc.desc: Test MemoryCopy
* @tc.type: FUNC
* @tc.require: issueIAKQGU
*/
HWTEST_F(HiSysEventEasyTest, HiSysEventEasyTest012, TestSize.Level3)
{
uint8_t data[EVENT_BUFF_LEN];
int ret = MemoryCopy(nullptr, 0, data, 0);
ASSERT_EQ(ret, ERR_MEM_OPT_FAILED);
ret = MemoryCopy(data, 0, nullptr, 0);
ASSERT_EQ(ret, ERR_MEM_OPT_FAILED);
uint8_t dataNew[EVENT_BUFF_LEN];
ret = MemoryCopy(data, EVENT_BUFF_LEN - 1, dataNew, EVENT_BUFF_LEN);
ASSERT_EQ(ret, ERR_MEM_OPT_FAILED);
ret = MemoryCopy(data, EVENT_BUFF_LEN, dataNew, EVENT_BUFF_LEN);
ASSERT_EQ(ret, SUCCESS);
}