1 /* 2 * Copyright (c) 2024 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #include <gtest/gtest.h> 17 #include "ffrt_inner.h" 18 #include "../common.h" 19 20 using namespace std; 21 using namespace testing; 22 #ifdef HWTEST_TESTING_EXT_ENABLE 23 using namespace testing::ext; 24 #endif 25 26 class DumpTest : public testing::Test { 27 protected: SetUpTestCase()28 static void SetUpTestCase() 29 { 30 } 31 TearDownTestCase()32 static void TearDownTestCase() 33 { 34 } 35 SetUp()36 void SetUp() override 37 { 38 } 39 TearDown()40 void TearDown() override 41 { 42 } 43 }; 44 45 /* 46 * 测试用例名称 :dump_succ 47 * 测试用例描述:获取dump info失败 48 * 操作步骤 :1、调用函数ffrt_dump获取dump info 49 * 预期结果 :获取失败 50 */ 51 HWTEST_F(DumpTest, dump_succ, TestSize.Level1) 52 { 53 char dumpinfo[1024 * 512] = {0}; 54 int ret = ffrt_dump(ffrt_dump_cmd_t::DUMP_INFO_ALL, dumpinfo, 1024 * 512); 55 #ifdef FFRT_CO_BACKTRACE_OH_ENABLE 56 EXPECT_NE(ret, -1); 57 #else 58 EXPECT_EQ(ret, -1); 59 #endif 60 } 61 62 /* 63 * 测试用例名称 :dump_cb_succ 64 * 测试用例描述:设置与获取task_timout_cb成功 65 * 预期结果 :设置与获取成功 66 */ 67 HWTEST_F(DumpTest, dump_cb_succ, TestSize.Level1) 68 { 69 ffrt_task_timeout_set_cb(nullptr); 70 ffrt_task_timeout_cb ret = ffrt_task_timeout_get_cb(); 71 EXPECT_EQ(ret, nullptr); 72 } 73 74 /* 75 * 测试用例名称 :dump_threshold_succ 76 * 测试用例描述:设置与获取task_timout_threshold成功 77 * 预期结果 :设置与获取成功 78 */ 79 HWTEST_F(DumpTest, dump_thre_succ, TestSize.Level1) 80 { 81 ffrt_task_timeout_set_threshold(1000); 82 uint32_t ret = ffrt_task_timeout_get_threshold(); 83 EXPECT_EQ(ret, 1000); 84 } 85 86 /* 87 * 测试用例名称:dump_stat_succ 88 * 测试用例描述:获取dump stat info成功 89 * 操作步骤 :1.调用函数ffrt_dump获取dump stat 90 * 预期结果 :获取成功 91 */ 92 HWTEST_F(DumpTest, dump_stat_succ, TestSize.Level1) 93 { 94 char dumpinfo[1024 * 512] = {0}; 95 int ret = ffrt_dump(ffrt_dump_cmd_t::DUMP_START_STAT, dumpinfo, 1024 * 512); 96 EXPECT_EQ(ret, 0); 97 ret = ffrt_dump(ffrt_dump_cmd_t::DUMP_STOP_STAT, dumpinfo, 1024 * 512); 98 EXPECT_EQ(ret, 0); 99 } 100 101 /* 102 * 测试用例名称:dump_stat_succ 103 * 测试用例描述:获取dump stat info失败 104 * 操作步骤 :1.调用函数ffrt_dump获取dump stat 105 * 预期结果 :获取失败 106 */ 107 HWTEST_F(DumpTest, dump_stat_fail, TestSize.Level1) 108 { 109 int ret = ffrt_dump(ffrt_dump_cmd_t::DUMP_START_STAT, nullptr, 1000); 110 EXPECT_EQ(ret, -1); 111 char dumpinfo[1024 * 512] = {0}; 112 ret = ffrt_dump(ffrt_dump_cmd_t::DUMP_START_STAT, dumpinfo, 20); 113 EXPECT_EQ(ret, -1); 114 char dumpinfoTwo[1024 * 512] = {0}; 115 ret = ffrt_dump(ffrt_dump_cmd_t::DUMP_START_STAT, dumpinfo, 1024 * 512); 116 EXPECT_NE(ret, -1); 117 ret = ffrt_dump(ffrt_dump_cmd_t::DUMP_START_STAT, dumpinfoTwo, 1024 * 512); 118 EXPECT_EQ(ret, -1); 119 ret = ffrt_dump(ffrt_dump_cmd_t::DUMP_STOP_STAT, dumpinfo, 1024 * 512); 120 EXPECT_NE(ret, -1); 121 ret = ffrt_dump(ffrt_dump_cmd_t::DUMP_STOP_STAT, dumpinfo, 1024 * 512); 122 EXPECT_EQ(ret, -1); 123 } 124 125 /* 126 * 测试用例名称:dump_task_stat_use_nullptr 127 * 测试用例描述:dump接口传入空buf 128 * 预期结果 :设置与获取失败 129 */ 130 HWTEST_F(DumpTest, dump_task_stat_use_nullptr, TestSize.Level1) 131 { 132 int bufferSize = 200; 133 int result = ffrt_dump(DUMP_START_STAT, nullptr, bufferSize); 134 EXPECT_EQ(result, -1); 135 } 136 137 /* 138 * 测试用例名称:dump_task_stat_stop_invalid_addr 139 * 测试用例描述:dump stop接口传入错误buf 140 * 预期结果 :设置与获取失败 141 */ 142 HWTEST_F(DumpTest, dump_task_stat_stop_invalid_addr, TestSize.Level1) 143 { 144 char dumpinfo[1024 * 512] = {0}; 145 char dumpinfo_1[1024] = {0}; 146 int result = ffrt_dump(DUMP_START_STAT, dumpinfo, 1024 * 512); 147 result = ffrt_dump(DUMP_STOP_STAT, dumpinfo_1, 1024); 148 EXPECT_EQ(result, -1); 149 result = ffrt_dump(DUMP_STOP_STAT, dumpinfo, 1024 * 512); 150 EXPECT_EQ(result, 0); 151 }