...
1
16
17 package config
18
19 import (
20 "os"
21 "path/filepath"
22 "testing"
23 "time"
24
25 apiequality "k8s.io/apimachinery/pkg/api/equality"
26 kubetypes "k8s.io/kubernetes/pkg/kubelet/types"
27 )
28
29 func TestExtractFromBadDataFile(t *testing.T) {
30 dirName, err := mkTempDir("file-test")
31 if err != nil {
32 t.Fatalf("unable to create temp dir: %v", err)
33 }
34 defer removeAll(dirName, t)
35
36 fileName := filepath.Join(dirName, "test_pod_config")
37 err = os.WriteFile(fileName, []byte{1, 2, 3}, 0555)
38 if err != nil {
39 t.Fatalf("unable to write test file %#v", err)
40 }
41
42 ch := make(chan interface{}, 1)
43 lw := newSourceFile(fileName, "localhost", time.Millisecond, ch)
44 err = lw.listConfig()
45 if err == nil {
46 t.Fatalf("expected error, got nil")
47 }
48 expectEmptyChannel(t, ch)
49 }
50
51 func TestExtractFromEmptyDir(t *testing.T) {
52 dirName, err := mkTempDir("file-test")
53 if err != nil {
54 t.Fatalf("unexpected error: %v", err)
55 }
56 defer removeAll(dirName, t)
57
58 ch := make(chan interface{}, 1)
59 lw := newSourceFile(dirName, "localhost", time.Millisecond, ch)
60 err = lw.listConfig()
61 if err != nil {
62 t.Fatalf("unexpected error: %v", err)
63 }
64
65 update, ok := (<-ch).(kubetypes.PodUpdate)
66 if !ok {
67 t.Fatalf("unexpected type: %#v", update)
68 }
69 expected := CreatePodUpdate(kubetypes.SET, kubetypes.FileSource)
70 if !apiequality.Semantic.DeepEqual(expected, update) {
71 t.Fatalf("expected %#v, got %#v", expected, update)
72 }
73 }
74
75 func mkTempDir(prefix string) (string, error) {
76 return os.MkdirTemp(os.TempDir(), prefix)
77 }
78
79 func removeAll(dir string, t *testing.T) {
80 if err := os.RemoveAll(dir); err != nil {
81 t.Fatalf("unable to remove dir %s: %v", dir, err)
82 }
83 }
84
View as plain text