@@ -13,15 +13,15 @@ import (
1313
1414func TestFindDriverSanity (t * testing.T ) {
1515 r := makeTestResolver (map [string ][]ocispecs.Platform {
16- "aaa " : {platforms .DefaultSpec ()},
16+ "builder-amd64 " : {platforms .DefaultSpec ()},
1717 })
1818
1919 res , perfect , err := r .resolve (context .TODO (), []ocispecs.Platform {platforms .DefaultSpec ()}, nil , platforms .OnlyStrict , nil )
2020 require .NoError (t , err )
2121 require .True (t , perfect )
2222 require .Len (t , res , 1 )
2323 require .Equal (t , 0 , res [0 ].driverIndex )
24- require .Equal (t , "aaa " , res [0 ].Node ().Builder )
24+ require .Equal (t , "builder-amd64 " , res [0 ].Node ().Builder )
2525 require .Equal (t , []ocispecs.Platform {platforms .DefaultSpec ()}, res [0 ].platforms )
2626}
2727
@@ -36,229 +36,229 @@ func TestFindDriverEmpty(t *testing.T) {
3636
3737func TestFindDriverWeirdName (t * testing.T ) {
3838 r := makeTestResolver (map [string ][]ocispecs.Platform {
39- "aaa " : {platforms .MustParse ("linux/amd64" )},
40- "bbb " : {platforms .MustParse ("linux/foobar " )},
39+ "builder-amd64 " : {platforms .MustParse ("linux/amd64" )},
40+ "builder-beta " : {platforms .MustParse ("linux/beta " )},
4141 })
4242
4343 // find first platform
44- res , perfect , err := r .resolve (context .TODO (), []ocispecs.Platform {platforms .MustParse ("linux/foobar " )}, nil , platforms .Only , nil )
44+ res , perfect , err := r .resolve (context .TODO (), []ocispecs.Platform {platforms .MustParse ("linux/beta " )}, nil , platforms .Only , nil )
4545 require .NoError (t , err )
4646 require .True (t , perfect )
4747 require .Len (t , res , 1 )
4848 require .Equal (t , 1 , res [0 ].driverIndex )
49- require .Equal (t , "bbb " , res [0 ].Node ().Builder )
49+ require .Equal (t , "builder-beta " , res [0 ].Node ().Builder )
5050}
5151
5252func TestFindDriverUnknown (t * testing.T ) {
5353 r := makeTestResolver (map [string ][]ocispecs.Platform {
54- "aaa " : {platforms .MustParse ("linux/amd64" )},
54+ "builder-amd64 " : {platforms .MustParse ("linux/amd64" )},
5555 })
5656
5757 res , perfect , err := r .resolve (context .TODO (), []ocispecs.Platform {platforms .MustParse ("linux/riscv64" )}, nil , platforms .Only , nil )
5858 require .NoError (t , err )
5959 require .False (t , perfect )
6060 require .Len (t , res , 1 )
6161 require .Equal (t , 0 , res [0 ].driverIndex )
62- require .Equal (t , "aaa " , res [0 ].Node ().Builder )
62+ require .Equal (t , "builder-amd64 " , res [0 ].Node ().Builder )
6363}
6464
6565func TestSelectNodeSinglePlatform (t * testing.T ) {
6666 r := makeTestResolver (map [string ][]ocispecs.Platform {
67- "aaa" : {platforms .MustParse ("linux/amd64" )},
68- "bbb " : {platforms .MustParse ("linux/riscv64" )},
67+ "builder-amd64" : {platforms .MustParse ("linux/amd64" )},
68+ "builder-riscv64 " : {platforms .MustParse ("linux/riscv64" )},
6969 })
7070
71- // find first platform
71+ // Request linux/amd64 platform, should match builder-amd64
7272 res , perfect , err := r .resolve (context .TODO (), []ocispecs.Platform {platforms .MustParse ("linux/amd64" )}, nil , platforms .Only , nil )
7373 require .NoError (t , err )
7474 require .True (t , perfect )
7575 require .Len (t , res , 1 )
7676 require .Equal (t , 0 , res [0 ].driverIndex )
77- require .Equal (t , "aaa " , res [0 ].Node ().Builder )
77+ require .Equal (t , "builder-amd64 " , res [0 ].Node ().Builder )
7878
79- // find second platform
79+ // Request linux/riscv64 platform, should match builder-riscv64
8080 res , perfect , err = r .resolve (context .TODO (), []ocispecs.Platform {platforms .MustParse ("linux/riscv64" )}, nil , platforms .Only , nil )
8181 require .NoError (t , err )
8282 require .True (t , perfect )
8383 require .Len (t , res , 1 )
8484 require .Equal (t , 1 , res [0 ].driverIndex )
85- require .Equal (t , "bbb " , res [0 ].Node ().Builder )
85+ require .Equal (t , "builder-riscv64 " , res [0 ].Node ().Builder )
8686
87- // find an unknown platform, should match the first driver
88- res , perfect , err = r .resolve (context .TODO (), []ocispecs.Platform {platforms .MustParse ("linux/s390x " )}, nil , platforms .Only , nil )
87+ // Request unknown platform like linux/unknown , should default to first builder (builder-amd64)
88+ res , perfect , err = r .resolve (context .TODO (), []ocispecs.Platform {platforms .MustParse ("linux/unknown " )}, nil , platforms .Only , nil )
8989 require .NoError (t , err )
9090 require .False (t , perfect )
9191 require .Len (t , res , 1 )
9292 require .Equal (t , 0 , res [0 ].driverIndex )
93- require .Equal (t , "aaa " , res [0 ].Node ().Builder )
93+ require .Equal (t , "builder-amd64 " , res [0 ].Node ().Builder )
9494}
9595
9696func TestSelectNodeMultiPlatform (t * testing.T ) {
9797 r := makeTestResolver (map [string ][]ocispecs.Platform {
98- "aaa " : {platforms .MustParse ("linux/amd64" ), platforms .MustParse ("linux/arm64" )},
99- "bbb" : {platforms .MustParse ("linux/riscv64" )},
98+ "builder-amd64-arm64 " : {platforms .MustParse ("linux/amd64" ), platforms .MustParse ("linux/arm64" )},
99+ "builder-riscv64" : {platforms .MustParse ("linux/riscv64" )},
100100 })
101101
102102 res , perfect , err := r .resolve (context .TODO (), []ocispecs.Platform {platforms .MustParse ("linux/amd64" )}, nil , platforms .Only , nil )
103103 require .NoError (t , err )
104104 require .True (t , perfect )
105105 require .Len (t , res , 1 )
106106 require .Equal (t , 0 , res [0 ].driverIndex )
107- require .Equal (t , "aaa " , res [0 ].Node ().Builder )
107+ require .Equal (t , "builder-amd64-arm64 " , res [0 ].Node ().Builder )
108108
109109 res , perfect , err = r .resolve (context .TODO (), []ocispecs.Platform {platforms .MustParse ("linux/arm64" )}, nil , platforms .Only , nil )
110110 require .NoError (t , err )
111111 require .True (t , perfect )
112112 require .Len (t , res , 1 )
113113 require .Equal (t , 0 , res [0 ].driverIndex )
114- require .Equal (t , "aaa " , res [0 ].Node ().Builder )
114+ require .Equal (t , "builder-amd64-arm64 " , res [0 ].Node ().Builder )
115115
116116 res , perfect , err = r .resolve (context .TODO (), []ocispecs.Platform {platforms .MustParse ("linux/riscv64" )}, nil , platforms .Only , nil )
117117 require .NoError (t , err )
118118 require .True (t , perfect )
119119 require .Len (t , res , 1 )
120120 require .Equal (t , 1 , res [0 ].driverIndex )
121- require .Equal (t , "bbb " , res [0 ].Node ().Builder )
121+ require .Equal (t , "builder-riscv64 " , res [0 ].Node ().Builder )
122122}
123123
124124func TestSelectNodeNonStrict (t * testing.T ) {
125125 r := makeTestResolver (map [string ][]ocispecs.Platform {
126- "aaa " : {platforms .MustParse ("linux/amd64" )},
127- "bbb " : {platforms .MustParse ("linux/arm64" )},
126+ "builder-amd64 " : {platforms .MustParse ("linux/amd64" )},
127+ "builder-arm64 " : {platforms .MustParse ("linux/arm64" )},
128128 })
129129
130130 // arm64 should match itself
131131 res , perfect , err := r .resolve (context .TODO (), []ocispecs.Platform {platforms .MustParse ("linux/arm64" )}, nil , platforms .Only , nil )
132132 require .NoError (t , err )
133133 require .True (t , perfect )
134134 require .Len (t , res , 1 )
135- require .Equal (t , "bbb " , res [0 ].Node ().Builder )
135+ require .Equal (t , "builder-arm64 " , res [0 ].Node ().Builder )
136136
137137 // arm64 may support arm/v8
138138 res , perfect , err = r .resolve (context .TODO (), []ocispecs.Platform {platforms .MustParse ("linux/arm/v8" )}, nil , platforms .Only , nil )
139139 require .NoError (t , err )
140140 require .True (t , perfect )
141141 require .Len (t , res , 1 )
142- require .Equal (t , "bbb " , res [0 ].Node ().Builder )
142+ require .Equal (t , "builder-arm64 " , res [0 ].Node ().Builder )
143143
144144 // arm64 may support arm/v7
145145 res , perfect , err = r .resolve (context .TODO (), []ocispecs.Platform {platforms .MustParse ("linux/arm/v7" )}, nil , platforms .Only , nil )
146146 require .NoError (t , err )
147147 require .True (t , perfect )
148148 require .Len (t , res , 1 )
149- require .Equal (t , "bbb " , res [0 ].Node ().Builder )
149+ require .Equal (t , "builder-arm64 " , res [0 ].Node ().Builder )
150150}
151151
152152func TestSelectNodeNonStrictARM (t * testing.T ) {
153153 r := makeTestResolver (map [string ][]ocispecs.Platform {
154- "aaa " : {platforms .MustParse ("linux/amd64" )},
155- "bbb " : {platforms .MustParse ("linux/arm64" )},
156- "ccc " : {platforms .MustParse ("linux/arm/v8" )},
154+ "builder-amd64 " : {platforms .MustParse ("linux/amd64" )},
155+ "builder-arm64 " : {platforms .MustParse ("linux/arm64" )},
156+ "builder-armv8 " : {platforms .MustParse ("linux/arm/v8" )},
157157 })
158158
159159 res , perfect , err := r .resolve (context .TODO (), []ocispecs.Platform {platforms .MustParse ("linux/arm/v8" )}, nil , platforms .Only , nil )
160160 require .NoError (t , err )
161161 require .True (t , perfect )
162162 require .Len (t , res , 1 )
163- require .Equal (t , "ccc " , res [0 ].Node ().Builder )
163+ require .Equal (t , "builder-armv8 " , res [0 ].Node ().Builder )
164164
165165 res , perfect , err = r .resolve (context .TODO (), []ocispecs.Platform {platforms .MustParse ("linux/arm/v7" )}, nil , platforms .Only , nil )
166166 require .NoError (t , err )
167167 require .True (t , perfect )
168168 require .Len (t , res , 1 )
169- require .Equal (t , "ccc " , res [0 ].Node ().Builder )
169+ require .Equal (t , "builder-armv8 " , res [0 ].Node ().Builder )
170170}
171171
172172func TestSelectNodeNonStrictLower (t * testing.T ) {
173173 r := makeTestResolver (map [string ][]ocispecs.Platform {
174- "aaa " : {platforms .MustParse ("linux/amd64" )},
175- "bbb " : {platforms .MustParse ("linux/arm/v7" )},
174+ "builder-amd64 " : {platforms .MustParse ("linux/amd64" )},
175+ "builder-armv7 " : {platforms .MustParse ("linux/arm/v7" )},
176176 })
177177
178178 // v8 can't be built on v7 (so we should select the default)...
179179 res , perfect , err := r .resolve (context .TODO (), []ocispecs.Platform {platforms .MustParse ("linux/arm/v8" )}, nil , platforms .Only , nil )
180180 require .NoError (t , err )
181181 require .False (t , perfect )
182182 require .Len (t , res , 1 )
183- require .Equal (t , "aaa " , res [0 ].Node ().Builder )
183+ require .Equal (t , "builder-amd64 " , res [0 ].Node ().Builder )
184184
185185 // ...but v6 can be built on v8
186186 res , perfect , err = r .resolve (context .TODO (), []ocispecs.Platform {platforms .MustParse ("linux/arm/v6" )}, nil , platforms .Only , nil )
187187 require .NoError (t , err )
188188 require .True (t , perfect )
189189 require .Len (t , res , 1 )
190- require .Equal (t , "bbb " , res [0 ].Node ().Builder )
190+ require .Equal (t , "builder-armv7 " , res [0 ].Node ().Builder )
191191}
192192
193193func TestSelectNodePreferStart (t * testing.T ) {
194194 r := makeTestResolver (map [string ][]ocispecs.Platform {
195- "aaa" : {platforms .MustParse ("linux/amd64" )},
196- "bbb " : {platforms .MustParse ("linux/riscv64" )},
197- "ccc " : {platforms .MustParse ("linux/riscv64" )},
195+ "builder-amd64" : {platforms .MustParse ("linux/amd64" )},
196+ "builder-riscv64-1 " : {platforms .MustParse ("linux/riscv64" )},
197+ "builder-riscv64-2 " : {platforms .MustParse ("linux/riscv64" )},
198198 })
199199
200200 res , perfect , err := r .resolve (context .TODO (), []ocispecs.Platform {platforms .MustParse ("linux/riscv64" )}, nil , platforms .Only , nil )
201201 require .NoError (t , err )
202202 require .True (t , perfect )
203203 require .Len (t , res , 1 )
204- require .Equal (t , "bbb " , res [0 ].Node ().Builder )
204+ require .Equal (t , "builder-riscv64-1 " , res [0 ].Node ().Builder )
205205}
206206
207207func TestSelectNodePreferExact (t * testing.T ) {
208208 r := makeTestResolver (map [string ][]ocispecs.Platform {
209- "aaa " : {platforms .MustParse ("linux/arm/v8" )},
210- "bbb " : {platforms .MustParse ("linux/arm/v7" )},
209+ "builder-armv8 " : {platforms .MustParse ("linux/arm/v8" )},
210+ "builder-armv7 " : {platforms .MustParse ("linux/arm/v7" )},
211211 })
212212
213213 res , perfect , err := r .resolve (context .TODO (), []ocispecs.Platform {platforms .MustParse ("linux/arm/v7" )}, nil , platforms .Only , nil )
214214 require .NoError (t , err )
215215 require .True (t , perfect )
216216 require .Len (t , res , 1 )
217- require .Equal (t , "bbb " , res [0 ].Node ().Builder )
217+ require .Equal (t , "builder-armv7 " , res [0 ].Node ().Builder )
218218}
219219
220220func TestSelectNodeNoPlatform (t * testing.T ) {
221221 r := makeTestResolver (map [string ][]ocispecs.Platform {
222- "aaa " : {platforms .MustParse ("linux/foobar " )},
223- "bbb " : {platforms .DefaultSpec ()},
222+ "builder-beta " : {platforms .MustParse ("linux/beta " )},
223+ "builder-default " : {platforms .DefaultSpec ()},
224224 })
225225
226226 res , perfect , err := r .resolve (context .TODO (), []ocispecs.Platform {}, nil , platforms .Only , nil )
227227 require .NoError (t , err )
228228 require .True (t , perfect )
229229 require .Len (t , res , 1 )
230- require .Equal (t , "aaa " , res [0 ].Node ().Builder )
230+ require .Equal (t , "builder-beta " , res [0 ].Node ().Builder )
231231 require .Empty (t , res [0 ].platforms )
232232}
233233
234234func TestSelectNodeAdditionalPlatforms (t * testing.T ) {
235235 r := makeTestResolver (map [string ][]ocispecs.Platform {
236- "aaa " : {platforms .MustParse ("linux/amd64" )},
237- "bbb " : {platforms .MustParse ("linux/arm/v8" )},
236+ "builder-amd64 " : {platforms .MustParse ("linux/amd64" )},
237+ "builder-armv8 " : {platforms .MustParse ("linux/arm/v8" )},
238238 })
239239
240240 res , perfect , err := r .resolve (context .TODO (), []ocispecs.Platform {platforms .MustParse ("linux/arm/v7" )}, nil , platforms .Only , nil )
241241 require .NoError (t , err )
242242 require .True (t , perfect )
243243 require .Len (t , res , 1 )
244- require .Equal (t , "bbb " , res [0 ].Node ().Builder )
244+ require .Equal (t , "builder-armv8 " , res [0 ].Node ().Builder )
245245
246246 res , perfect , err = r .resolve (context .TODO (), []ocispecs.Platform {platforms .MustParse ("linux/arm/v7" )}, nil , platforms .Only , func (idx int , n builder.Node ) []ocispecs.Platform {
247- if n .Builder == "aaa " {
247+ if n .Builder == "builder-amd64 " {
248248 return []ocispecs.Platform {platforms .MustParse ("linux/arm/v7" )}
249249 }
250250 return nil
251251 })
252252 require .NoError (t , err )
253253 require .True (t , perfect )
254254 require .Len (t , res , 1 )
255- require .Equal (t , "aaa " , res [0 ].Node ().Builder )
255+ require .Equal (t , "builder-amd64 " , res [0 ].Node ().Builder )
256256}
257257
258258func TestSplitNodeMultiPlatform (t * testing.T ) {
259259 r := makeTestResolver (map [string ][]ocispecs.Platform {
260- "aaa " : {platforms .MustParse ("linux/amd64" ), platforms .MustParse ("linux/arm64" )},
261- "bbb" : {platforms .MustParse ("linux/riscv64" )},
260+ "builder-amd64-arm64 " : {platforms .MustParse ("linux/amd64" ), platforms .MustParse ("linux/arm64" )},
261+ "builder-riscv64" : {platforms .MustParse ("linux/riscv64" )},
262262 })
263263
264264 res , perfect , err := r .resolve (context .TODO (), []ocispecs.Platform {
@@ -268,7 +268,7 @@ func TestSplitNodeMultiPlatform(t *testing.T) {
268268 require .NoError (t , err )
269269 require .True (t , perfect )
270270 require .Len (t , res , 1 )
271- require .Equal (t , "aaa " , res [0 ].Node ().Builder )
271+ require .Equal (t , "builder-amd64-arm64 " , res [0 ].Node ().Builder )
272272
273273 res , perfect , err = r .resolve (context .TODO (), []ocispecs.Platform {
274274 platforms .MustParse ("linux/amd64" ),
@@ -277,14 +277,14 @@ func TestSplitNodeMultiPlatform(t *testing.T) {
277277 require .NoError (t , err )
278278 require .True (t , perfect )
279279 require .Len (t , res , 2 )
280- require .Equal (t , "aaa " , res [0 ].Node ().Builder )
281- require .Equal (t , "bbb " , res [1 ].Node ().Builder )
280+ require .Equal (t , "builder-amd64-arm64 " , res [0 ].Node ().Builder )
281+ require .Equal (t , "builder-riscv64 " , res [1 ].Node ().Builder )
282282}
283283
284284func TestSplitNodeMultiPlatformNoUnify (t * testing.T ) {
285285 r := makeTestResolver (map [string ][]ocispecs.Platform {
286- "aaa" : {platforms .MustParse ("linux/amd64" )},
287- "bbb " : {platforms .MustParse ("linux/amd64" ), platforms .MustParse ("linux/riscv64" )},
286+ "builder-amd64" : {platforms .MustParse ("linux/amd64" )},
287+ "builder-amd64-riscv64 " : {platforms .MustParse ("linux/amd64" ), platforms .MustParse ("linux/riscv64" )},
288288 })
289289
290290 // the "best" choice would be the node with both platforms, but we're using
@@ -296,8 +296,8 @@ func TestSplitNodeMultiPlatformNoUnify(t *testing.T) {
296296 require .NoError (t , err )
297297 require .True (t , perfect )
298298 require .Len (t , res , 2 )
299- require .Equal (t , "aaa " , res [0 ].Node ().Builder )
300- require .Equal (t , "bbb " , res [1 ].Node ().Builder )
299+ require .Equal (t , "builder-amd64 " , res [0 ].Node ().Builder )
300+ require .Equal (t , "builder-amd64-riscv64 " , res [1 ].Node ().Builder )
301301}
302302
303303func makeTestResolver (nodes map [string ][]ocispecs.Platform ) * nodeResolver {
0 commit comments