diff options
author | Jacob Vosmaer <jacob@gitlab.com> | 2017-01-05 14:18:31 +0300 |
---|---|---|
committer | Jacob Vosmaer <jacob@gitlab.com> | 2017-01-05 14:18:31 +0300 |
commit | 2145535fa6fa9f7b10d41495fc52027712a04987 (patch) | |
tree | 4747b4c837524c9f8a62b06cd8436ed9de986590 /client | |
parent | 7f85b73b414127fe7ca2afc1f729631b8c51c23f (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.go | 91 | ||||
-rw-r--r-- | client/client_test.go | 112 |
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 -} |