...
1
16
17 package cache
18
19 import (
20 "k8s.io/apimachinery/pkg/util/sets"
21 "k8s.io/utils/clock"
22 )
23
24 type fakeThreadSafeMap struct {
25 ThreadSafeStore
26 deletedKeys chan<- string
27 }
28
29 func (c *fakeThreadSafeMap) Delete(key string) {
30 if c.deletedKeys != nil {
31 c.ThreadSafeStore.Delete(key)
32 c.deletedKeys <- key
33 }
34 }
35
36
37 type FakeExpirationPolicy struct {
38 NeverExpire sets.String
39 RetrieveKeyFunc KeyFunc
40 }
41
42
43 func (p *FakeExpirationPolicy) IsExpired(obj *TimestampedEntry) bool {
44 key, _ := p.RetrieveKeyFunc(obj)
45 return !p.NeverExpire.Has(key)
46 }
47
48
49 func NewFakeExpirationStore(keyFunc KeyFunc, deletedKeys chan<- string, expirationPolicy ExpirationPolicy, cacheClock clock.Clock) Store {
50 cacheStorage := NewThreadSafeStore(Indexers{}, Indices{})
51 return &ExpirationCache{
52 cacheStorage: &fakeThreadSafeMap{cacheStorage, deletedKeys},
53 keyFunc: keyFunc,
54 clock: cacheClock,
55 expirationPolicy: expirationPolicy,
56 }
57 }
58
View as plain text