Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitaly.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Cai <jcai@gitlab.com>2019-08-12 20:39:02 +0300
committerJohn Cai <jcai@gitlab.com>2019-08-12 20:39:02 +0300
commit590f863f207c920276324b8517750c7b1123590a (patch)
treeeec13ceb376ef818c68b57dc65938084e436ed11
parent28318c1668bb11450cb02ece8f89e6362e67e843 (diff)
Addinb benchmark for go and ruby versions of getalllfs pointersjc-getalllfspointer-go-bench
-rw-r--r--internal/metadata/featureflag/test_utils.go5
-rw-r--r--internal/service/blob/lfs_pointers.go2
-rw-r--r--internal/service/blob/lfs_pointers_test.go57
-rw-r--r--internal/service/blob/testhelper_test.go4
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(),
}