blob: d037664483aff3506aa52ff55ea0fa539c437627 [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,
satayevabcd5972021-08-06 17:49:46 +010034 dexpreopt.FixtureSetApexSystemServerJars("myapex:foo"),
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
60 systemserverclasspath_fragment {
61 name: "mysystemserverclasspathfragment",
62 contents: [
63 "foo",
64 ],
65 apex_available: [
66 "myapex",
67 ],
68 }
69 `)
70
71 ensureExactContents(t, result.TestContext, "myapex", "android_common_myapex_image", []string{
satayev227e7452021-05-20 21:35:06 +010072 "etc/classpaths/systemserverclasspath.pb",
satayev333a1732021-05-17 21:35:26 +010073 "javalib/foo.jar",
74 })
75
76 java.CheckModuleDependencies(t, result.TestContext, "myapex", "android_common_myapex_image", []string{
77 `myapex.key`,
78 `mysystemserverclasspathfragment`,
79 })
80}
satayevb98371c2021-06-15 16:49:50 +010081
82func TestSystemserverclasspathFragmentNoGeneratedProto(t *testing.T) {
83 result := android.GroupFixturePreparers(
84 prepareForTestWithSystemserverclasspathFragment,
85 prepareForTestWithMyapex,
satayevabcd5972021-08-06 17:49:46 +010086 dexpreopt.FixtureSetApexSystemServerJars("myapex:foo"),
satayevb98371c2021-06-15 16:49:50 +010087 ).RunTestWithBp(t, `
88 apex {
89 name: "myapex",
90 key: "myapex.key",
91 systemserverclasspath_fragments: [
92 "mysystemserverclasspathfragment",
93 ],
94 updatable: false,
95 }
96
97 apex_key {
98 name: "myapex.key",
99 public_key: "testkey.avbpubkey",
100 private_key: "testkey.pem",
101 }
102
103 java_library {
104 name: "foo",
105 srcs: ["b.java"],
106 installable: true,
107 apex_available: [
108 "myapex",
109 ],
110 }
111
112 systemserverclasspath_fragment {
113 name: "mysystemserverclasspathfragment",
114 generate_classpaths_proto: false,
115 contents: [
116 "foo",
117 ],
118 apex_available: [
119 "myapex",
120 ],
121 }
122 `)
123
124 ensureExactContents(t, result.TestContext, "myapex", "android_common_myapex_image", []string{
125 "javalib/foo.jar",
126 })
127
128 java.CheckModuleDependencies(t, result.TestContext, "myapex", "android_common_myapex_image", []string{
129 `myapex.key`,
130 `mysystemserverclasspathfragment`,
131 })
132}
satayevd34eb0c2021-08-06 13:20:28 +0100133
134func TestSystemServerClasspathFragmentWithContentNotInMake(t *testing.T) {
135 android.GroupFixturePreparers(
136 prepareForTestWithSystemserverclasspathFragment,
137 prepareForTestWithMyapex,
138 dexpreopt.FixtureSetApexSystemServerJars("myapex:foo"),
139 ).
140 ExtendWithErrorHandler(android.FixtureExpectsAtLeastOneErrorMatchingPattern(
Ulya Trafimoviche5b2b492021-10-04 15:42:53 +0100141 `in contents must also be declared in PRODUCT_APEX_SYSTEM_SERVER_JARS`)).
satayevd34eb0c2021-08-06 13:20:28 +0100142 RunTestWithBp(t, `
143 apex {
144 name: "myapex",
145 key: "myapex.key",
146 systemserverclasspath_fragments: [
147 "mysystemserverclasspathfragment",
148 ],
149 updatable: false,
150 }
151
152 apex_key {
153 name: "myapex.key",
154 public_key: "testkey.avbpubkey",
155 private_key: "testkey.pem",
156 }
157
158 java_library {
159 name: "foo",
160 srcs: ["b.java"],
161 installable: true,
162 apex_available: ["myapex"],
163 }
164
165 java_library {
166 name: "bar",
167 srcs: ["b.java"],
168 installable: true,
169 apex_available: ["myapex"],
170 }
171
172 systemserverclasspath_fragment {
173 name: "mysystemserverclasspathfragment",
174 contents: [
175 "foo",
176 "bar",
177 ],
178 apex_available: [
179 "myapex",
180 ],
181 }
182 `)
183}
Jiakai Zhangc9864272021-09-26 03:52:19 +0000184
185func TestPrebuiltSystemserverclasspathFragmentContents(t *testing.T) {
186 result := android.GroupFixturePreparers(
187 prepareForTestWithSystemserverclasspathFragment,
188 prepareForTestWithMyapex,
189 dexpreopt.FixtureSetApexSystemServerJars("myapex:foo"),
190 ).RunTestWithBp(t, `
Jiakai Zhang774dd302021-09-26 03:54:25 +0000191 prebuilt_apex {
192 name: "myapex",
193 arch: {
194 arm64: {
195 src: "myapex-arm64.apex",
196 },
197 arm: {
198 src: "myapex-arm.apex",
199 },
200 },
201 exported_systemserverclasspath_fragments: ["mysystemserverclasspathfragment"],
202 }
203
Jiakai Zhangc9864272021-09-26 03:52:19 +0000204 java_import {
205 name: "foo",
206 jars: ["foo.jar"],
207 apex_available: [
208 "myapex",
209 ],
210 }
211
212 prebuilt_systemserverclasspath_fragment {
213 name: "mysystemserverclasspathfragment",
214 prefer: true,
215 contents: [
216 "foo",
217 ],
218 apex_available: [
219 "myapex",
220 ],
221 }
222 `)
223
Jiakai Zhang774dd302021-09-26 03:54:25 +0000224 java.CheckModuleDependencies(t, result.TestContext, "myapex", "android_common_myapex", []string{
225 `myapex.apex.selector`,
226 `prebuilt_mysystemserverclasspathfragment`,
227 })
228
229 java.CheckModuleDependencies(t, result.TestContext, "mysystemserverclasspathfragment", "android_common_myapex", []string{
230 `myapex.deapexer`,
Jiakai Zhangc9864272021-09-26 03:52:19 +0000231 `prebuilt_foo`,
232 })
233}
Jiakai Zhangcee9e192021-10-29 19:46:45 +0000234
235func TestSystemserverclasspathFragmentStandaloneContents(t *testing.T) {
236 result := android.GroupFixturePreparers(
237 prepareForTestWithSystemserverclasspathFragment,
238 prepareForTestWithMyapex,
239 dexpreopt.FixtureSetApexStandaloneSystemServerJars("myapex:foo"),
240 ).RunTestWithBp(t, `
241 apex {
242 name: "myapex",
243 key: "myapex.key",
244 systemserverclasspath_fragments: [
245 "mysystemserverclasspathfragment",
246 ],
247 updatable: false,
248 }
249
250 apex_key {
251 name: "myapex.key",
252 public_key: "testkey.avbpubkey",
253 private_key: "testkey.pem",
254 }
255
256 java_library {
257 name: "foo",
258 srcs: ["b.java"],
259 installable: true,
260 apex_available: [
261 "myapex",
262 ],
263 }
264
265 systemserverclasspath_fragment {
266 name: "mysystemserverclasspathfragment",
267 standalone_contents: [
268 "foo",
269 ],
270 apex_available: [
271 "myapex",
272 ],
273 }
274 `)
275
276 ensureExactContents(t, result.TestContext, "myapex", "android_common_myapex_image", []string{
277 "etc/classpaths/systemserverclasspath.pb",
278 "javalib/foo.jar",
279 })
280}
281
282func TestPrebuiltStandaloneSystemserverclasspathFragmentContents(t *testing.T) {
283 result := android.GroupFixturePreparers(
284 prepareForTestWithSystemserverclasspathFragment,
285 prepareForTestWithMyapex,
286 dexpreopt.FixtureSetApexStandaloneSystemServerJars("myapex:foo"),
287 ).RunTestWithBp(t, `
288 prebuilt_apex {
289 name: "myapex",
290 arch: {
291 arm64: {
292 src: "myapex-arm64.apex",
293 },
294 arm: {
295 src: "myapex-arm.apex",
296 },
297 },
298 exported_systemserverclasspath_fragments: ["mysystemserverclasspathfragment"],
299 }
300
301 java_import {
302 name: "foo",
303 jars: ["foo.jar"],
304 apex_available: [
305 "myapex",
306 ],
307 }
308
309 prebuilt_systemserverclasspath_fragment {
310 name: "mysystemserverclasspathfragment",
311 prefer: true,
312 standalone_contents: [
313 "foo",
314 ],
315 apex_available: [
316 "myapex",
317 ],
318 }
319 `)
320
321 java.CheckModuleDependencies(t, result.TestContext, "mysystemserverclasspathfragment", "android_common_myapex", []string{
322 `myapex.deapexer`,
323 `prebuilt_foo`,
324 })
325}