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

Commit e39559f

Browse files
committed
Exercise NewObjectLRUDefault in testing
Signed-off-by: Javi Fontan <[email protected]>
1 parent 8f82387 commit e39559f

File tree

1 file changed

+60
-41
lines changed

1 file changed

+60
-41
lines changed

plumbing/cache/object_test.go

+60-41
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import (
1414
func Test(t *testing.T) { TestingT(t) }
1515

1616
type ObjectSuite struct {
17-
c Object
17+
c map[string]Object
1818
aObject plumbing.EncodedObject
1919
bObject plumbing.EncodedObject
2020
cObject plumbing.EncodedObject
@@ -29,70 +29,89 @@ func (s *ObjectSuite) SetUpTest(c *C) {
2929
s.cObject = newObject("cccccccccccccccccccccccccccccccccccccccc", 1*Byte)
3030
s.dObject = newObject("dddddddddddddddddddddddddddddddddddddddd", 1*Byte)
3131

32-
s.c = NewObjectLRU(2 * Byte)
32+
s.c = make(map[string]Object)
33+
s.c["two_bytes"] = NewObjectLRU(2 * Byte)
34+
s.c["default_lru"] = NewObjectLRUDefault()
3335
}
3436

3537
func (s *ObjectSuite) TestPutSameObject(c *C) {
36-
s.c.Put(s.aObject)
37-
s.c.Put(s.aObject)
38-
_, ok := s.c.Get(s.aObject.Hash())
39-
c.Assert(ok, Equals, true)
38+
for _, o := range s.c {
39+
o.Put(s.aObject)
40+
o.Put(s.aObject)
41+
_, ok := o.Get(s.aObject.Hash())
42+
c.Assert(ok, Equals, true)
43+
}
4044
}
4145

4246
func (s *ObjectSuite) TestPutBigObject(c *C) {
43-
s.c.Put(s.bObject)
44-
_, ok := s.c.Get(s.aObject.Hash())
45-
c.Assert(ok, Equals, false)
47+
for _, o := range s.c {
48+
o.Put(s.bObject)
49+
_, ok := o.Get(s.aObject.Hash())
50+
c.Assert(ok, Equals, false)
51+
}
4652
}
4753

4854
func (s *ObjectSuite) TestPutCacheOverflow(c *C) {
49-
s.c.Put(s.aObject)
50-
s.c.Put(s.cObject)
51-
s.c.Put(s.dObject)
55+
// this test only works with an specific size
56+
o := s.c["two_bytes"]
57+
58+
o.Put(s.aObject)
59+
o.Put(s.cObject)
60+
o.Put(s.dObject)
5261

53-
obj, ok := s.c.Get(s.aObject.Hash())
62+
obj, ok := o.Get(s.aObject.Hash())
5463
c.Assert(ok, Equals, false)
5564
c.Assert(obj, IsNil)
56-
obj, ok = s.c.Get(s.cObject.Hash())
65+
obj, ok = o.Get(s.cObject.Hash())
5766
c.Assert(ok, Equals, true)
5867
c.Assert(obj, NotNil)
59-
obj, ok = s.c.Get(s.dObject.Hash())
68+
obj, ok = o.Get(s.dObject.Hash())
6069
c.Assert(ok, Equals, true)
6170
c.Assert(obj, NotNil)
6271
}
6372

6473
func (s *ObjectSuite) TestClear(c *C) {
65-
s.c.Put(s.aObject)
66-
s.c.Clear()
67-
obj, ok := s.c.Get(s.aObject.Hash())
68-
c.Assert(ok, Equals, false)
69-
c.Assert(obj, IsNil)
74+
for _, o := range s.c {
75+
o.Put(s.aObject)
76+
o.Clear()
77+
obj, ok := o.Get(s.aObject.Hash())
78+
c.Assert(ok, Equals, false)
79+
c.Assert(obj, IsNil)
80+
}
7081
}
7182

7283
func (s *ObjectSuite) TestConcurrentAccess(c *C) {
73-
var wg sync.WaitGroup
74-
75-
for i := 0; i < 1000; i++ {
76-
wg.Add(3)
77-
go func(i int) {
78-
s.c.Put(newObject(fmt.Sprint(i), FileSize(i)))
79-
wg.Done()
80-
}(i)
81-
82-
go func(i int) {
83-
if i%30 == 0 {
84-
s.c.Clear()
85-
}
86-
wg.Done()
87-
}(i)
88-
89-
go func(i int) {
90-
s.c.Get(plumbing.NewHash(fmt.Sprint(i)))
91-
wg.Done()
92-
}(i)
84+
for _, o := range s.c {
85+
var wg sync.WaitGroup
86+
87+
for i := 0; i < 1000; i++ {
88+
wg.Add(3)
89+
go func(i int) {
90+
o.Put(newObject(fmt.Sprint(i), FileSize(i)))
91+
wg.Done()
92+
}(i)
93+
94+
go func(i int) {
95+
if i%30 == 0 {
96+
o.Clear()
97+
}
98+
wg.Done()
99+
}(i)
100+
101+
go func(i int) {
102+
o.Get(plumbing.NewHash(fmt.Sprint(i)))
103+
wg.Done()
104+
}(i)
105+
}
106+
107+
wg.Wait()
93108
}
109+
}
110+
111+
func (s *ObjectSuite) TestDefaultLRU(c *C) {
112+
defaultLRU := s.c["default_lru"].(*ObjectLRU)
94113

95-
wg.Wait()
114+
c.Assert(defaultLRU.MaxSize, Equals, DefaultMaxSize)
96115
}
97116

98117
type dummyObject struct {

0 commit comments

Comments
 (0)