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
path: root/client
diff options
context:
space:
mode:
authorJacob Vosmaer <jacob@gitlab.com>2017-01-05 14:18:31 +0300
committerJacob Vosmaer <jacob@gitlab.com>2017-01-05 14:18:31 +0300
commit2145535fa6fa9f7b10d41495fc52027712a04987 (patch)
tree4747b4c837524c9f8a62b06cd8436ed9de986590 /client
parent7f85b73b414127fe7ca2afc1f729631b8c51c23f (diff)
Remove TCP/Protobuf client-server code
We are using HTTP now to keep things simple while we can.
Diffstat (limited to 'client')
-rw-r--r--client/client.go91
-rw-r--r--client/client_test.go112
2 files changed, 0 insertions, 203 deletions
diff --git a/client/client.go b/client/client.go
deleted file mode 100644
index 941217830..000000000
--- a/client/client.go
+++ /dev/null
@@ -1,91 +0,0 @@
-package client
-
-import (
- "bufio"
- "bytes"
- "io"
- "log"
- "net"
- "os"
-
- "gitlab.com/gitlab-org/gitaly/messaging"
-)
-
-type Client struct {
- messagesConn *messaging.MessagesConn
-}
-
-func NewClient(serverAddress string) *Client {
- conn, err := net.Dial("tcp", serverAddress)
- if err != nil {
- log.Fatalln(err)
- }
-
- messagesConn := messaging.NewMessagesConn(conn)
- return &Client{messagesConn}
-}
-
-func (client *Client) Run(cmd []string) int {
- rawMsg := messaging.NewCommandMessage(os.Environ(), cmd[0], cmd[1:]...)
-
- _, err := client.messagesConn.Write(rawMsg)
- if err != nil {
- log.Fatalln(err)
- }
-
- go streamStdinToServer(client)
-
- for {
- rawMsg, err := client.messagesConn.Read()
-
- if err != nil {
- break
- }
-
- msg, err := messaging.ParseMessage(rawMsg)
- if err != nil {
- break
- }
-
- switch msg.Type {
- case "stdout":
- os.Stdout.Write(msg.GetOutput().Output)
- case "stderr":
- os.Stderr.Write(msg.GetOutput().Output)
- case "exit":
- return int(msg.GetExit().ExitStatus)
- }
- }
-
- return 255
-}
-
-func (client *Client) Close() {
- client.messagesConn.Close()
-}
-
-func streamStdinToServer(client *Client) {
- finished := false
- reader := bufio.NewReader(os.Stdin)
-
- for {
- buffer := make([]byte, bytes.MinRead)
-
- n, err := reader.Read(buffer)
-
- if err == io.EOF {
- finished = true
- }
-
- if n < bytes.MinRead {
- buffer = buffer[:n]
- }
-
- rawMsg := messaging.NewInputMessage(buffer)
- client.messagesConn.Write(rawMsg)
-
- if finished {
- return
- }
- }
-}
diff --git a/client/client_test.go b/client/client_test.go
deleted file mode 100644
index 36764d91e..000000000
--- a/client/client_test.go
+++ /dev/null
@@ -1,112 +0,0 @@
-package client
-
-import (
- "bytes"
- "log"
- "os"
- "os/exec"
- "path"
- "testing"
- "time"
-
- serv "gitlab.com/gitlab-org/gitaly/server"
-)
-
-const serverAddress = "127.0.0.1:6667"
-const testRepo = "group/test.git"
-const testRepoRoot = "testdata/data"
-
-var origStdout = os.Stdout
-var origStderr = os.Stderr
-
-func TestMain(m *testing.M) {
- source := "https://gitlab.com/gitlab-org/gitlab-test.git"
- clonePath := path.Join(testRepoRoot, testRepo)
- if _, err := os.Stat(clonePath); err != nil {
- testCmd := exec.Command("git", "clone", "--bare", source, clonePath)
- testCmd.Stdout = os.Stdout
- testCmd.Stderr = os.Stderr
- if err := testCmd.Run(); err != nil {
- log.Printf("Test setup: failed to run %v", testCmd)
- os.Exit(-1)
- }
- }
- server := serv.NewServer()
-
- go server.Serve(serverAddress, serv.CommandExecutor)
- defer server.Stop()
-
- time.Sleep(10 * time.Millisecond)
- os.Exit(m.Run())
-}
-
-func TestRunningGitCommandSuccessfully(t *testing.T) {
- client := NewClient(serverAddress)
- defer client.Close()
-
- stdout, _ := redirectOutputStreams()
- exitStatus := client.Run([]string{
- "git",
- "--git-dir",
- path.Join(testRepoRoot, testRepo),
- "rev-list",
- "--count",
- "b83d6e391c",
- })
- restoreOutputStreams()
-
- expectedExitStatus := 0
- if exitStatus != expectedExitStatus {
- t.Fatalf("Expected response exit status to equal %d, got %d", expectedExitStatus, exitStatus)
- }
-
- expectedStdout := []byte("37\n")
- gotStdout := make([]byte, len(expectedStdout))
- stdout.Read(gotStdout)
- if !bytes.Equal(gotStdout, expectedStdout) {
- t.Fatalf("Expected response stdout to be \"%s\", got \"%s\"", expectedStdout, gotStdout)
- }
-}
-
-func TestRunningGitCommandUnsuccessfully(t *testing.T) {
- client := NewClient(serverAddress)
- defer client.Close()
-
- _, stderr := redirectOutputStreams()
- exitStatus := client.Run([]string{
- "git",
- "--git-dir",
- path.Join(testRepoRoot, testRepo),
- "rev-list",
- "--count",
- "babecafe",
- })
- restoreOutputStreams()
-
- expectedExitStatus := 128
- if exitStatus != expectedExitStatus {
- t.Fatalf("Expected response exit status to equal %d, got %d", expectedExitStatus, exitStatus)
- }
-
- expectedStderr := []byte("fatal: ambiguous argument 'babecafe': unknown revision or path not in the working tree.")
- gotStderr := make([]byte, len(expectedStderr))
- stderr.Read(gotStderr)
- if !bytes.Contains(gotStderr, expectedStderr) {
- t.Fatalf("Expected stderr to contain \"%s\", found none in \"%s\"", expectedStderr, gotStderr)
- }
-}
-
-func redirectOutputStreams() (*os.File, *os.File) {
- stdoutReader, stdoutWriter, _ := os.Pipe()
- stderrReader, stderrWriter, _ := os.Pipe()
-
- os.Stdout = stdoutWriter
- os.Stderr = stderrWriter
-
- return stdoutReader, stderrReader
-}
-
-func restoreOutputStreams() {
- os.Stdout = origStdout
- os.Stderr = origStderr
-}