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