1# Copyright (c) 2021-2023 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. 13import("//base/startup/init/begetd.gni") 14import("//build/test.gni") 15 16config("utest_config") { 17 visibility = [ ":*" ] 18 19 cflags = [ 20 "-Wno-implicit-fallthrough", 21 "-Wno-unused-function", 22 "-Dprivate=public", 23 "-Dprotected=public", 24 "-Dsprintf_s=SprintfStub", 25 "-Dmount=MountStub", 26 "-Dumount=UmountStub", 27 "-Dumount2=Umount2Stub", 28 "-Dprctl=PrctlStub", 29 "-Dexecv=ExecvStub", 30 "-Dlchown=LchownStub", 31 "-Dkill=KillStub", 32 "-Dexecve=ExecveStub", 33 ] 34 cflags_cc = [ 35 "-Wno-implicit-fallthrough", 36 "-fexceptions", 37 ] 38} 39 40FSCRYPT_PATH = 41 "//foundation/filemanagement/storage_service/services/storage_daemon" 42 43ohos_unittest("init_unittest") { 44 module_out_path = "startup/init" 45 sources = [ 46 "//base/startup/init/device_info/device_info.cpp", 47 "//base/startup/init/device_info/device_info_stub.cpp", 48 "//base/startup/init/interfaces/innerkits/control_fd/control_fd_client.c", 49 "//base/startup/init/interfaces/innerkits/control_fd/control_fd_service.c", 50 "//base/startup/init/interfaces/innerkits/fd_holder/fd_holder.c", 51 "//base/startup/init/interfaces/innerkits/fd_holder/fd_holder_internal.c", 52 "//base/startup/init/interfaces/innerkits/file/init_file.c", 53 "//base/startup/init/interfaces/innerkits/fs_manager/erofs_overlay/erofs_mount_overlay.c", 54 "//base/startup/init/interfaces/innerkits/fs_manager/erofs_overlay/erofs_overlay_common.c", 55 "//base/startup/init/interfaces/innerkits/fs_manager/erofs_overlay/erofs_remount_overlay.c", 56 "//base/startup/init/interfaces/innerkits/fs_manager/fstab.c", 57 "//base/startup/init/interfaces/innerkits/fs_manager/fstab_mount.c", 58 "//base/startup/init/interfaces/innerkits/fs_manager/switch_root/switch_root.c", 59 "//base/startup/init/interfaces/innerkits/reboot/init_reboot_innerkits.c", 60 "//base/startup/init/interfaces/innerkits/socket/init_socket.c", 61 "//base/startup/init/interfaces/innerkits/syspara/param_comm.c", 62 "//base/startup/init/interfaces/innerkits/syspara/parameter.c", 63 "//base/startup/init/interfaces/innerkits/syspara/sysversion.c", 64 "//base/startup/init/remount/remount_overlay.c", 65 "//base/startup/init/services/begetctl/begetctl_cmd.c", 66 "//base/startup/init/services/begetctl/bootchart_cmd.c", 67 "//base/startup/init/services/begetctl/dump_service.c", 68 "//base/startup/init/services/begetctl/init_cmd_reboot.c", 69 "//base/startup/init/services/begetctl/misc_daemon.cpp", 70 "//base/startup/init/services/begetctl/modulectl.c", 71 "//base/startup/init/services/begetctl/param_cmd.c", 72 "//base/startup/init/services/begetctl/sandbox.cpp", 73 "//base/startup/init/services/begetctl/service_control.c", 74 "//base/startup/init/services/begetctl/setloglevel.c", 75 "//base/startup/init/services/begetctl/shell/shell_bas.c", 76 "//base/startup/init/services/begetctl/shell/shell_main.c", 77 "//base/startup/init/services/init/adapter/init_adapter.c", 78 "//base/startup/init/services/init/init_capability.c", 79 "//base/startup/init/services/init/init_common_cmds.c", 80 "//base/startup/init/services/init/init_common_service.c", 81 "//base/startup/init/services/init/init_config.c", 82 "//base/startup/init/services/init/init_group_manager.c", 83 "//base/startup/init/services/init/init_service_file.c", 84 "//base/startup/init/services/init/init_service_manager.c", 85 "//base/startup/init/services/init/init_service_socket.c", 86 "//base/startup/init/services/init/standard/bootstagehooker.c", 87 "//base/startup/init/services/init/standard/device.c", 88 "//base/startup/init/services/init/standard/fd_holder_service.c", 89 "//base/startup/init/services/init/standard/init.c", 90 "//base/startup/init/services/init/standard/init_cmdexecutor.c", 91 "//base/startup/init/services/init/standard/init_cmds.c", 92 "//base/startup/init/services/init/standard/init_control_fd_service.c", 93 "//base/startup/init/services/init/standard/init_jobs.c", 94 "//base/startup/init/services/init/standard/init_mount.c", 95 "//base/startup/init/services/init/standard/init_reboot.c", 96 "//base/startup/init/services/init/standard/init_service.c", 97 "//base/startup/init/services/init/standard/init_signal_handler.c", 98 "//base/startup/init/services/log/init_commlog.c", 99 "//base/startup/init/services/log/init_log.c", 100 "//base/startup/init/services/loopevent/idle/le_idle.c", 101 "//base/startup/init/services/loopevent/loop/le_epoll.c", 102 "//base/startup/init/services/loopevent/loop/le_loop.c", 103 "//base/startup/init/services/loopevent/signal/le_signal.c", 104 "//base/startup/init/services/loopevent/socket/le_socket.c", 105 "//base/startup/init/services/loopevent/task/le_asynctask.c", 106 "//base/startup/init/services/loopevent/task/le_streamtask.c", 107 "//base/startup/init/services/loopevent/task/le_task.c", 108 "//base/startup/init/services/loopevent/task/le_watchtask.c", 109 "//base/startup/init/services/loopevent/timer/le_timer.c", 110 "//base/startup/init/services/loopevent/utils/le_utils.c", 111 "//base/startup/init/services/modules/bootchart/bootchart.c", 112 "//base/startup/init/services/modules/bootchart/bootchart_static.c", 113 "//base/startup/init/services/modules/bootevent/bootevent.c", 114 "//base/startup/init/services/modules/crashhandler/crash_handler.c", 115 "//base/startup/init/services/modules/init_eng/init_eng.c", 116 "//base/startup/init/services/modules/init_eng/init_eng_static.c", 117 "//base/startup/init/services/modules/init_hook/init_hook.c", 118 "//base/startup/init/services/modules/init_hook/param_hook.c", 119 "//base/startup/init/services/modules/reboot/reboot.c", 120 "//base/startup/init/services/modules/reboot/reboot_misc.c", 121 "//base/startup/init/services/modules/reboot/reboot_static.c", 122 "//base/startup/init/services/modules/udid/udid_adp.c", 123 "//base/startup/init/services/modules/udid/udid_comm.c", 124 "//base/startup/init/services/modules/udid/udid_static.c", 125 "//base/startup/init/services/param/adapter/param_dac.c", 126 "//base/startup/init/services/param/adapter/param_persistadp.c", 127 "//base/startup/init/services/param/base/param_base.c", 128 "//base/startup/init/services/param/base/param_comm.c", 129 "//base/startup/init/services/param/base/param_trie.c", 130 "//base/startup/init/services/param/linux/param_message.c", 131 "//base/startup/init/services/param/linux/param_msgadp.c", 132 "//base/startup/init/services/param/linux/param_osadp.c", 133 "//base/startup/init/services/param/linux/param_request.c", 134 "//base/startup/init/services/param/linux/param_service.c", 135 "//base/startup/init/services/param/manager/param_manager.c", 136 "//base/startup/init/services/param/manager/param_persist.c", 137 "//base/startup/init/services/param/manager/param_server.c", 138 "//base/startup/init/services/param/trigger/trigger_checker.c", 139 "//base/startup/init/services/param/trigger/trigger_manager.c", 140 "//base/startup/init/services/param/trigger/trigger_processor.c", 141 "//base/startup/init/services/sandbox/sandbox.c", 142 "//base/startup/init/services/sandbox/sandbox_namespace.c", 143 "//base/startup/init/services/utils/init_hashmap.c", 144 "//base/startup/init/services/utils/init_utils.c", 145 "//base/startup/init/services/utils/list.c", 146 "//base/startup/init/ueventd/standard/ueventd_parameter.c", 147 "//base/startup/init/ueventd/ueventd.c", 148 "//base/startup/init/ueventd/ueventd_device_handler.c", 149 "//base/startup/init/ueventd/ueventd_firmware_handler.c", 150 "//base/startup/init/ueventd/ueventd_read_cfg.c", 151 "//base/startup/init/ueventd/ueventd_socket.c", 152 ] 153 154 sources += [ 155 "${FSCRYPT_PATH}/libfscrypt/src/fscrypt_control.c", 156 "${FSCRYPT_PATH}/libfscrypt/src/fscrypt_utils.c", 157 "${FSCRYPT_PATH}/libfscrypt/src/key_control.c", 158 "${FSCRYPT_PATH}/libfscrypt/src/sysparam_static.c", 159 ] 160 161 if (defined(build_selinux) && build_selinux) { 162 sources += [ "//base/startup/init/services/param/adapter/param_selinux.c" ] 163 } 164 165 if (enable_ohos_startup_init_feature_watcher) { 166 sources += [ 167 "//base/startup/init/services/param/watcher/agent/watcher.cpp", 168 "//base/startup/init/services/param/watcher/agent/watcher_manager_kits.cpp", 169 "//base/startup/init/services/param/watcher/agent/watcher_manager_proxy.cpp", 170 "//base/startup/init/services/param/watcher/agent/watcher_stub.cpp", 171 "//base/startup/init/services/param/watcher/proxy/watcher_manager.cpp", 172 "//base/startup/init/services/param/watcher/proxy/watcher_manager_stub.cpp", 173 "//base/startup/init/services/param/watcher/proxy/watcher_proxy.cpp", 174 ] 175 } 176 177 include_dirs = [ 178 "//base/startup/init/interfaces/innerkits/fs_manager/switch_root/include", 179 "//base/startup/init/interfaces/innerkits/fs_manager/erofs_overlay/include", 180 "//base/startup/init/interfaces/innerkits/fs_manager/libfs_dm/include", 181 "//base/startup/init/interfaces/innerkits/include/fs_manager", 182 "//base/startup/init/remount/include", 183 ] 184 defines = [] 185 186 if (defined(build_seccomp) && build_seccomp) { 187 sources += [ 188 "../../services/modules/seccomp/seccomp_policy.c", 189 "seccomp/seccomp_unittest.cpp", 190 ] 191 include_dirs += 192 [ "//base/startup/init/interfaces/innerkits/seccomp/include" ] 193 194 if (build_variant == "root") { 195 defines += [ "WITH_SECCOMP_DEBUG" ] 196 } 197 198 if (use_clang_coverage) { 199 defines += [ "COVERAGE_TEST" ] 200 } 201 202 if (init_feature_seccomp_privilege) { 203 defines += [ "SECCOMP_PRIVILEGE" ] 204 } 205 } 206 207 sources += [ 208 "begetctl/begetctl_unittest.cpp", 209 "deviceinfo/DeviceInfoUnittest.cpp", 210 "fs_manager/erofs/erofs_common_unittest.cpp", 211 "fs_manager/erofs/erofs_mount_unittest.cpp", 212 "fs_manager/erofs/erofs_remount_unittest.cpp", 213 "init/cmds_unittest.cpp", 214 "init/group_unittest.cpp", 215 "init/init_reboot_unittest.cpp", 216 "init/init_unittest.cpp", 217 "init/mount_unittest.cpp", 218 "init/sandbox_unittest.cpp", 219 "init/service_file_unittest.cpp", 220 "init/service_socket_unittest.cpp", 221 "init/service_unittest.cpp", 222 "init/utils_unittest.cpp", 223 "innerkits/innerkits_unittest.cpp", 224 "loopevent/loopevent_unittest.cpp", 225 "loopevent/loopserver_unittest.cpp", 226 "loopevent/loopsignal_unittest.cpp", 227 "loopevent/looptimer_unittest.cpp", 228 "modules/eng_unittest.cpp", 229 "modules/modules_unittest.cpp", 230 "modules/udid_unittest.cpp", 231 "param/client_unittest.cpp", 232 "param/dac_unittest.cpp", 233 "param/param_shell_unittest.cpp", 234 "param/param_stub.cpp", 235 "param/param_unittest.cpp", 236 "param/paramservice_unittest.cpp", 237 "param/trigger_unittest.cpp", 238 "remount/remount_overlay_unittest.cpp", 239 "syspara/syspara_unittest.cpp", 240 "ueventd/ueventd_config_unittest.cpp", 241 "ueventd/ueventd_event_unittest.cpp", 242 ] 243 244 sources += [ 245 "//base/startup/init/interfaces/innerkits/hookmgr/hookmgr.c", 246 "//base/startup/init/interfaces/innerkits/init_module_engine/init_modulemgr.c", 247 "//base/startup/init/interfaces/innerkits/modulemgr/modulemgr.c", 248 "//base/startup/init/interfaces/innerkits/service_control/service_control.c", 249 "//base/startup/init/interfaces/innerkits/service_watcher/service_watcher.c", 250 "//base/startup/init/interfaces/innerkits/syscap/init_syscap.c", 251 "//base/startup/init/interfaces/innerkits/syspara/param_wrapper.cpp", 252 "innerkits/hookmgr_unittest.cpp", 253 "innerkits/modulemgr_unittest.cpp", 254 "innerkits/strutil_unittest.cpp", 255 ] 256 257 configs = [ "//base/startup/init/test/unittest:utest_config" ] 258 259 include_dirs += [ 260 "//base/startup/init/device_info", 261 "//base/startup/init/services/init/standard", 262 "//base/startup/init/interfaces/innerkits/include", 263 "//base/startup/init/interfaces/innerkits/include/syspara", 264 "//base/startup/init/interfaces/innerkits/fd_holder", 265 "//base/startup/init/interfaces/innerkits/syspara", 266 "//base/startup/init/interfaces/innerkits/control_fd", 267 "//base/startup/init/services/begetctl", 268 "//base/startup/init/services/begetctl/shell", 269 "//base/startup/init/interfaces/innerkits/include", 270 "//base/startup/init/services/init/include", 271 "//base/startup/init/interfaces/innerkits/include/param", 272 "//base/startup/init/services/log", 273 "//base/startup/init/services/loopevent/include", 274 "//base/startup/init/services/loopevent/loop", 275 "//base/startup/init/services/loopevent/socket", 276 "//base/startup/init/services/loopevent/signal", 277 "//base/startup/init/services/loopevent/task", 278 "//base/startup/init/services/loopevent/timer", 279 "//base/startup/init/services/loopevent/utils", 280 "//base/startup/init/services/loopevent/idle", 281 "//base/startup/init/services/modules", 282 "//base/startup/init/services/modules/bootchart", 283 "//base/startup/init/services/modules/init_hook", 284 "//base/startup/init/services/modules/selinux", 285 "//base/startup/init/services/modules/reboot", 286 "//base/startup/init/services/modules/udid", 287 "//base/startup/init/services/modules/crashhandler", 288 "//base/startup/init/services/modules/init_eng", 289 "//base/startup/init/services/param/adapter", 290 "//base/startup/init/services/param/base", 291 "//base/startup/init/services/param/linux", 292 "//base/startup/init/services/param/include", 293 "//base/startup/init/services/param/watcher/agent", 294 "//base/startup/init/services/param/watcher/include", 295 "//base/startup/init/services/param/watcher/proxy", 296 "//base/startup/init/test/unittest", 297 "//base/startup/init/test/unittest/param", 298 "//base/startup/init/ueventd/include", 299 "//base/startup/init/services/sandbox/include", 300 "//base/startup/init/interfaces/innerkits/hals", 301 "//base/startup/init/interfaces/innerkits/include/param", 302 "${FSCRYPT_PATH}/include/libfscrypt", 303 ] 304 305 defines += [ 306 "READ_CHECK", 307 "INIT_AGENT", 308 "INIT_DMESG", 309 "INIT_FILE", 310 "STARTUP_INIT_TEST", 311 "PARAM_SUPPORT_DAC", 312 "_GNU_SOURCE", 313 "PARAM_SUPPORT_TRIGGER", 314 "USE_MBEDTLS", 315 "PARAM_DECODE_GROUPID_FROM_FILE", 316 "WORKSPACE_AREA_NEED_MUTEX", 317 "PARAMWORKSPACE_NEED_MUTEX", 318 "PARAM_SUPPORT_REAL_CHECK", 319 "DISABLE_INIT_TWO_STAGES", 320 "INIT_SUPPORT_CHIPSET_INIT", 321 ] 322 defines += [ "_GNU_SOURCE" ] 323 324 if (target_cpu == "arm64" || target_cpu == "x86_64" || 325 target_cpu == "riscv64") { 326 defines += [ "SUPPORT_64BIT" ] 327 } 328 if (use_musl) { 329 defines += [ "__MUSL__" ] 330 } 331 332 external_deps = [ 333 "access_token:libnativetoken", 334 "access_token:libtoken_setproc", 335 "bounds_checking_function:libsec_static", 336 "cJSON:cjson", 337 "c_utils:utils", 338 "config_policy:configpolicy_util_for_init_static", 339 "googletest:gmock", 340 "googletest:gtest", 341 "hilog:libhilog", 342 "hisysevent:libhisysevent", 343 "init:libinit_module_engine", 344 "libunwind:libunwind", 345 "mbedtls:mbedtls_shared", 346 "selinux:libselinux", 347 "zlib:libz", 348 ] 349 if (init_appspawn_client_module && defined(global_parts_info) && 350 defined(global_parts_info.startup_appspawn)) { 351 defines += [ "ENABLE_ENTER_APPSPAWN_SANDBOX" ] 352 external_deps += [ "appspawn:appspawn_client" ] 353 } 354 355 if (init_feature_ab_partition) { 356 sources += [ "//base/startup/init/services/begetctl/partitionslot.cpp" ] 357 external_deps += [ 358 "drivers_interface_partitionslot:libpartitionslot_proxy_1.0", 359 "hdf_core:libhdi", 360 "hdf_core:libpub_utils", 361 ] 362 } 363 364 if (!defined(ohos_lite) && enable_ohos_startup_init_feature_watcher) { 365 sources += [ 366 "param/watcher_agent_unittest.cpp", 367 "param/watcher_proxy_unittest.cpp", 368 ] 369 external_deps += [ 370 "ipc:ipc_single", 371 "safwk:system_ability_fwk", 372 "samgr:samgr_proxy", 373 ] 374 } 375 376 if (defined(build_selinux) && build_selinux) { 377 sources += [ "param/selinux_unittest.cpp" ] 378 sources += [ 379 "//base/startup/init/services/modules/selinux/selinux_adp.c", 380 "//base/startup/init/services/modules/selinux/selinux_static.c", 381 ] 382 external_deps += [ 383 "selinux:libselinux", 384 "selinux_adapter:libselinux_parameter_static", 385 ] 386 387 defines += [ 388 "WITH_SELINUX", 389 "PARAM_SUPPORT_SELINUX", 390 ] 391 } 392 if (enable_ohos_startup_init_feature_deviceinfo) { 393 sources += [ 394 "//base/startup/init/device_info/device_info_kits.cpp", 395 "//base/startup/init/device_info/device_info_load.cpp", 396 "//base/startup/init/device_info/device_info_proxy.cpp", 397 ] 398 external_deps += [ 399 "access_token:libaccesstoken_sdk", 400 "selinux:libselinux", 401 ] 402 403 defines += [ "PARAM_FEATURE_DEVICEINFO" ] 404 } 405 406 sources += [ 407 "//base/startup/init/services/modules/trace/init_trace.c", 408 "//base/startup/init/test/unittest/modules/trace_unittest.cpp", 409 ] 410 411 # for sysevent 412 sources += [ 413 "//base/startup/init/services/modules/sysevent/startup_time_event.c", 414 "//base/startup/init/services/modules/sysevent/sys_event.c", 415 "//base/startup/init/test/unittest/modules/sysevent_unittest.cpp", 416 ] 417 418 include_dirs += [ 419 "//base/startup/init/services/modules/bootevent", 420 "//base/startup/init/services/modules/init_context", 421 "//base/startup/init/services/modules/sysevent", 422 ] 423 424 # test for init sub init_context 425 sources += [ 426 "//base/startup/init/services/modules/init_context/init_context.c", 427 "//base/startup/init/services/modules/init_context/init_context_static.c", 428 "//base/startup/init/test/unittest/modules/context_unittest.cpp", 429 ] 430 431 # test atomic operation 432 sources += [ "//base/startup/init/test/unittest/param/atomic_unittest.cpp" ] 433 434 cflags_cc = [ "-fexceptions" ] 435} 436 437ohos_unittest("init_dmverify_unittest") { 438 module_out_path = "startup/init" 439 sources = [ 440 "//base/startup/init/interfaces/innerkits/fs_manager/dm_verity/dm_verity.c", 441 "//base/startup/init/services/log/init_commlog.c", 442 "//base/startup/init/services/log/init_log.c", 443 "//base/startup/init/test/mock/init/interfaces/innerkits/fs_manager/libfs_hvb/fs_hvb.c", 444 "//base/startup/init/test/unittest/fs_manager/dm_verify/dm_verify_unittest.cpp", 445 ] 446 447 include_dirs = [ 448 "//base/startup/init/interfaces/innerkits/fs_manager/dm_verity/include", 449 "//base/startup/init/interfaces/innerkits/include", 450 "//base/startup/hvb/libhvb/include", 451 "//base/startup/init/interfaces/innerkits/include/fs_manager", 452 "//third_party/bounds_checking_function/include", 453 "//base/startup/init/interfaces/innerkits/fs_manager/libfs_hvb/include", 454 "//base/startup/init/interfaces/innerkits/fs_manager/libfs_dm/include", 455 "//base/startup/init/services/log", 456 ] 457 458 configs = [ "//base/startup/init/test/unittest:utest_config" ] 459 460 external_deps = [ 461 "c_utils:utils", 462 "googletest:gtest", 463 "hilog:libhilog", 464 ] 465 466 cflags_cc = [ "-fexceptions" ] 467} 468 469ohos_unittest("init_fshvb_unittest") { 470 module_out_path = "startup/init" 471 sources = [ 472 "//base/startup/init/interfaces/innerkits/fs_manager/libfs_dm/fs_dm.c", 473 "//base/startup/init/interfaces/innerkits/fs_manager/libfs_hvb/fs_hvb.c", 474 "//base/startup/init/interfaces/innerkits/fs_manager/libfs_hvb/hvb_ops.c", 475 "//base/startup/init/services/log/init_commlog.c", 476 "//base/startup/init/services/utils/init_utils.c", 477 "//base/startup/init/test/mock/hvb/libhvb/auth/hvb.c", 478 "//base/startup/init/test/mock/hvb/libhvb/cert/hvb_cert.c", 479 "//base/startup/init/test/mock/hvb/libhvb/crypto/hvb_hash_sha256.c", 480 "//base/startup/init/test/mock/init/ueventd/ueventd.c", 481 "//base/startup/init/test/mock/init/ueventd/ueventd_socket.c", 482 "//base/startup/init/test/unittest/fs_manager/libfs_hvb_unittest.cpp", 483 ] 484 485 include_dirs = [ 486 "//base/startup/init/interfaces/innerkits/fs_manager/libfs_hvb/include", 487 "//base/startup/hvb/libhvb/include", 488 "//base/startup/init/interfaces/innerkits/fs_manager/libfs_dm/include", 489 "//base/startup/init/interfaces/innerkits/include/fs_manager", 490 "//base/startup/init/interfaces/innerkits/include", 491 "//base/startup/init/services/log", 492 "//base/startup/init/ueventd/include", 493 "//base/startup/hvb/libhvb/src/crypto", 494 "//base/startup/init/interfaces/innerkits/include/param", 495 ] 496 497 defines = [ "STARTUP_INIT_UT_PATH =\"/data/init_ut\"" ] 498 499 configs = [] 500 501 external_deps = [ 502 "c_utils:utils", 503 "googletest:gtest", 504 "hilog:libhilog", 505 ] 506 507 cflags_cc = [ "-fexceptions" ] 508} 509