k8s.io/kubernetes@v1.29.3/test/cmd/storage.sh (about) 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 17 set -o errexit 18 set -o nounset 19 set -o pipefail 20 21 run_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 57 run_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 88 run_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 }