func (s *ExecuteSSHCommandSuite) TestIdentityFile(c *gc.C) { s.fakeSSH(c, echoSSH) response, err := ssh.ExecuteCommandOnMachine(ssh.ExecParams{ IdentityFile: "identity-file", Host: "hostname", Timeout: longWait, }) c.Assert(err, jc.ErrorIsNil) c.Assert(string(response.Stderr), jc.Contains, " -i identity-file ") }
func (s *ExecuteSSHCommandSuite) TestTimoutCaptureOutput(c *gc.C) { s.fakeSSH(c, slowSSH) response, err := ssh.ExecuteCommandOnMachine(ssh.ExecParams{ IdentityFile: "identity-file", Host: "hostname", Command: "ignored", Timeout: shortWait, }) c.Check(err, gc.ErrorMatches, "command timed out") c.Assert(response.Code, gc.Equals, 0) c.Assert(string(response.Stdout), gc.Equals, "stdout\n") c.Assert(string(response.Stderr), gc.Equals, "stderr\n") }
func (s *ExecuteSSHCommandSuite) TestCaptureOutput(c *gc.C) { s.fakeSSH(c, echoSSH) response, err := ssh.ExecuteCommandOnMachine(ssh.ExecParams{ Host: "hostname", Command: "sudo apt-get update\nsudo apt-get upgrade", Timeout: longWait, }) c.Assert(err, jc.ErrorIsNil) c.Assert(response.Code, gc.Equals, 0) c.Assert(string(response.Stdout), gc.Equals, "sudo apt-get update\nsudo apt-get upgrade\n") c.Assert(string(response.Stderr), gc.Equals, "-o StrictHostKeyChecking no -o PasswordAuthentication no -o ServerAliveInterval 30 hostname /bin/bash -s\n") }
func (s *ExecuteSSHCommandSuite) TestCapturesReturnCode(c *gc.C) { s.fakeSSH(c, passthroughSSH) response, err := ssh.ExecuteCommandOnMachine(ssh.ExecParams{ IdentityFile: "identity-file", Host: "hostname", Command: "echo stdout; exit 42", Timeout: longWait, }) c.Check(err, jc.ErrorIsNil) c.Assert(response.Code, gc.Equals, 42) c.Assert(string(response.Stdout), gc.Equals, "stdout\n") c.Assert(string(response.Stderr), gc.Equals, "") }