k8s.io/kubernetes@v1.29.3/pkg/kubelet/util/store/filestore_test.go (about) 1 /* 2 Copyright 2017 The Kubernetes Authors. 3 4 Licensed under the Apache License, Version 2.0 (the "License"); 5 you may not use this file except in compliance with the License. 6 You may obtain a copy of the License at 7 8 http://www.apache.org/licenses/LICENSE-2.0 9 10 Unless required by applicable law or agreed to in writing, software 11 distributed under the License is distributed on an "AS IS" BASIS, 12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 See the License for the specific language governing permissions and 14 limitations under the License. 15 */ 16 17 package store 18 19 import ( 20 "sort" 21 "testing" 22 23 "github.com/stretchr/testify/assert" 24 "github.com/stretchr/testify/require" 25 "k8s.io/kubernetes/pkg/util/filesystem" 26 ) 27 28 func TestFileStore(t *testing.T) { 29 store, err := NewFileStore("/FileStore", filesystem.NewTempFs()) 30 assert.NoError(t, err) 31 testStore(t, store) 32 } 33 34 func testStore(t *testing.T, store Store) { 35 testCases := []struct { 36 key string 37 data string 38 expectErr bool 39 }{ 40 { 41 "id1", 42 "data1", 43 false, 44 }, 45 { 46 "id2", 47 "data2", 48 false, 49 }, 50 { 51 "/id1", 52 "data1", 53 true, 54 }, 55 { 56 ".id1", 57 "data1", 58 true, 59 }, 60 { 61 " ", 62 "data2", 63 true, 64 }, 65 { 66 "___", 67 "data2", 68 true, 69 }, 70 } 71 72 // Test add data. 73 for _, c := range testCases { 74 t.Log("test case: ", c) 75 _, err := store.Read(c.key) 76 assert.Error(t, err) 77 78 err = store.Write(c.key, []byte(c.data)) 79 if c.expectErr { 80 assert.Error(t, err) 81 continue 82 } 83 84 require.NoError(t, err) 85 // Test read data by key. 86 data, err := store.Read(c.key) 87 require.NoError(t, err) 88 assert.Equal(t, string(data), c.data) 89 } 90 91 // Test list keys. 92 keys, err := store.List() 93 assert.NoError(t, err) 94 sort.Strings(keys) 95 assert.Equal(t, keys, []string{"id1", "id2"}) 96 97 // Test Delete data 98 for _, c := range testCases { 99 if c.expectErr { 100 continue 101 } 102 103 err = store.Delete(c.key) 104 require.NoError(t, err) 105 _, err = store.Read(c.key) 106 assert.EqualValues(t, ErrKeyNotFound, err) 107 } 108 109 // Test delete non-existent key. 110 err = store.Delete("id1") 111 assert.NoError(t, err) 112 113 // Test list keys. 114 keys, err = store.List() 115 require.NoError(t, err) 116 assert.Equal(t, len(keys), 0) 117 }