1package { 2 default_team: "trendy_team_fwk_core_networking", 3 // See: http://go/android-license-faq 4 // A large-scale-change added 'default_applicable_licenses' to import 5 // all of the 'license_kinds' from "packages_modules_DnsResolver_license" 6 // to get the below license kinds: 7 // SPDX-license-identifier-Apache-2.0 8 default_applicable_licenses: ["packages_modules_DnsResolver_license"], 9} 10 11cc_test_library { 12 name: "libnetd_test_resolv_utils", 13 defaults: [ 14 "netd_defaults", 15 "resolv_test_defaults", 16 ], 17 srcs: [ 18 "resolv_test_utils.cpp", 19 ], 20 header_libs: [ 21 "libnetd_resolv_headers", 22 ], 23 static_libs: [ 24 "netd_aidl_interface-lateststable-ndk", 25 "dnsresolver_aidl_interface-lateststable-ndk", 26 "libconnectivity_native_test_utils", 27 "libmodules-utils-build", 28 "libnetd_test_dnsresponder_ndk", 29 "libnetdutils", 30 "libgmock", 31 ], 32 export_static_lib_headers: [ 33 "libconnectivity_native_test_utils", 34 "libmodules-utils-build", 35 ], 36} 37 38cc_library_host_static { 39 name: "golddata_proto_host", 40 proto: { 41 export_proto_headers: true, 42 type: "full", 43 }, 44 srcs: [ 45 "golddata.proto", 46 ], 47} 48 49cc_binary_host { 50 name: "resolv_gold_test_pbtxt2pb_host", 51 cflags: [ 52 "-Wall", 53 "-Werror", 54 ], 55 srcs: ["pbtxt2pb_converter_host.cpp"], 56 static_libs: [ 57 "golddata_proto_host", 58 "libprotobuf-cpp-full", 59 ], 60} 61 62genrule { 63 name: "resolv_gold_test_pbtxt2pb", 64 tools: [ 65 "resolv_gold_test_pbtxt2pb_host", 66 "soong_zip", 67 ], 68 srcs: ["testdata/*.pbtxt"], 69 // convert .pbtxt to .pb files; zip them as a single pb.zip. 70 cmd: "mkdir $(genDir)/pb && for fname in $(in); " + 71 "do $(location resolv_gold_test_pbtxt2pb_host) --in_file=$$fname " + 72 "--out_dir=$(genDir)/pb; done && " + 73 "$(location soong_zip) -o $(out) -C $(genDir)/pb -D $(genDir)/pb", 74 out: ["testdata/pb.zip"], 75} 76 77cc_library_static { 78 name: "golddata_proto", 79 defaults: ["netd_defaults"], 80 proto: { 81 export_proto_headers: true, 82 type: "lite", 83 }, 84 srcs: [ 85 "golddata.proto", 86 ], 87 tidy: false, 88} 89 90cc_test { 91 name: "resolv_gold_test", 92 test_suites: [ 93 "general-tests", 94 "mts-dnsresolver", 95 ], 96 isolated: false, 97 require_root: true, 98 // b/151392634, this is a workaround because MTS 99 // can not handle the test with testdata correctly. 100 // TODO: Remove the xml after MTS fixing the problem. 101 test_config: "resolv_gold_test_config.xml", 102 defaults: [ 103 "netd_defaults", 104 "resolv_test_defaults", 105 ], 106 data: [":resolv_gold_test_pbtxt2pb"], 107 srcs: [ 108 "resolv_gold_test.cpp", 109 ], 110 header_libs: [ 111 "libnetd_client_headers", 112 ], 113 shared_libs: [ 114 "libbinder_ndk", 115 "libstatssocket", 116 ], 117 static_libs: [ 118 "dnsresolver_aidl_interface-lateststable-ndk", 119 "golddata_proto", 120 "libcrypto_static", 121 "libdoh_ffi_for_test", 122 "libgmock", 123 "libnetd_resolv", 124 "libnetd_test_dnsresponder_ndk", 125 "libnetd_test_resolv_utils", 126 "libnetdutils", 127 "libprotobuf-cpp-lite", 128 "libssl", 129 "netd_aidl_interface-lateststable-ndk", 130 "netd_event_listener_interface-lateststable-ndk", 131 "server_configurable_flags", 132 "stats_proto", 133 ], 134 // TODO: Remove multilib after coverage test switched to 64-bit device. 135 // See comments in target "resolv_test_mts_coverage_defaults". 136 compile_multilib: "both", 137 multilib: { 138 lib32: { 139 suffix: "32", 140 }, 141 lib64: { 142 suffix: "64", 143 }, 144 }, 145} 146 147cc_test { 148 name: "resolv_stress_test", 149 test_suites: [ 150 "general-tests", 151 "mts-dnsresolver", 152 ], 153 isolated: false, 154 // This won't work with test_config 155 // require_root: true, 156 // TODO: Remove resolv_test_mts_coverage_defaults after mts coverage switched to 64-bit device. 157 defaults: [ 158 "netd_defaults", 159 "resolv_test_defaults", 160 "resolv_test_mts_coverage_defaults", 161 ], 162 srcs: [ 163 "resolv_stress_test.cpp", 164 ], 165 header_libs: [ 166 "libnetd_resolv_headers", 167 ], 168 shared_libs: [ 169 "libbinder_ndk", 170 "libnetd_client", 171 ], 172 static_libs: [ 173 "dnsresolver_aidl_interface-lateststable-ndk", 174 "libgmock", 175 "libnetd_test_dnsresponder_ndk", 176 "libnetd_test_resolv_utils", 177 "libnetdutils", 178 "netd_event_listener_interface-lateststable-ndk", 179 "netd_aidl_interface-lateststable-ndk", 180 ], 181} 182 183cc_test { 184 name: "resolv_integration_test", 185 test_suites: [ 186 "general-tests", 187 "mts-dnsresolver", 188 ], 189 isolated: false, 190 require_root: true, 191 test_config_template: ":resolv_test_config_template", 192 defaults: [ 193 "netd_defaults", 194 "resolv_test_defaults", 195 ], 196 tidy: false, // cuts test build time by > 1m30s 197 srcs: [ 198 "dns_responder/dns_responder.cpp", 199 "dnsresolver_binder_test.cpp", 200 "doh_frontend.cpp", 201 "resolv_integration_test.cpp", 202 "resolv_private_dns_test.cpp", 203 "tun_forwarder.cpp", 204 ], 205 header_libs: [ 206 "bpf_headers", 207 "dnsproxyd_protocol_headers", 208 "libnetd_resolv_headers", 209 ], 210 shared_libs: [ 211 "libbinder_ndk", 212 "libnetd_client", 213 ], 214 static_libs: [ 215 "dnsresolver_aidl_interface-lateststable-ndk", 216 "libconnectivity_native_test_utils", 217 "libcrypto_static", 218 "libcutils", 219 "libdoh_frontend_ffi", 220 "libgmock", 221 "libip_checksum", 222 "libmodules-utils-build", 223 "libnetd_test_dnsresponder_ndk", 224 "libnetd_test_metrics_listener", 225 "libnetd_test_resolv_utils", 226 "libnetdutils", 227 "libnettestutils", 228 "libssl", 229 "libutils", 230 "netd_aidl_interface-lateststable-ndk", 231 "netd_event_listener_interface-lateststable-ndk", 232 "resolv_unsolicited_listener", 233 ], 234 // This test talks to the DnsResolver module over a binary protocol on a socket, so keep it as 235 // multilib setting is worth because we might be able to get some coverage for the case where 236 // 32bit apps talk to 64bit resolvers. 237 compile_multilib: "both", 238 multilib: { 239 lib32: { 240 suffix: "32", 241 }, 242 lib64: { 243 suffix: "64", 244 }, 245 }, 246 // 'resolv_integration_test' used DisableConfigSyncTargetPreparer provided 247 // by net-tests-utils-host-common; adding it to make the host jar available 248 // after the build process. 249 host_required: [ 250 "net-tests-utils-host-common", 251 ], 252} 253 254cc_test { 255 name: "resolv_unit_test", 256 test_suites: [ 257 "general-tests", 258 "mts-dnsresolver", 259 ], 260 isolated: false, 261 require_root: true, 262 // TODO: Drop root privileges and make it be an real unit test. 263 // TODO: Remove resolv_test_mts_coverage_defaults after mts coverage switched to 64-bit device. 264 defaults: [ 265 "netd_defaults", 266 "resolv_test_defaults", 267 "resolv_test_mts_coverage_defaults", 268 ], 269 srcs: [ 270 "resolv_cache_unit_test.cpp", 271 "resolv_callback_unit_test.cpp", 272 "resolv_tls_unit_test.cpp", 273 "resolv_unit_test.cpp", 274 ":resolv_unit_test_files", 275 ], 276 shared_libs: [ 277 "libbinder_ndk", 278 "libstatssocket", 279 ], 280 static_libs: [ 281 "dnsresolver_aidl_interface-lateststable-ndk", 282 "netd_aidl_interface-lateststable-ndk", 283 "netd_event_listener_interface-lateststable-ndk", 284 "libcrypto_static", 285 "libconnectivity_native_test_utils", 286 "libcutils", 287 "libdoh_ffi_for_test", 288 "libgmock", 289 "libnetd_resolv", 290 "libnetd_test_dnsresponder_ndk", 291 "libnetd_test_resolv_utils", 292 "libnetdutils", 293 "libprotobuf-cpp-lite", 294 "libssl", 295 "libstatslog_resolv", 296 "libstatspush_compat", 297 "libsysutils", 298 "resolv_stats_test_utils", 299 "server_configurable_flags", 300 "stats_proto", 301 ], 302} 303 304cc_test_library { 305 name: "resolv_stats_test_utils", 306 srcs: [ 307 "resolv_stats_test_utils.cpp", 308 ], 309 defaults: [ 310 "netd_defaults", 311 "resolv_test_defaults", 312 ], 313 export_include_dirs: ["."], 314 static_libs: [ 315 "libgmock", 316 "libnetdutils", 317 "libprotobuf-cpp-lite", 318 "stats_proto", 319 ], 320} 321 322cc_test { 323 name: "resolv_stats_test_utils_test", 324 srcs: [ 325 "resolv_stats_test_utils_test.cpp", 326 ], 327 defaults: [ 328 "netd_defaults", 329 "resolv_test_defaults", 330 "connectivity-mainline-presubmit-cc-defaults", 331 ], 332 test_suites: ["general-tests"], 333 static_libs: [ 334 "libgmock", 335 "libnetdutils", 336 "libprotobuf-cpp-lite", 337 "resolv_stats_test_utils", 338 "stats_proto", 339 ], 340} 341 342cc_test { 343 name: "doh_ffi_test", 344 test_suites: [ 345 "general-tests", 346 "mts-dnsresolver", 347 ], 348 defaults: [ 349 "connectivity-mainline-presubmit-cc-defaults", 350 "netd_defaults", 351 "resolv_test_defaults", 352 "resolv_test_mts_coverage_without_root_defaults", 353 ], 354 test_config: "doh_ffi_test_config.xml", 355 header_libs: [ 356 "libnetd_resolv_internal_headers", 357 ], 358 srcs: ["doh_ffi_test.cpp"], 359 static_libs: [ 360 "libcrypto_static", 361 "libdoh_ffi_for_test", 362 "libgmock", 363 "libnetdutils", 364 "libssl", 365 "stats_proto", 366 ], 367 shared_libs: [ 368 "libnetd_client", 369 "libstatssocket", 370 ], 371 host_required: [ 372 "net-tests-utils-host-common", 373 ], 374 data: [":ConnectivityTestPreparer"], 375} 376 377cc_defaults { 378 name: "resolv_fuzzer_defaults", 379 defaults: [ 380 "netd_defaults", 381 "resolv_test_defaults", 382 ], 383 srcs: [ 384 "doh_frontend.cpp", 385 "fuzzer/resolv_fuzzer_utils.cpp", 386 ], 387 header_libs: [ 388 "libnetd_resolv_headers", 389 "dnsproxyd_protocol_headers", 390 ], 391 shared_libs: [ 392 "libbinder_ndk", 393 "libstatssocket", 394 ], 395 static_libs: [ 396 "dnsresolver_aidl_interface-lateststable-ndk", 397 "libcrypto_static", 398 "libdoh_fuzz_ffi", 399 "libgtest", 400 "libnetdutils", 401 "libnetd_resolv", 402 "libnetd_test_dnsresponder_ndk", 403 "libnetd_test_resolv_utils", 404 "libprotobuf-cpp-lite", 405 "libssl", 406 "libsysutils", 407 "netd_aidl_interface-lateststable-ndk", 408 "netd_event_listener_interface-lateststable-ndk", 409 "server_configurable_flags", 410 "stats_proto", 411 ], 412 target: { 413 android: { 414 shared_libs: [ 415 "libutils", 416 ], 417 }, 418 host: { 419 static_libs: [ 420 "libutils", 421 ], 422 }, 423 }, 424 fuzz_config: { 425 cc: [ 426 "[email protected]", 427 "[email protected]", 428 ], 429 componentid: 31808, // Android > Android OS & Apps > Systems > core networking 430 }, 431} 432 433cc_fuzz { 434 name: "resolv_gethostbyname_fuzzer", 435 defaults: ["resolv_fuzzer_defaults"], 436 srcs: ["fuzzer/resolv_gethostbyname_fuzzer.cpp"], 437} 438 439cc_fuzz { 440 name: "resolv_gethostbyaddr_fuzzer", 441 defaults: ["resolv_fuzzer_defaults"], 442 srcs: ["fuzzer/resolv_gethostbyaddr_fuzzer.cpp"], 443} 444 445cc_fuzz { 446 name: "resolv_getaddrinfo_fuzzer", 447 defaults: ["resolv_fuzzer_defaults"], 448 srcs: ["fuzzer/resolv_getaddrinfo_fuzzer.cpp"], 449} 450 451cc_fuzz { 452 name: "resolv_service_fuzzer", 453 defaults: [ 454 "resolv_fuzzer_defaults", 455 ], 456 static_libs: [ 457 "libstatslog_resolv", 458 "libstatspush_compat", 459 "libbase", 460 "libbinder_random_parcel", 461 "libcutils", 462 ], 463 shared_libs: [ 464 "libcom.android.tethering.dns_helper", 465 ], 466 target: { 467 android: { 468 shared_libs: [ 469 "libbinder_ndk", 470 "libbinder", 471 ], 472 }, 473 host: { 474 static_libs: [ 475 "libbinder_ndk", 476 "libbinder", 477 ], 478 }, 479 darwin: { 480 enabled: false, 481 }, 482 }, 483 fuzz_config: { 484 cc: [ 485 "[email protected]", 486 "[email protected]", 487 ], 488 // Adds bugs to hotlist "AIDL fuzzer bugs" on buganizer 489 hotlists: ["4637097"], 490 }, 491 srcs: ["fuzzer/resolv_service_fuzzer.cpp"], 492} 493