summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZhang Peng <peng.zhang1.cn@windriver.com>2024-11-28 23:24:39 +0800
committerBruce Ashfield <bruce.ashfield@gmail.com>2024-12-10 03:41:43 +0000
commit88949aa04f3d337cc8ab441cf131c60b1f8552db (patch)
tree9a4b370f72c06572d5f0ffa3606637b62b0b8169
parent16c742b34499b30819c387698e133c70cfaf0da2 (diff)
downloadmeta-virtualization-88949aa04f3d337cc8ab441cf131c60b1f8552db.tar.gz
cri-o: enable ptest
The ptest build for cri-o was previously disabled due to issues introduced with Go 1.11, which borken the build process. With the current Go version, these issues no longer occur, and the ptest build is now functional. This commit enables ptest support and resolves the "TMPDIR [buildpaths]" issue encountered during the ptest build process. A total of 382 test cases were executed, with the following results: PASS: 317 FAIL: 33 SKIP: 32 Signed-off-by: Zhang Peng <peng.zhang1.cn@windriver.com> Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
-rw-r--r--recipes-containers/cri-o/README.md452
-rw-r--r--recipes-containers/cri-o/cri-o_git.bb33
-rw-r--r--recipes-containers/cri-o/files/0001-Add-trimpath-to-build-nri.test.patch31
-rw-r--r--recipes-containers/cri-o/files/run-ptest11
4 files changed, 525 insertions, 2 deletions
diff --git a/recipes-containers/cri-o/README.md b/recipes-containers/cri-o/README.md
new file mode 100644
index 00000000..e3dac040
--- /dev/null
+++ b/recipes-containers/cri-o/README.md
@@ -0,0 +1,452 @@
1# CRI-O Ptest Guide
2
3The CRI-O ptest suite is a comprehensive and complex testing framework. This document provides key information and tips for its usage.
4
5
6## 1. Vendor Directory
7
8By default, the `vendor` directory is not installed for ptest. However, the `ctr_seccomp.bats` test relies on a JSON file located at:
9`vendor/github.com/containers/common/pkg/seccomp/seccomp.json`.
10As a result, the ctr_seccomp.bats test will fail unless this file is manually added.
11
12### Steps to add seccomp.json:
13- Manually create/copy the required JSON file.
14- Set the `CONTAINER_SECCOMP_PROFILE` environment variable to point to the file's location.
15
16## 2. Runtime Dependencies (RDEPENDS)
17
18The ptest suite requires several dependencies. As of the initial implementation, the runtime dependencies are defined as follows:
19
20```bash
21RDEPENDS:${PN}-ptest += " \
22 bash \
23 bats \
24 cni \
25 crictl \
26 coreutils \
27 dbus-daemon-proxy \
28 iproute2 \
29 util-linux-unshare \
30 jq \
31 slirp4netns \
32 parallel \
33 podman \
34"
35```
36### Explanation of Dependencies:
37- **bash / bats**: The ptest suite is written using BATS and requires support from Bash.
38- **cni / crictl / podman**: Tools for testing container creation, runtime, and networking, directly invoked by the tests.
39- **jq**: Used in test scripts to create or manipulate JSON files.
40- **iproute2 / slirp4netns**: Networking utilities required for validating network-related functionalities.
41- **coreutils / dbus-daemon-proxy / util-linux-unshare**: Additional utilities supporting various test cases.
42- **paralle**: bats using "parallel" to execute test in serial.
43
44## 3. Testing Log (Baseline Reference)
45
46A summary of the test results is provided below for baseline reference:
47
48- **PASS**: 317 tests
49- **FAIL**: 33 tests
50- **SKIP**: 32 tests
51
52#### Full Log Example:
53Below is an excerpt from a typical ptest log:
54```bash
55root@intel-x86-64:~# ptest-runner cri-o -t 1000
56START: ptest-runner
572024-11-23T14:50
58BEGIN: /usr/lib64/cri-o/ptest
59SKIP: 1 apparmor tests (in sequence) # skip apparmor not enabled
60PASS: 2 no CDI errors, create ctr without CDI devices
61PASS: 3 no CDI errors, create ctr with CDI devices
62PASS: 4 no CDI errors, create ctr with annotated CDI devices
63PASS: 5 no CDI errors, create ctr with duplicate annotated CDI devices
64PASS: 6 no CDI errors, fail to create ctr with unresolvable CDI devices
65PASS: 7 no CDI errors, fail to create ctr with unresolvable annotated CDI devices
66PASS: 8 CDI registry refresh
67PASS: 9 CDI registry refresh, annotated CDI devices
68PASS: 10 reload CRI-O CDI parameters
69PASS: 11 reload CRI-O CDI parameters, with annotated CDI devices
70PASS: 12 CDI with errors, create ctr without CDI devices
71PASS: 13 CDI with errors, create ctr with (unaffected) CDI devices
72PASS: 14 CDI with errors, create ctr with (unaffected) annotated CDI devices
73PASS: 15 pids limit
74PASS: 16 conmon pod cgroup
75PASS: 17 conmon custom cgroup
76PASS: 18 conmon custom cgroup with no infra container
77SKIP: 19 conmonrs custom cgroup with no infra container # skip not supported for conmon
78SKIP: 20 ctr with swap should be configured # skip swap not enabled
79SKIP: 21 ctr with swap should fail when swap is lower # skip swap not enabled
80PASS: 22 ctr swap only configured if enabled
81SKIP: 23 ctr with swap should succeed when swap is unlimited # skip swap not enabled
82PASS: 24 cgroupv2 unified support
83SKIP: 25 cpu-quota.crio.io can disable quota # skip node must be configured with cgroupv1 for this test
84SKIP: 26 checkpoint and restore one container into a new pod (drop infra:true) # skip CRIU check failed
85SKIP: 27 checkpoint and restore one container into a new pod (drop infra:false) # skip CRIU check failed
86SKIP: 28 checkpoint and restore one container into a new pod using --export to OCI image # skip CRIU check failed
87SKIP: 29 checkpoint and restore one container into a new pod using --export to OCI image using repoDigest # skip CRIU check failed
88SKIP: 30 checkpoint and restore one container into a new pod with a new name # skip CRIU check failed
89PASS: 31 crio commands
90PASS: 32 invalid ulimits
91PASS: 33 invalid devices
92PASS: 34 invalid metrics port
93PASS: 35 invalid log max
94PASS: 36 log max boundary testing
95PASS: 37 default config should be empty
96PASS: 38 config dir should succeed
97PASS: 39 config dir should fail with invalid option
98PASS: 40 config dir should fail with invalid evented_pleg option
99PASS: 41 choose different default runtime should succeed
100PASS: 42 runc not existing when default_runtime changed should succeed
101PASS: 43 retain default runtime should succeed
102PASS: 44 monitor fields should be translated
103PASS: 45 handle nil workloads
104PASS: 46 config dir should fail with invalid disable_hostport_mapping option
105SKIP: 47 conmonrs is used # skip not using conmonrs
106SKIP: 48 test cpu load balancing # skip not yet supported on cgroup2
107SKIP: 49 test cpu load balance disabled on manual stop # skip not yet supported on cgroup2
108SKIP: 50 test cpu load balance disabled on container exit # skip not yet supported on cgroup2
109PASS: 51 container memory metrics
110SKIP: 52 container memory cgroupv1-specific metrics # skip
111PASS: 53 storage directory check should find no issues
112PASS: 54 storage directory check should find errors
113PASS: 55 storage directory check should repair errors
114PASS: 56 storage directory check should wipe everything on repair errors
115PASS: 57 remove containers and images when remove both
116PASS: 58 remove containers when remove temporary
117PASS: 59 clear neither when remove persist
118PASS: 60 don't clear podman containers
119PASS: 61 clear everything when shutdown file not found
120PASS: 62 clear podman containers when shutdown file not found
121PASS: 63 fail to clear podman containers when shutdown file not found but container still running
122PASS: 64 don't clear containers on a forced restart of crio
123PASS: 65 don't clear containers if clean shutdown supported file not present
124PASS: 66 internal_wipe remove containers and images when remove both
125PASS: 67 internal_wipe remove containers when remove temporary and node reboots
126PASS: 68 internal_wipe remove containers when remove temporary
127PASS: 69 internal_wipe clear both when remove persist
128PASS: 70 internal_wipe don't clear podman containers
129PASS: 71 internal_wipe don't clear containers on a forced restart of crio
130PASS: 72 internal_wipe eventually cleans network on forced restart of crio if network is slow to come up
131PASS: 73 clean up image if corrupted on server restore
132PASS: 74 recover from badly corrupted storage directory
133SKIP: 75 run the critest suite # skip critest because RUN_CRITEST is not set
134PASS: 76 ctr not found correct error message
135PASS: 77 ctr termination reason Completed
136PASS: 78 ctr termination reason Error
137PASS: 79 ulimits
138PASS: 80 ctr remove
139PASS: 81 ctr lifecycle
140PASS: 82 ctr pod lifecycle with evented pleg enabled
141FAIL: 83 ctr logging
142PASS: 84 ctr log cleaned up if container create failed
143PASS: 85 ctr journald logging
144PASS: 86 ctr logging [tty=true]
145FAIL: 87 ctr log max
146FAIL: 88 ctr log max with default value
147FAIL: 89 ctr log max with minimum value
148FAIL: 90 ctr partial line logging
149PASS: 91 ctrs status for a pod
150PASS: 92 ctr list filtering
151PASS: 93 ctr list label filtering
152PASS: 94 ctr metadata in list & status
153PASS: 95 ctr execsync conflicting with conmon flags parsing
154PASS: 96 ctr execsync
155PASS: 97 ctr execsync should not overwrite initial spec args
156PASS: 98 ctr execsync should succeed if container has a terminal
157PASS: 99 ctr execsync should cap output
158PASS: 100 ctr exec{,sync} should be cancelled when container is stopped
159PASS: 101 ctr device add
160PASS: 102 privileged ctr device add
161PASS: 103 privileged ctr add duplicate device as host
162PASS: 104 ctr hostname env
163PASS: 105 ctr execsync failure
164PASS: 106 ctr execsync exit code
165PASS: 107 ctr execsync std{out,err}
166PASS: 108 ctr stop idempotent
167PASS: 109 ctr caps drop
168PASS: 110 ctr with default list of capabilities from crio.conf
169PASS: 111 ctr with list of capabilities given by user in crio.conf
170PASS: 112 ctr with add_inheritable_capabilities has inheritable capabilities
171PASS: 113 ctr /etc/resolv.conf rw/ro mode
172PASS: 114 ctr create with non-existent command
173PASS: 115 ctr create with non-existent command [tty]
174PASS: 116 ctr update resources
175PASS: 117 ctr correctly setup working directory
176PASS: 118 ctr execsync conflicting with conmon env
177PASS: 119 ctr resources
178PASS: 120 ctr with non-root user has no effective capabilities
179PASS: 121 ctr has gid in supplemental groups
180PASS: 122 ctr has gid in supplemental groups with Merge policy
181PASS: 123 ctr has only specified gid in supplemental groups with Strict policy
182PASS: 124 ctr with low memory configured should not be created
183PASS: 125 privileged ctr -- check for rw mounts
184PASS: 126 annotations passed through
185PASS: 127 ctr with default_env set in configuration
186PASS: 128 ctr with absent mount that should be rejected
187PASS: 129 ctr that mounts container storage as shared should keep shared
188PASS: 130 ctr that mounts container storage as private should not be private
189PASS: 131 ctr that mounts container storage as read-only option but not recursively
190SKIP: 132 ctr that mounts container storage as recursively read-only # skip requires crictl version "1.30" or newer
191SKIP: 133 ctr that fails to mount container storage as recursively read-only without readonly option # skip requires crictl version "1.30" or newer
192SKIP: 134 ctr that fails to mount container storage as recursively read-only without private propagation # skip requires crictl version "1.30" or newer
193PASS: 135 ctr has containerenv
194PASS: 136 ctr stop timeouts should decrease
195PASS: 137 ctr with node level pid namespace should not leak children
196PASS: 138 ctr HOME env newline invalid
197PASS: 139 ctr log linking
198PASS: 140 ctr stop loop kill retry attempts
199PASS: 141 ctr multiple stop calls
200PASS: 142 pause/unpause ctr with right ctr id
201PASS: 143 pause ctr with invalid ctr id
202PASS: 144 pause ctr with already paused ctr
203PASS: 145 unpause ctr with right ctr id with running ctr
204PASS: 146 unpause ctr with invalid ctr id
205PASS: 147 remove paused ctr
206FAIL: 148 ctr seccomp profiles unconfined
207FAIL: 149 ctr seccomp profiles runtime/default
208FAIL: 150 ctr seccomp profiles wrong profile name
209FAIL: 151 ctr seccomp profiles localhost profile name
210FAIL: 152 ctr seccomp overrides unconfined profile with runtime/default when overridden
211FAIL: 153 ctr seccomp profiles runtime/default block unshare
212SKIP: 154 ctr_userns run container # skip userns testing not enabled
213PASS: 155 bind secrets mounts to container
214PASS: 156 default mounts correctly sorted with other mounts
215PASS: 157 additional devices support
216PASS: 158 additional devices permissions
217PASS: 159 annotation devices support
218PASS: 160 annotation should not be processed if not allowed
219PASS: 161 annotation should override configured additional_devices
220PASS: 162 annotation should not be processed if not allowed in allowed_devices
221PASS: 163 annotation should configure multiple devices
222PASS: 164 annotation should fail if one device is invalid
223PASS: 165 test infra ctr dropped
224PASS: 166 test infra ctr not dropped
225PASS: 167 test infra ctr dropped status
226PASS: 168 pod test hooks
227PASS: 169 run container in pod with image ID
228PASS: 170 container status when created by image ID
229PASS: 171 container status when created by image tagged reference
230PASS: 172 container status when created by image canonical reference
231PASS: 173 container status when created by image list canonical reference
232PASS: 174 image pull and list
233PASS: 175 image pull and list using imagestore
234SKIP: 176 image pull with signature # skip registry has some issues
235PASS: 177 image pull and list by tag and ID
236PASS: 178 image pull and list by digest and ID
237PASS: 179 image pull and list by manifest list digest
238PASS: 180 image pull and list by manifest list tag
239PASS: 181 image pull and list by manifest list and individual digest
240PASS: 182 image pull and list by individual and manifest list digest
241PASS: 183 image list with filter
242PASS: 184 image list/remove
243PASS: 185 image status/remove
244SKIP: 186 run container in pod with crun-wasm enabled # skip crun-wasm not installed or runtime type is VM
245PASS: 187 check if image is pinned appropriately
246PASS: 188 run container in pod with timezone configured
247PASS: 189 run container in pod with local timezone
248PASS: 190 run container with memory_limit_in_bytes -1
249PASS: 191 run container with memory_limit_in_bytes 12.5MiB
250PASS: 192 run container with container_min_memory 17.5MiB
251PASS: 193 run container with container_min_memory 5.5MiB
252PASS: 194 run container with empty container_min_memory
253PASS: 195 image remove with multiple names, by name
254PASS: 196 image remove with multiple names, by ID
255PASS: 197 image volume ignore
256PASS: 198 image volume bind
257PASS: 199 image volume user mkdir
258PASS: 200 image fs info with default settings should return matching container_filesystem and image_filesystem
259PASS: 201 image fs info with imagestore set should return different filesystems
260PASS: 202 test infra ctr cpuset
261PASS: 203 info inspect
262PASS: 204 ctr inspect
263PASS: 205 pod inspect when dropping infra
264PASS: 206 ctr inspect not found
265PASS: 207 inspect image should succeed contain all necessary information
266SKIP: 208 irqbalance tests (in sequence) # skip irqbalance not found.
267SKIP: 209 container run with kata should have containerd-shim-kata-v2 process running # skip Not
268PASS: 210 metrics with default host and port
269FAIL: 211 metrics with custom host using localhost and random port
270FAIL: 212 secure metrics with random port
271FAIL: 213 secure metrics with random port and missing cert/key
272PASS: 214 pid namespace mode pod test
273PASS: 215 pid namespace mode target test
274PASS: 216 KUBENSMNT mount namespace
275PASS: 217 ensure correct hostname
276PASS: 218 ensure correct hostname for hostnetwork:true
277PASS: 219 Check for valid pod netns CIDR
278PASS: 220 Ensure correct CNI plugin namespace/name/container-id arguments
279SKIP: 221 Connect to pod hostport from the host # skip node configured with cgroupv2 flakes this test sometimes
280PASS: 222 Clean up network if pod sandbox fails
281PASS: 223 Clean up network if pod sandbox fails after plugin success
282PASS: 224 Clean up network if pod sandbox gets killed
283PASS: 225 Ping pod from the host / another pod
284PASS: 226 run NRI PluginRegistration test
285PASS: 227 run NRI PluginSynchronization test
286PASS: 228 run NRI PodEvents test
287PASS: 229 run NRI ContainerEvents test
288PASS: 230 run NRI MountInjection test
289PASS: 231 run NRI EnvironmentInjection test
290PASS: 232 run NRI AnnotationInjection test
291PASS: 233 run NRI DeviceInjection test
292PASS: 234 run NRI CpusetAdjustment test
293PASS: 235 run NRI MemsetAdjustment test
294PASS: 236 run NRI CpusetAdjustmentUpdate test
295PASS: 237 run NRI MemsetAdjustmentUpdate test
296SKIP: 238 OCI image volume mount lifecycle # skip requires crictl version "1.31" or newer
297PASS: 239 pod release name on remove
298PASS: 240 pod remove
299PASS: 241 pod stop ignores not found sandboxes
300PASS: 242 pod list filtering
301PASS: 243 pod metadata in list & status
302PASS: 244 pass pod sysctls to runtime
303PASS: 245 pass pod sysctls to runtime when in userns
304SKIP: 246 disable crypto.fips_enabled when FIPS_DISABLE is set # skip The directory /proc/sys/crypto does not exist on this host.
305PASS: 247 fail to pass pod sysctls to runtime if invalid spaces
306PASS: 248 fail to pass pod sysctl to runtime if invalid value
307PASS: 249 skip pod sysctls to runtime if host
308PASS: 250 pod stop idempotent
309PASS: 251 pod remove idempotent
310PASS: 252 pod stop idempotent with ctrs already stopped
311PASS: 253 restart crio and still get pod status
312PASS: 254 invalid systemd cgroup_parent fail
313PASS: 255 systemd cgroup_parent correctly set
314PASS: 256 kubernetes pod terminationGracePeriod passthru
315PASS: 257 pod pause image matches configured image in crio.conf
316PASS: 258 pod stop cleans up all namespaces
317PASS: 259 pod with the correct etc folder ownership
318PASS: 260 verify RunAsGroup in container
319PASS: 261 single cni plugin with pod annotations capability enabled
320PASS: 262 single cni plugin with pod annotations capability disabled
321PASS: 263 pod annotations capability for chained cni plugins
322PASS: 264 accept unsigned image with default policy
323PASS: 265 deny unsigned image with restrictive policy
324PASS: 266 accept signed image with default policy
325FAIL: 267 accept signed image with restrictive policy
326PASS: 268 accept unsigned image with not existing namespace policy
327PASS: 269 accept unsigned image with higher priority namespace policy
328PASS: 270 deny unsigned image with higher priority namespace policy
329FAIL: 271 accept signed image with higher priority namespace policy
330PASS: 272 pprof
331PASS: 273 pprof over unix socket
332PASS: 274 reload config should succeed
333PASS: 275 reload config should succeed with 'log_level'
334PASS: 276 reload config should fail with 'log_level' if invalid
335PASS: 277 reload config should fail with if config is malformed
336PASS: 278 reload config should succeed with 'pause_image'
337PASS: 279 reload config should succeed with 'pause_command'
338PASS: 280 reload config should succeed with 'pause_image_auth_file'
339PASS: 281 reload config should fail with non existing 'pause_image_auth_file'
340PASS: 282 reload config should succeed with 'log_filter'
341PASS: 283 reload config should fail with invalid 'log_filter'
342PASS: 284 reload config should succeed with 'decryption_keys_path'
343PASS: 285 reload config should succeed with 'seccomp_profile'
344FAIL: 286 reload config should not fail with invalid 'seccomp_profile'
345SKIP: 287 reload config should succeed with 'apparmor_profile' # skip apparmor not enabled
346SKIP: 288 reload config should fail with invalid 'apparmor_profile' # skip apparmor not enabled
347PASS: 289 reload config should add new runtime
348PASS: 290 reload config should update 'pinned_images'
349PASS: 291 reload config should update 'pinned_images' and only 'pause_image' is pinned
350PASS: 292 reload config should update 'pause_image' and it becomes 'pinned_images'
351PASS: 293 reload config should remove pinned images when an empty list is provided
352PASS: 294 reload system registries should succeed
353PASS: 295 reload system registries should succeed with new registry
354PASS: 296 reload system registries should fail on invalid syntax in file
355PASS: 297 system registries should succeed with new registry without reload
356PASS: 298 system registries should fail on invalid syntax in file without reload
357PASS: 299 system handles burst of configuration changes without excessive reloads
358PASS: 300 system handles duplicate events for the same file
359PASS: 301 crio restore
360PASS: 302 crio restore with pod stopped
361PASS: 303 crio restore with bad state and pod stopped
362PASS: 304 crio restore with bad state and ctr stopped
363PASS: 305 crio restore with bad state and ctr removed
364PASS: 306 crio restore with bad state and pod removed
365PASS: 307 crio restore with bad state
366PASS: 308 crio restore with missing config.json
367PASS: 309 crio restore first not managing then managing
368PASS: 310 crio restore first managing then not managing
369PASS: 311 crio restore changing managing dir
370PASS: 312 crio restore upon entering KUBENSMNT
371PASS: 313 crio restore upon exiting KUBENSMNT
372PASS: 314 crio restore volumes for containers
373PASS: 315 crictl runtimeversion
374PASS: 316 if fs.may_detach_mounts is set
375FAIL: 317 seccomp notifier with runtime/default
376FAIL: 318 seccomp notifier with runtime/default but not stop
377FAIL: 319 seccomp notifier with custom profile
378FAIL: 320 seccomp notifier should not work if annotation is not allowed
379FAIL: 321 seccomp OCI artifact with image annotation without suffix
380FAIL: 322 seccomp OCI artifact with image annotation for pod
381FAIL: 323 seccomp OCI artifact with image annotation for container
382PASS: 324 seccomp OCI artifact with image annotation but not allowed annotation on runtime config
383FAIL: 325 seccomp OCI artifact with image annotation and profile set to unconfined
384PASS: 326 seccomp OCI artifact with image annotation but set runtime default profile with higher priority
385FAIL: 327 seccomp OCI artifact with image annotation but set localhost profile with higher priority
386FAIL: 328 seccomp OCI artifact with pod annotation
387FAIL: 329 seccomp OCI artifact with container annotation
388PASS: 330 seccomp OCI artifact with bogus annotation
389PASS: 331 seccomp OCI artifact with missing artifact
390PASS: 332 selinux label level=s0 is sufficient
391SKIP: 333 selinux skips relabeling if TrySkipVolumeSELinuxLabel annotation is present # skip not enforcing
392SKIP: 334 selinux skips relabeling for super privileged container # skip not enforcing
393PASS: 335 ctr check shared /dev/shm
394PASS: 336 check /dev/shm is changed
395PASS: 337 check /dev/shm fails with incorrect values
396PASS: 338 stats
397PASS: 339 container stats
398PASS: 340 pod stats
399PASS: 341 status not should fail if no subcommand is provided
400PASS: 342 status should succeed to retrieve the config
401PASS: 343 status should fail to retrieve the config with invalid socket
402PASS: 344 status should succeed to retrieve the info
403PASS: 345 status should fail to retrieve the info with invalid socket
404PASS: 346 succeed to retrieve the container info
405PASS: 347 should fail to retrieve the container info without ID
406PASS: 348 should fail to retrieve the container with invalid socket
407PASS: 349 should not clean up pod after timeout
408FAIL: 350 emit metric when sandbox is re-requested
409PASS: 351 should not clean up container after timeout
410PASS: 352 should clean up pod after timeout if request changes
411PASS: 353 should clean up container after timeout if request changes
412PASS: 354 should clean up pod after timeout if not re-requested
413PASS: 355 should not wait for actual duplicate pod request
414PASS: 356 should clean up container after timeout if not re-requested
415FAIL: 357 emit metric when container is re-requested
416PASS: 358 should not be able to operate on a timed out pod
417PASS: 359 should not be able to operate on a timed out container
418PASS: 360 should not wait for actual duplicate container request
419PASS: 361 check umask is changed
420FAIL: 362 userns annotation auto should succeed
421PASS: 363 userns annotation auto with keep-id and map-to-root should fail
422FAIL: 364 userns annotation auto should map host run_as_user
423FAIL: 365 version
424PASS: 366 version -j
425PASS: 367 test workload gets configured to defaults
426PASS: 368 test workload can override defaults
427PASS: 369 test workload should not be set if not defaulted or specified
428PASS: 370 test workload should not be set if annotation not specified
429PASS: 371 test workload pod gets configured to defaults
430PASS: 372 test workload can override pod defaults
431PASS: 373 test workload pod should not be set if not defaulted or specified
432PASS: 374 test workload pod should not be set if annotation not specified
433PASS: 375 test workload pod should override infra_ctr_cpuset option
434PASS: 376 test workload allowed annotation should not work if not configured
435PASS: 377 test workload allowed annotation appended with runtime
436PASS: 378 test workload allowed annotation works for pod
437PASS: 379 test resource cleanup on bad annotation contents
438PASS: 380 test workload pod should not be set if annotation not specified even if prefix
439PASS: 381 test special runtime annotations not allowed
440PASS: 382 test special runtime annotations allowed
441
442real 9m12.847s
443user 42m18.946s
444sys 8m15.064s
445DURATION: 553
446END: /usr/lib64/cri-o/ptest
4472024-11-23T14:59
448STOP: ptest-runner
449TOTAL: 1 FAIL: 0
450root@intel-x86-64:~#
451```
452
diff --git a/recipes-containers/cri-o/cri-o_git.bb b/recipes-containers/cri-o/cri-o_git.bb
index efc86fbe..f04c4feb 100644
--- a/recipes-containers/cri-o/cri-o_git.bb
+++ b/recipes-containers/cri-o/cri-o_git.bb
@@ -17,7 +17,9 @@ At a high level, we expect the scope of cri-o to be restricted to the following
17SRCREV_cri-o = "20c06a19cb395445620c31730c0f1a0a1922eaae" 17SRCREV_cri-o = "20c06a19cb395445620c31730c0f1a0a1922eaae"
18SRC_URI = "\ 18SRC_URI = "\
19 git://github.com/kubernetes-sigs/cri-o.git;branch=release-1.31;name=cri-o;protocol=https;destsuffix=${GO_SRCURI_DESTSUFFIX} \ 19 git://github.com/kubernetes-sigs/cri-o.git;branch=release-1.31;name=cri-o;protocol=https;destsuffix=${GO_SRCURI_DESTSUFFIX} \
20 file://0001-Add-trimpath-to-build-nri.test.patch \
20 file://crio.conf \ 21 file://crio.conf \
22 file://run-ptest \
21 " 23 "
22 24
23# Apache-2.0 for docker 25# Apache-2.0 for docker
@@ -28,7 +30,7 @@ GO_IMPORT = "import"
28 30
29PV = "1.31.0+git${SRCREV_cri-o}" 31PV = "1.31.0+git${SRCREV_cri-o}"
30 32
31inherit features_check 33inherit features_check ptest
32REQUIRED_DISTRO_FEATURES ?= "seccomp" 34REQUIRED_DISTRO_FEATURES ?= "seccomp"
33 35
34DEPENDS = " \ 36DEPENDS = " \
@@ -69,6 +71,13 @@ do_compile() {
69 oe_runmake binaries 71 oe_runmake binaries
70} 72}
71 73
74do_compile_ptest() {
75 set +e
76
77 cd ${S}/src/import
78
79 oe_runmake test-binaries
80}
72SYSTEMD_PACKAGES = "${@bb.utils.contains('DISTRO_FEATURES','systemd','${PN}','',d)}" 81SYSTEMD_PACKAGES = "${@bb.utils.contains('DISTRO_FEATURES','systemd','${PN}','',d)}"
73SYSTEMD_SERVICE:${PN} = "${@bb.utils.contains('DISTRO_FEATURES','systemd','crio.service','',d)}" 82SYSTEMD_SERVICE:${PN} = "${@bb.utils.contains('DISTRO_FEATURES','systemd','crio.service','',d)}"
74SYSTEMD_AUTO_ENABLE:${PN} = "enable" 83SYSTEMD_AUTO_ENABLE:${PN} = "enable"
@@ -100,6 +109,12 @@ do_install() {
100 install -d ${D}${localstatedir}/lib/crio 109 install -d ${D}${localstatedir}/lib/crio
101} 110}
102 111
112do_install_ptest() {
113 install -d ${D}${PTEST_PATH}/test
114 install -d ${D}${PTEST_PATH}/bin
115 cp -rf ${S}/src/import/test ${D}${PTEST_PATH}
116 cp -rf ${S}/src/import/bin ${D}${PTEST_PATH}
117}
103FILES:${PN}-config = "${sysconfdir}/crio/config/*" 118FILES:${PN}-config = "${sysconfdir}/crio/config/*"
104FILES:${PN} += "${systemd_unitdir}/system/*" 119FILES:${PN} += "${systemd_unitdir}/system/*"
105FILES:${PN} += "/usr/local/bin/*" 120FILES:${PN} += "/usr/local/bin/*"
@@ -109,7 +124,21 @@ FILES:${PN} += "/usr/share/containers/oci/hooks.d"
109ALLOW_EMPTY:${PN} = "1" 124ALLOW_EMPTY:${PN} = "1"
110 125
111INSANE_SKIP:${PN} += "ldflags already-stripped textrel" 126INSANE_SKIP:${PN} += "ldflags already-stripped textrel"
127INSANE_SKIP:${PN}-ptest += "textrel"
112 128
113deltask compile_ptest_base 129RDEPENDS:${PN}-ptest += " \
130 bash \
131 bats \
132 cni \
133 crictl \
134 coreutils \
135 dbus-daemon-proxy \
136 iproute2 \
137 util-linux-unshare \
138 jq \
139 slirp4netns \
140 parallel \
141 podman \
142"
114 143
115COMPATIBLE_HOST = "^(?!(qemu)?mips).*" 144COMPATIBLE_HOST = "^(?!(qemu)?mips).*"
diff --git a/recipes-containers/cri-o/files/0001-Add-trimpath-to-build-nri.test.patch b/recipes-containers/cri-o/files/0001-Add-trimpath-to-build-nri.test.patch
new file mode 100644
index 00000000..c6be41f0
--- /dev/null
+++ b/recipes-containers/cri-o/files/0001-Add-trimpath-to-build-nri.test.patch
@@ -0,0 +1,31 @@
1From 0bf230f59d211044e7993543e010b0d7f9dcead3 Mon Sep 17 00:00:00 2001
2From: Peng Zhang <peng.zhang1.cn@windriver.com>
3Date: Fri, 25 Oct 2024 10:42:02 +0800
4Subject: [PATCH] Add --trimpath to build nri.test
5
6when build test-binary, TMPDIR[buildpaths] error found in nri.test
7to fix this error, add "--trimpath" option to build nri.test.
8
9Upstream-Status: Inappropriate [oe specific]
10
11Signed-off-by: Peng Zhang <peng.zhang1.cn@windriver.com>
12---
13 Makefile | 2 +-
14 1 file changed, 1 insertion(+), 1 deletion(-)
15
16Index: cri-o-1.31.0+git20c06a19cb395445620c31730c0f1a0a1922eaae/src/import/Makefile
17===================================================================
18--- cri-o-1.31.0+git20c06a19cb395445620c31730c0f1a0a1922eaae.orig/src/import/Makefile
19+++ cri-o-1.31.0+git20c06a19cb395445620c31730c0f1a0a1922eaae/src/import/Makefile
20@@ -169,7 +169,7 @@ test/checkcriu/checkcriu: $(GO_FILES)
21 $(GO_BUILD) $(GCFLAGS) $(GO_LDFLAGS) -tags "$(BUILDTAGS)" -o $@ ./test/checkcriu
22
23 test/nri/nri.test: $(wildcard test/nri/*.go)
24- $(GO) test --tags "test $(BUILDTAGS)" -c ./test/nri -o $@
25+ $(GO) test --tags "test $(BUILDTAGS)" -c ./test/nri -o $@ ${TRIMPATH}
26
27 bin/crio: $(GO_FILES)
28 $(GO_BUILD) $(GCFLAGS) $(GO_LDFLAGS) -tags "$(BUILDTAGS)" -o $@ ./cmd/crio
29--
302.34.1
31
diff --git a/recipes-containers/cri-o/files/run-ptest b/recipes-containers/cri-o/files/run-ptest
new file mode 100644
index 00000000..62abe959
--- /dev/null
+++ b/recipes-containers/cri-o/files/run-ptest
@@ -0,0 +1,11 @@
1#!/bin/sh
2
3./test/test_runner.sh | while IFS= read -r line; do
4 if [[ $line =~ ^not\ ok ]]; then
5 echo "FAIL: ${line#not ok }"
6 elif [[ $line =~ ^ok && ! $line =~ \#\ skip ]]; then
7 echo "PASS: ${line#ok }"
8 elif [[ $line =~ ^ok.*#\ skip ]]; then
9 echo "SKIP: ${line#ok }"
10 fi
11done