|
1 | 1 | setup() {
|
2 | 2 | cd /work/tests/image
|
3 |
| - mkdir -p images |
4 |
| - mkdir -p nginx/logs |
5 | 3 | }
|
6 | 4 |
|
7 | 5 | @test "image: pack" {
|
8 |
| - rm -rf images/image.* |
| 6 | + mkdir -p .vagga/images |
9 | 7 |
|
10 |
| - vagga _pack_image alpine -f images/image.tar |
11 |
| - vagga _pack_image alpine -f images/image.tar.gz -z |
12 |
| - vagga _pack_image alpine -f images/image.tar.bz2 -j |
13 |
| - vagga _pack_image alpine -f images/image.tar.xz -J |
14 |
| - run file images/image.tar |
| 8 | + vagga _pack_image image -f .vagga/images/image.tar |
| 9 | + vagga _pack_image image -f .vagga/images/image.tar.gz -z |
| 10 | + vagga _pack_image image -f .vagga/images/image.tar.bz2 -j |
| 11 | + vagga _pack_image image -f .vagga/images/image.tar.xz -J |
| 12 | + run file .vagga/images/image.tar |
15 | 13 | printf "%s\n" "${lines[@]}"
|
| 14 | + image_tar_hashsum=$(sha256sum .vagga/images/image.tar | cut -d " " -f 1) |
16 | 15 | [[ $output = *"image.tar: POSIX tar archive (GNU)"* ]]
|
17 |
| - run file images/image.tar.gz |
| 16 | + run tar -tf .vagga/images/image.tar |
| 17 | + [[ $output = *"/var/lib/question.txt"* ]] |
| 18 | + run file .vagga/images/image.tar.gz |
18 | 19 | printf "%s\n" "${lines[@]}"
|
| 20 | + image_targz_hashsum=$(sha256sum .vagga/images/image.tar.gz | cut -d " " -f 1) |
19 | 21 | [[ $output = *"image.tar.gz: gzip compressed data"* ]]
|
20 |
| - run file images/image.tar.bz2 |
| 22 | + run file .vagga/images/image.tar.bz2 |
21 | 23 | printf "%s\n" "${lines[@]}"
|
22 | 24 | [[ $output = *"image.tar.bz2: bzip2 compressed data"* ]]
|
23 |
| - run file images/image.tar.xz |
| 25 | + run file .vagga/images/image.tar.xz |
24 | 26 | printf "%s\n" "${lines[@]}"
|
25 | 27 | [[ $output = *"image.tar.xz: XZ compressed data"* ]]
|
26 | 28 |
|
27 |
| - vagga _pack_image alpine > images/image.tar |
28 |
| - vagga _pack_image alpine -z > images/image.tgz |
29 |
| - run file images/image.tar |
| 29 | + vagga _pack_image image > .vagga/images/image-stdout.tar |
| 30 | + vagga _pack_image image -z > .vagga/images/image-stdout.tgz |
| 31 | + run file .vagga/images/image-stdout.tar |
30 | 32 | printf "%s\n" "${lines[@]}"
|
31 |
| - [[ $output = *"image.tar: POSIX tar archive (GNU)"* ]] |
32 |
| - run file images/image.tgz |
| 33 | + [[ $output = *"image-stdout.tar: POSIX tar archive (GNU)"* ]] |
| 34 | + [[ $(sha256sum .vagga/images/image-stdout.tar | cut -d " " -f 1) = $image_tar_hashsum ]] |
| 35 | + run file .vagga/images/image-stdout.tgz |
33 | 36 | printf "%s\n" "${lines[@]}"
|
34 |
| - [[ $output = *"image.tgz: gzip compressed data"* ]] |
35 |
| -} |
36 |
| - |
37 |
| -@test "image: missing" { |
38 |
| - rm -rf .vagga/.roots/alpine.375a2970 |
39 |
| - |
40 |
| - run vagga _build alpine |
41 |
| - printf "%s\n" "${lines[@]}" |
42 |
| - [[ $status = 0 ]] |
43 |
| - link=$(readlink .vagga/alpine) |
44 |
| - [[ $link = ".roots/alpine.375a2970/root" ]] |
45 |
| - [[ $output = *"Will clean and build it locally"* ]] |
| 37 | + [[ $output = *"image-stdout.tgz: gzip compressed data"* ]] |
| 38 | + [[ $(sha256sum .vagga/images/image-stdout.tgz | cut -d " " -f 1) = $image_targz_hashsum ]] |
46 | 39 | }
|
47 | 40 |
|
48 |
| -# TODO: Move the test inside a nested container |
49 | 41 | @test "image: push & pull" {
|
50 |
| - container_dir="alpine.375a2970" |
51 |
| - image_name="${container_dir}.tar.xz" |
| 42 | + container_name="image" |
| 43 | + container_dir="$container_name.fb9b6868" |
| 44 | + image_file_name="${container_dir}.tar.xz" |
52 | 45 |
|
53 |
| - rm -rf /work/tmp/cache/downloads/*-${image_name} |
| 46 | + vagga _build nginx |
| 47 | + vagga _build test-pull |
54 | 48 |
|
55 |
| - run vagga _build alpine |
56 |
| - printf "%s\n" "${lines[@]}" |
| 49 | + rm -rf .vagga/$container_name .vagga/.roots/$container_name.* |
| 50 | + run vagga _build $container_name |
57 | 51 | [[ $status = 0 ]]
|
58 |
| - link=$(readlink .vagga/alpine) |
59 |
| - [[ $link = ".roots/${container_dir}/root" ]] |
| 52 | + [[ $output = *"Will clean and build it locally"* ]] |
60 | 53 |
|
61 |
| - rm -rf nginx/nginx.pid |
62 |
| - rm -rf nginx/logs/* |
63 |
| - vagga _build nginx |
64 |
| - vagga nginx > /dev/null 2>&1 & |
65 |
| - nginx_pid=$! |
66 |
| - sleep 2 |
| 54 | + # Pack image to cache capsule's dependencies so then |
| 55 | + # we will be able to run test inside an isolated network environment |
| 56 | + run vagga pack-image |
| 57 | + [[ $status = 0 ]] |
67 | 58 |
|
68 |
| - run vagga _push_image alpine |
69 |
| - printf "%s\n" "${lines[@]}" |
| 59 | + run vagga --isolate-network test-push-and-pull $container_name |
| 60 | + [[ $status = 0 ]] |
70 | 61 |
|
71 |
| - run tail -n 1 nginx/logs/access.log |
72 |
| - printf "%s\n" "${lines[@]}" |
| 62 | + run cat .vagga/.volumes/nginx-logs/access.log |
73 | 63 | access_log_output=${output}
|
| 64 | + [[ ${access_log_output} = *"PUT /upload/images/${image_file_name} HTTP/1.1\" 201"* ]] |
| 65 | + [[ ${access_log_output} = *"GET /images/${image_file_name} HTTP/1.1\" 200"* ]] |
74 | 66 |
|
75 |
| - # test downloading from cache |
76 |
| - rm -rf .vagga/alpine |
77 |
| - rm -rf .vagga/.roots/${container_dir} |
78 |
| - run vagga _build alpine |
79 |
| - printf "%s\n" "${lines[@]}" |
80 |
| - build_status=${status} |
81 |
| - build_link=$(readlink .vagga/alpine) |
82 |
| - |
83 |
| - run vagga _run alpine sh -c "echo '100*24' | bc" |
84 |
| - printf "%s\n" "${lines[@]}" |
85 |
| - run_status=${status} |
86 |
| - run_lines=${lines} |
87 |
| - |
88 |
| - kill -TERM "${nginx_pid}" |
89 |
| - |
90 |
| - [[ ${access_log_output} = *"PUT /upload/images/${image_name} HTTP/1.1\" 201"* ]] |
| 67 | + [[ $(readlink .vagga/$container_name) = ".roots/${container_dir}/root" ]] |
91 | 68 |
|
92 |
| - [[ ${build_status} = 0 ]] |
93 |
| - [[ ${build_link} = ".roots/${container_dir}/root" ]] |
94 |
| - [[ ${run_status} -eq 0 ]] |
95 |
| - [[ ${run_lines[${#run_lines[@]}-1]} = "2400" ]] |
96 |
| - |
97 |
| - run tail -n 1 nginx/logs/access.log |
98 |
| - printf "%s\n" "${lines[@]}" |
99 |
| - [[ ${output} = *"GET /images/${image_name} HTTP/1.1\" 200"* ]] |
100 |
| - |
101 |
| - # check there is no image in local cache |
102 |
| - [[ $(ls -1 /work/tmp/cache/downloads/*-${image_name} | wc -l) = 0 ]] |
103 |
| - |
104 |
| - run vagga _run alpine stat -c "%U" /var/lib/nobody |
105 |
| - printf "%s\n" "${lines[@]}" |
106 |
| - [[ $output = "nobody" ]] |
107 |
| - run vagga _run alpine stat -c "%U" /var/lib/someone |
108 |
| - printf "%s\n" "${lines[@]}" |
109 |
| - [[ $output = "nobody" ]] |
| 69 | + run cat .vagga/image/var/lib/question.txt |
| 70 | + [[ $output = "To be or not to be?" ]] |
110 | 71 | }
|
0 commit comments