blob: c404a2e3740417083241520b72b8e0c6f9d13984 [file] [log] [blame]
satayev333a1732021-05-17 21:35:26 +01001// Copyright (C) 2021 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
15package apex
16
17import (
satayevabcd5972021-08-06 17:49:46 +010018 "android/soong/dexpreopt"
satayev333a1732021-05-17 21:35:26 +010019 "testing"
20
21 "android/soong/android"
22 "android/soong/java"
23)
24
25var prepareForTestWithSystemserverclasspathFragment = android.GroupFixturePreparers(
26 java.PrepareForTestWithDexpreopt,
27 PrepareForTestWithApexBuildComponents,
28)
29
30func TestSystemserverclasspathFragmentContents(t *testing.T) {
31 result := android.GroupFixturePreparers(
32 prepareForTestWithSystemserverclasspathFragment,
33 prepareForTestWithMyapex,
Jiakai Zhang3317ce72023-02-08 01:19:19 +080034 dexpreopt.FixtureSetApexSystemServerJars("myapex:foo", "myapex:bar"),
satayev333a1732021-05-17 21:35:26 +010035 ).RunTestWithBp(t, `
36 apex {
37 name: "myapex",
38 key: "myapex.key",
39 systemserverclasspath_fragments: [
40 "mysystemserverclasspathfragment",
41 ],
42 updatable: false,
43 }
44
45 apex_key {
46 name: "myapex.key",
47 public_key: "testkey.avbpubkey",
48 private_key: "testkey.pem",
49 }
50
51 java_library {
52 name: "foo",
53 srcs: ["b.java"],
54 installable: true,
55 apex_available: [
56 "myapex",
57 ],
58 }
59
Jiakai Zhang3317ce72023-02-08 01:19:19 +080060 java_library {
61 name: "bar",
62 srcs: ["c.java"],
63 installable: true,
64 dex_preopt: {
65 profile: "bar-art-profile",
66 },
67 apex_available: [
68 "myapex",
69 ],
70 }
71
satayev333a1732021-05-17 21:35:26 +010072 systemserverclasspath_fragment {
73 name: "mysystemserverclasspathfragment",
74 contents: [
75 "foo",
Jiakai Zhang3317ce72023-02-08 01:19:19 +080076 "bar",
satayev333a1732021-05-17 21:35:26 +010077 ],
78 apex_available: [
79 "myapex",
80 ],
81 }
82 `)
83
84 ensureExactContents(t, result.TestContext, "myapex", "android_common_myapex_image", []string{
satayev227e7452021-05-20 21:35:06 +010085 "etc/classpaths/systemserverclasspath.pb",
satayev333a1732021-05-17 21:35:26 +010086 "javalib/foo.jar",
Jiakai Zhang3317ce72023-02-08 01:19:19 +080087 "javalib/bar.jar",
88 "javalib/bar.jar.prof",
satayev333a1732021-05-17 21:35:26 +010089 })
90
91 java.CheckModuleDependencies(t, result.TestContext, "myapex", "android_common_myapex_image", []string{
92 `myapex.key`,
93 `mysystemserverclasspathfragment`,
94 })
95}
satayevb98371c2021-06-15 16:49:50 +010096
97func TestSystemserverclasspathFragmentNoGeneratedProto(t *testing.T) {
98 result := android.GroupFixturePreparers(
99 prepareForTestWithSystemserverclasspathFragment,
100 prepareForTestWithMyapex,
satayevabcd5972021-08-06 17:49:46 +0100101 dexpreopt.FixtureSetApexSystemServerJars("myapex:foo"),
satayevb98371c2021-06-15 16:49:50 +0100102 ).RunTestWithBp(t, `
103 apex {
104 name: "myapex",
105 key: "myapex.key",
106 systemserverclasspath_fragments: [
107 "mysystemserverclasspathfragment",
108 ],
109 updatable: false,
110 }
111
112 apex_key {
113 name: "myapex.key",
114 public_key: "testkey.avbpubkey",
115 private_key: "testkey.pem",
116 }
117
118 java_library {
119 name: "foo",
120 srcs: ["b.java"],
121 installable: true,
122 apex_available: [
123 "myapex",
124 ],
125 }
126
127 systemserverclasspath_fragment {
128 name: "mysystemserverclasspathfragment",
129 generate_classpaths_proto: false,
130 contents: [
131 "foo",
132 ],
133 apex_available: [
134 "myapex",
135 ],
136 }
137 `)
138
139 ensureExactContents(t, result.TestContext, "myapex", "android_common_myapex_image", []string{
140 "javalib/foo.jar",
141 })
142
143 java.CheckModuleDependencies(t, result.TestContext, "myapex", "android_common_myapex_image", []string{
144 `myapex.key`,
145 `mysystemserverclasspathfragment`,
146 })
147}
satayevd34eb0c2021-08-06 13:20:28 +0100148
149func TestSystemServerClasspathFragmentWithContentNotInMake(t *testing.T) {
150 android.GroupFixturePreparers(
151 prepareForTestWithSystemserverclasspathFragment,
152 prepareForTestWithMyapex,
153 dexpreopt.FixtureSetApexSystemServerJars("myapex:foo"),
154 ).
155 ExtendWithErrorHandler(android.FixtureExpectsAtLeastOneErrorMatchingPattern(
Ulya Trafimoviche5b2b492021-10-04 15:42:53 +0100156 `in contents must also be declared in PRODUCT_APEX_SYSTEM_SERVER_JARS`)).
satayevd34eb0c2021-08-06 13:20:28 +0100157 RunTestWithBp(t, `
158 apex {
159 name: "myapex",
160 key: "myapex.key",
161 systemserverclasspath_fragments: [
162 "mysystemserverclasspathfragment",
163 ],
164 updatable: false,
165 }
166
167 apex_key {
168 name: "myapex.key",
169 public_key: "testkey.avbpubkey",
170 private_key: "testkey.pem",
171 }
172
173 java_library {
174 name: "foo",
175 srcs: ["b.java"],
176 installable: true,
177 apex_available: ["myapex"],
178 }
179
180 java_library {
181 name: "bar",
182 srcs: ["b.java"],
183 installable: true,
184 apex_available: ["myapex"],
185 }
186
187 systemserverclasspath_fragment {
188 name: "mysystemserverclasspathfragment",
189 contents: [
190 "foo",
191 "bar",
192 ],
193 apex_available: [
194 "myapex",
195 ],
196 }
197 `)
198}
Jiakai Zhangc9864272021-09-26 03:52:19 +0000199
200func TestPrebuiltSystemserverclasspathFragmentContents(t *testing.T) {
201 result := android.GroupFixturePreparers(
202 prepareForTestWithSystemserverclasspathFragment,
203 prepareForTestWithMyapex,
204 dexpreopt.FixtureSetApexSystemServerJars("myapex:foo"),
205 ).RunTestWithBp(t, `
Jiakai Zhang774dd302021-09-26 03:54:25 +0000206 prebuilt_apex {
207 name: "myapex",
208 arch: {
209 arm64: {
210 src: "myapex-arm64.apex",
211 },
212 arm: {
213 src: "myapex-arm.apex",
214 },
215 },
216 exported_systemserverclasspath_fragments: ["mysystemserverclasspathfragment"],
217 }
218
Jiakai Zhangc9864272021-09-26 03:52:19 +0000219 java_import {
220 name: "foo",
221 jars: ["foo.jar"],
222 apex_available: [
223 "myapex",
224 ],
225 }
226
227 prebuilt_systemserverclasspath_fragment {
228 name: "mysystemserverclasspathfragment",
229 prefer: true,
230 contents: [
231 "foo",
232 ],
233 apex_available: [
234 "myapex",
235 ],
236 }
237 `)
238
Jiakai Zhang774dd302021-09-26 03:54:25 +0000239 java.CheckModuleDependencies(t, result.TestContext, "myapex", "android_common_myapex", []string{
240 `myapex.apex.selector`,
241 `prebuilt_mysystemserverclasspathfragment`,
242 })
243
244 java.CheckModuleDependencies(t, result.TestContext, "mysystemserverclasspathfragment", "android_common_myapex", []string{
245 `myapex.deapexer`,
Jiakai Zhangc9864272021-09-26 03:52:19 +0000246 `prebuilt_foo`,
247 })
248}
Jiakai Zhangcee9e192021-10-29 19:46:45 +0000249
250func TestSystemserverclasspathFragmentStandaloneContents(t *testing.T) {
251 result := android.GroupFixturePreparers(
252 prepareForTestWithSystemserverclasspathFragment,
253 prepareForTestWithMyapex,
Jiakai Zhang3317ce72023-02-08 01:19:19 +0800254 dexpreopt.FixtureSetApexStandaloneSystemServerJars("myapex:foo", "myapex:bar"),
Jiakai Zhangcee9e192021-10-29 19:46:45 +0000255 ).RunTestWithBp(t, `
256 apex {
257 name: "myapex",
258 key: "myapex.key",
259 systemserverclasspath_fragments: [
260 "mysystemserverclasspathfragment",
261 ],
262 updatable: false,
263 }
264
265 apex_key {
266 name: "myapex.key",
267 public_key: "testkey.avbpubkey",
268 private_key: "testkey.pem",
269 }
270
271 java_library {
272 name: "foo",
273 srcs: ["b.java"],
274 installable: true,
275 apex_available: [
276 "myapex",
277 ],
278 }
279
Jiakai Zhang3317ce72023-02-08 01:19:19 +0800280 java_library {
281 name: "bar",
282 srcs: ["c.java"],
283 dex_preopt: {
284 profile: "bar-art-profile",
285 },
286 installable: true,
287 apex_available: [
288 "myapex",
289 ],
290 }
291
Jiakai Zhangcee9e192021-10-29 19:46:45 +0000292 systemserverclasspath_fragment {
293 name: "mysystemserverclasspathfragment",
294 standalone_contents: [
295 "foo",
Jiakai Zhang3317ce72023-02-08 01:19:19 +0800296 "bar",
Jiakai Zhangcee9e192021-10-29 19:46:45 +0000297 ],
298 apex_available: [
299 "myapex",
300 ],
301 }
302 `)
303
304 ensureExactContents(t, result.TestContext, "myapex", "android_common_myapex_image", []string{
305 "etc/classpaths/systemserverclasspath.pb",
306 "javalib/foo.jar",
Jiakai Zhang3317ce72023-02-08 01:19:19 +0800307 "javalib/bar.jar",
308 "javalib/bar.jar.prof",
Jiakai Zhangcee9e192021-10-29 19:46:45 +0000309 })
310}
311
312func TestPrebuiltStandaloneSystemserverclasspathFragmentContents(t *testing.T) {
313 result := android.GroupFixturePreparers(
314 prepareForTestWithSystemserverclasspathFragment,
315 prepareForTestWithMyapex,
316 dexpreopt.FixtureSetApexStandaloneSystemServerJars("myapex:foo"),
317 ).RunTestWithBp(t, `
318 prebuilt_apex {
319 name: "myapex",
320 arch: {
321 arm64: {
322 src: "myapex-arm64.apex",
323 },
324 arm: {
325 src: "myapex-arm.apex",
326 },
327 },
328 exported_systemserverclasspath_fragments: ["mysystemserverclasspathfragment"],
329 }
330
331 java_import {
332 name: "foo",
333 jars: ["foo.jar"],
334 apex_available: [
335 "myapex",
336 ],
337 }
338
339 prebuilt_systemserverclasspath_fragment {
340 name: "mysystemserverclasspathfragment",
341 prefer: true,
342 standalone_contents: [
343 "foo",
344 ],
345 apex_available: [
346 "myapex",
347 ],
348 }
349 `)
350
351 java.CheckModuleDependencies(t, result.TestContext, "mysystemserverclasspathfragment", "android_common_myapex", []string{
352 `myapex.deapexer`,
353 `prebuilt_foo`,
354 })
355}