• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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