1
- #! /usr/ bin/env bats
1
+ #! /bin/bash
2
2
#
3
3
# Copyright (c) 2018 Intel Corporation
4
4
#
5
5
# SPDX-License-Identifier: Apache-2.0
6
6
7
- readonly rootfs_sh=" $BATS_TEST_DIRNAME /../rootfs-builder/rootfs.sh"
8
- readonly image_builder_sh=" $BATS_TEST_DIRNAME /../image-builder/image_builder.sh"
9
- readonly initrd_builder_sh=" $BATS_TEST_DIRNAME /../initrd-builder/initrd_builder.sh"
7
+ set -e
8
+
9
+ readonly script_dir=" $( dirname $( readlink -f $0 ) ) "
10
+
11
+ readonly rootfs_sh=" ${script_dir} /../rootfs-builder/rootfs.sh"
12
+ readonly image_builder_sh=" ${script_dir} /../image-builder/image_builder.sh"
13
+ readonly initrd_builder_sh=" ${script_dir} /../initrd-builder/initrd_builder.sh"
10
14
readonly tmp_dir=$( mktemp -t -d osbuilder-test.XXXXXXX)
11
15
readonly tmp_rootfs=" ${tmp_dir} /rootfs-osbuilder"
12
16
readonly images_dir=" ${tmp_dir} /images"
13
17
readonly osbuilder_file=" /var/lib/osbuilder/osbuilder.yaml"
14
18
readonly docker_image=" busybox"
15
19
readonly docker_config_file=" /etc/systemd/system/docker.service.d/kata-containers.conf"
16
20
readonly tests_repo=" github.com/kata-containers/tests"
17
- readonly tests_repo_dir=" $BATS_TEST_DIRNAME /../../tests"
21
+ readonly tests_repo_dir=" ${script_dir} /../../tests"
18
22
readonly mgr=" ${tests_repo_dir} /cmd/kata-manager/kata-manager.sh"
19
23
readonly RUNTIME=${RUNTIME:- kata-runtime}
20
24
21
25
# "docker build" does not work with a VM-based runtime
22
26
readonly docker_build_runtime=" runc"
23
27
28
+ exit_handler ()
29
+ {
30
+ if [ " $? " -eq 0 ]
31
+ then
32
+ # Rootfs and images are owned by root
33
+ sudo -E rm -rf " ${tmp_rootfs} "
34
+ sudo -E rm -rf " ${images_dir} "
35
+
36
+ rm -rf " ${tmp_dir} "
37
+
38
+ return
39
+ fi
40
+
41
+ # The test failed so dump what we can
42
+
43
+ info " AGENT_INIT: '${AGENT_INIT} '"
44
+
45
+ info " images:"
46
+ sudo -E ls -l " ${images_dir} " >&2
47
+
48
+ info " rootfs:"
49
+ sudo -E ls -l " ${tmp_rootfs} " >&2
50
+
51
+ info " local runtime config:"
52
+ cat /etc/kata-containers/configuration.toml >&2
53
+
54
+ info " main runtime config:"
55
+ cat /usr/share/defaults/kata-containers/configuration.toml >&2
56
+
57
+ info " collect script output:"
58
+ sudo -E kata-collect-data.sh >&2
59
+
60
+ info " processes:"
61
+ sudo -E ps -efwww | egrep " docker|kata" >&2
62
+ }
63
+
64
+ trap exit_handler EXIT ERR
65
+
66
+ die ()
67
+ {
68
+ msg=" $* "
69
+ echo " ERROR: $msg " >&2
70
+ exit 1
71
+ }
72
+
24
73
info ()
25
74
{
26
75
s=" $* "
@@ -31,6 +80,8 @@ set_runtime()
31
80
{
32
81
local name=" $1 "
33
82
83
+ [ -z " $name " ] && die " need name"
84
+
34
85
# Travis doesn't support VT-x
35
86
[ -n " $TRAVIS " ] && return
36
87
@@ -42,6 +93,7 @@ set_runtime()
42
93
43
94
setup ()
44
95
{
96
+ [ -z " $images_dir " ] && die " need images directory"
45
97
mkdir -p " ${images_dir} "
46
98
47
99
export USE_DOCKER=true
@@ -51,54 +103,21 @@ setup()
51
103
52
104
[ ! -d " ${tests_repo_dir} " ] && git clone " https://${tests_repo} " " ${tests_repo_dir} "
53
105
54
- chronic $mgr install-packages
106
+ chronic $mgr install-docker-system
55
107
chronic $mgr enable-debug
56
108
57
109
# Ensure "docker build" works
58
110
set_runtime " ${docker_build_runtime} "
59
111
}
60
112
61
- teardown ()
62
- {
63
- if [ " $BATS_ERROR_STATUS " -eq 0 ]
64
- then
65
- # Rootfs and images are owned by root
66
- sudo -E rm -rf " ${tmp_rootfs} "
67
- sudo -E rm -rf " ${images_dir} "
68
-
69
- rm -rf " ${tmp_dir} "
70
-
71
- return
72
- fi
73
-
74
- # The test failed so dump what we can
75
-
76
- info " AGENT_INIT: '${AGENT_INIT} '"
77
-
78
- info " images:"
79
- sudo -E ls -l " ${images_dir} " >&2
80
-
81
- info " rootfs:"
82
- sudo -E ls -l " ${tmp_rootfs} " >&2
83
-
84
- info " local runtime config:"
85
- cat /etc/kata-containers/configuration.toml >&2
86
-
87
- info " main runtime config:"
88
- cat /usr/share/defaults/kata-containers/configuration.toml >&2
89
-
90
- info " collect script output:"
91
- sudo -E kata-collect-data.sh >&2
92
-
93
- info " processes:"
94
- sudo -E ps -efwww | egrep " docker|kata" >&2
95
- }
96
-
97
113
build_rootfs ()
98
114
{
99
115
local distro=" $1 "
100
116
local rootfs=" $2 "
101
117
118
+ [ -z " $distro " ] && die " need distro"
119
+ [ -z " $rootfs " ] && die " need rootfs"
120
+
102
121
local full=" ${rootfs}${osbuilder_file} "
103
122
104
123
# clean up from any previous runs
@@ -118,6 +137,9 @@ build_image()
118
137
local file=" $1 "
119
138
local rootfs=" $2 "
120
139
140
+ [ -z " $file " ] && die " need file"
141
+ [ -z " $rootfs " ] && die " need rootfs"
142
+
121
143
sudo -E ${image_builder_sh} -o " ${file} " " ${rootfs} "
122
144
123
145
info " built image file '$file ' for rootfs '$rootfs ':"
@@ -129,6 +151,9 @@ build_initrd()
129
151
local file=" $1 "
130
152
local rootfs=" $2 "
131
153
154
+ [ -z " $file " ] && die " need file"
155
+ [ -z " $rootfs " ] && die " need rootfs"
156
+
132
157
sudo -E ${initrd_builder_sh} -o " ${file} " " ${rootfs} "
133
158
134
159
info " built initrd file '$file ' for rootfs '$rootfs ':"
@@ -156,6 +181,9 @@ install_image_create_container()
156
181
{
157
182
local file=" $1 "
158
183
184
+ [ -z " $file " ] && die " need file"
185
+ [ ! -e " $file " ] && die " file does not exist: $file "
186
+
159
187
# Travis doesn't support VT-x
160
188
[ -n " $TRAVIS " ] && return
161
189
@@ -168,6 +196,9 @@ install_initrd_create_container()
168
196
{
169
197
local file=" $1 "
170
198
199
+ [ -z " $file " ] && die " need file"
200
+ [ ! -e " $file " ] && die " file does not exist: $file "
201
+
171
202
# Travis doesn't support VT-x
172
203
[ -n " $TRAVIS " ] && return
173
204
@@ -182,6 +213,9 @@ handle_options()
182
213
local type=" $2 "
183
214
local options=" $3 "
184
215
216
+ [ -z " $distro " ] && die " need distro"
217
+ [ -z " $type " ] && die " need type"
218
+
185
219
local opt
186
220
local rootfs
187
221
@@ -241,7 +275,9 @@ create_and_run()
241
275
local image_options=" $2 "
242
276
local initrd_options=" $3 "
243
277
244
- [ -n " $distro " ]
278
+ [ -z " $distro " ] && die " need distro"
279
+ [ -z " $image_options " ] && die " need image options"
280
+ [ -z " $initrd_options " ] && die " need initrd options"
245
281
246
282
local opt
247
283
@@ -256,27 +292,72 @@ create_and_run()
256
292
fi
257
293
}
258
294
259
- @test " Can create and run fedora image" {
260
- create_and_run fedora " service" " no"
295
+ run_test ()
296
+ {
297
+ local -r name=" $1 "
298
+ local -r skip=" $2 "
299
+ local -r distro=" $3 "
300
+ local -r image_options=" $4 "
301
+ local -r initrd_options=" $5 "
302
+
303
+ [ -z " $name " ] && die " need name"
304
+ [ -z " $distro " ] && die " need distro"
305
+ [ -z " $image_options " ] && die " need image options"
306
+ [ -z " $initrd_options " ] && die " need initrd options"
307
+
308
+ [ -n " $skip " ] && info " Skipping test $name : $skip " && return
309
+
310
+ info " Running test: ${name} "
311
+
312
+ create_and_run " ${distro} " " ${image_options} " " ${initrd_options} "
261
313
}
262
314
263
- @test " Can create and run clearlinux image" {
264
- create_and_run clearlinux " service" " no"
315
+ test_fedora ()
316
+ {
317
+ local -r name=" Can create and run fedora image"
318
+ run_test " ${name} " " " " fedora" " service" " no"
265
319
}
266
320
267
- @test " Can create and run centos image" {
268
- create_and_run centos " service" " no"
321
+ test_clearlinux ()
322
+ {
323
+ local -r name=" Can create and run clearlinux image"
324
+
325
+ run_test " ${name} " " " " clearlinux" " service" " no"
269
326
}
270
327
271
- @test " Can create and run euleros image" {
272
- if [ " $TRAVIS " = true ]
273
- then
274
- skip " travis timeout, see: https://github.com/kata-containers/osbuilder/issues/46"
275
- fi
328
+ test_centos ()
329
+ {
330
+ local -r name=" Can create and run centos image"
331
+ run_test " ${name} " " " " centos" " service" " no"
332
+ }
333
+
334
+ test_euleros ()
335
+ {
336
+ local -r name=" Can create and run euleros image"
337
+
338
+ [ " $TRAVIS " = true ] && skip=" travis timeout, see: https://github.com/kata-containers/osbuilder/issues/46"
339
+
340
+ run_test " ${name} " " $skip " " euleros" " service" " no"
341
+ }
276
342
277
- create_and_run euleros " service" " no"
343
+ test_alpine ()
344
+ {
345
+ local -r name=" Can create and run alpine image"
346
+ run_test " ${name} " " " " alpine" " no" " init"
278
347
}
279
348
280
- @test " Can create and run alpine image" {
281
- create_and_run alpine " no" " init"
349
+ main ()
350
+ {
351
+ setup
352
+
353
+ test_fedora
354
+ test_clearlinux
355
+ test_centos
356
+ test_alpine
357
+
358
+ # Run last as EulerOS servers can be slow and we don't want to fail the
359
+ # previous tests.
360
+ test_euleros
282
361
}
362
+
363
+ main " $@ "
0 commit comments