mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-12-02 11:02:16 +00:00
bump(fsouza/go-dockerclient): 76fd6c6
This commit is contained in:
27
Godeps/_workspace/src/github.com/fsouza/go-dockerclient/testing/server.go
generated
vendored
27
Godeps/_workspace/src/github.com/fsouza/go-dockerclient/testing/server.go
generated
vendored
@@ -12,6 +12,7 @@ import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
mathrand "math/rand"
|
||||
"net"
|
||||
"net/http"
|
||||
@@ -532,7 +533,7 @@ func (s *DockerServer) startContainer(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
container.HostConfig = &hostConfig
|
||||
if container.State.Running {
|
||||
http.Error(w, "Container already running", http.StatusBadRequest)
|
||||
http.Error(w, "", http.StatusNotModified)
|
||||
return
|
||||
}
|
||||
container.State.Running = true
|
||||
@@ -610,14 +611,34 @@ func (s *DockerServer) attachContainer(w http.ResponseWriter, r *http.Request) {
|
||||
http.Error(w, err.Error(), http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
wg := sync.WaitGroup{}
|
||||
if r.URL.Query().Get("stdin") == "1" {
|
||||
wg.Add(1)
|
||||
go func() {
|
||||
ioutil.ReadAll(conn)
|
||||
wg.Done()
|
||||
}()
|
||||
}
|
||||
outStream := stdcopy.NewStdWriter(conn, stdcopy.Stdout)
|
||||
if container.State.Running {
|
||||
fmt.Fprintf(outStream, "Container %q is running\n", container.ID)
|
||||
fmt.Fprintf(outStream, "Container is running\n")
|
||||
} else {
|
||||
fmt.Fprintf(outStream, "Container %q is not running\n", container.ID)
|
||||
fmt.Fprintf(outStream, "Container is not running\n")
|
||||
}
|
||||
fmt.Fprintln(outStream, "What happened?")
|
||||
fmt.Fprintln(outStream, "Something happened")
|
||||
wg.Wait()
|
||||
if r.URL.Query().Get("stream") == "1" {
|
||||
for {
|
||||
time.Sleep(1e6)
|
||||
s.cMut.RLock()
|
||||
if !container.State.Running {
|
||||
s.cMut.RUnlock()
|
||||
break
|
||||
}
|
||||
s.cMut.RUnlock()
|
||||
}
|
||||
}
|
||||
conn.Close()
|
||||
}
|
||||
|
||||
|
||||
77
Godeps/_workspace/src/github.com/fsouza/go-dockerclient/testing/server_test.go
generated
vendored
77
Godeps/_workspace/src/github.com/fsouza/go-dockerclient/testing/server_test.go
generated
vendored
@@ -5,9 +5,11 @@
|
||||
package testing
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"math/rand"
|
||||
"net"
|
||||
"net/http"
|
||||
@@ -624,8 +626,8 @@ func TestStartContainerAlreadyRunning(t *testing.T) {
|
||||
path := fmt.Sprintf("/containers/%s/start", server.containers[0].ID)
|
||||
request, _ := http.NewRequest("POST", path, bytes.NewBuffer([]byte("null")))
|
||||
server.ServeHTTP(recorder, request)
|
||||
if recorder.Code != http.StatusBadRequest {
|
||||
t.Errorf("StartContainer: wrong status code. Want %d. Got %d.", http.StatusBadRequest, recorder.Code)
|
||||
if recorder.Code != http.StatusNotModified {
|
||||
t.Errorf("StartContainer: wrong status code. Want %d. Got %d.", http.StatusNotModified, recorder.Code)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -845,22 +847,41 @@ func TestWaitContainerNotFound(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
type HijackableResponseRecorder struct {
|
||||
httptest.ResponseRecorder
|
||||
readCh chan []byte
|
||||
}
|
||||
|
||||
func (r *HijackableResponseRecorder) Hijack() (net.Conn, *bufio.ReadWriter, error) {
|
||||
myConn, otherConn := net.Pipe()
|
||||
r.readCh = make(chan []byte)
|
||||
go func() {
|
||||
data, _ := ioutil.ReadAll(myConn)
|
||||
r.readCh <- data
|
||||
}()
|
||||
return otherConn, nil, nil
|
||||
}
|
||||
|
||||
func (r *HijackableResponseRecorder) HijackBuffer() string {
|
||||
return string(<-r.readCh)
|
||||
}
|
||||
|
||||
func TestAttachContainer(t *testing.T) {
|
||||
server := DockerServer{}
|
||||
addContainers(&server, 1)
|
||||
server.containers[0].State.Running = true
|
||||
server.buildMuxer()
|
||||
recorder := httptest.NewRecorder()
|
||||
recorder := &HijackableResponseRecorder{}
|
||||
path := fmt.Sprintf("/containers/%s/attach?logs=1", server.containers[0].ID)
|
||||
request, _ := http.NewRequest("POST", path, nil)
|
||||
server.ServeHTTP(recorder, request)
|
||||
lines := []string{
|
||||
fmt.Sprintf("\x01\x00\x00\x00\x03\x00\x00\x00Container %q is running", server.containers[0].ID),
|
||||
"What happened?",
|
||||
"Something happened",
|
||||
"\x01\x00\x00\x00\x00\x00\x00\x15Container is running",
|
||||
"\x01\x00\x00\x00\x00\x00\x00\x0fWhat happened?",
|
||||
"\x01\x00\x00\x00\x00\x00\x00\x13Something happened",
|
||||
}
|
||||
expected := strings.Join(lines, "\n") + "\n"
|
||||
if body := recorder.Body.String(); body == expected {
|
||||
if body := recorder.HijackBuffer(); body != expected {
|
||||
t.Errorf("AttachContainer: wrong body. Want %q. Got %q.", expected, body)
|
||||
}
|
||||
}
|
||||
@@ -868,7 +889,7 @@ func TestAttachContainer(t *testing.T) {
|
||||
func TestAttachContainerNotFound(t *testing.T) {
|
||||
server := DockerServer{}
|
||||
server.buildMuxer()
|
||||
recorder := httptest.NewRecorder()
|
||||
recorder := &HijackableResponseRecorder{}
|
||||
path := "/containers/abc123/attach?logs=1"
|
||||
request, _ := http.NewRequest("POST", path, nil)
|
||||
server.ServeHTTP(recorder, request)
|
||||
@@ -877,6 +898,44 @@ func TestAttachContainerNotFound(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestAttachContainerWithStreamBlocks(t *testing.T) {
|
||||
server := DockerServer{}
|
||||
addContainers(&server, 1)
|
||||
server.containers[0].State.Running = true
|
||||
server.buildMuxer()
|
||||
path := fmt.Sprintf("/containers/%s/attach?logs=1&stdout=1&stream=1", server.containers[0].ID)
|
||||
request, _ := http.NewRequest("POST", path, nil)
|
||||
done := make(chan string)
|
||||
go func() {
|
||||
recorder := &HijackableResponseRecorder{}
|
||||
server.ServeHTTP(recorder, request)
|
||||
done <- recorder.HijackBuffer()
|
||||
}()
|
||||
select {
|
||||
case <-done:
|
||||
t.Fatalf("attach stream returned before container is stopped")
|
||||
case <-time.After(500 * time.Millisecond):
|
||||
}
|
||||
server.cMut.Lock()
|
||||
server.containers[0].State.Running = false
|
||||
server.cMut.Unlock()
|
||||
var body string
|
||||
select {
|
||||
case body = <-done:
|
||||
case <-time.After(5 * time.Second):
|
||||
t.Fatalf("timed out waiting for attach to finish")
|
||||
}
|
||||
lines := []string{
|
||||
"\x01\x00\x00\x00\x00\x00\x00\x15Container is running",
|
||||
"\x01\x00\x00\x00\x00\x00\x00\x0fWhat happened?",
|
||||
"\x01\x00\x00\x00\x00\x00\x00\x13Something happened",
|
||||
}
|
||||
expected := strings.Join(lines, "\n") + "\n"
|
||||
if body != expected {
|
||||
t.Errorf("AttachContainer: wrong body. Want %q. Got %q.", expected, body)
|
||||
}
|
||||
}
|
||||
|
||||
func TestRemoveContainer(t *testing.T) {
|
||||
server := DockerServer{}
|
||||
addContainers(&server, 1)
|
||||
@@ -1690,7 +1749,7 @@ func addNetworks(server *DockerServer, n int) {
|
||||
ID: fmt.Sprintf("%x", rand.Int()%10000),
|
||||
Type: "bridge",
|
||||
Endpoints: []*docker.Endpoint{
|
||||
&docker.Endpoint{
|
||||
{
|
||||
Name: "blah",
|
||||
ID: fmt.Sprintf("%x", rand.Int()%10000),
|
||||
Network: netid,
|
||||
|
||||
Reference in New Issue
Block a user