99 "sigs.k8s.io/controller-runtime/pkg/client"
1010 "sigs.k8s.io/controller-runtime/pkg/client/fake"
1111
12- v1 "github.com/cloudnative-pg/plugin-barman-cloud/api/v1"
12+ barmancloudv1 "github.com/cloudnative-pg/plugin-barman-cloud/api/v1"
1313
1414 . "github.com/onsi/ginkgo/v2"
1515 . "github.com/onsi/gomega"
@@ -20,16 +20,28 @@ var scheme = buildScheme()
2020func buildScheme () * runtime.Scheme {
2121 scheme := runtime .NewScheme ()
2222 _ = corev1 .AddToScheme (scheme )
23- _ = v1 .AddToScheme (scheme )
23+ _ = barmancloudv1 .AddToScheme (scheme )
2424
2525 return scheme
2626}
2727
28+ func addToCache (c * ExtendedClient , obj client.Object , fetchUnixTime int64 ) {
29+ ce := cachedEntry {
30+ entry : obj .DeepCopyObject ().(client.Object ),
31+ fetchUnixTime : fetchUnixTime ,
32+ ttlSeconds : DefaultTTLSeconds ,
33+ }
34+ ce .entry .SetResourceVersion ("from cache" )
35+ err := c .addTypeInformationToObject (ce .entry )
36+ Expect (err ).ToNot (HaveOccurred ())
37+ c .cachedObjects = append (c .cachedObjects , ce )
38+ }
39+
2840var _ = Describe ("ExtendedClient Get" , func () {
2941 var (
3042 extendedClient * ExtendedClient
3143 secretInClient * corev1.Secret
32- objectStore * v1 .ObjectStore
44+ objectStore * barmancloudv1 .ObjectStore
3345 )
3446
3547 BeforeEach (func () {
@@ -39,12 +51,12 @@ var _ = Describe("ExtendedClient Get", func() {
3951 Name : "test-secret" ,
4052 },
4153 }
42- objectStore = & v1 .ObjectStore {
54+ objectStore = & barmancloudv1 .ObjectStore {
4355 ObjectMeta : metav1.ObjectMeta {
4456 Namespace : "default" ,
4557 Name : "test-object-store" ,
4658 },
47- Spec : v1 .ObjectStoreSpec {},
59+ Spec : barmancloudv1 .ObjectStoreSpec {},
4860 }
4961
5062 baseClient := fake .NewClientBuilder ().
@@ -61,35 +73,34 @@ var _ = Describe("ExtendedClient Get", func() {
6173 },
6274 }
6375
64- // manually add the secret to the cache, this is not present in the fake client so we are sure it is from the
65- // cache
66- extendedClient .cachedObjects = []cachedEntry {
67- {
68- entry : secretNotInClient ,
69- fetchUnixTime : time .Now ().Unix (),
70- },
71- }
76+ // manually add the secret to the cache, this is not present in the fake client,
77+ // so we are sure it is from the cache
78+ addToCache (extendedClient , secretNotInClient , time .Now ().Unix ())
7279
7380 err := extendedClient .Get (ctx , client .ObjectKeyFromObject (secretNotInClient ), secretInClient )
7481 Expect (err ).NotTo (HaveOccurred ())
75- Expect (secretNotInClient ).To (Equal (extendedClient .cachedObjects [0 ].entry ))
82+ Expect (secretInClient ).To (Equal (extendedClient .cachedObjects [0 ].entry ))
83+ Expect (secretInClient .GetResourceVersion ()).To (Equal ("from cache" ))
7684 })
7785
7886 It ("fetches secret from base client if cache is expired" , func (ctx SpecContext ) {
79- extendedClient .cachedObjects = []cachedEntry {
80- {
81- entry : secretInClient .DeepCopy (),
82- fetchUnixTime : time .Now ().Add (- 2 * time .Minute ).Unix (),
83- },
84- }
87+ addToCache (extendedClient , secretInClient , time .Now ().Add (- 2 * time .Minute ).Unix ())
8588
8689 err := extendedClient .Get (ctx , client .ObjectKeyFromObject (secretInClient ), secretInClient )
8790 Expect (err ).NotTo (HaveOccurred ())
91+ Expect (secretInClient .GetResourceVersion ()).NotTo (Equal ("from cache" ))
92+
93+ // the cache is updated with the new value
94+ Expect (extendedClient .cachedObjects ).To (HaveLen (1 ))
95+ Expect (extendedClient .cachedObjects [0 ].entry .GetResourceVersion ()).NotTo (Equal ("from cache" ))
8896 })
8997
9098 It ("fetches secret from base client if not in cache" , func (ctx SpecContext ) {
9199 err := extendedClient .Get (ctx , client .ObjectKeyFromObject (secretInClient ), secretInClient )
92100 Expect (err ).NotTo (HaveOccurred ())
101+
102+ // the cache is updated with the new value
103+ Expect (extendedClient .cachedObjects ).To (HaveLen (1 ))
93104 })
94105
95106 It ("does not cache non-secret objects" , func (ctx SpecContext ) {
0 commit comments