diff options
author | Igor <idrozdov@gitlab.com> | 2019-05-31 12:08:54 +0000 |
---|---|---|
committer | Nick Thomas <nick@gitlab.com> | 2019-05-31 12:08:54 +0000 |
commit | 033c81d546d31d07e5eadb50611543a7d2471254 (patch) | |
tree | 688dc50182c8429941d4d23edad3aedc08471233 /go/internal/gitlabnet/testserver/gitalyserver.go | |
parent | 12ca54c2d998803a0564a5a2942121364a30678f (diff) | |
download | gitlab-shell-033c81d546d31d07e5eadb50611543a7d2471254.tar.gz |
Go implementation for git-receive-pack
Diffstat (limited to 'go/internal/gitlabnet/testserver/gitalyserver.go')
-rw-r--r-- | go/internal/gitlabnet/testserver/gitalyserver.go | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/go/internal/gitlabnet/testserver/gitalyserver.go b/go/internal/gitlabnet/testserver/gitalyserver.go new file mode 100644 index 0000000..141a518 --- /dev/null +++ b/go/internal/gitlabnet/testserver/gitalyserver.go @@ -0,0 +1,63 @@ +package testserver + +import ( + "io/ioutil" + "net" + "os" + "path" + "path/filepath" + "testing" + + "github.com/stretchr/testify/require" + "google.golang.org/grpc" + + pb "gitlab.com/gitlab-org/gitaly-proto/go/gitalypb" +) + +type testGitalyServer struct{} + +func (s *testGitalyServer) SSHReceivePack(stream pb.SSHService_SSHReceivePackServer) error { + req, err := stream.Recv() + + if err != nil { + return err + } + + response := []byte("ReceivePack: " + req.GlId + " " + req.Repository.GlRepository) + stream.Send(&pb.SSHReceivePackResponse{Stdout: response}) + + return nil +} + +func (s *testGitalyServer) SSHUploadPack(stream pb.SSHService_SSHUploadPackServer) error { + return nil +} + +func (s *testGitalyServer) SSHUploadArchive(stream pb.SSHService_SSHUploadArchiveServer) error { + return nil +} + +func StartGitalyServer(t *testing.T) (string, func()) { + tempDir, _ := ioutil.TempDir("", "gitlab-shell-test-api") + gitalySocketPath := path.Join(tempDir, "gitaly.sock") + + err := os.MkdirAll(filepath.Dir(gitalySocketPath), 0700) + require.NoError(t, err) + + server := grpc.NewServer() + + listener, err := net.Listen("unix", gitalySocketPath) + require.NoError(t, err) + + pb.RegisterSSHServiceServer(server, &testGitalyServer{}) + + go server.Serve(listener) + + gitalySocketUrl := "unix:" + gitalySocketPath + cleanup := func() { + server.Stop() + os.RemoveAll(tempDir) + } + + return gitalySocketUrl, cleanup +} |