func (s *S) SetUpSuite(c *gocheck.C) { s.collName = "docker_unit" s.imageCollName = "docker_image" s.gitHost = "my.gandalf.com" s.repoNamespace = "tsuru" s.sshUser = "******" config.Set("git:ro-host", s.gitHost) config.Set("database:url", "127.0.0.1:27017") config.Set("database:name", "docker_provision_tests_s") config.Set("docker:repository-namespace", s.repoNamespace) config.Set("docker:router", "fake") config.Set("docker:collection", s.collName) config.Set("docker:deploy-cmd", "/var/lib/tsuru/deploy") config.Set("docker:run-cmd:bin", "/usr/local/bin/circusd /etc/circus/circus.ini") config.Set("docker:run-cmd:port", "8888") config.Set("docker:ssh:add-key-cmd", "/var/lib/tsuru/add-key") config.Set("docker:ssh:user", s.sshUser) config.Set("docker:cluster:storage", "redis") config.Set("docker:cluster:redis-prefix", "redis-scheduler-storage-test") config.Set("queue", "fake") s.deployCmd = "/var/lib/tsuru/deploy" s.runBin = "/usr/local/bin/circusd" s.runArgs = "/etc/circus/circus.ini" s.port = "8888" var err error s.server, err = dtesting.NewServer("127.0.0.1:0", nil, nil) c.Assert(err, gocheck.IsNil) s.targetRecover = tTesting.SetTargetFile(c, []byte("http://localhost")) s.storage, err = db.Conn() c.Assert(err, gocheck.IsNil) s.oldProvisioner = app.Provisioner app.Provisioner = &dockerProvisioner{} }
func (s *S) SetUpSuite(c *gocheck.C) { s.collName = "docker_unit" s.imageCollName = "docker_image" s.gitHost = "my.gandalf.com" s.repoNamespace = "tsuru" s.sshUser = "******" config.Set("git:ro-host", s.gitHost) config.Set("database:url", "127.0.0.1:27017") config.Set("database:name", "docker_provision_tests_s") config.Set("docker:repository-namespace", s.repoNamespace) config.Set("docker:router", "fake") config.Set("docker:collection", s.collName) config.Set("docker:deploy-cmd", "/var/lib/tsuru/deploy") config.Set("docker:run-cmd:bin", "/usr/local/bin/circusd /etc/circus/circus.ini") config.Set("docker:run-cmd:port", "8888") config.Set("docker:ssh:add-key-cmd", "/var/lib/tsuru/add-key") config.Set("docker:ssh:user", s.sshUser) config.Set("queue", "fake") s.deployCmd = "/var/lib/tsuru/deploy" s.runBin = "/usr/local/bin/circusd" s.runArgs = "/etc/circus/circus.ini" s.port = "8888" fsystem = &ftesting.RecordingFs{} f, err := fsystem.Create(os.ExpandEnv("${HOME}/.ssh/id_rsa.pub")) c.Assert(err, gocheck.IsNil) f.Write([]byte("key-content")) f.Close() s.server, err = dtesting.NewServer("127.0.0.1:0", nil) c.Assert(err, gocheck.IsNil) s.targetRecover = tTesting.SetTargetFile(c) s.storage, err = db.Conn() c.Assert(err, gocheck.IsNil) }
func (s *S) TestSSHToContainerCmdLongNoNewLine(c *gocheck.C) { var closeClientConn func() expected := fmt.Sprintf("%0200s", "x") server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { conn, _, err := w.(http.Hijacker).Hijack() c.Assert(err, gocheck.IsNil) conn.Write([]byte(expected)) closeClientConn() })) defer server.Close() closeClientConn = server.CloseClientConnections target := "http://" + server.Listener.Addr().String() targetRecover := ttesting.SetTargetFile(c, []byte(target)) defer ttesting.RollbackFile(targetRecover) var stdout, stderr, stdin bytes.Buffer context := cmd.Context{ Args: []string{"af3332d"}, Stdout: &stdout, Stderr: &stderr, Stdin: &stdin, } var command sshToContainerCmd err := command.Run(&context, nil) c.Assert(err, gocheck.IsNil) c.Assert(stdout.String(), gocheck.Equals, expected) }
func (s *S) TestSSHToContainerCmdRun(c *gocheck.C) { var closeClientConn func() server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { if r.URL.Path == "/docker/ssh/af3332d" && r.Method == "GET" && r.Header.Get("Authorization") == "bearer abc123" { conn, _, err := w.(http.Hijacker).Hijack() c.Assert(err, gocheck.IsNil) conn.Write([]byte("hello my friend\n")) conn.Write([]byte("glad to see you here\n")) closeClientConn() } else { http.Error(w, "not found", http.StatusNotFound) } })) defer server.Close() closeClientConn = server.CloseClientConnections target := "http://" + server.Listener.Addr().String() targetRecover := ttesting.SetTargetFile(c, []byte(target)) defer ttesting.RollbackFile(targetRecover) tokenRecover := ttesting.SetTokenFile(c, []byte("abc123")) defer ttesting.RollbackFile(tokenRecover) var stdout, stderr, stdin bytes.Buffer context := cmd.Context{ Args: []string{"af3332d"}, Stdout: &stdout, Stderr: &stderr, Stdin: &stdin, } var command sshToContainerCmd err := command.Run(&context, nil) c.Assert(err, gocheck.IsNil) c.Assert(stdout.String(), gocheck.Equals, "hello my friend\nglad to see you here\n") }
func (s *S) TestSSHToContainerCmdNoToken(c *gocheck.C) { server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { http.Error(w, "You must provide a valid Authorization header", http.StatusUnauthorized) })) defer server.Close() target := "http://" + server.Listener.Addr().String() targetRecover := ttesting.SetTargetFile(c, []byte(target)) defer ttesting.RollbackFile(targetRecover) var buf bytes.Buffer context := cmd.Context{ Args: []string{"af3332d"}, Stdout: &buf, Stderr: &buf, Stdin: &buf, } var command sshToContainerCmd err := command.Run(&context, nil) c.Assert(err, gocheck.FitsTypeOf, &errors.HTTP{}) httpErr := err.(*errors.HTTP) c.Assert(httpErr.Code, gocheck.Equals, 401) c.Assert(httpErr.Message, gocheck.Equals, "HTTP/1.1 401 Unauthorized") }
func (s *S) TestSSHToContainerCmdConnectionRefused(c *gocheck.C) { server := httptest.NewServer(nil) addr := server.Listener.Addr().String() server.Close() targetRecover := ttesting.SetTargetFile(c, []byte("http://"+addr)) defer ttesting.RollbackFile(targetRecover) tokenRecover := ttesting.SetTokenFile(c, []byte("abc123")) defer ttesting.RollbackFile(tokenRecover) var buf bytes.Buffer context := cmd.Context{ Args: []string{"af3332d"}, Stdout: &buf, Stderr: &buf, Stdin: &buf, } var command sshToContainerCmd err := command.Run(&context, nil) c.Assert(err, gocheck.NotNil) opErr, ok := err.(*net.OpError) c.Assert(ok, gocheck.Equals, true) c.Assert(opErr.Net, gocheck.Equals, "tcp") c.Assert(opErr.Op, gocheck.Equals, "dial") c.Assert(opErr.Addr.String(), gocheck.Equals, addr) }
func (s *S) SetUpSuite(c *gocheck.C) { s.recover = tTesting.SetTargetFile(c, []byte("http://localhost")) }
func (s *S) SetUpSuite(c *gocheck.C) { var stdout, stderr bytes.Buffer manager = cmd.NewManager("glb", version, header, &stdout, &stderr, os.Stdin, nil) s.recover = tTesting.SetTargetFile(c) }
func (s *S) SetUpSuite(c *gocheck.C) { s.recover = tTesting.SetTargetFile(c) }