diff options
author | John Cai <jcai@gitlab.com> | 2019-08-12 20:39:02 +0300 |
---|---|---|
committer | John Cai <jcai@gitlab.com> | 2019-08-12 20:39:02 +0300 |
commit | 590f863f207c920276324b8517750c7b1123590a (patch) | |
tree | eec13ceb376ef818c68b57dc65938084e436ed11 | |
parent | 28318c1668bb11450cb02ece8f89e6362e67e843 (diff) |
Addinb benchmark for go and ruby versions of getalllfs pointersjc-getalllfspointer-go-bench
-rw-r--r-- | internal/metadata/featureflag/test_utils.go | 5 | ||||
-rw-r--r-- | internal/service/blob/lfs_pointers.go | 2 | ||||
-rw-r--r-- | internal/service/blob/lfs_pointers_test.go | 57 | ||||
-rw-r--r-- | internal/service/blob/testhelper_test.go | 4 |
4 files changed, 63 insertions, 5 deletions
diff --git a/internal/metadata/featureflag/test_utils.go b/internal/metadata/featureflag/test_utils.go index 2443c5826..521a3ab0f 100644 --- a/internal/metadata/featureflag/test_utils.go +++ b/internal/metadata/featureflag/test_utils.go @@ -3,6 +3,7 @@ package featureflag import ( "context" + "gitlab.com/gitlab-org/gitaly/internal/git/catfile" "google.golang.org/grpc/metadata" ) @@ -12,9 +13,9 @@ func EnableFeatureFlag(ctx context.Context, flag string) context.Context { md, ok := metadata.FromIncomingContext(ctx) if !ok { md = metadata.New(map[string]string{HeaderKey(flag): "true"}) - } else { - md.Set(HeaderKey(flag), "true") } + md.Set(HeaderKey(flag), "true") + md.Set(catfile.SessionIDField, "abc1234") return metadata.NewOutgoingContext(context.Background(), md) } diff --git a/internal/service/blob/lfs_pointers.go b/internal/service/blob/lfs_pointers.go index c7abcd854..97902684c 100644 --- a/internal/service/blob/lfs_pointers.go +++ b/internal/service/blob/lfs_pointers.go @@ -209,6 +209,8 @@ func getAllLFSPointers(repository *gitalypb.Repository, stream gitalypb.BlobServ return err } + defer c.Close() + for s.Scan() { line := strings.SplitN(s.Text(), " ", 2) if len(line) == 0 { diff --git a/internal/service/blob/lfs_pointers_test.go b/internal/service/blob/lfs_pointers_test.go index a9036300c..52fcc565f 100644 --- a/internal/service/blob/lfs_pointers_test.go +++ b/internal/service/blob/lfs_pointers_test.go @@ -415,7 +415,7 @@ func TestSuccessfulGetAllLFSPointersRequest(t *testing.T) { require.ElementsMatch(t, expectedLFSPointers, getAllPointers(t, c)) } -func getAllPointers(t *testing.T, c gitalypb.BlobService_GetAllLFSPointersClient) []*gitalypb.LFSPointer { +func getAllPointers(t testing.TB, c gitalypb.BlobService_GetAllLFSPointersClient) []*gitalypb.LFSPointer { var receivedLFSPointers []*gitalypb.LFSPointer for { resp, err := c.Recv() @@ -430,6 +430,61 @@ func getAllPointers(t *testing.T, c gitalypb.BlobService_GetAllLFSPointersClient return receivedLFSPointers } +func BenchmarkSuccessfulGetAllLFSPointersRequestRuby(b *testing.B) { + server, serverSocketPath := runBlobServer(b) + defer server.Stop() + + client, conn := newBlobClient(b, serverSocketPath) + defer conn.Close() + + testRepo, _, cleanupFn := testhelper.NewTestRepo(b) + defer cleanupFn() + + ctx, cancel := testhelper.Context() + defer cancel() + + request := &gitalypb.GetAllLFSPointersRequest{ + Repository: testRepo, + Revision: []byte("54fcc214b94e78d7a41a9a8fe6d87a5e59500e51"), + } + + for n := 0; n < b.N; n++ { + c, err := client.GetAllLFSPointers(ctx, request) + require.NoError(b, err) + getAllPointers(b, c) + } +} + +func BenchmarkSuccessfulGetAllLFSPointersRequestGo(b *testing.B) { + server, serverSocketPath := runBlobServer(b) + defer server.Stop() + + client, conn := newBlobClient(b, serverSocketPath) + defer conn.Close() + + testRepo, _, cleanupFn := testhelper.NewTestRepo(b) + defer cleanupFn() + + ctx, cancel := testhelper.Context() + defer cancel() + + request := &gitalypb.GetAllLFSPointersRequest{ + Repository: testRepo, + Revision: []byte("54fcc214b94e78d7a41a9a8fe6d87a5e59500e51"), + } + + _, err := client.GetAllLFSPointers(ctx, request) + require.NoError(b, err) + + for n := 0; n < b.N; n++ { + // test with go implementation + // TODO: remove once feature flag is removed + c, err := client.GetAllLFSPointers(featureflag.EnableFeatureFlag(ctx, featureflag.GetAllLFSPointersGo), request) + require.NoError(b, err) + getAllPointers(b, c) + } +} + func TestFailedGetAllLFSPointersRequestDueToValidations(t *testing.T) { server, serverSocketPath := runBlobServer(t) defer server.Stop() diff --git a/internal/service/blob/testhelper_test.go b/internal/service/blob/testhelper_test.go index 9bb24a1ef..378022498 100644 --- a/internal/service/blob/testhelper_test.go +++ b/internal/service/blob/testhelper_test.go @@ -33,7 +33,7 @@ func testMain(m *testing.M) int { return m.Run() } -func runBlobServer(t *testing.T) (*grpc.Server, string) { +func runBlobServer(t testing.TB) (*grpc.Server, string) { grpcServer := testhelper.NewTestGrpcServer(t, nil, nil) serverSocketPath := testhelper.GetTemporaryGitalySocketFileName() @@ -51,7 +51,7 @@ func runBlobServer(t *testing.T) (*grpc.Server, string) { return grpcServer, "unix://" + serverSocketPath } -func newBlobClient(t *testing.T, serverSocketPath string) (gitalypb.BlobServiceClient, *grpc.ClientConn) { +func newBlobClient(t testing.TB, serverSocketPath string) (gitalypb.BlobServiceClient, *grpc.ClientConn) { connOpts := []grpc.DialOption{ grpc.WithInsecure(), } |