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

Commit d93b386

Browse files
committed
storage: filesystem, add PackfileIter benchmark reading object content
Signed-off-by: Miguel Molina <[email protected]>
1 parent 038cf23 commit d93b386

File tree

1 file changed

+67
-0
lines changed

1 file changed

+67
-0
lines changed

storage/filesystem/object_test.go

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package filesystem
22

33
import (
4+
"io/ioutil"
45
"testing"
56

67
"gopkg.in/src-d/go-git.v4/plumbing"
@@ -189,3 +190,69 @@ func BenchmarkPackfileIter(b *testing.B) {
189190
})
190191
}
191192
}
193+
194+
func BenchmarkPackfileIterReadContent(b *testing.B) {
195+
if err := fixtures.Init(); err != nil {
196+
b.Fatal(err)
197+
}
198+
199+
defer func() {
200+
if err := fixtures.Clean(); err != nil {
201+
b.Fatal(err)
202+
}
203+
}()
204+
205+
for _, f := range fixtures.ByTag(".git") {
206+
b.Run(f.URL, func(b *testing.B) {
207+
fs := f.DotGit()
208+
dg := dotgit.New(fs)
209+
210+
for i := 0; i < b.N; i++ {
211+
for _, t := range objectTypes {
212+
ph, err := dg.ObjectPacks()
213+
if err != nil {
214+
b.Fatal(err)
215+
}
216+
217+
for _, h := range ph {
218+
f, err := dg.ObjectPack(h)
219+
if err != nil {
220+
b.Fatal(err)
221+
}
222+
223+
idxf, err := dg.ObjectPackIdx(h)
224+
if err != nil {
225+
b.Fatal(err)
226+
}
227+
228+
iter, err := NewPackfileIter(f, idxf, t)
229+
if err != nil {
230+
b.Fatal(err)
231+
}
232+
233+
err = iter.ForEach(func(o plumbing.EncodedObject) error {
234+
if o.Type() != t {
235+
b.Errorf("expecting %s, got %s", t, o.Type())
236+
}
237+
238+
r, err := o.Reader()
239+
if err != nil {
240+
b.Fatal(err)
241+
}
242+
243+
if _, err := ioutil.ReadAll(r); err != nil {
244+
b.Fatal(err)
245+
}
246+
247+
return r.Close()
248+
})
249+
250+
if err != nil {
251+
b.Fatal(err)
252+
}
253+
}
254+
}
255+
}
256+
})
257+
}
258+
}

0 commit comments

Comments
 (0)