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

Configure Feed

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

1package grpc 2 3import ( 4 "context" 5 "net/http/httptest" 6 "net/url" 7 "testing" 8 9 "golang.org/x/net/http2" 10 "golang.org/x/net/http2/h2c" 11 "google.golang.org/grpc" 12 "google.golang.org/grpc/credentials/insecure" 13 "google.golang.org/protobuf/proto" 14 15 "github.com/sourcegraph/zoekt" 16 v1 "github.com/sourcegraph/zoekt/grpc/v1" 17 "github.com/sourcegraph/zoekt/internal/mockSearcher" 18 "github.com/sourcegraph/zoekt/query" 19) 20 21func TestClientServer(t *testing.T) { 22 mock := &mockSearcher.MockSearcher{ 23 WantSearch: query.NewAnd(mustParse("hello world|universe"), query.NewSingleBranchesRepos("HEAD", 1, 2)), 24 SearchResult: &zoekt.SearchResult{ 25 Files: []zoekt.FileMatch{ 26 {FileName: "bin.go"}, 27 }, 28 }, 29 30 WantList: &query.Const{Value: true}, 31 RepoList: &zoekt.RepoList{ 32 Repos: []*zoekt.RepoListEntry{ 33 { 34 Repository: zoekt.Repository{ 35 ID: 2, 36 Name: "foo/bar", 37 }, 38 }, 39 }, 40 }, 41 } 42 43 gs := grpc.NewServer() 44 v1.RegisterWebserverServiceServer(gs, NewServer(adapter{mock})) 45 ts := httptest.NewServer(h2c.NewHandler(gs, &http2.Server{})) 46 47 u, err := url.Parse(ts.URL) 48 if err != nil { 49 t.Fatal(err) 50 } 51 cc, err := grpc.Dial(u.Host, grpc.WithTransportCredentials(insecure.NewCredentials())) 52 if err != nil { 53 t.Fatal(err) 54 } 55 client := v1.NewWebserverServiceClient(cc) 56 57 r, err := client.Search(context.Background(), &v1.SearchRequest{Query: query.QToProto(mock.WantSearch)}) 58 if err != nil { 59 t.Fatal(err) 60 } 61 if !proto.Equal(r, mock.SearchResult.ToProto()) { 62 t.Fatalf("got %+v, want %+v", r, mock.SearchResult.ToProto()) 63 } 64 65 l, err := client.List(context.Background(), &v1.ListRequest{Query: query.QToProto(mock.WantList)}) 66 if err != nil { 67 t.Fatal(err) 68 } 69 70 if !proto.Equal(l, mock.RepoList.ToProto()) { 71 t.Fatalf("got %+v, want %+v", l, mock.RepoList.ToProto()) 72 } 73} 74 75func mustParse(s string) query.Q { 76 q, err := query.Parse(s) 77 if err != nil { 78 panic(err) 79 } 80 return q 81} 82 83type adapter struct { 84 zoekt.Searcher 85} 86 87func (a adapter) StreamSearch(ctx context.Context, q query.Q, opts *zoekt.SearchOptions, sender zoekt.Sender) (err error) { 88 sr, err := a.Searcher.Search(ctx, q, opts) 89 if err != nil { 90 return err 91 } 92 sender.Send(sr) 93 return nil 94}