fork of https://github.com/sourcegraph/zoekt
0

Configure Feed

Select the types of activity you want to include in your feed.

1package zoekt 2 3import ( 4 "bytes" 5 "encoding/gob" 6 "testing" 7 8 "github.com/google/go-cmp/cmp" 9) 10 11func BenchmarkRepoList_Encode(b *testing.B) { 12 set := genRepoList(1000) 13 14 // do one write to amortize away the cost of gob registration 15 w := &countWriter{} 16 enc := gob.NewEncoder(w) 17 if err := enc.Encode(set); err != nil { 18 b.Fatal(err) 19 } 20 21 b.ResetTimer() 22 b.ReportAllocs() 23 24 b.ReportMetric(float64(w.n), "bytes") 25 26 for n := 0; n < b.N; n++ { 27 if err := enc.Encode(set); err != nil { 28 b.Fatal(err) 29 } 30 } 31} 32 33func BenchmarkRepoList_Decode(b *testing.B) { 34 set := genRepoList(1000) 35 36 var buf bytes.Buffer 37 if err := gob.NewEncoder(&buf).Encode(set); err != nil { 38 b.Fatal(err) 39 } 40 41 b.ResetTimer() 42 b.ReportAllocs() 43 44 for n := 0; n < b.N; n++ { 45 // We need to include gob.NewDecoder cost to avoid measuring encoding. 46 var repoBranches RepoList 47 if err := gob.NewDecoder(bytes.NewReader(buf.Bytes())).Decode(&repoBranches); err != nil { 48 b.Fatal(err) 49 } 50 } 51} 52 53func TestRepoList_Marshal(t *testing.T) { 54 for i := range []int{0, 1, 10, 100} { 55 want := genRepoList(i) 56 57 var buf bytes.Buffer 58 if err := gob.NewEncoder(&buf).Encode(want); err != nil { 59 t.Fatal(err) 60 } 61 62 var got RepoList 63 if err := gob.NewDecoder(bytes.NewReader(buf.Bytes())).Decode(&got); err != nil { 64 t.Fatal(err) 65 } 66 67 if diff := cmp.Diff(want, &got); diff != "" { 68 t.Fatalf("mismatch for reposmap size %d (-want +got):\n%s", i, diff) 69 } 70 } 71} 72 73func genRepoList(size int) *RepoList { 74 m := make(ReposMap, size) 75 for i := 0; i < size; i++ { 76 m[uint32(i)] = MinimalRepoListEntry{ 77 HasSymbols: true, 78 Branches: []RepositoryBranch{{ 79 Name: "HEAD", 80 Version: "c301e5c82b6e1632dce5c39902691c359559852e", 81 }}, 82 } 83 } 84 return &RepoList{ReposMap: m} 85} 86 87type countWriter struct { 88 n int 89} 90 91func (w *countWriter) Write(b []byte) (int, error) { 92 w.n += len(b) 93 return len(b), nil 94}