blob: 0ba356c1df6e0eb8c4a7acea42d06c756969c194 [file] [log] [blame]
Tao Bao30e31142019-04-09 00:12:30 -07001// Copyright (C) 2019 The Android Open Source Project
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
Tao Bao3c7b2a62019-08-07 12:24:20 -070015//
16// Module-specific defaults.
17//
18// For module X, if we need to build it both as a library and an executable:
19// - A default rule `releasetools_X_defaults` is created, which lists `srcs`, `libs` and
20// `required` properties.
21// - `python_library_host` and `python_binary_host` are created by listing
22// `releasetools_X_defaults` in their defaults.
23//
24
Bob Badour03905802021-02-12 21:42:54 -080025package {
26 default_applicable_licenses: ["Android-Apache-2.0"],
27}
28
Tao Bao3c7b2a62019-08-07 12:24:20 -070029python_defaults {
30 name: "releasetools_add_img_to_target_files_defaults",
31 srcs: [
32 "add_img_to_target_files.py",
33 ],
34 libs: [
Kelvin Zhang5f0fcee2021-01-19 15:30:46 -050035 "ota_metadata_proto",
36 "releasetools_apex_utils",
Tao Bao3c7b2a62019-08-07 12:24:20 -070037 "releasetools_build_image",
38 "releasetools_build_super_image",
39 "releasetools_common",
40 ],
41 required: [
42 "care_map_generator",
43 ],
44}
45
46python_defaults {
47 name: "releasetools_build_image_defaults",
48 srcs: [
49 "build_image.py",
50 ],
51 libs: [
52 "releasetools_common",
Inseob Kim9cda3972021-10-12 22:59:12 +090053 "releasetools_fsverity_metadata_generator",
Tao Bao3c7b2a62019-08-07 12:24:20 -070054 "releasetools_verity_utils",
55 ],
56 required: [
57 "blk_alloc_to_base_fs",
58 "e2fsck",
David Anderson94ad5bb2022-03-04 10:57:58 -080059 "fsck.erofs",
60 "img2simg",
61 "mkfs.erofs",
Yifan Hong77023452020-08-25 16:15:16 -070062 "mkuserimg_mke2fs",
Tao Bao3c7b2a62019-08-07 12:24:20 -070063 "simg2img",
64 "tune2fs",
Cole Faustb0002082022-09-05 18:34:56 -070065 "mkf2fsuserimg",
Jaegeuk Kim1f50a362021-06-08 18:24:46 -070066 "fsck.f2fs",
Tao Bao3c7b2a62019-08-07 12:24:20 -070067 ],
68}
69
70python_defaults {
71 name: "releasetools_build_super_image_defaults",
72 srcs: [
73 "build_super_image.py",
74 ],
75 libs: [
76 "releasetools_common",
77 ],
78}
79
80python_defaults {
81 name: "releasetools_img_from_target_files_defaults",
82 srcs: [
83 "img_from_target_files.py",
84 ],
85 libs: [
86 "releasetools_build_super_image",
87 "releasetools_common",
88 ],
89}
90
91python_defaults {
Yifan Honge3ba82c2019-08-21 13:29:30 -070092 name: "releasetools_check_target_files_vintf_defaults",
93 srcs: [
94 "check_target_files_vintf.py",
95 ],
96 libs: [
97 "releasetools_common",
98 ],
99 required: [
100 "checkvintf",
Rob Seymour3f1c9572022-07-28 21:56:28 +0000101 "deapexer",
102 "dump_apex_info",
Yifan Honge3ba82c2019-08-21 13:29:30 -0700103 ],
104}
105
Tianjiea2076132020-08-19 17:25:32 -0700106python_library_host {
107 name: "ota_metadata_proto",
Tianjiea2076132020-08-19 17:25:32 -0700108 srcs: [
109 "ota_metadata.proto",
110 ],
111 proto: {
112 canonical_path_from_root: false,
113 },
114}
115
Kelvin Zhanga3a74b62021-05-14 17:18:43 -0400116cc_library_static {
117 name: "ota_metadata_proto_cc",
118 srcs: [
119 "ota_metadata.proto",
120 ],
121 host_supported: true,
122 recovery_available: true,
123 proto: {
124 canonical_path_from_root: false,
125 type: "lite",
126 export_proto_headers: true,
127 },
128}
129
Kelvin Zhang2b6a9c32021-04-12 17:24:26 -0400130java_library_static {
131 name: "ota_metadata_proto_java",
132 host_supported: true,
133 proto: {
134 type: "nano",
135 },
136 srcs: ["ota_metadata.proto"],
137 sdk_version: "9",
138 target: {
139 android: {
140 jarjar_rules: "jarjar-rules.txt",
141 },
142 host: {
143 static_libs: ["libprotobuf-java-nano"],
144 },
145 },
146 visibility: ["//frameworks/base:__subpackages__"]
147}
148
Yifan Honge3ba82c2019-08-21 13:29:30 -0700149python_defaults {
Tao Bao3c7b2a62019-08-07 12:24:20 -0700150 name: "releasetools_ota_from_target_files_defaults",
151 srcs: [
152 "edify_generator.py",
Kelvin Zhangcff4d762020-07-29 16:37:51 -0400153 "non_ab_ota.py",
Tianjiea2076132020-08-19 17:25:32 -0700154 "ota_from_target_files.py",
Kelvin Zhangcff4d762020-07-29 16:37:51 -0400155 "ota_utils.py",
Kelvin Zhang059bf6e2022-08-12 14:03:41 -0700156 "payload_signer.py",
Tianjiea2076132020-08-19 17:25:32 -0700157 "target_files_diff.py",
Tao Bao3c7b2a62019-08-07 12:24:20 -0700158 ],
159 libs: [
Tianjiea2076132020-08-19 17:25:32 -0700160 "ota_metadata_proto",
Yifan Hong9276cf02019-08-21 16:37:04 -0700161 "releasetools_check_target_files_vintf",
Tao Bao3c7b2a62019-08-07 12:24:20 -0700162 "releasetools_common",
163 "releasetools_verity_utils",
Mohammad Samiul Islam9fd58862021-01-06 13:33:25 +0000164 "apex_manifest",
Kelvin Zhang766eea72021-06-03 09:36:08 -0400165 "care_map_proto_py",
Tao Bao3c7b2a62019-08-07 12:24:20 -0700166 ],
167 required: [
168 "brillo_update_payload",
Yifan Hong09298552019-09-04 11:49:01 -0700169 "checkvintf",
Yi-Yo Chiang36054e22022-01-08 22:29:30 +0800170 "generate_gki_certificate",
jiajia tangf3f842b2021-03-17 21:49:44 +0800171 "minigzip",
Yifan Hong125d0b62020-09-24 17:07:03 -0700172 "lz4",
173 "toybox",
Mohammad Samiul Islam9fd58862021-01-06 13:33:25 +0000174 "unpack_bootimg",
175 "deapexer",
Tao Bao3c7b2a62019-08-07 12:24:20 -0700176 ],
Yo Chiang096c5152020-08-07 04:22:18 +0000177 target: {
178 darwin: {
179 // required module "brillo_update_payload" is disabled on darwin
180 enabled: false,
181 },
182 },
Tao Bao3c7b2a62019-08-07 12:24:20 -0700183}
184
185//
186// Host libraries.
187//
188
Tao Bao30e31142019-04-09 00:12:30 -0700189python_library_host {
Tao Bao3c7b2a62019-08-07 12:24:20 -0700190 name: "releasetools_add_img_to_target_files",
191 defaults: [
Tao Bao3c7b2a62019-08-07 12:24:20 -0700192 "releasetools_add_img_to_target_files_defaults",
193 ],
194}
195
196python_library_host {
197 name: "releasetools_apex_utils",
Tao Bao005305a2019-08-05 13:00:44 -0700198 srcs: [
Tao Bao3c7b2a62019-08-07 12:24:20 -0700199 "apex_utils.py",
200 ],
201 libs: [
Mohammad Samiul Islam9fd58862021-01-06 13:33:25 +0000202 "apex_manifest",
203 "ota_metadata_proto",
Tao Bao3c7b2a62019-08-07 12:24:20 -0700204 "releasetools_common",
205 ],
206}
207
208python_library_host {
209 name: "releasetools_build_image",
210 defaults: [
Tao Bao3c7b2a62019-08-07 12:24:20 -0700211 "releasetools_build_image_defaults",
212 ],
213}
214
215python_library_host {
216 name: "releasetools_build_super_image",
217 defaults: [
Tao Bao3c7b2a62019-08-07 12:24:20 -0700218 "releasetools_build_super_image_defaults",
Tao Bao005305a2019-08-05 13:00:44 -0700219 ],
220}
221
222python_library_host {
Yifan Hongccb86fe2019-08-22 15:52:26 -0700223 name: "releasetools_check_target_files_vintf",
224 defaults: [
Yifan Hongccb86fe2019-08-22 15:52:26 -0700225 "releasetools_check_target_files_vintf_defaults",
226 ],
227}
228
229python_library_host {
Tao Bao2bbb07c2019-05-07 13:12:21 -0700230 name: "releasetools_common",
Tao Bao30e31142019-04-09 00:12:30 -0700231 srcs: [
Tao Bao30e31142019-04-09 00:12:30 -0700232 "blockimgdiff.py",
Tao Bao30e31142019-04-09 00:12:30 -0700233 "common.py",
Tianjie Xu41976c72019-07-03 13:57:01 -0700234 "images.py",
Tao Bao30e31142019-04-09 00:12:30 -0700235 "rangelib.py",
Tao Bao30e31142019-04-09 00:12:30 -0700236 "sparse_img.py",
Tao Bao2bbb07c2019-05-07 13:12:21 -0700237 ],
238 // Only the tools that are referenced directly are listed as required modules. For example,
239 // `avbtool` is not here, as the script always uses the one from info_dict['avb_avbtool'].
240 required: [
changho.shin0f125362019-07-08 10:59:00 +0900241 "aapt2",
Tao Bao2bbb07c2019-05-07 13:12:21 -0700242 "boot_signer",
243 "brotli",
244 "bsdiff",
Yi-Yo Chiang36054e22022-01-08 22:29:30 +0800245 "generate_gki_certificate",
Tao Bao2bbb07c2019-05-07 13:12:21 -0700246 "imgdiff",
247 "minigzip",
J. Avila98cd4cc2020-06-10 20:09:10 +0000248 "lz4",
Tao Bao2bbb07c2019-05-07 13:12:21 -0700249 "mkbootfs",
Luca Stefani3e4b4482020-03-27 14:00:23 +0100250 "signapk",
Yifan Hong14a87122021-01-12 13:26:25 -0800251 "toybox",
252 "unpack_bootimg",
Tao Bao2bbb07c2019-05-07 13:12:21 -0700253 ],
254}
255
256python_library_host {
Tao Bao3c7b2a62019-08-07 12:24:20 -0700257 name: "releasetools_img_from_target_files",
258 defaults: [
Tao Bao3c7b2a62019-08-07 12:24:20 -0700259 "releasetools_img_from_target_files_defaults",
260 ],
261}
262
263python_library_host {
264 name: "releasetools_ota_from_target_files",
265 defaults: [
Tao Bao3c7b2a62019-08-07 12:24:20 -0700266 "releasetools_ota_from_target_files_defaults",
267 ],
268}
269
270python_library_host {
Inseob Kim9cda3972021-10-12 22:59:12 +0900271 name: "releasetools_fsverity_metadata_generator",
272 srcs: [
273 "fsverity_metadata_generator.py",
274 ],
Inseob Kimf69346e2021-10-13 15:16:33 +0900275 libs: [
276 "fsverity_digests_proto_python",
Inseob Kim9cda3972021-10-12 22:59:12 +0900277 ],
278}
279
280python_library_host {
Tao Bao2bbb07c2019-05-07 13:12:21 -0700281 name: "releasetools_verity_utils",
Tao Bao2bbb07c2019-05-07 13:12:21 -0700282 srcs: [
Tao Bao30e31142019-04-09 00:12:30 -0700283 "verity_utils.py",
284 ],
Tao Bao2bbb07c2019-05-07 13:12:21 -0700285 required: [
286 "append2simg",
287 "build_verity_metadata",
288 "build_verity_tree",
289 "fec",
290 ],
291}
292
Tao Bao3c7b2a62019-08-07 12:24:20 -0700293//
294// Host binaries.
295//
296
Tao Bao2bbb07c2019-05-07 13:12:21 -0700297python_defaults {
298 name: "releasetools_binary_defaults",
299 version: {
Tao Bao2bbb07c2019-05-07 13:12:21 -0700300 py3: {
Cole Faustc76931f2021-11-04 16:59:39 -0700301 embedded_launcher: true,
Tao Bao2bbb07c2019-05-07 13:12:21 -0700302 },
303 },
Kiyoung Kim0a8d2622020-03-24 09:36:03 +0900304 // TODO (b/140144201) Build imgdiff from releasetools_common
305 required: [
306 "aapt2",
307 "boot_signer",
308 "brotli",
309 "bsdiff",
Mohammad Samiul Islamf4909b42021-02-01 20:43:41 +0000310 "deapexer",
Yi-Yo Chiang36054e22022-01-08 22:29:30 +0800311 "generate_gki_certificate",
Kiyoung Kim0a8d2622020-03-24 09:36:03 +0900312 "imgdiff",
313 "minigzip",
Luca Stefanie0fc4ca2020-09-12 06:08:16 +0000314 "lz4",
Kiyoung Kim0a8d2622020-03-24 09:36:03 +0900315 "mkbootfs",
Luca Stefanie0fc4ca2020-09-12 06:08:16 +0000316 "signapk",
Yifan Hong14a87122021-01-12 13:26:25 -0800317 "toybox",
318 "unpack_bootimg",
Kiyoung Kim0a8d2622020-03-24 09:36:03 +0900319 ],
Tao Bao2bbb07c2019-05-07 13:12:21 -0700320}
321
322python_binary_host {
Tao Bao3c7b2a62019-08-07 12:24:20 -0700323 name: "add_img_to_target_files",
324 defaults: [
325 "releasetools_binary_defaults",
326 "releasetools_add_img_to_target_files_defaults",
327 ],
328}
329
330python_binary_host {
Tao Bao2bbb07c2019-05-07 13:12:21 -0700331 name: "build_image",
Tao Bao3c7b2a62019-08-07 12:24:20 -0700332 defaults: [
333 "releasetools_binary_defaults",
334 "releasetools_build_image_defaults",
Tao Bao2bbb07c2019-05-07 13:12:21 -0700335 ],
336}
337
338python_binary_host {
339 name: "build_super_image",
Tao Bao3c7b2a62019-08-07 12:24:20 -0700340 defaults: [
341 "releasetools_binary_defaults",
342 "releasetools_build_super_image_defaults",
343 ],
344}
345
346python_binary_host {
Yifan Hong3a7c2ef2019-11-01 18:23:19 +0000347 name: "check_partition_sizes",
348 srcs: [
349 "check_partition_sizes.py",
350 ],
351 libs: [
352 "releasetools_common",
353 ],
354 defaults: [
355 "releasetools_binary_defaults",
356 ],
357}
358
359python_binary_host {
Tao Bao3c7b2a62019-08-07 12:24:20 -0700360 name: "check_ota_package_signature",
Tao Bao2bbb07c2019-05-07 13:12:21 -0700361 defaults: ["releasetools_binary_defaults"],
362 srcs: [
Tao Bao3c7b2a62019-08-07 12:24:20 -0700363 "check_ota_package_signature.py",
Tao Bao2bbb07c2019-05-07 13:12:21 -0700364 ],
Tao Bao2bbb07c2019-05-07 13:12:21 -0700365 libs: [
366 "releasetools_common",
367 ],
Tao Bao3c7b2a62019-08-07 12:24:20 -0700368 required: [
369 "delta_generator",
370 ],
Yo Chiang096c5152020-08-07 04:22:18 +0000371 target: {
372 darwin: {
373 // required module "delta_generator" is disabled on darwin
374 enabled: false,
375 },
376 },
Tao Bao3c7b2a62019-08-07 12:24:20 -0700377}
378
379python_binary_host {
380 name: "check_target_files_signatures",
381 defaults: ["releasetools_binary_defaults"],
382 srcs: [
383 "check_target_files_signatures.py",
384 ],
385 libs: [
386 "releasetools_common",
387 ],
388 required: [
Elliott Hughes16a5cac2021-05-14 15:27:23 -0700389 "aapt2",
Tao Bao3c7b2a62019-08-07 12:24:20 -0700390 ],
391}
392
393python_binary_host {
Yifan Honge3ba82c2019-08-21 13:29:30 -0700394 name: "check_target_files_vintf",
395 defaults: [
396 "releasetools_binary_defaults",
397 "releasetools_check_target_files_vintf_defaults"
398 ],
399}
400
401python_binary_host {
Tao Bao3c7b2a62019-08-07 12:24:20 -0700402 name: "img_from_target_files",
403 defaults: [
404 "releasetools_binary_defaults",
405 "releasetools_img_from_target_files_defaults",
406 ],
Tao Bao30e31142019-04-09 00:12:30 -0700407}
408
Daniel Normanb8d52a22020-10-26 17:55:00 -0700409python_defaults {
410 name: "releasetools_find_shareduid_violation_defaults",
411 srcs: [
412 "find_shareduid_violation.py",
413 ],
414 libs: [
415 "releasetools_common",
416 ],
417}
418
419python_binary_host {
420 name: "find_shareduid_violation",
421 defaults: [
422 "releasetools_binary_defaults",
423 "releasetools_find_shareduid_violation_defaults",
424 ],
425}
426
427python_library_host {
428 name: "releasetools_find_shareduid_violation",
429 defaults: [
430 "releasetools_find_shareduid_violation_defaults",
Daniel Normanb8d52a22020-10-26 17:55:00 -0700431 ],
432}
433
Daniel Normanbfc51ef2019-07-24 14:34:54 -0700434python_binary_host {
Tao Baoe11a4602019-08-06 23:21:23 -0700435 name: "make_recovery_patch",
436 defaults: ["releasetools_binary_defaults"],
437 srcs: [
438 "make_recovery_patch.py",
439 ],
440 libs: [
441 "releasetools_common",
442 ],
443}
444
445python_binary_host {
Tao Bao3c7b2a62019-08-07 12:24:20 -0700446 name: "ota_from_target_files",
447 defaults: [
448 "releasetools_binary_defaults",
449 "releasetools_ota_from_target_files_defaults",
450 ],
451}
452
453python_binary_host {
454 name: "ota_package_parser",
455 defaults: ["releasetools_binary_defaults"],
456 srcs: [
457 "ota_package_parser.py",
458 "rangelib.py",
Tao Bao8821d642019-08-05 12:05:45 -0700459 ],
460}
461
Tao Baoe11a4602019-08-06 23:21:23 -0700462python_binary_host {
463 name: "sparse_img",
464 defaults: ["releasetools_binary_defaults"],
465 srcs: [
466 "rangelib.py",
467 "sparse_img.py",
468 ],
Tao Baoe11a4602019-08-06 23:21:23 -0700469}
470
Tao Bao3c7b2a62019-08-07 12:24:20 -0700471python_binary_host {
472 name: "sign_apex",
473 defaults: ["releasetools_binary_defaults"],
474 srcs: [
475 "sign_apex.py",
476 ],
477 libs: [
478 "releasetools_apex_utils",
479 "releasetools_common",
480 ],
481}
482
483python_binary_host {
484 name: "sign_target_files_apks",
485 defaults: ["releasetools_binary_defaults"],
486 srcs: [
487 "sign_target_files_apks.py",
488 ],
489 libs: [
490 "releasetools_add_img_to_target_files",
491 "releasetools_apex_utils",
492 "releasetools_common",
493 ],
494}
495
496python_binary_host {
497 name: "validate_target_files",
498 defaults: ["releasetools_binary_defaults"],
499 srcs: [
500 "validate_target_files.py",
501 ],
502 libs: [
503 "releasetools_common",
504 ],
505}
506
Jiyong Parkb92b8f42021-03-15 23:13:42 +0900507python_binary_host {
508 name: "verity_utils",
509 defaults: ["releasetools_binary_defaults"],
510 srcs: [
511 "verity_utils.py",
512 ],
513 libs: [
514 "releasetools_common",
515 ],
516 required: [
517 "append2simg",
518 "build_verity_metadata",
519 "build_verity_tree",
520 "fec",
521 ],
522}
523
Inseob Kim2d034932021-12-13 14:04:00 +0900524python_binary_host {
Inseob Kim135c1f12022-01-06 17:22:07 +0900525 name: "fsverity_metadata_generator",
Inseob Kim293112d2022-02-16 11:22:03 +0900526 defaults: ["releasetools_binary_defaults"],
Inseob Kim135c1f12022-01-06 17:22:07 +0900527 srcs: [
528 "fsverity_metadata_generator.py",
Inseob Kim2d034932021-12-13 14:04:00 +0900529 ],
530 required: [
531 "fsverity",
532 ],
533}
534
Tao Bao3c7b2a62019-08-07 12:24:20 -0700535//
536// Tests.
537//
538
Tao Baoca82fc92019-05-01 21:58:03 -0700539python_defaults {
540 name: "releasetools_test_defaults",
Tao Bao30e31142019-04-09 00:12:30 -0700541 srcs: [
Tao Bao2bbb07c2019-05-07 13:12:21 -0700542 "check_ota_package_signature.py",
Yifan Hong3a7c2ef2019-11-01 18:23:19 +0000543 "check_partition_sizes.py",
Tao Bao2bbb07c2019-05-07 13:12:21 -0700544 "check_target_files_signatures.py",
Tao Bao2bbb07c2019-05-07 13:12:21 -0700545 "make_recovery_patch.py",
Tao Bao2bbb07c2019-05-07 13:12:21 -0700546 "ota_package_parser.py",
547 "sign_apex.py",
548 "sign_target_files_apks.py",
Tao Bao2bbb07c2019-05-07 13:12:21 -0700549 "validate_target_files.py",
Daniel Norman2b0b9ca2022-03-02 16:12:08 -0800550 ":releasetools_merge_sources",
551 ":releasetools_merge_tests",
Tao Bao2bbb07c2019-05-07 13:12:21 -0700552
Tao Bao30e31142019-04-09 00:12:30 -0700553 "test_*.py",
554 ],
555 libs: [
Tao Bao3c7b2a62019-08-07 12:24:20 -0700556 "releasetools_add_img_to_target_files",
557 "releasetools_apex_utils",
558 "releasetools_build_image",
Tao Bao005305a2019-08-05 13:00:44 -0700559 "releasetools_build_super_image",
Yifan Hongccb86fe2019-08-22 15:52:26 -0700560 "releasetools_check_target_files_vintf",
Tao Bao2bbb07c2019-05-07 13:12:21 -0700561 "releasetools_common",
Daniel Normanb8d52a22020-10-26 17:55:00 -0700562 "releasetools_find_shareduid_violation",
Tao Bao3c7b2a62019-08-07 12:24:20 -0700563 "releasetools_img_from_target_files",
564 "releasetools_ota_from_target_files",
Tao Bao2bbb07c2019-05-07 13:12:21 -0700565 "releasetools_verity_utils",
Tao Bao30e31142019-04-09 00:12:30 -0700566 ],
567 data: [
Yifan Hongccb86fe2019-08-22 15:52:26 -0700568 "testdata/**/*",
Mohammad Samiul Islam9fd58862021-01-06 13:33:25 +0000569 ":com.android.apex.compressed.v1",
570 ":com.android.apex.compressed.v1_original",
Tao Bao30e31142019-04-09 00:12:30 -0700571 ],
Yo Chiang096c5152020-08-07 04:22:18 +0000572 target: {
573 darwin: {
574 // libs dep "releasetools_ota_from_target_files" is disabled on darwin
575 enabled: false,
576 },
577 },
Mohammad Samiul Islam9fd58862021-01-06 13:33:25 +0000578 required: [
579 "deapexer",
580 ],
Tao Baoca82fc92019-05-01 21:58:03 -0700581}
582
583python_test_host {
584 name: "releasetools_test",
585 defaults: ["releasetools_test_defaults"],
586 main: "test_utils.py",
Cole Faustc76931f2021-11-04 16:59:39 -0700587 // Don't use embedded_launcher, atest will try (but may fail) to load libc++.so from
588 // host, because the test executable won't be able to find the needed libs via its
589 // runpath.
Julien Desprez6d9e78f2020-12-21 13:56:05 -0800590 test_options: {
591 unit_test: true,
592 },
Tao Bao30e31142019-04-09 00:12:30 -0700593}