1# Copyright (C) 2021-2022 Huawei Device Co., Ltd. 2# Licensed under the Apache License, Version 2.0 (the "License"); 3# you may not use this file except in compliance with the License. 4# You may obtain a copy of the License at 5# 6# http://www.apache.org/licenses/LICENSE-2.0 7# 8# Unless required by applicable law or agreed to in writing, software 9# distributed under the License is distributed on an "AS IS" BASIS, 10# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 11# See the License for the specific language governing permissions and 12# limitations under the License. 13 14import("//build/test.gni") 15import("//developtools/hiperf/hiperf.gni") 16 17module_output_path = "developtools/hiperf" 18 19sources_base = [ 20 "unittest/common/native/hiperf_client_test.cpp", 21 "unittest/common/native/command_test.cpp", 22 "unittest/common/native/perf_events_test.cpp", 23 "unittest/common/native/perf_event_record_test.cpp", 24 "unittest/common/native/perf_file_format_test.cpp", 25 "unittest/common/native/perf_file_writer_test.cpp", 26 "unittest/common/native/subcommand_test.cpp", 27 "unittest/common/native/utilities_test.cpp", 28 "unittest/common/native/elf_parser_test.cpp", 29 "unittest/common/native/register_test.cpp", 30 "unittest/common/native/option_test.cpp", 31 "unittest/common/native/perf_file_reader_test.cpp", 32 "unittest/common/native/virtual_thread_test.cpp", 33 "unittest/common/native/virtual_runtime_test.cpp", 34 "unittest/common/native/callstack_test.cpp", 35 "unittest/common/native/ring_buffer_test.cpp", 36 "unittest/common/native/symbols_file_test.cpp", 37 "unittest/common/native/tracked_command_test.cpp", 38 "unittest/common/native/dwarf_test.cpp", 39 "unittest/common/native/subcommand_help_test.cpp", 40 "unittest/common/native/subcommand_list_test.cpp", 41 "unittest/common/native/subcommand_dump_test.cpp", 42 "unittest/common/native/hashlist_test.cpp", 43 "unittest/common/native/report_test.cpp", 44 "unittest/common/native/report_json_file_test.cpp", 45] 46 47if (hiperf_debug) { 48 sources_base += [ "unittest/common/native/debug_logger_test.cpp" ] 49 sources_base += [ "unittest/common/native/option_debug_test.cpp" ] 50} 51 52if (!hiperf_target_static) { 53 sources_base += [ "unittest/common/native/report_protobuf_file_test.cpp" ] 54} 55 56sources_interface = [ 57 "unittest/common/native/subcommand_record_test.cpp", 58 "unittest/common/native/subcommand_stat_test.cpp", 59 "unittest/common/native/subcommand_report_test.cpp", 60 "unittest/common/native/hiperf_libreport_test.cpp", 61] 62 63common_deps = [ 64 "${hiperf_path}/:hiperf_platform_common", 65 "${hiperf_path}/:hiperf_platform_host", 66 "${hiperf_path}/:hiperf_platform_linux", 67 "${hiperf_path}/interfaces/innerkits/native:hiperf_client_static", 68 "//third_party/googletest:gmock_main", 69 "//third_party/googletest:gtest_main", 70] 71 72config("hiperf_test_config") { 73 cflags = code_check_flag 74 ldflags = [] 75 defines = [] 76 77 if (hiperf_test_coverage && is_ohos) { 78 defines += [ "TEST_COVERAGE" ] 79 cflags += [ 80 "-fprofile-arcs", 81 "-ftest-coverage", 82 ] 83 ldflags += [ "--coverage" ] 84 } 85 86 defines += [ "DEFAULT_LOG_LEVEL=LEVEL_INFO" ] 87 88 include_dirs = [ 89 "${hiperf_path}/test/unittest/common/native/include", 90 "//base/hiviewdfx/hilog/interfaces/native/innerkits/include", 91 ] 92} 93 94ohos_unittest("hiperf_unittest") { 95 configs = [ ":hiperf_test_config" ] 96 module_out_path = module_output_path 97 resource_config_file = "unittest/resource/ohos_test.xml" 98 deps = common_deps 99 100 sources = sources_interface 101 sources += sources_base 102 if (is_linux) { 103 static_link = false 104 } 105} 106 107fuzz_cflags = [ 108 "-O0", 109 "-fno-omit-frame-pointer", 110] 111 112fuzz_deps = [ 113 "${hiperf_path}/:hiperf_platform_common", 114 "${hiperf_path}/:hiperf_platform_host", 115 "${hiperf_path}/:hiperf_platform_linux", 116 "${hiperf_path}/interfaces/innerkits/native:hiperf_client_static", 117] 118 119ohos_fuzztest("CommandLineFuzzTest") { 120 module_out_path = module_output_path 121 fuzz_config_file = "${hiperf_path}/test/fuzztest/commandline_fuzzer" 122 configs = [ ":hiperf_test_config" ] 123 cflags = fuzz_cflags 124 deps = fuzz_deps 125 defines = [ "FUZZER_TEST" ] 126 sources = [ 127 "${hiperf_path}/src/main.cpp", 128 "fuzztest/commandline_fuzzer/CommandLine_fuzzer.cpp", 129 ] 130} 131 132ohos_fuzztest("LibReportFuzzTest") { 133 module_out_path = module_output_path 134 fuzz_config_file = "${hiperf_path}/test/fuzztest/libreport_fuzzer" 135 configs = [ ":hiperf_test_config" ] 136 cflags = fuzz_cflags 137 deps = fuzz_deps 138 defines = [ "FUZZER_TEST" ] 139 sources = [ "fuzztest/libreport_fuzzer/LibReport_fuzzer.cpp" ] 140} 141 142ohos_fuzztest("ClientApiFuzzTest") { 143 module_out_path = module_output_path 144 fuzz_config_file = "${hiperf_path}/test/fuzztest/clientapi_fuzzer" 145 configs = [ ":hiperf_test_config" ] 146 cflags = fuzz_cflags 147 deps = fuzz_deps 148 defines = [ "FUZZER_TEST" ] 149 sources = [ "fuzztest/clientapi_fuzzer/ClientApi_fuzzer.cpp" ] 150} 151 152ohos_fuzztest("PerfFileFuzzTest") { 153 module_out_path = module_output_path 154 fuzz_config_file = "${hiperf_path}/test/fuzztest/perffile_fuzzer" 155 resource_config_file = "fuzztest/resource/ohos_test.xml" 156 configs = [ ":hiperf_test_config" ] 157 cflags = fuzz_cflags 158 deps = fuzz_deps 159 defines = [ "FUZZER_TEST" ] 160 sources = [ "fuzztest/perffile_fuzzer/PerfFile_fuzzer.cpp" ] 161} 162 163ohos_fuzztest("ElfParserFuzzTest") { 164 module_out_path = module_output_path 165 fuzz_config_file = "${hiperf_path}/test/fuzztest/elfparser_fuzzer" 166 resource_config_file = "fuzztest/resource/ohos_test.xml" 167 configs = [ ":hiperf_test_config" ] 168 cflags = fuzz_cflags 169 deps = fuzz_deps 170 defines = [ "FUZZER_TEST" ] 171 sources = [ "fuzztest/elfparser_fuzzer/ElfParser_fuzzer.cpp" ] 172} 173 174group("hiperf_fuzztest") { 175 testonly = true 176 deps = [ 177 ":ClientApiFuzzTest", 178 ":CommandLineFuzzTest", 179 ":ElfParserFuzzTest", 180 ":LibReportFuzzTest", 181 ":PerfFileFuzzTest", 182 ] 183} 184 185group("hiperf_test") { 186 testonly = true 187 if (hiperf_target_host) { 188 deps = [ 189 ":hiperf_fuzztest(${host_toolchain})", 190 ":hiperf_unittest(${host_toolchain})", 191 ] 192 } else { 193 deps = [ ":hiperf_unittest" ] 194 } 195 if (hiperf_test_fuzz) { 196 deps += [ ":hiperf_fuzztest" ] 197 } 198} 199