blob: 86dd329883a79f7c1259ec4608377b231da7154b [file] [log] [blame]
Paul Duffin8eb45732022-10-04 19:03:31 +01001// Copyright 2022 Google Inc. All rights reserved.
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
15// Testing support for dexpreopt config.
16//
17// The bootImageConfig/bootImageVariant structs returned by genBootImageConfigs are used in many
18// places in the build and are currently mutated in a number of those locations. This provides
19// comprehensive tests of the fields in those structs to ensure that they have been initialized
20// correctly and where relevant, mutated correctly.
21//
22// This is used in TestBootImageConfig to verify that the
23
24package java
25
26import (
27 "fmt"
28 "strings"
29 "testing"
30
31 "android/soong/android"
32)
33
34// PrepareForBootImageConfigTest is the minimal set of preparers that are needed to be able to use
35// the Check*BootImageConfig methods define here.
36var PrepareForBootImageConfigTest = android.GroupFixturePreparers(
37 android.PrepareForTestWithArchMutator,
38 android.PrepareForTestAccessingMakeVars,
39 FixtureConfigureBootJars("com.android.art:core1", "com.android.art:core2", "platform:framework"),
40)
41
Jiakai Zhangb8796202023-03-06 19:16:48 +000042var PrepareApexBootJarConfigs = FixtureConfigureApexBootJars(
43 "com.android.foo:framework-foo", "com.android.bar:framework-bar")
44
45var PrepareApexBootJarConfigsAndModules = android.GroupFixturePreparers(
46 PrepareApexBootJarConfigs,
47 prepareApexBootJarModule("com.android.foo", "framework-foo"),
48 prepareApexBootJarModule("com.android.bar", "framework-bar"),
49)
50
51var ApexBootJarFragmentsForPlatformBootclasspath = fmt.Sprintf(`
52 {
53 apex: "%[1]s",
54 module: "%[1]s-bootclasspathfragment",
55 },
56 {
57 apex: "%[2]s",
58 module: "%[2]s-bootclasspathfragment",
59 },
60`, "com.android.foo", "com.android.bar")
61
62var ApexBootJarDexJarPaths = []string{
63 "out/soong/.intermediates/packages/modules/com.android.bar/framework-bar/android_common_apex10000/aligned/framework-bar.jar",
64 "out/soong/.intermediates/packages/modules/com.android.foo/framework-foo/android_common_apex10000/aligned/framework-foo.jar",
65}
66
67func prepareApexBootJarModule(apexName string, moduleName string) android.FixturePreparer {
68 moduleSourceDir := fmt.Sprintf("packages/modules/%s", apexName)
69 return android.GroupFixturePreparers(
70 android.FixtureAddTextFile(moduleSourceDir+"/Android.bp", fmt.Sprintf(`
71 apex {
72 name: "%[1]s",
73 key: "%[1]s.key",
74 bootclasspath_fragments: [
75 "%[1]s-bootclasspathfragment",
76 ],
77 updatable: false,
78 }
79
80 apex_key {
81 name: "%[1]s.key",
82 public_key: "%[1]s.avbpubkey",
83 private_key: "%[1]s.pem",
84 }
85
86 bootclasspath_fragment {
87 name: "%[1]s-bootclasspathfragment",
88 contents: ["%[2]s"],
89 apex_available: ["%[1]s"],
90 hidden_api: {
91 split_packages: ["*"],
92 },
93 }
94
95 java_library {
96 name: "%[2]s",
97 srcs: ["%[2]s.java"],
98 system_modules: "none",
99 sdk_version: "none",
100 compile_dex: true,
101 apex_available: ["%[1]s"],
102 }
103 `, apexName, moduleName)),
104 android.FixtureMergeMockFs(android.MockFS{
105 fmt.Sprintf("%s/apex_manifest.json", moduleSourceDir): nil,
106 fmt.Sprintf("%s/%s.avbpubkey", moduleSourceDir, apexName): nil,
107 fmt.Sprintf("%s/%s.pem", moduleSourceDir, apexName): nil,
108 fmt.Sprintf("system/sepolicy/apex/%s-file_contexts", apexName): nil,
109 fmt.Sprintf("%s/%s.java", moduleSourceDir, moduleName): nil,
110 }),
111 )
112}
113
Paul Duffin8eb45732022-10-04 19:03:31 +0100114// normalizedInstall represents a android.RuleBuilderInstall that has been normalized to remove
115// test specific parts of the From path.
116type normalizedInstall struct {
117 from string
118 to string
119}
120
121// normalizeInstalls converts a slice of android.RuleBuilderInstall into a slice of
122// normalizedInstall to allow them to be compared using android.AssertDeepEquals.
123func normalizeInstalls(installs android.RuleBuilderInstalls) []normalizedInstall {
124 var normalized []normalizedInstall
125 for _, install := range installs {
126 normalized = append(normalized, normalizedInstall{
127 from: install.From.RelativeToTop().String(),
128 to: install.To,
129 })
130 }
131 return normalized
132}
133
134// assertInstallsEqual normalized the android.RuleBuilderInstalls and compares against the expected
135// normalizedInstalls.
136func assertInstallsEqual(t *testing.T, message string, expected []normalizedInstall, actual android.RuleBuilderInstalls) {
137 t.Helper()
138 normalizedActual := normalizeInstalls(actual)
139 android.AssertDeepEquals(t, message, expected, normalizedActual)
140}
141
142// expectedConfig encapsulates the expected properties that will be set in a bootImageConfig
143//
144// Each field <x> in here is compared against the corresponding field <x> in bootImageConfig.
145type expectedConfig struct {
146 name string
147 stem string
148 dir string
149 symbolsDir string
150 installDirOnDevice string
151 installDirOnHost string
152 profileInstallPathInApex string
153 modules android.ConfiguredJarList
154 dexPaths []string
155 dexPathsDeps []string
156 zip string
157 variants []*expectedVariant
158
159 // Mutated fields
160 profileInstalls []normalizedInstall
161 profileLicenseMetadataFile string
162}
163
164// expectedVariant encapsulates the expected properties that will be set in a bootImageVariant
165//
166// Each field <x> in here is compared against the corresponding field <x> in bootImageVariant
167// except for archType which is compared against the target.Arch.ArchType field in bootImageVariant.
168type expectedVariant struct {
169 archType android.ArchType
170 dexLocations []string
171 dexLocationsDeps []string
172 imagePathOnHost string
173 imagePathOnDevice string
174 imagesDeps []string
Jiakai Zhang8fe3a412023-02-23 17:37:16 +0000175 baseImages []string
176 baseImagesDeps []string
Paul Duffin8eb45732022-10-04 19:03:31 +0100177
178 // Mutated fields
179 installs []normalizedInstall
180 vdexInstalls []normalizedInstall
181 unstrippedInstalls []normalizedInstall
182 licenseMetadataFile string
183}
184
185// CheckArtBootImageConfig checks the status of the fields of the bootImageConfig and
186// bootImageVariant structures that are returned from artBootImageConfig.
187//
188// This is before any fields are mutated.
189func CheckArtBootImageConfig(t *testing.T, result *android.TestResult) {
190 checkArtBootImageConfig(t, result, false, "")
191}
192
193// getArtImageConfig gets the ART bootImageConfig that was created during the test.
194func getArtImageConfig(result *android.TestResult) *bootImageConfig {
195 pathCtx := &android.TestPathContext{TestResult: result}
196 imageConfig := artBootImageConfig(pathCtx)
197 return imageConfig
198}
199
200// checkArtBootImageConfig checks the ART boot image.
201//
202// mutated is true if this is called after fields in the image have been mutated by the ART
203// bootclasspath_fragment and false otherwise.
204func checkArtBootImageConfig(t *testing.T, result *android.TestResult, mutated bool, expectedLicenseMetadataFile string) {
205 imageConfig := getArtImageConfig(result)
206
207 expected := &expectedConfig{
208 name: "art",
209 stem: "boot",
210 dir: "out/soong/test_device/dex_artjars",
211 symbolsDir: "out/soong/test_device/dex_artjars_unstripped",
212 installDirOnDevice: "system/framework",
213 installDirOnHost: "apex/art_boot_images/javalib",
214 profileInstallPathInApex: "etc/boot-image.prof",
215 modules: android.CreateTestConfiguredJarList([]string{"com.android.art:core1", "com.android.art:core2"}),
216 dexPaths: []string{"out/soong/test_device/dex_artjars_input/core1.jar", "out/soong/test_device/dex_artjars_input/core2.jar"},
217 dexPathsDeps: []string{"out/soong/test_device/dex_artjars_input/core1.jar", "out/soong/test_device/dex_artjars_input/core2.jar"},
218 zip: "out/soong/test_device/dex_artjars/art.zip",
219 variants: []*expectedVariant{
220 {
221 archType: android.Arm64,
222 dexLocations: []string{"/apex/com.android.art/javalib/core1.jar", "/apex/com.android.art/javalib/core2.jar"},
223 dexLocationsDeps: []string{"/apex/com.android.art/javalib/core1.jar", "/apex/com.android.art/javalib/core2.jar"},
224 imagePathOnHost: "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.art",
225 imagePathOnDevice: "/system/framework/arm64/boot.art",
226 imagesDeps: []string{
227 "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.art",
228 "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.oat",
229 "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.vdex",
230 "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot-core2.art",
231 "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot-core2.oat",
232 "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot-core2.vdex",
233 },
234 installs: []normalizedInstall{
235 {
236 from: "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.art",
237 to: "/apex/art_boot_images/javalib/arm64/boot.art",
238 },
239 {
240 from: "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.oat",
241 to: "/apex/art_boot_images/javalib/arm64/boot.oat",
242 },
243 {
244 from: "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot-core2.art",
245 to: "/apex/art_boot_images/javalib/arm64/boot-core2.art",
246 },
247 {
248 from: "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot-core2.oat",
249 to: "/apex/art_boot_images/javalib/arm64/boot-core2.oat",
250 },
251 },
252 vdexInstalls: []normalizedInstall{
253 {
254 from: "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.vdex",
255 to: "/apex/art_boot_images/javalib/arm64/boot.vdex",
256 },
257 {
258 from: "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot-core2.vdex",
259 to: "/apex/art_boot_images/javalib/arm64/boot-core2.vdex",
260 },
261 },
262 unstrippedInstalls: []normalizedInstall{
263 {
264 from: "out/soong/test_device/dex_artjars_unstripped/android/apex/art_boot_images/javalib/arm64/boot.oat",
265 to: "/apex/art_boot_images/javalib/arm64/boot.oat",
266 },
267 {
268 from: "out/soong/test_device/dex_artjars_unstripped/android/apex/art_boot_images/javalib/arm64/boot-core2.oat",
269 to: "/apex/art_boot_images/javalib/arm64/boot-core2.oat",
270 },
271 },
272 licenseMetadataFile: expectedLicenseMetadataFile,
273 },
274 {
275 archType: android.Arm,
276 dexLocations: []string{"/apex/com.android.art/javalib/core1.jar", "/apex/com.android.art/javalib/core2.jar"},
277 dexLocationsDeps: []string{"/apex/com.android.art/javalib/core1.jar", "/apex/com.android.art/javalib/core2.jar"},
278 imagePathOnHost: "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.art",
279 imagePathOnDevice: "/system/framework/arm/boot.art",
280 imagesDeps: []string{
281 "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.art",
282 "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.oat",
283 "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.vdex",
284 "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot-core2.art",
285 "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot-core2.oat",
286 "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot-core2.vdex",
287 },
288 installs: []normalizedInstall{
289 {
290 from: "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.art",
291 to: "/apex/art_boot_images/javalib/arm/boot.art",
292 },
293 {
294 from: "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.oat",
295 to: "/apex/art_boot_images/javalib/arm/boot.oat",
296 },
297 {
298 from: "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot-core2.art",
299 to: "/apex/art_boot_images/javalib/arm/boot-core2.art",
300 },
301 {
302 from: "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot-core2.oat",
303 to: "/apex/art_boot_images/javalib/arm/boot-core2.oat",
304 },
305 },
306 vdexInstalls: []normalizedInstall{
307 {
308 from: "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.vdex",
309 to: "/apex/art_boot_images/javalib/arm/boot.vdex",
310 },
311 {
312 from: "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot-core2.vdex",
313 to: "/apex/art_boot_images/javalib/arm/boot-core2.vdex",
314 },
315 },
316 unstrippedInstalls: []normalizedInstall{
317 {
318 from: "out/soong/test_device/dex_artjars_unstripped/android/apex/art_boot_images/javalib/arm/boot.oat",
319 to: "/apex/art_boot_images/javalib/arm/boot.oat",
320 },
321 {
322 from: "out/soong/test_device/dex_artjars_unstripped/android/apex/art_boot_images/javalib/arm/boot-core2.oat",
323 to: "/apex/art_boot_images/javalib/arm/boot-core2.oat",
324 },
325 },
326 licenseMetadataFile: expectedLicenseMetadataFile,
327 },
328 {
329 archType: android.X86_64,
330 dexLocations: []string{"host/linux-x86/apex/com.android.art/javalib/core1.jar", "host/linux-x86/apex/com.android.art/javalib/core2.jar"},
331 dexLocationsDeps: []string{"host/linux-x86/apex/com.android.art/javalib/core1.jar", "host/linux-x86/apex/com.android.art/javalib/core2.jar"},
332 imagePathOnHost: "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.art",
333 imagePathOnDevice: "/system/framework/x86_64/boot.art",
334 imagesDeps: []string{
335 "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.art",
336 "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.oat",
337 "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.vdex",
338 "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot-core2.art",
339 "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot-core2.oat",
340 "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot-core2.vdex",
341 },
342 installs: []normalizedInstall{
343 {
344 from: "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.art",
345 to: "/apex/art_boot_images/javalib/x86_64/boot.art",
346 }, {
347 from: "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.oat",
348 to: "/apex/art_boot_images/javalib/x86_64/boot.oat",
349 },
350 {
351 from: "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot-core2.art",
352 to: "/apex/art_boot_images/javalib/x86_64/boot-core2.art",
353 }, {
354 from: "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot-core2.oat",
355 to: "/apex/art_boot_images/javalib/x86_64/boot-core2.oat",
356 },
357 },
358 vdexInstalls: []normalizedInstall{
359 {
360 from: "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.vdex",
361 to: "/apex/art_boot_images/javalib/x86_64/boot.vdex",
362 },
363 {
364 from: "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot-core2.vdex",
365 to: "/apex/art_boot_images/javalib/x86_64/boot-core2.vdex",
366 },
367 },
368 unstrippedInstalls: []normalizedInstall{
369 {
370 from: "out/soong/test_device/dex_artjars_unstripped/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.oat",
371 to: "/apex/art_boot_images/javalib/x86_64/boot.oat",
372 },
373 {
374 from: "out/soong/test_device/dex_artjars_unstripped/linux_glibc/apex/art_boot_images/javalib/x86_64/boot-core2.oat",
375 to: "/apex/art_boot_images/javalib/x86_64/boot-core2.oat",
376 },
377 },
378 licenseMetadataFile: expectedLicenseMetadataFile,
379 },
380 {
381 archType: android.X86,
382 dexLocations: []string{"host/linux-x86/apex/com.android.art/javalib/core1.jar", "host/linux-x86/apex/com.android.art/javalib/core2.jar"},
383 dexLocationsDeps: []string{"host/linux-x86/apex/com.android.art/javalib/core1.jar", "host/linux-x86/apex/com.android.art/javalib/core2.jar"},
384 imagePathOnHost: "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.art",
385 imagePathOnDevice: "/system/framework/x86/boot.art",
386 imagesDeps: []string{
387 "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.art",
388 "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.oat",
389 "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.vdex",
390 "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot-core2.art",
391 "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot-core2.oat",
392 "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot-core2.vdex",
393 },
394 installs: []normalizedInstall{
395 {
396 from: "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.art",
397 to: "/apex/art_boot_images/javalib/x86/boot.art",
398 }, {
399 from: "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.oat",
400 to: "/apex/art_boot_images/javalib/x86/boot.oat",
401 },
402 {
403 from: "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot-core2.art",
404 to: "/apex/art_boot_images/javalib/x86/boot-core2.art",
405 }, {
406 from: "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot-core2.oat",
407 to: "/apex/art_boot_images/javalib/x86/boot-core2.oat",
408 },
409 },
410 vdexInstalls: []normalizedInstall{
411 {
412 from: "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.vdex",
413 to: "/apex/art_boot_images/javalib/x86/boot.vdex",
414 },
415 {
416 from: "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot-core2.vdex",
417 to: "/apex/art_boot_images/javalib/x86/boot-core2.vdex",
418 },
419 },
420 unstrippedInstalls: []normalizedInstall{
421 {
422 from: "out/soong/test_device/dex_artjars_unstripped/linux_glibc/apex/art_boot_images/javalib/x86/boot.oat",
423 to: "/apex/art_boot_images/javalib/x86/boot.oat",
424 },
425 {
426 from: "out/soong/test_device/dex_artjars_unstripped/linux_glibc/apex/art_boot_images/javalib/x86/boot-core2.oat",
427 to: "/apex/art_boot_images/javalib/x86/boot-core2.oat",
428 },
429 },
430 licenseMetadataFile: expectedLicenseMetadataFile,
431 },
432 },
433 }
434
435 checkBootImageConfig(t, imageConfig, mutated, expected)
436}
437
438// getFrameworkImageConfig gets the framework bootImageConfig that was created during the test.
439func getFrameworkImageConfig(result *android.TestResult) *bootImageConfig {
440 pathCtx := &android.TestPathContext{TestResult: result}
441 imageConfig := defaultBootImageConfig(pathCtx)
442 return imageConfig
443}
444
445// CheckFrameworkBootImageConfig checks the status of the fields of the bootImageConfig and
446// bootImageVariant structures that are returned from defaultBootImageConfig.
447//
448// This is before any fields are mutated.
449func CheckFrameworkBootImageConfig(t *testing.T, result *android.TestResult) {
450 checkFrameworkBootImageConfig(t, result, false, "")
451}
452
453// checkFrameworkBootImageConfig checks the framework boot image.
454//
455// mutated is true if this is called after fields in the image have been mutated by the
456// platform_bootclasspath and false otherwise.
457func checkFrameworkBootImageConfig(t *testing.T, result *android.TestResult, mutated bool, expectedLicenseMetadataFile string) {
458 imageConfig := getFrameworkImageConfig(result)
459
460 expected := &expectedConfig{
461 name: "boot",
462 stem: "boot",
463 dir: "out/soong/test_device/dex_bootjars",
464 symbolsDir: "out/soong/test_device/dex_bootjars_unstripped",
465 installDirOnDevice: "system/framework",
466 installDirOnHost: "system/framework",
467 profileInstallPathInApex: "",
468 modules: android.CreateTestConfiguredJarList([]string{"platform:framework"}),
469 dexPaths: []string{"out/soong/test_device/dex_bootjars_input/framework.jar"},
470 dexPathsDeps: []string{"out/soong/test_device/dex_artjars_input/core1.jar", "out/soong/test_device/dex_artjars_input/core2.jar", "out/soong/test_device/dex_bootjars_input/framework.jar"},
471 zip: "out/soong/test_device/dex_bootjars/boot.zip",
472 variants: []*expectedVariant{
473 {
474 archType: android.Arm64,
475 dexLocations: []string{"/system/framework/framework.jar"},
476 dexLocationsDeps: []string{
477 "/apex/com.android.art/javalib/core1.jar",
478 "/apex/com.android.art/javalib/core2.jar",
479 "/system/framework/framework.jar",
480 },
481 imagePathOnHost: "out/soong/test_device/dex_bootjars/android/system/framework/arm64/boot-framework.art",
482 imagePathOnDevice: "/system/framework/arm64/boot-framework.art",
483 imagesDeps: []string{
484 "out/soong/test_device/dex_bootjars/android/system/framework/arm64/boot-framework.art",
485 "out/soong/test_device/dex_bootjars/android/system/framework/arm64/boot-framework.oat",
486 "out/soong/test_device/dex_bootjars/android/system/framework/arm64/boot-framework.vdex",
487 },
Jiakai Zhang8fe3a412023-02-23 17:37:16 +0000488 baseImages: []string{"out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.art"},
489 baseImagesDeps: []string{
Paul Duffin8eb45732022-10-04 19:03:31 +0100490 "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.art",
491 "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.oat",
492 "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.vdex",
493 "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot-core2.art",
494 "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot-core2.oat",
495 "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot-core2.vdex",
496 },
497 installs: []normalizedInstall{
498 {
499 from: "out/soong/test_device/dex_bootjars/android/system/framework/arm64/boot-framework.art",
500 to: "/system/framework/arm64/boot-framework.art",
501 },
502 {
503 from: "out/soong/test_device/dex_bootjars/android/system/framework/arm64/boot-framework.oat",
504 to: "/system/framework/arm64/boot-framework.oat",
505 },
506 },
507 vdexInstalls: []normalizedInstall{
508 {
509 from: "out/soong/test_device/dex_bootjars/android/system/framework/arm64/boot-framework.vdex",
510 to: "/system/framework/arm64/boot-framework.vdex",
511 },
512 },
513 unstrippedInstalls: []normalizedInstall{
514 {
515 from: "out/soong/test_device/dex_bootjars_unstripped/android/system/framework/arm64/boot-framework.oat",
516 to: "/system/framework/arm64/boot-framework.oat",
517 },
518 },
519 licenseMetadataFile: expectedLicenseMetadataFile,
520 },
521 {
522 archType: android.Arm,
523 dexLocations: []string{"/system/framework/framework.jar"},
524 dexLocationsDeps: []string{
525 "/apex/com.android.art/javalib/core1.jar",
526 "/apex/com.android.art/javalib/core2.jar",
527 "/system/framework/framework.jar",
528 },
529 imagePathOnHost: "out/soong/test_device/dex_bootjars/android/system/framework/arm/boot-framework.art",
530 imagePathOnDevice: "/system/framework/arm/boot-framework.art",
531 imagesDeps: []string{
532 "out/soong/test_device/dex_bootjars/android/system/framework/arm/boot-framework.art",
533 "out/soong/test_device/dex_bootjars/android/system/framework/arm/boot-framework.oat",
534 "out/soong/test_device/dex_bootjars/android/system/framework/arm/boot-framework.vdex",
535 },
Jiakai Zhang8fe3a412023-02-23 17:37:16 +0000536 baseImages: []string{"out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.art"},
537 baseImagesDeps: []string{
Paul Duffin8eb45732022-10-04 19:03:31 +0100538 "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.art",
539 "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.oat",
540 "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.vdex",
541 "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot-core2.art",
542 "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot-core2.oat",
543 "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot-core2.vdex",
544 },
545 installs: []normalizedInstall{
546 {
547 from: "out/soong/test_device/dex_bootjars/android/system/framework/arm/boot-framework.art",
548 to: "/system/framework/arm/boot-framework.art",
549 },
550 {
551 from: "out/soong/test_device/dex_bootjars/android/system/framework/arm/boot-framework.oat",
552 to: "/system/framework/arm/boot-framework.oat",
553 },
554 },
555 vdexInstalls: []normalizedInstall{
556 {
557 from: "out/soong/test_device/dex_bootjars/android/system/framework/arm/boot-framework.vdex",
558 to: "/system/framework/arm/boot-framework.vdex",
559 },
560 },
561 unstrippedInstalls: []normalizedInstall{
562 {
563 from: "out/soong/test_device/dex_bootjars_unstripped/android/system/framework/arm/boot-framework.oat",
564 to: "/system/framework/arm/boot-framework.oat",
565 },
566 },
567 licenseMetadataFile: expectedLicenseMetadataFile,
568 },
569 {
570 archType: android.X86_64,
571 dexLocations: []string{"host/linux-x86/system/framework/framework.jar"},
572 dexLocationsDeps: []string{
573 "host/linux-x86/apex/com.android.art/javalib/core1.jar",
574 "host/linux-x86/apex/com.android.art/javalib/core2.jar",
575 "host/linux-x86/system/framework/framework.jar",
576 },
577 imagePathOnHost: "out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86_64/boot-framework.art",
578 imagePathOnDevice: "/system/framework/x86_64/boot-framework.art",
579 imagesDeps: []string{
580 "out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86_64/boot-framework.art",
581 "out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86_64/boot-framework.oat",
582 "out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86_64/boot-framework.vdex",
583 },
Jiakai Zhang8fe3a412023-02-23 17:37:16 +0000584 baseImages: []string{"out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.art"},
585 baseImagesDeps: []string{
Paul Duffin8eb45732022-10-04 19:03:31 +0100586 "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.art",
587 "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.oat",
588 "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.vdex",
589 "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot-core2.art",
590 "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot-core2.oat",
591 "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot-core2.vdex",
592 },
593 installs: []normalizedInstall{
594 {
595 from: "out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86_64/boot-framework.art",
596 to: "/system/framework/x86_64/boot-framework.art",
597 },
598 {
599 from: "out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86_64/boot-framework.oat",
600 to: "/system/framework/x86_64/boot-framework.oat",
601 },
602 },
603 vdexInstalls: []normalizedInstall{
604 {
605 from: "out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86_64/boot-framework.vdex",
606 to: "/system/framework/x86_64/boot-framework.vdex",
607 },
608 },
609 unstrippedInstalls: []normalizedInstall{
610 {
611 from: "out/soong/test_device/dex_bootjars_unstripped/linux_glibc/system/framework/x86_64/boot-framework.oat",
612 to: "/system/framework/x86_64/boot-framework.oat",
613 },
614 },
615 licenseMetadataFile: expectedLicenseMetadataFile,
616 },
617 {
618 archType: android.X86,
619 dexLocations: []string{"host/linux-x86/system/framework/framework.jar"},
620 dexLocationsDeps: []string{
621 "host/linux-x86/apex/com.android.art/javalib/core1.jar",
622 "host/linux-x86/apex/com.android.art/javalib/core2.jar",
623 "host/linux-x86/system/framework/framework.jar",
624 },
625 imagePathOnHost: "out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86/boot-framework.art",
626 imagePathOnDevice: "/system/framework/x86/boot-framework.art",
627 imagesDeps: []string{
628 "out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86/boot-framework.art",
629 "out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86/boot-framework.oat",
630 "out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86/boot-framework.vdex",
631 },
Jiakai Zhang8fe3a412023-02-23 17:37:16 +0000632 baseImages: []string{"out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.art"},
633 baseImagesDeps: []string{
Paul Duffin8eb45732022-10-04 19:03:31 +0100634 "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.art",
635 "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.oat",
636 "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.vdex",
637 "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot-core2.art",
638 "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot-core2.oat",
639 "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot-core2.vdex",
640 },
641 installs: []normalizedInstall{
642 {
643 from: "out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86/boot-framework.art",
644 to: "/system/framework/x86/boot-framework.art",
645 },
646 {
647 from: "out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86/boot-framework.oat",
648 to: "/system/framework/x86/boot-framework.oat",
649 },
650 },
651 vdexInstalls: []normalizedInstall{
652 {
653 from: "out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86/boot-framework.vdex",
654 to: "/system/framework/x86/boot-framework.vdex",
655 },
656 },
657 unstrippedInstalls: []normalizedInstall{
658 {
659 from: "out/soong/test_device/dex_bootjars_unstripped/linux_glibc/system/framework/x86/boot-framework.oat",
660 to: "/system/framework/x86/boot-framework.oat",
661 },
662 },
663 licenseMetadataFile: expectedLicenseMetadataFile,
664 },
665 },
666 profileInstalls: []normalizedInstall{
667 {from: "out/soong/test_device/dex_bootjars/boot.bprof", to: "/system/etc/boot-image.bprof"},
668 {from: "out/soong/test_device/dex_bootjars/boot.prof", to: "/system/etc/boot-image.prof"},
669 },
670 profileLicenseMetadataFile: expectedLicenseMetadataFile,
671 }
672
673 checkBootImageConfig(t, imageConfig, mutated, expected)
674}
675
Jiakai Zhangb8796202023-03-06 19:16:48 +0000676// getMainlineImageConfig gets the framework bootImageConfig that was created during the test.
677func getMainlineImageConfig(result *android.TestResult) *bootImageConfig {
678 pathCtx := &android.TestPathContext{TestResult: result}
679 imageConfig := mainlineBootImageConfig(pathCtx)
680 return imageConfig
681}
682
683// CheckMainlineBootImageConfig checks the status of the fields of the bootImageConfig and
684// bootImageVariant structures that are returned from mainlineBootImageConfig.
685//
686// This is before any fields are mutated.
687func CheckMainlineBootImageConfig(t *testing.T, result *android.TestResult) {
688 expectedLicenseMetadataFile := ""
689 imageConfig := getMainlineImageConfig(result)
690
691 expected := &expectedConfig{
692 name: "mainline",
693 stem: "boot",
694 dir: "out/soong/test_device/dex_mainlinejars",
695 symbolsDir: "out/soong/test_device/dex_mainlinejars_unstripped",
696 installDirOnDevice: "system/framework",
697 installDirOnHost: "system/framework",
698 profileInstallPathInApex: "",
699 modules: android.CreateTestConfiguredJarList([]string{
700 "com.android.foo:framework-foo",
701 "com.android.bar:framework-bar",
702 }),
703 dexPaths: []string{
704 "out/soong/test_device/dex_mainlinejars_input/framework-foo.jar",
705 "out/soong/test_device/dex_mainlinejars_input/framework-bar.jar",
706 },
707 dexPathsDeps: []string{
708 "out/soong/test_device/dex_artjars_input/core1.jar",
709 "out/soong/test_device/dex_artjars_input/core2.jar",
710 "out/soong/test_device/dex_bootjars_input/framework.jar",
711 "out/soong/test_device/dex_mainlinejars_input/framework-foo.jar",
712 "out/soong/test_device/dex_mainlinejars_input/framework-bar.jar",
713 },
714 zip: "out/soong/test_device/dex_mainlinejars/mainline.zip",
715 variants: []*expectedVariant{
716 {
717 archType: android.Arm64,
718 dexLocations: []string{
719 "/apex/com.android.foo/javalib/framework-foo.jar",
720 "/apex/com.android.bar/javalib/framework-bar.jar",
721 },
722 dexLocationsDeps: []string{
723 "/apex/com.android.art/javalib/core1.jar",
724 "/apex/com.android.art/javalib/core2.jar",
725 "/system/framework/framework.jar",
726 "/apex/com.android.foo/javalib/framework-foo.jar",
727 "/apex/com.android.bar/javalib/framework-bar.jar",
728 },
729 imagePathOnHost: "out/soong/test_device/dex_mainlinejars/android/system/framework/arm64/boot-framework-foo.art",
730 imagePathOnDevice: "/system/framework/arm64/boot-framework-foo.art",
731 imagesDeps: []string{
732 "out/soong/test_device/dex_mainlinejars/android/system/framework/arm64/boot-framework-foo.art",
733 "out/soong/test_device/dex_mainlinejars/android/system/framework/arm64/boot-framework-foo.oat",
734 "out/soong/test_device/dex_mainlinejars/android/system/framework/arm64/boot-framework-foo.vdex",
735 },
736 baseImages: []string{
737 "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.art",
738 "out/soong/test_device/dex_bootjars/android/system/framework/arm64/boot-framework.art",
739 },
740 baseImagesDeps: []string{
741 "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.art",
742 "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.oat",
743 "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.vdex",
744 "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot-core2.art",
745 "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot-core2.oat",
746 "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot-core2.vdex",
747 "out/soong/test_device/dex_bootjars/android/system/framework/arm64/boot-framework.art",
748 "out/soong/test_device/dex_bootjars/android/system/framework/arm64/boot-framework.oat",
749 "out/soong/test_device/dex_bootjars/android/system/framework/arm64/boot-framework.vdex",
750 },
751 installs: []normalizedInstall{
752 {
753 from: "out/soong/test_device/dex_mainlinejars/android/system/framework/arm64/boot-framework-foo.art",
754 to: "/system/framework/arm64/boot-framework-foo.art",
755 },
756 {
757 from: "out/soong/test_device/dex_mainlinejars/android/system/framework/arm64/boot-framework-foo.oat",
758 to: "/system/framework/arm64/boot-framework-foo.oat",
759 },
760 },
761 vdexInstalls: []normalizedInstall{
762 {
763 from: "out/soong/test_device/dex_mainlinejars/android/system/framework/arm64/boot-framework-foo.vdex",
764 to: "/system/framework/arm64/boot-framework-foo.vdex",
765 },
766 },
767 unstrippedInstalls: []normalizedInstall{
768 {
769 from: "out/soong/test_device/dex_mainlinejars_unstripped/android/system/framework/arm64/boot-framework-foo.oat",
770 to: "/system/framework/arm64/boot-framework-foo.oat",
771 },
772 },
773 licenseMetadataFile: expectedLicenseMetadataFile,
774 },
775 {
776 archType: android.Arm,
777 dexLocations: []string{
778 "/apex/com.android.foo/javalib/framework-foo.jar",
779 "/apex/com.android.bar/javalib/framework-bar.jar",
780 },
781 dexLocationsDeps: []string{
782 "/apex/com.android.art/javalib/core1.jar",
783 "/apex/com.android.art/javalib/core2.jar",
784 "/system/framework/framework.jar",
785 "/apex/com.android.foo/javalib/framework-foo.jar",
786 "/apex/com.android.bar/javalib/framework-bar.jar",
787 },
788 imagePathOnHost: "out/soong/test_device/dex_mainlinejars/android/system/framework/arm/boot-framework-foo.art",
789 imagePathOnDevice: "/system/framework/arm/boot-framework-foo.art",
790 imagesDeps: []string{
791 "out/soong/test_device/dex_mainlinejars/android/system/framework/arm/boot-framework-foo.art",
792 "out/soong/test_device/dex_mainlinejars/android/system/framework/arm/boot-framework-foo.oat",
793 "out/soong/test_device/dex_mainlinejars/android/system/framework/arm/boot-framework-foo.vdex",
794 },
795 baseImages: []string{
796 "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.art",
797 "out/soong/test_device/dex_bootjars/android/system/framework/arm/boot-framework.art",
798 },
799 baseImagesDeps: []string{
800 "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.art",
801 "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.oat",
802 "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.vdex",
803 "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot-core2.art",
804 "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot-core2.oat",
805 "out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot-core2.vdex",
806 "out/soong/test_device/dex_bootjars/android/system/framework/arm/boot-framework.art",
807 "out/soong/test_device/dex_bootjars/android/system/framework/arm/boot-framework.oat",
808 "out/soong/test_device/dex_bootjars/android/system/framework/arm/boot-framework.vdex",
809 },
810 installs: []normalizedInstall{
811 {
812 from: "out/soong/test_device/dex_mainlinejars/android/system/framework/arm/boot-framework-foo.art",
813 to: "/system/framework/arm/boot-framework-foo.art",
814 },
815 {
816 from: "out/soong/test_device/dex_mainlinejars/android/system/framework/arm/boot-framework-foo.oat",
817 to: "/system/framework/arm/boot-framework-foo.oat",
818 },
819 },
820 vdexInstalls: []normalizedInstall{
821 {
822 from: "out/soong/test_device/dex_mainlinejars/android/system/framework/arm/boot-framework-foo.vdex",
823 to: "/system/framework/arm/boot-framework-foo.vdex",
824 },
825 },
826 unstrippedInstalls: []normalizedInstall{
827 {
828 from: "out/soong/test_device/dex_mainlinejars_unstripped/android/system/framework/arm/boot-framework-foo.oat",
829 to: "/system/framework/arm/boot-framework-foo.oat",
830 },
831 },
832 licenseMetadataFile: expectedLicenseMetadataFile,
833 },
834 {
835 archType: android.X86_64,
836 dexLocations: []string{
837 "host/linux-x86/apex/com.android.foo/javalib/framework-foo.jar",
838 "host/linux-x86/apex/com.android.bar/javalib/framework-bar.jar",
839 },
840 dexLocationsDeps: []string{
841 "host/linux-x86/apex/com.android.art/javalib/core1.jar",
842 "host/linux-x86/apex/com.android.art/javalib/core2.jar",
843 "host/linux-x86/system/framework/framework.jar",
844 "host/linux-x86/apex/com.android.foo/javalib/framework-foo.jar",
845 "host/linux-x86/apex/com.android.bar/javalib/framework-bar.jar",
846 },
847 imagePathOnHost: "out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86_64/boot-framework-foo.art",
848 imagePathOnDevice: "/system/framework/x86_64/boot-framework-foo.art",
849 imagesDeps: []string{
850 "out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86_64/boot-framework-foo.art",
851 "out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86_64/boot-framework-foo.oat",
852 "out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86_64/boot-framework-foo.vdex",
853 },
854 baseImages: []string{
855 "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.art",
856 "out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86_64/boot-framework.art",
857 },
858 baseImagesDeps: []string{
859 "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.art",
860 "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.oat",
861 "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.vdex",
862 "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot-core2.art",
863 "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot-core2.oat",
864 "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot-core2.vdex",
865 "out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86_64/boot-framework.art",
866 "out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86_64/boot-framework.oat",
867 "out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86_64/boot-framework.vdex",
868 },
869 installs: []normalizedInstall{
870 {
871 from: "out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86_64/boot-framework-foo.art",
872 to: "/system/framework/x86_64/boot-framework-foo.art",
873 },
874 {
875 from: "out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86_64/boot-framework-foo.oat",
876 to: "/system/framework/x86_64/boot-framework-foo.oat",
877 },
878 },
879 vdexInstalls: []normalizedInstall{
880 {
881 from: "out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86_64/boot-framework-foo.vdex",
882 to: "/system/framework/x86_64/boot-framework-foo.vdex",
883 },
884 },
885 unstrippedInstalls: []normalizedInstall{
886 {
887 from: "out/soong/test_device/dex_mainlinejars_unstripped/linux_glibc/system/framework/x86_64/boot-framework-foo.oat",
888 to: "/system/framework/x86_64/boot-framework-foo.oat",
889 },
890 },
891 licenseMetadataFile: expectedLicenseMetadataFile,
892 },
893 {
894 archType: android.X86,
895 dexLocations: []string{
896 "host/linux-x86/apex/com.android.foo/javalib/framework-foo.jar",
897 "host/linux-x86/apex/com.android.bar/javalib/framework-bar.jar",
898 },
899 dexLocationsDeps: []string{
900 "host/linux-x86/apex/com.android.art/javalib/core1.jar",
901 "host/linux-x86/apex/com.android.art/javalib/core2.jar",
902 "host/linux-x86/system/framework/framework.jar",
903 "host/linux-x86/apex/com.android.foo/javalib/framework-foo.jar",
904 "host/linux-x86/apex/com.android.bar/javalib/framework-bar.jar",
905 },
906 imagePathOnHost: "out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86/boot-framework-foo.art",
907 imagePathOnDevice: "/system/framework/x86/boot-framework-foo.art",
908 imagesDeps: []string{
909 "out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86/boot-framework-foo.art",
910 "out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86/boot-framework-foo.oat",
911 "out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86/boot-framework-foo.vdex",
912 },
913 baseImages: []string{
914 "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.art",
915 "out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86/boot-framework.art",
916 },
917 baseImagesDeps: []string{
918 "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.art",
919 "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.oat",
920 "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.vdex",
921 "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot-core2.art",
922 "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot-core2.oat",
923 "out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot-core2.vdex",
924 "out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86/boot-framework.art",
925 "out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86/boot-framework.oat",
926 "out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86/boot-framework.vdex",
927 },
928 installs: []normalizedInstall{
929 {
930 from: "out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86/boot-framework-foo.art",
931 to: "/system/framework/x86/boot-framework-foo.art",
932 },
933 {
934 from: "out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86/boot-framework-foo.oat",
935 to: "/system/framework/x86/boot-framework-foo.oat",
936 },
937 },
938 vdexInstalls: []normalizedInstall{
939 {
940 from: "out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86/boot-framework-foo.vdex",
941 to: "/system/framework/x86/boot-framework-foo.vdex",
942 },
943 },
944 unstrippedInstalls: []normalizedInstall{
945 {
946 from: "out/soong/test_device/dex_mainlinejars_unstripped/linux_glibc/system/framework/x86/boot-framework-foo.oat",
947 to: "/system/framework/x86/boot-framework-foo.oat",
948 },
949 },
950 licenseMetadataFile: expectedLicenseMetadataFile,
951 },
952 },
953 profileInstalls: []normalizedInstall{},
954 profileLicenseMetadataFile: expectedLicenseMetadataFile,
955 }
956
957 checkBootImageConfig(t, imageConfig, false, expected)
958}
959
Paul Duffin8eb45732022-10-04 19:03:31 +0100960// clearMutatedFields clears fields in the expectedConfig that correspond to fields in the
961// bootImageConfig/bootImageVariant structs which are mutated outside the call to
962// genBootImageConfigs.
963//
964// This allows the resulting expectedConfig struct to be compared against the values of those boot
965// image structs immediately the call to genBootImageConfigs. If this is not called then the
966// expectedConfig struct will expect the boot image structs to have been mutated by the ART
967// bootclasspath_fragment and the platform_bootclasspath.
968func clearMutatedFields(expected *expectedConfig) {
969 expected.profileInstalls = nil
970 expected.profileLicenseMetadataFile = ""
971 for _, variant := range expected.variants {
972 variant.installs = nil
973 variant.vdexInstalls = nil
974 variant.unstrippedInstalls = nil
975 variant.licenseMetadataFile = ""
976 }
977}
978
979// checkBootImageConfig checks a boot image against the expected contents.
980//
981// If mutated is false then this will clear any mutated fields in the expected contents back to the
982// zero value so that they will match the unmodified values in the boot image.
983//
984// It runs the checks in an image specific subtest of the current test.
985func checkBootImageConfig(t *testing.T, imageConfig *bootImageConfig, mutated bool, expected *expectedConfig) {
986 if !mutated {
987 clearMutatedFields(expected)
988 }
989
990 t.Run(imageConfig.name, func(t *testing.T) {
991 nestedCheckBootImageConfig(t, imageConfig, expected)
992 })
993}
994
995// nestedCheckBootImageConfig does the work of comparing the image against the expected values and
996// is run in an image specific subtest.
997func nestedCheckBootImageConfig(t *testing.T, imageConfig *bootImageConfig, expected *expectedConfig) {
998 android.AssertStringEquals(t, "name", expected.name, imageConfig.name)
999 android.AssertStringEquals(t, "stem", expected.stem, imageConfig.stem)
1000 android.AssertPathRelativeToTopEquals(t, "dir", expected.dir, imageConfig.dir)
1001 android.AssertPathRelativeToTopEquals(t, "symbolsDir", expected.symbolsDir, imageConfig.symbolsDir)
1002 android.AssertStringEquals(t, "installDirOnDevice", expected.installDirOnDevice, imageConfig.installDirOnDevice)
1003 android.AssertStringEquals(t, "installDirOnHost", expected.installDirOnHost, imageConfig.installDirOnHost)
1004 android.AssertStringEquals(t, "profileInstallPathInApex", expected.profileInstallPathInApex, imageConfig.profileInstallPathInApex)
1005 android.AssertDeepEquals(t, "modules", expected.modules, imageConfig.modules)
1006 android.AssertPathsRelativeToTopEquals(t, "dexPaths", expected.dexPaths, imageConfig.dexPaths.Paths())
1007 android.AssertPathsRelativeToTopEquals(t, "dexPathsDeps", expected.dexPathsDeps, imageConfig.dexPathsDeps.Paths())
1008 // dexPathsByModule is just a different representation of the other information in the config.
1009 android.AssertPathRelativeToTopEquals(t, "zip", expected.zip, imageConfig.zip)
1010 assertInstallsEqual(t, "profileInstalls", expected.profileInstalls, imageConfig.profileInstalls)
1011 android.AssertStringEquals(t, "profileLicenseMetadataFile", expected.profileLicenseMetadataFile, imageConfig.profileLicenseMetadataFile.RelativeToTop().String())
1012
1013 android.AssertIntEquals(t, "variant count", 4, len(imageConfig.variants))
1014 for i, variant := range imageConfig.variants {
1015 expectedVariant := expected.variants[i]
1016 t.Run(variant.target.Arch.ArchType.String(), func(t *testing.T) {
1017 android.AssertDeepEquals(t, "archType", expectedVariant.archType, variant.target.Arch.ArchType)
1018 android.AssertDeepEquals(t, "dexLocations", expectedVariant.dexLocations, variant.dexLocations)
1019 android.AssertDeepEquals(t, "dexLocationsDeps", expectedVariant.dexLocationsDeps, variant.dexLocationsDeps)
1020 android.AssertPathRelativeToTopEquals(t, "imagePathOnHost", expectedVariant.imagePathOnHost, variant.imagePathOnHost)
1021 android.AssertStringEquals(t, "imagePathOnDevice", expectedVariant.imagePathOnDevice, variant.imagePathOnDevice)
1022 android.AssertPathsRelativeToTopEquals(t, "imagesDeps", expectedVariant.imagesDeps, variant.imagesDeps.Paths())
Jiakai Zhang8fe3a412023-02-23 17:37:16 +00001023 android.AssertPathsRelativeToTopEquals(t, "baseImages", expectedVariant.baseImages, variant.baseImages.Paths())
1024 android.AssertPathsRelativeToTopEquals(t, "baseImagesDeps", expectedVariant.baseImagesDeps, variant.baseImagesDeps)
Paul Duffin8eb45732022-10-04 19:03:31 +01001025 assertInstallsEqual(t, "installs", expectedVariant.installs, variant.installs)
1026 assertInstallsEqual(t, "vdexInstalls", expectedVariant.vdexInstalls, variant.vdexInstalls)
1027 assertInstallsEqual(t, "unstrippedInstalls", expectedVariant.unstrippedInstalls, variant.unstrippedInstalls)
1028 android.AssertStringEquals(t, "licenseMetadataFile", expectedVariant.licenseMetadataFile, variant.licenseMetadataFile.RelativeToTop().String())
1029 })
1030 }
1031}
1032
1033// CheckMutatedArtBootImageConfig checks the mutated fields in the bootImageConfig/Variant for ART.
1034func CheckMutatedArtBootImageConfig(t *testing.T, result *android.TestResult, expectedLicenseMetadataFile string) {
1035 checkArtBootImageConfig(t, result, true, expectedLicenseMetadataFile)
1036
1037 // Check the dexpreopt make vars. Do it in here as it depends on the expected license metadata
1038 // file at the moment and it
1039 checkDexpreoptMakeVars(t, result, expectedLicenseMetadataFile)
1040}
1041
1042// CheckMutatedFrameworkBootImageConfig checks the mutated fields in the bootImageConfig/Variant for framework.
1043func CheckMutatedFrameworkBootImageConfig(t *testing.T, result *android.TestResult, expectedLicenseMetadataFile string) {
1044 checkFrameworkBootImageConfig(t, result, true, expectedLicenseMetadataFile)
1045}
1046
1047// checkDexpreoptMakeVars checks the DEXPREOPT_ prefixed make vars produced by dexpreoptBootJars
1048// singleton.
1049func checkDexpreoptMakeVars(t *testing.T, result *android.TestResult, expectedLicenseMetadataFile string) {
1050 vars := result.MakeVarsForTesting(func(variable android.MakeVarVariable) bool {
1051 return strings.HasPrefix(variable.Name(), "DEXPREOPT_")
1052 })
1053
1054 out := &strings.Builder{}
1055 for _, v := range vars {
1056 fmt.Fprintf(out, "%s=%s\n", v.Name(), android.StringRelativeToTop(result.Config, v.Value()))
1057 }
1058 format := `
1059DEXPREOPT_BOOTCLASSPATH_DEX_FILES=out/soong/test_device/dex_artjars_input/core1.jar out/soong/test_device/dex_artjars_input/core2.jar out/soong/test_device/dex_bootjars_input/framework.jar
1060DEXPREOPT_BOOTCLASSPATH_DEX_LOCATIONS=/apex/com.android.art/javalib/core1.jar /apex/com.android.art/javalib/core2.jar /system/framework/framework.jar
1061DEXPREOPT_BOOT_JARS_MODULES=platform:framework
1062DEXPREOPT_GEN=out/host/linux-x86/bin/dexpreopt_gen
1063DEXPREOPT_IMAGE_BUILT_INSTALLED_art_arm=out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.art:/apex/art_boot_images/javalib/arm/boot.art out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.oat:/apex/art_boot_images/javalib/arm/boot.oat out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot-core2.art:/apex/art_boot_images/javalib/arm/boot-core2.art out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot-core2.oat:/apex/art_boot_images/javalib/arm/boot-core2.oat
1064DEXPREOPT_IMAGE_BUILT_INSTALLED_art_arm64=out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.art:/apex/art_boot_images/javalib/arm64/boot.art out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.oat:/apex/art_boot_images/javalib/arm64/boot.oat out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot-core2.art:/apex/art_boot_images/javalib/arm64/boot-core2.art out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot-core2.oat:/apex/art_boot_images/javalib/arm64/boot-core2.oat
1065DEXPREOPT_IMAGE_BUILT_INSTALLED_art_host_x86=out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.art:/apex/art_boot_images/javalib/x86/boot.art out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.oat:/apex/art_boot_images/javalib/x86/boot.oat out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot-core2.art:/apex/art_boot_images/javalib/x86/boot-core2.art out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot-core2.oat:/apex/art_boot_images/javalib/x86/boot-core2.oat
1066DEXPREOPT_IMAGE_BUILT_INSTALLED_art_host_x86_64=out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.art:/apex/art_boot_images/javalib/x86_64/boot.art out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.oat:/apex/art_boot_images/javalib/x86_64/boot.oat out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot-core2.art:/apex/art_boot_images/javalib/x86_64/boot-core2.art out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot-core2.oat:/apex/art_boot_images/javalib/x86_64/boot-core2.oat
1067DEXPREOPT_IMAGE_BUILT_INSTALLED_boot_arm=out/soong/test_device/dex_bootjars/android/system/framework/arm/boot-framework.art:/system/framework/arm/boot-framework.art out/soong/test_device/dex_bootjars/android/system/framework/arm/boot-framework.oat:/system/framework/arm/boot-framework.oat
1068DEXPREOPT_IMAGE_BUILT_INSTALLED_boot_arm64=out/soong/test_device/dex_bootjars/android/system/framework/arm64/boot-framework.art:/system/framework/arm64/boot-framework.art out/soong/test_device/dex_bootjars/android/system/framework/arm64/boot-framework.oat:/system/framework/arm64/boot-framework.oat
1069DEXPREOPT_IMAGE_BUILT_INSTALLED_boot_host_x86=out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86/boot-framework.art:/system/framework/x86/boot-framework.art out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86/boot-framework.oat:/system/framework/x86/boot-framework.oat
1070DEXPREOPT_IMAGE_BUILT_INSTALLED_boot_host_x86_64=out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86_64/boot-framework.art:/system/framework/x86_64/boot-framework.art out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86_64/boot-framework.oat:/system/framework/x86_64/boot-framework.oat
Jiakai Zhangb8796202023-03-06 19:16:48 +00001071DEXPREOPT_IMAGE_BUILT_INSTALLED_mainline_arm=out/soong/test_device/dex_mainlinejars/android/system/framework/arm/boot-framework-foo.art:/system/framework/arm/boot-framework-foo.art out/soong/test_device/dex_mainlinejars/android/system/framework/arm/boot-framework-foo.oat:/system/framework/arm/boot-framework-foo.oat
1072DEXPREOPT_IMAGE_BUILT_INSTALLED_mainline_arm64=out/soong/test_device/dex_mainlinejars/android/system/framework/arm64/boot-framework-foo.art:/system/framework/arm64/boot-framework-foo.art out/soong/test_device/dex_mainlinejars/android/system/framework/arm64/boot-framework-foo.oat:/system/framework/arm64/boot-framework-foo.oat
1073DEXPREOPT_IMAGE_BUILT_INSTALLED_mainline_host_x86=out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86/boot-framework-foo.art:/system/framework/x86/boot-framework-foo.art out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86/boot-framework-foo.oat:/system/framework/x86/boot-framework-foo.oat
1074DEXPREOPT_IMAGE_BUILT_INSTALLED_mainline_host_x86_64=out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86_64/boot-framework-foo.art:/system/framework/x86_64/boot-framework-foo.art out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86_64/boot-framework-foo.oat:/system/framework/x86_64/boot-framework-foo.oat
Paul Duffin8eb45732022-10-04 19:03:31 +01001075DEXPREOPT_IMAGE_DEPS_art_arm=out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.art out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.oat out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.vdex out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot-core2.art out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot-core2.oat out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot-core2.vdex
1076DEXPREOPT_IMAGE_DEPS_art_arm64=out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.art out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.oat out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.vdex out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot-core2.art out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot-core2.oat out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot-core2.vdex
1077DEXPREOPT_IMAGE_DEPS_art_host_x86=out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.art out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.oat out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.vdex out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot-core2.art out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot-core2.oat out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot-core2.vdex
1078DEXPREOPT_IMAGE_DEPS_art_host_x86_64=out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.art out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.oat out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.vdex out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot-core2.art out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot-core2.oat out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot-core2.vdex
1079DEXPREOPT_IMAGE_DEPS_boot_arm=out/soong/test_device/dex_bootjars/android/system/framework/arm/boot-framework.art out/soong/test_device/dex_bootjars/android/system/framework/arm/boot-framework.oat out/soong/test_device/dex_bootjars/android/system/framework/arm/boot-framework.vdex
1080DEXPREOPT_IMAGE_DEPS_boot_arm64=out/soong/test_device/dex_bootjars/android/system/framework/arm64/boot-framework.art out/soong/test_device/dex_bootjars/android/system/framework/arm64/boot-framework.oat out/soong/test_device/dex_bootjars/android/system/framework/arm64/boot-framework.vdex
1081DEXPREOPT_IMAGE_DEPS_boot_host_x86=out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86/boot-framework.art out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86/boot-framework.oat out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86/boot-framework.vdex
1082DEXPREOPT_IMAGE_DEPS_boot_host_x86_64=out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86_64/boot-framework.art out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86_64/boot-framework.oat out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86_64/boot-framework.vdex
Jiakai Zhangb8796202023-03-06 19:16:48 +00001083DEXPREOPT_IMAGE_DEPS_mainline_arm=out/soong/test_device/dex_mainlinejars/android/system/framework/arm/boot-framework-foo.art out/soong/test_device/dex_mainlinejars/android/system/framework/arm/boot-framework-foo.oat out/soong/test_device/dex_mainlinejars/android/system/framework/arm/boot-framework-foo.vdex
1084DEXPREOPT_IMAGE_DEPS_mainline_arm64=out/soong/test_device/dex_mainlinejars/android/system/framework/arm64/boot-framework-foo.art out/soong/test_device/dex_mainlinejars/android/system/framework/arm64/boot-framework-foo.oat out/soong/test_device/dex_mainlinejars/android/system/framework/arm64/boot-framework-foo.vdex
1085DEXPREOPT_IMAGE_DEPS_mainline_host_x86=out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86/boot-framework-foo.art out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86/boot-framework-foo.oat out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86/boot-framework-foo.vdex
1086DEXPREOPT_IMAGE_DEPS_mainline_host_x86_64=out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86_64/boot-framework-foo.art out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86_64/boot-framework-foo.oat out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86_64/boot-framework-foo.vdex
Paul Duffin8eb45732022-10-04 19:03:31 +01001087DEXPREOPT_IMAGE_LICENSE_METADATA_art_arm=%[1]s
1088DEXPREOPT_IMAGE_LICENSE_METADATA_art_arm64=%[1]s
1089DEXPREOPT_IMAGE_LICENSE_METADATA_art_host_x86=%[1]s
1090DEXPREOPT_IMAGE_LICENSE_METADATA_art_host_x86_64=%[1]s
1091DEXPREOPT_IMAGE_LICENSE_METADATA_boot_arm=out/soong/.intermediates/frameworks/base/boot/platform-bootclasspath/android_common/meta_lic
1092DEXPREOPT_IMAGE_LICENSE_METADATA_boot_arm64=out/soong/.intermediates/frameworks/base/boot/platform-bootclasspath/android_common/meta_lic
1093DEXPREOPT_IMAGE_LICENSE_METADATA_boot_host_x86=out/soong/.intermediates/frameworks/base/boot/platform-bootclasspath/android_common/meta_lic
1094DEXPREOPT_IMAGE_LICENSE_METADATA_boot_host_x86_64=out/soong/.intermediates/frameworks/base/boot/platform-bootclasspath/android_common/meta_lic
Jiakai Zhangb8796202023-03-06 19:16:48 +00001095DEXPREOPT_IMAGE_LICENSE_METADATA_mainline_arm=out/soong/.intermediates/frameworks/base/boot/platform-bootclasspath/android_common/meta_lic
1096DEXPREOPT_IMAGE_LICENSE_METADATA_mainline_arm64=out/soong/.intermediates/frameworks/base/boot/platform-bootclasspath/android_common/meta_lic
1097DEXPREOPT_IMAGE_LICENSE_METADATA_mainline_host_x86=out/soong/.intermediates/frameworks/base/boot/platform-bootclasspath/android_common/meta_lic
1098DEXPREOPT_IMAGE_LICENSE_METADATA_mainline_host_x86_64=out/soong/.intermediates/frameworks/base/boot/platform-bootclasspath/android_common/meta_lic
Paul Duffin8eb45732022-10-04 19:03:31 +01001099DEXPREOPT_IMAGE_LOCATIONS_ON_DEVICEart=/system/framework/boot.art
1100DEXPREOPT_IMAGE_LOCATIONS_ON_DEVICEboot=/system/framework/boot.art:/system/framework/boot-framework.art
Jiakai Zhangb8796202023-03-06 19:16:48 +00001101DEXPREOPT_IMAGE_LOCATIONS_ON_DEVICEmainline=/system/framework/boot.art:/system/framework/boot-framework.art:/system/framework/boot-framework-foo.art
Paul Duffin8eb45732022-10-04 19:03:31 +01001102DEXPREOPT_IMAGE_LOCATIONS_ON_HOSTart=out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/boot.art
1103DEXPREOPT_IMAGE_LOCATIONS_ON_HOSTboot=out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/boot.art:out/soong/test_device/dex_bootjars/android/system/framework/boot-framework.art
Jiakai Zhangb8796202023-03-06 19:16:48 +00001104DEXPREOPT_IMAGE_LOCATIONS_ON_HOSTmainline=out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/boot.art:out/soong/test_device/dex_bootjars/android/system/framework/boot-framework.art:out/soong/test_device/dex_mainlinejars/android/system/framework/boot-framework-foo.art
1105DEXPREOPT_IMAGE_NAMES=art boot mainline
Paul Duffin8eb45732022-10-04 19:03:31 +01001106DEXPREOPT_IMAGE_PROFILE_BUILT_INSTALLED=out/soong/test_device/dex_bootjars/boot.bprof:/system/etc/boot-image.bprof out/soong/test_device/dex_bootjars/boot.prof:/system/etc/boot-image.prof
1107DEXPREOPT_IMAGE_PROFILE_LICENSE_METADATA=out/soong/.intermediates/frameworks/base/boot/platform-bootclasspath/android_common/meta_lic
1108DEXPREOPT_IMAGE_UNSTRIPPED_BUILT_INSTALLED_art_arm=out/soong/test_device/dex_artjars_unstripped/android/apex/art_boot_images/javalib/arm/boot.oat:/apex/art_boot_images/javalib/arm/boot.oat out/soong/test_device/dex_artjars_unstripped/android/apex/art_boot_images/javalib/arm/boot-core2.oat:/apex/art_boot_images/javalib/arm/boot-core2.oat
1109DEXPREOPT_IMAGE_UNSTRIPPED_BUILT_INSTALLED_art_arm64=out/soong/test_device/dex_artjars_unstripped/android/apex/art_boot_images/javalib/arm64/boot.oat:/apex/art_boot_images/javalib/arm64/boot.oat out/soong/test_device/dex_artjars_unstripped/android/apex/art_boot_images/javalib/arm64/boot-core2.oat:/apex/art_boot_images/javalib/arm64/boot-core2.oat
1110DEXPREOPT_IMAGE_UNSTRIPPED_BUILT_INSTALLED_art_host_x86=out/soong/test_device/dex_artjars_unstripped/linux_glibc/apex/art_boot_images/javalib/x86/boot.oat:/apex/art_boot_images/javalib/x86/boot.oat out/soong/test_device/dex_artjars_unstripped/linux_glibc/apex/art_boot_images/javalib/x86/boot-core2.oat:/apex/art_boot_images/javalib/x86/boot-core2.oat
1111DEXPREOPT_IMAGE_UNSTRIPPED_BUILT_INSTALLED_art_host_x86_64=out/soong/test_device/dex_artjars_unstripped/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.oat:/apex/art_boot_images/javalib/x86_64/boot.oat out/soong/test_device/dex_artjars_unstripped/linux_glibc/apex/art_boot_images/javalib/x86_64/boot-core2.oat:/apex/art_boot_images/javalib/x86_64/boot-core2.oat
1112DEXPREOPT_IMAGE_UNSTRIPPED_BUILT_INSTALLED_boot_arm=out/soong/test_device/dex_bootjars_unstripped/android/system/framework/arm/boot-framework.oat:/system/framework/arm/boot-framework.oat
1113DEXPREOPT_IMAGE_UNSTRIPPED_BUILT_INSTALLED_boot_arm64=out/soong/test_device/dex_bootjars_unstripped/android/system/framework/arm64/boot-framework.oat:/system/framework/arm64/boot-framework.oat
1114DEXPREOPT_IMAGE_UNSTRIPPED_BUILT_INSTALLED_boot_host_x86=out/soong/test_device/dex_bootjars_unstripped/linux_glibc/system/framework/x86/boot-framework.oat:/system/framework/x86/boot-framework.oat
1115DEXPREOPT_IMAGE_UNSTRIPPED_BUILT_INSTALLED_boot_host_x86_64=out/soong/test_device/dex_bootjars_unstripped/linux_glibc/system/framework/x86_64/boot-framework.oat:/system/framework/x86_64/boot-framework.oat
Jiakai Zhangb8796202023-03-06 19:16:48 +00001116DEXPREOPT_IMAGE_UNSTRIPPED_BUILT_INSTALLED_mainline_arm=out/soong/test_device/dex_mainlinejars_unstripped/android/system/framework/arm/boot-framework-foo.oat:/system/framework/arm/boot-framework-foo.oat
1117DEXPREOPT_IMAGE_UNSTRIPPED_BUILT_INSTALLED_mainline_arm64=out/soong/test_device/dex_mainlinejars_unstripped/android/system/framework/arm64/boot-framework-foo.oat:/system/framework/arm64/boot-framework-foo.oat
1118DEXPREOPT_IMAGE_UNSTRIPPED_BUILT_INSTALLED_mainline_host_x86=out/soong/test_device/dex_mainlinejars_unstripped/linux_glibc/system/framework/x86/boot-framework-foo.oat:/system/framework/x86/boot-framework-foo.oat
1119DEXPREOPT_IMAGE_UNSTRIPPED_BUILT_INSTALLED_mainline_host_x86_64=out/soong/test_device/dex_mainlinejars_unstripped/linux_glibc/system/framework/x86_64/boot-framework-foo.oat:/system/framework/x86_64/boot-framework-foo.oat
Paul Duffin8eb45732022-10-04 19:03:31 +01001120DEXPREOPT_IMAGE_VDEX_BUILT_INSTALLED_art_arm=out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.vdex:/apex/art_boot_images/javalib/arm/boot.vdex out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot-core2.vdex:/apex/art_boot_images/javalib/arm/boot-core2.vdex
1121DEXPREOPT_IMAGE_VDEX_BUILT_INSTALLED_art_arm64=out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.vdex:/apex/art_boot_images/javalib/arm64/boot.vdex out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot-core2.vdex:/apex/art_boot_images/javalib/arm64/boot-core2.vdex
1122DEXPREOPT_IMAGE_VDEX_BUILT_INSTALLED_art_host_x86=out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.vdex:/apex/art_boot_images/javalib/x86/boot.vdex out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot-core2.vdex:/apex/art_boot_images/javalib/x86/boot-core2.vdex
1123DEXPREOPT_IMAGE_VDEX_BUILT_INSTALLED_art_host_x86_64=out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.vdex:/apex/art_boot_images/javalib/x86_64/boot.vdex out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot-core2.vdex:/apex/art_boot_images/javalib/x86_64/boot-core2.vdex
1124DEXPREOPT_IMAGE_VDEX_BUILT_INSTALLED_boot_arm=out/soong/test_device/dex_bootjars/android/system/framework/arm/boot-framework.vdex:/system/framework/arm/boot-framework.vdex
1125DEXPREOPT_IMAGE_VDEX_BUILT_INSTALLED_boot_arm64=out/soong/test_device/dex_bootjars/android/system/framework/arm64/boot-framework.vdex:/system/framework/arm64/boot-framework.vdex
1126DEXPREOPT_IMAGE_VDEX_BUILT_INSTALLED_boot_host_x86=out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86/boot-framework.vdex:/system/framework/x86/boot-framework.vdex
1127DEXPREOPT_IMAGE_VDEX_BUILT_INSTALLED_boot_host_x86_64=out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86_64/boot-framework.vdex:/system/framework/x86_64/boot-framework.vdex
Jiakai Zhangb8796202023-03-06 19:16:48 +00001128DEXPREOPT_IMAGE_VDEX_BUILT_INSTALLED_mainline_arm=out/soong/test_device/dex_mainlinejars/android/system/framework/arm/boot-framework-foo.vdex:/system/framework/arm/boot-framework-foo.vdex
1129DEXPREOPT_IMAGE_VDEX_BUILT_INSTALLED_mainline_arm64=out/soong/test_device/dex_mainlinejars/android/system/framework/arm64/boot-framework-foo.vdex:/system/framework/arm64/boot-framework-foo.vdex
1130DEXPREOPT_IMAGE_VDEX_BUILT_INSTALLED_mainline_host_x86=out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86/boot-framework-foo.vdex:/system/framework/x86/boot-framework-foo.vdex
1131DEXPREOPT_IMAGE_VDEX_BUILT_INSTALLED_mainline_host_x86_64=out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86_64/boot-framework-foo.vdex:/system/framework/x86_64/boot-framework-foo.vdex
Paul Duffin8eb45732022-10-04 19:03:31 +01001132DEXPREOPT_IMAGE_ZIP_art=out/soong/test_device/dex_artjars/art.zip
1133DEXPREOPT_IMAGE_ZIP_boot=out/soong/test_device/dex_bootjars/boot.zip
Jiakai Zhangb8796202023-03-06 19:16:48 +00001134DEXPREOPT_IMAGE_ZIP_mainline=out/soong/test_device/dex_mainlinejars/mainline.zip
Paul Duffin8eb45732022-10-04 19:03:31 +01001135DEXPREOPT_IMAGE_art_arm=out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm/boot.art
1136DEXPREOPT_IMAGE_art_arm64=out/soong/test_device/dex_artjars/android/apex/art_boot_images/javalib/arm64/boot.art
1137DEXPREOPT_IMAGE_art_host_x86=out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86/boot.art
1138DEXPREOPT_IMAGE_art_host_x86_64=out/soong/test_device/dex_artjars/linux_glibc/apex/art_boot_images/javalib/x86_64/boot.art
1139DEXPREOPT_IMAGE_boot_arm=out/soong/test_device/dex_bootjars/android/system/framework/arm/boot-framework.art
1140DEXPREOPT_IMAGE_boot_arm64=out/soong/test_device/dex_bootjars/android/system/framework/arm64/boot-framework.art
1141DEXPREOPT_IMAGE_boot_host_x86=out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86/boot-framework.art
1142DEXPREOPT_IMAGE_boot_host_x86_64=out/soong/test_device/dex_bootjars/linux_glibc/system/framework/x86_64/boot-framework.art
Jiakai Zhangb8796202023-03-06 19:16:48 +00001143DEXPREOPT_IMAGE_mainline_arm=out/soong/test_device/dex_mainlinejars/android/system/framework/arm/boot-framework-foo.art
1144DEXPREOPT_IMAGE_mainline_arm64=out/soong/test_device/dex_mainlinejars/android/system/framework/arm64/boot-framework-foo.art
1145DEXPREOPT_IMAGE_mainline_host_x86=out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86/boot-framework-foo.art
1146DEXPREOPT_IMAGE_mainline_host_x86_64=out/soong/test_device/dex_mainlinejars/linux_glibc/system/framework/x86_64/boot-framework-foo.art
Paul Duffin8eb45732022-10-04 19:03:31 +01001147`
1148 expected := strings.TrimSpace(fmt.Sprintf(format, expectedLicenseMetadataFile))
1149 actual := strings.TrimSpace(out.String())
1150 android.AssertStringEquals(t, "vars", expected, actual)
1151}