@@ -14,7 +14,7 @@ import (
14
14
func Test (t * testing.T ) { TestingT (t ) }
15
15
16
16
type ObjectSuite struct {
17
- c Object
17
+ c map [ string ] Object
18
18
aObject plumbing.EncodedObject
19
19
bObject plumbing.EncodedObject
20
20
cObject plumbing.EncodedObject
@@ -29,70 +29,89 @@ func (s *ObjectSuite) SetUpTest(c *C) {
29
29
s .cObject = newObject ("cccccccccccccccccccccccccccccccccccccccc" , 1 * Byte )
30
30
s .dObject = newObject ("dddddddddddddddddddddddddddddddddddddddd" , 1 * Byte )
31
31
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 ()
33
35
}
34
36
35
37
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
+ }
40
44
}
41
45
42
46
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
+ }
46
52
}
47
53
48
54
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 )
52
61
53
- obj , ok := s . c .Get (s .aObject .Hash ())
62
+ obj , ok := o .Get (s .aObject .Hash ())
54
63
c .Assert (ok , Equals , false )
55
64
c .Assert (obj , IsNil )
56
- obj , ok = s . c .Get (s .cObject .Hash ())
65
+ obj , ok = o .Get (s .cObject .Hash ())
57
66
c .Assert (ok , Equals , true )
58
67
c .Assert (obj , NotNil )
59
- obj , ok = s . c .Get (s .dObject .Hash ())
68
+ obj , ok = o .Get (s .dObject .Hash ())
60
69
c .Assert (ok , Equals , true )
61
70
c .Assert (obj , NotNil )
62
71
}
63
72
64
73
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
+ }
70
81
}
71
82
72
83
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 ()
93
108
}
109
+ }
110
+
111
+ func (s * ObjectSuite ) TestDefaultLRU (c * C ) {
112
+ defaultLRU := s .c ["default_lru" ].(* ObjectLRU )
94
113
95
- wg . Wait ( )
114
+ c . Assert ( defaultLRU . MaxSize , Equals , DefaultMaxSize )
96
115
}
97
116
98
117
type dummyObject struct {
0 commit comments