This repository was archived by the owner on Sep 11, 2020. It is now read-only.
File tree Expand file tree Collapse file tree 1 file changed +67
-0
lines changed Expand file tree Collapse file tree 1 file changed +67
-0
lines changed Original file line number Diff line number Diff line change 1
1
package filesystem
2
2
3
3
import (
4
+ "io/ioutil"
4
5
"testing"
5
6
6
7
"gopkg.in/src-d/go-git.v4/plumbing"
@@ -189,3 +190,69 @@ func BenchmarkPackfileIter(b *testing.B) {
189
190
})
190
191
}
191
192
}
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
+ }
You can’t perform that action at this time.
0 commit comments