...
1#!/usr/bin/env bash
2
3# Copyright 2018 The Kubernetes Authors.
4#
5# Licensed under the Apache License, Version 2.0 (the "License");
6# you may not use this file except in compliance with the License.
7# You may obtain a copy of the License at
8#
9# http://www.apache.org/licenses/LICENSE-2.0
10#
11# Unless required by applicable law or agreed to in writing, software
12# distributed under the License is distributed on an "AS IS" BASIS,
13# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14# See the License for the specific language governing permissions and
15# limitations under the License.
16
17set -o errexit
18set -o nounset
19set -o pipefail
20
21run_persistent_volumes_tests() {
22 set -o nounset
23 set -o errexit
24
25 create_and_use_new_namespace
26 kube::log::status "Testing persistent volumes"
27
28 ### Create and delete persistent volume examples
29 # Pre-condition: no persistent volumes currently exist
30 kube::test::get_object_assert pv "{{range.items}}{{${id_field:?}}}:{{end}}" ''
31 # Command
32 kubectl create -f test/fixtures/doc-yaml/user-guide/persistent-volumes/volumes/local-01.yaml "${kube_flags[@]:?}"
33 kube::test::get_object_assert pv "{{range.items}}{{${id_field:?}}}:{{end}}" 'pv0001:'
34 kubectl delete pv pv0001 "${kube_flags[@]:?}"
35 kubectl create -f test/fixtures/doc-yaml/user-guide/persistent-volumes/volumes/local-02.yaml "${kube_flags[@]:?}"
36 kube::test::get_object_assert pv "{{range.items}}{{${id_field:?}}}:{{end}}" 'pv0002:'
37 kubectl delete pv pv0002 "${kube_flags[@]:?}"
38 kubectl create -f test/fixtures/doc-yaml/user-guide/persistent-volumes/volumes/gce.yaml "${kube_flags[@]:?}"
39 kube::test::get_object_assert pv "{{range.items}}{{${id_field:?}}}:{{end}}" 'pv0003:'
40 # Describe command should respect the chunk size parameter
41 kube::test::describe_resource_chunk_size_assert persistentvolumes events
42 kubectl delete pv pv0003 "${kube_flags[@]:?}"
43 # Post-condition: no PVs
44 kube::test::get_object_assert pv "{{range.items}}{{${id_field:?}}}:{{end}}" ''
45
46 kubectl create -f test/fixtures/doc-yaml/user-guide/persistent-volumes/volumes/local-01.yaml "${kube_flags[@]}"
47 kube::test::get_object_assert pv "{{range.items}}{{$id_field}}:{{end}}" 'pv0001:'
48 output_message=$(kubectl delete pv -n test --all 2>&1 "${kube_flags[@]}")
49 kube::test::if_has_string "${output_message}" 'Warning: deleting cluster-scoped resources'
50 kube::test::if_has_string "${output_message}" 'persistentvolume "pv0001" deleted'
51 kube::test::get_object_assert pv "{{range.items}}{{$id_field}}:{{end}}" ''
52
53 set +o nounset
54 set +o errexit
55}
56
57run_persistent_volume_claims_tests() {
58 set -o nounset
59 set -o errexit
60
61 create_and_use_new_namespace
62 kube::log::status "Testing persistent volumes claims"
63
64 ### Create and delete persistent volume claim examples
65 # Pre-condition: no persistent volume claims currently exist
66 kube::test::get_object_assert pvc "{{range.items}}{{${id_field:?}}}:{{end}}" ''
67 # Command
68 kubectl create -f test/fixtures/doc-yaml/user-guide/persistent-volumes/claims/claim-01.yaml "${kube_flags[@]:?}"
69 kube::test::get_object_assert pvc "{{range.items}}{{${id_field:?}}}:{{end}}" 'myclaim-1:'
70 # Describe command should respect the chunk size parameter
71 kube::test::describe_resource_chunk_size_assert persistentvolumeclaims pods,events
72 kubectl delete pvc myclaim-1 "${kube_flags[@]:?}"
73
74 kubectl create -f test/fixtures/doc-yaml/user-guide/persistent-volumes/claims/claim-02.yaml "${kube_flags[@]:?}"
75 kube::test::get_object_assert pvc "{{range.items}}{{${id_field:?}}}:{{end}}" 'myclaim-2:'
76 kubectl delete pvc myclaim-2 "${kube_flags[@]:?}"
77
78 kubectl create -f test/fixtures/doc-yaml/user-guide/persistent-volumes/claims/claim-03.json "${kube_flags[@]:?}"
79 kube::test::get_object_assert pvc "{{range.items}}{{${id_field:?}}}:{{end}}" 'myclaim-3:'
80 kubectl delete pvc myclaim-3 "${kube_flags[@]:?}"
81 # Post-condition: no PVCs
82 kube::test::get_object_assert pvc "{{range.items}}{{${id_field:?}}}:{{end}}" ''
83
84 set +o nounset
85 set +o errexit
86}
87
88run_storage_class_tests() {
89 set -o nounset
90 set -o errexit
91
92 kube::log::status "Testing storage class"
93
94 ### Create and delete storage class
95 # Pre-condition: no storage classes currently exist
96 kube::test::get_object_assert storageclass "{{range.items}}{{${id_field:?}}}:{{end}}" ''
97 # Command
98 kubectl create -f - "${kube_flags[@]:?}" << __EOF__
99{
100 "kind": "StorageClass",
101 "apiVersion": "storage.k8s.io/v1",
102 "metadata": {
103 "name": "storage-class-name"
104 },
105 "provisioner": "kubernetes.io/fake-provisioner-type",
106 "parameters": {
107 "zone":"us-east-1b",
108 "type":"ssd"
109 }
110}
111__EOF__
112 kube::test::get_object_assert storageclass "{{range.items}}{{${id_field:?}}}:{{end}}" 'storage-class-name:'
113 kube::test::get_object_assert sc "{{range.items}}{{${id_field:?}}}:{{end}}" 'storage-class-name:'
114 # Describe command should respect the chunk size parameter
115 kube::test::describe_resource_chunk_size_assert storageclasses events
116 kubectl delete storageclass storage-class-name "${kube_flags[@]:?}"
117 # Post-condition: no storage classes
118 kube::test::get_object_assert storageclass "{{range.items}}{{${id_field:?}}}:{{end}}" ''
119
120 set +o nounset
121 set +o errexit
122
123}
View as plain text