...
1
16
17 package credentialprovider
18
19 import (
20 "testing"
21 "time"
22 )
23
24 type testProvider struct {
25 Count int
26 }
27
28
29 func (d *testProvider) Enabled() bool {
30 return true
31 }
32
33
34 func (d *testProvider) Provide(image string) DockerConfig {
35 d.Count++
36 return DockerConfig{}
37 }
38
39 func TestCachingProvider(t *testing.T) {
40 provider := &testProvider{
41 Count: 0,
42 }
43
44 cache := &CachingDockerConfigProvider{
45 Provider: provider,
46 Lifetime: 1 * time.Second,
47 }
48
49 image := "image"
50
51 if provider.Count != 0 {
52 t.Errorf("Unexpected number of Provide calls: %v", provider.Count)
53 }
54 cache.Provide(image)
55 cache.Provide(image)
56 cache.Provide(image)
57 cache.Provide(image)
58 if provider.Count != 1 {
59 t.Errorf("Unexpected number of Provide calls: %v", provider.Count)
60 }
61
62 time.Sleep(cache.Lifetime)
63 cache.Provide(image)
64 cache.Provide(image)
65 cache.Provide(image)
66 cache.Provide(image)
67 if provider.Count != 2 {
68 t.Errorf("Unexpected number of Provide calls: %v", provider.Count)
69 }
70
71 time.Sleep(cache.Lifetime)
72 cache.Provide(image)
73 cache.Provide(image)
74 cache.Provide(image)
75 cache.Provide(image)
76 if provider.Count != 3 {
77 t.Errorf("Unexpected number of Provide calls: %v", provider.Count)
78 }
79 }
80
View as plain text