Skip to content
This repository was archived by the owner on Sep 11, 2020. It is now read-only.

Commit 0f6c06d

Browse files
committed
Test eviction of more than one object
Signed-off-by: Javi Fontan <[email protected]>
1 parent c281165 commit 0f6c06d

File tree

1 file changed

+20
-0
lines changed

1 file changed

+20
-0
lines changed

plumbing/cache/object_test.go

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ type ObjectSuite struct {
1919
bObject plumbing.EncodedObject
2020
cObject plumbing.EncodedObject
2121
dObject plumbing.EncodedObject
22+
eObject plumbing.EncodedObject
2223
}
2324

2425
var _ = Suite(&ObjectSuite{})
@@ -28,6 +29,7 @@ func (s *ObjectSuite) SetUpTest(c *C) {
2829
s.bObject = newObject("bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", 3*Byte)
2930
s.cObject = newObject("cccccccccccccccccccccccccccccccccccccccc", 1*Byte)
3031
s.dObject = newObject("dddddddddddddddddddddddddddddddddddddddd", 1*Byte)
32+
s.eObject = newObject("eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee", 2*Byte)
3133

3234
s.c = make(map[string]Object)
3335
s.c["two_bytes"] = NewObjectLRU(2 * Byte)
@@ -70,6 +72,24 @@ func (s *ObjectSuite) TestPutCacheOverflow(c *C) {
7072
c.Assert(obj, NotNil)
7173
}
7274

75+
func (s *ObjectSuite) TestEvictMultipleObjects(c *C) {
76+
o := s.c["two_bytes"]
77+
78+
o.Put(s.cObject)
79+
o.Put(s.dObject) // now cache is full with two objects
80+
o.Put(s.eObject) // this put should evict all previous objects
81+
82+
obj, ok := o.Get(s.cObject.Hash())
83+
c.Assert(ok, Equals, false)
84+
c.Assert(obj, IsNil)
85+
obj, ok = o.Get(s.dObject.Hash())
86+
c.Assert(ok, Equals, false)
87+
c.Assert(obj, IsNil)
88+
obj, ok = o.Get(s.eObject.Hash())
89+
c.Assert(ok, Equals, true)
90+
c.Assert(obj, NotNil)
91+
}
92+
7393
func (s *ObjectSuite) TestClear(c *C) {
7494
for _, o := range s.c {
7595
o.Put(s.aObject)

0 commit comments

Comments
 (0)