http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/868863aa/cli/vendor/golang.org/x/crypto/ssh/server.go
----------------------------------------------------------------------
diff --git a/cli/vendor/golang.org/x/crypto/ssh/server.go 
b/cli/vendor/golang.org/x/crypto/ssh/server.go
deleted file mode 100644
index 4781eb7..0000000
--- a/cli/vendor/golang.org/x/crypto/ssh/server.go
+++ /dev/null
@@ -1,495 +0,0 @@
-// Copyright 2011 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package ssh
-
-import (
-       "bytes"
-       "errors"
-       "fmt"
-       "io"
-       "net"
-)
-
-// The Permissions type holds fine-grained permissions that are
-// specific to a user or a specific authentication method for a
-// user. Permissions, except for "source-address", must be enforced in
-// the server application layer, after successful authentication. The
-// Permissions are passed on in ServerConn so a server implementation
-// can honor them.
-type Permissions struct {
-       // Critical options restrict default permissions. Common
-       // restrictions are "source-address" and "force-command". If
-       // the server cannot enforce the restriction, or does not
-       // recognize it, the user should not authenticate.
-       CriticalOptions map[string]string
-
-       // Extensions are extra functionality that the server may
-       // offer on authenticated connections. Common extensions are
-       // "permit-agent-forwarding", "permit-X11-forwarding". Lack of
-       // support for an extension does not preclude authenticating a
-       // user.
-       Extensions map[string]string
-}
-
-// ServerConfig holds server specific configuration data.
-type ServerConfig struct {
-       // Config contains configuration shared between client and server.
-       Config
-
-       hostKeys []Signer
-
-       // NoClientAuth is true if clients are allowed to connect without
-       // authenticating.
-       NoClientAuth bool
-
-       // PasswordCallback, if non-nil, is called when a user
-       // attempts to authenticate using a password.
-       PasswordCallback func(conn ConnMetadata, password []byte) 
(*Permissions, error)
-
-       // PublicKeyCallback, if non-nil, is called when a client attempts 
public
-       // key authentication. It must return true if the given public key is
-       // valid for the given user. For example, see CertChecker.Authenticate.
-       PublicKeyCallback func(conn ConnMetadata, key PublicKey) (*Permissions, 
error)
-
-       // KeyboardInteractiveCallback, if non-nil, is called when
-       // keyboard-interactive authentication is selected (RFC
-       // 4256). The client object's Challenge function should be
-       // used to query the user. The callback may offer multiple
-       // Challenge rounds. To avoid information leaks, the client
-       // should be presented a challenge even if the user is
-       // unknown.
-       KeyboardInteractiveCallback func(conn ConnMetadata, client 
KeyboardInteractiveChallenge) (*Permissions, error)
-
-       // AuthLogCallback, if non-nil, is called to log all authentication
-       // attempts.
-       AuthLogCallback func(conn ConnMetadata, method string, err error)
-
-       // ServerVersion is the version identification string to announce in
-       // the public handshake.
-       // If empty, a reasonable default is used.
-       // Note that RFC 4253 section 4.2 requires that this string start with
-       // "SSH-2.0-".
-       ServerVersion string
-}
-
-// AddHostKey adds a private key as a host key. If an existing host
-// key exists with the same algorithm, it is overwritten. Each server
-// config must have at least one host key.
-func (s *ServerConfig) AddHostKey(key Signer) {
-       for i, k := range s.hostKeys {
-               if k.PublicKey().Type() == key.PublicKey().Type() {
-                       s.hostKeys[i] = key
-                       return
-               }
-       }
-
-       s.hostKeys = append(s.hostKeys, key)
-}
-
-// cachedPubKey contains the results of querying whether a public key is
-// acceptable for a user.
-type cachedPubKey struct {
-       user       string
-       pubKeyData []byte
-       result     error
-       perms      *Permissions
-}
-
-const maxCachedPubKeys = 16
-
-// pubKeyCache caches tests for public keys.  Since SSH clients
-// will query whether a public key is acceptable before attempting to
-// authenticate with it, we end up with duplicate queries for public
-// key validity.  The cache only applies to a single ServerConn.
-type pubKeyCache struct {
-       keys []cachedPubKey
-}
-
-// get returns the result for a given user/algo/key tuple.
-func (c *pubKeyCache) get(user string, pubKeyData []byte) (cachedPubKey, bool) 
{
-       for _, k := range c.keys {
-               if k.user == user && bytes.Equal(k.pubKeyData, pubKeyData) {
-                       return k, true
-               }
-       }
-       return cachedPubKey{}, false
-}
-
-// add adds the given tuple to the cache.
-func (c *pubKeyCache) add(candidate cachedPubKey) {
-       if len(c.keys) < maxCachedPubKeys {
-               c.keys = append(c.keys, candidate)
-       }
-}
-
-// ServerConn is an authenticated SSH connection, as seen from the
-// server
-type ServerConn struct {
-       Conn
-
-       // If the succeeding authentication callback returned a
-       // non-nil Permissions pointer, it is stored here.
-       Permissions *Permissions
-}
-
-// NewServerConn starts a new SSH server with c as the underlying
-// transport.  It starts with a handshake and, if the handshake is
-// unsuccessful, it closes the connection and returns an error.  The
-// Request and NewChannel channels must be serviced, or the connection
-// will hang.
-func NewServerConn(c net.Conn, config *ServerConfig) (*ServerConn, <-chan 
NewChannel, <-chan *Request, error) {
-       fullConf := *config
-       fullConf.SetDefaults()
-       s := &connection{
-               sshConn: sshConn{conn: c},
-       }
-       perms, err := s.serverHandshake(&fullConf)
-       if err != nil {
-               c.Close()
-               return nil, nil, nil, err
-       }
-       return &ServerConn{s, perms}, s.mux.incomingChannels, 
s.mux.incomingRequests, nil
-}
-
-// signAndMarshal signs the data with the appropriate algorithm,
-// and serializes the result in SSH wire format.
-func signAndMarshal(k Signer, rand io.Reader, data []byte) ([]byte, error) {
-       sig, err := k.Sign(rand, data)
-       if err != nil {
-               return nil, err
-       }
-
-       return Marshal(sig), nil
-}
-
-// handshake performs key exchange and user authentication.
-func (s *connection) serverHandshake(config *ServerConfig) (*Permissions, 
error) {
-       if len(config.hostKeys) == 0 {
-               return nil, errors.New("ssh: server has no host keys")
-       }
-
-       if !config.NoClientAuth && config.PasswordCallback == nil && 
config.PublicKeyCallback == nil && config.KeyboardInteractiveCallback == nil {
-               return nil, errors.New("ssh: no authentication methods 
configured but NoClientAuth is also false")
-       }
-
-       if config.ServerVersion != "" {
-               s.serverVersion = []byte(config.ServerVersion)
-       } else {
-               s.serverVersion = []byte(packageVersion)
-       }
-       var err error
-       s.clientVersion, err = exchangeVersions(s.sshConn.conn, s.serverVersion)
-       if err != nil {
-               return nil, err
-       }
-
-       tr := newTransport(s.sshConn.conn, config.Rand, false /* not client */)
-       s.transport = newServerTransport(tr, s.clientVersion, s.serverVersion, 
config)
-
-       if err := s.transport.requestKeyChange(); err != nil {
-               return nil, err
-       }
-
-       if packet, err := s.transport.readPacket(); err != nil {
-               return nil, err
-       } else if packet[0] != msgNewKeys {
-               return nil, unexpectedMessageError(msgNewKeys, packet[0])
-       }
-
-       // We just did the key change, so the session ID is established.
-       s.sessionID = s.transport.getSessionID()
-
-       var packet []byte
-       if packet, err = s.transport.readPacket(); err != nil {
-               return nil, err
-       }
-
-       var serviceRequest serviceRequestMsg
-       if err = Unmarshal(packet, &serviceRequest); err != nil {
-               return nil, err
-       }
-       if serviceRequest.Service != serviceUserAuth {
-               return nil, errors.New("ssh: requested service '" + 
serviceRequest.Service + "' before authenticating")
-       }
-       serviceAccept := serviceAcceptMsg{
-               Service: serviceUserAuth,
-       }
-       if err := s.transport.writePacket(Marshal(&serviceAccept)); err != nil {
-               return nil, err
-       }
-
-       perms, err := s.serverAuthenticate(config)
-       if err != nil {
-               return nil, err
-       }
-       s.mux = newMux(s.transport)
-       return perms, err
-}
-
-func isAcceptableAlgo(algo string) bool {
-       switch algo {
-       case KeyAlgoRSA, KeyAlgoDSA, KeyAlgoECDSA256, KeyAlgoECDSA384, 
KeyAlgoECDSA521,
-               CertAlgoRSAv01, CertAlgoDSAv01, CertAlgoECDSA256v01, 
CertAlgoECDSA384v01, CertAlgoECDSA521v01:
-               return true
-       }
-       return false
-}
-
-func checkSourceAddress(addr net.Addr, sourceAddr string) error {
-       if addr == nil {
-               return errors.New("ssh: no address known for client, but 
source-address match required")
-       }
-
-       tcpAddr, ok := addr.(*net.TCPAddr)
-       if !ok {
-               return fmt.Errorf("ssh: remote address %v is not an TCP address 
when checking source-address match", addr)
-       }
-
-       if allowedIP := net.ParseIP(sourceAddr); allowedIP != nil {
-               if bytes.Equal(allowedIP, tcpAddr.IP) {
-                       return nil
-               }
-       } else {
-               _, ipNet, err := net.ParseCIDR(sourceAddr)
-               if err != nil {
-                       return fmt.Errorf("ssh: error parsing source-address 
restriction %q: %v", sourceAddr, err)
-               }
-
-               if ipNet.Contains(tcpAddr.IP) {
-                       return nil
-               }
-       }
-
-       return fmt.Errorf("ssh: remote address %v is not allowed because of 
source-address restriction", addr)
-}
-
-func (s *connection) serverAuthenticate(config *ServerConfig) (*Permissions, 
error) {
-       var err error
-       var cache pubKeyCache
-       var perms *Permissions
-
-userAuthLoop:
-       for {
-               var userAuthReq userAuthRequestMsg
-               if packet, err := s.transport.readPacket(); err != nil {
-                       return nil, err
-               } else if err = Unmarshal(packet, &userAuthReq); err != nil {
-                       return nil, err
-               }
-
-               if userAuthReq.Service != serviceSSH {
-                       return nil, errors.New("ssh: client attempted to 
negotiate for unknown service: " + userAuthReq.Service)
-               }
-
-               s.user = userAuthReq.User
-               perms = nil
-               authErr := errors.New("no auth passed yet")
-
-               switch userAuthReq.Method {
-               case "none":
-                       if config.NoClientAuth {
-                               s.user = ""
-                               authErr = nil
-                       }
-               case "password":
-                       if config.PasswordCallback == nil {
-                               authErr = errors.New("ssh: password auth not 
configured")
-                               break
-                       }
-                       payload := userAuthReq.Payload
-                       if len(payload) < 1 || payload[0] != 0 {
-                               return nil, parseError(msgUserAuthRequest)
-                       }
-                       payload = payload[1:]
-                       password, payload, ok := parseString(payload)
-                       if !ok || len(payload) > 0 {
-                               return nil, parseError(msgUserAuthRequest)
-                       }
-
-                       perms, authErr = config.PasswordCallback(s, password)
-               case "keyboard-interactive":
-                       if config.KeyboardInteractiveCallback == nil {
-                               authErr = errors.New("ssh: keyboard-interactive 
auth not configubred")
-                               break
-                       }
-
-                       prompter := &sshClientKeyboardInteractive{s}
-                       perms, authErr = config.KeyboardInteractiveCallback(s, 
prompter.Challenge)
-               case "publickey":
-                       if config.PublicKeyCallback == nil {
-                               authErr = errors.New("ssh: publickey auth not 
configured")
-                               break
-                       }
-                       payload := userAuthReq.Payload
-                       if len(payload) < 1 {
-                               return nil, parseError(msgUserAuthRequest)
-                       }
-                       isQuery := payload[0] == 0
-                       payload = payload[1:]
-                       algoBytes, payload, ok := parseString(payload)
-                       if !ok {
-                               return nil, parseError(msgUserAuthRequest)
-                       }
-                       algo := string(algoBytes)
-                       if !isAcceptableAlgo(algo) {
-                               authErr = fmt.Errorf("ssh: algorithm %q not 
accepted", algo)
-                               break
-                       }
-
-                       pubKeyData, payload, ok := parseString(payload)
-                       if !ok {
-                               return nil, parseError(msgUserAuthRequest)
-                       }
-
-                       pubKey, err := ParsePublicKey(pubKeyData)
-                       if err != nil {
-                               return nil, err
-                       }
-
-                       candidate, ok := cache.get(s.user, pubKeyData)
-                       if !ok {
-                               candidate.user = s.user
-                               candidate.pubKeyData = pubKeyData
-                               candidate.perms, candidate.result = 
config.PublicKeyCallback(s, pubKey)
-                               if candidate.result == nil && candidate.perms 
!= nil && candidate.perms.CriticalOptions != nil && 
candidate.perms.CriticalOptions[sourceAddressCriticalOption] != "" {
-                                       candidate.result = checkSourceAddress(
-                                               s.RemoteAddr(),
-                                               
candidate.perms.CriticalOptions[sourceAddressCriticalOption])
-                               }
-                               cache.add(candidate)
-                       }
-
-                       if isQuery {
-                               // The client can query if the given public key
-                               // would be okay.
-                               if len(payload) > 0 {
-                                       return nil, 
parseError(msgUserAuthRequest)
-                               }
-
-                               if candidate.result == nil {
-                                       okMsg := userAuthPubKeyOkMsg{
-                                               Algo:   algo,
-                                               PubKey: pubKeyData,
-                                       }
-                                       if err = 
s.transport.writePacket(Marshal(&okMsg)); err != nil {
-                                               return nil, err
-                                       }
-                                       continue userAuthLoop
-                               }
-                               authErr = candidate.result
-                       } else {
-                               sig, payload, ok := parseSignature(payload)
-                               if !ok || len(payload) > 0 {
-                                       return nil, 
parseError(msgUserAuthRequest)
-                               }
-                               // Ensure the public key algo and signature algo
-                               // are supported.  Compare the private key
-                               // algorithm name that corresponds to algo with
-                               // sig.Format.  This is usually the same, but
-                               // for certs, the names differ.
-                               if !isAcceptableAlgo(sig.Format) {
-                                       break
-                               }
-                               signedData := 
buildDataSignedForAuth(s.transport.getSessionID(), userAuthReq, algoBytes, 
pubKeyData)
-
-                               if err := pubKey.Verify(signedData, sig); err 
!= nil {
-                                       return nil, err
-                               }
-
-                               authErr = candidate.result
-                               perms = candidate.perms
-                       }
-               default:
-                       authErr = fmt.Errorf("ssh: unknown method %q", 
userAuthReq.Method)
-               }
-
-               if config.AuthLogCallback != nil {
-                       config.AuthLogCallback(s, userAuthReq.Method, authErr)
-               }
-
-               if authErr == nil {
-                       break userAuthLoop
-               }
-
-               var failureMsg userAuthFailureMsg
-               if config.PasswordCallback != nil {
-                       failureMsg.Methods = append(failureMsg.Methods, 
"password")
-               }
-               if config.PublicKeyCallback != nil {
-                       failureMsg.Methods = append(failureMsg.Methods, 
"publickey")
-               }
-               if config.KeyboardInteractiveCallback != nil {
-                       failureMsg.Methods = append(failureMsg.Methods, 
"keyboard-interactive")
-               }
-
-               if len(failureMsg.Methods) == 0 {
-                       return nil, errors.New("ssh: no authentication methods 
configured but NoClientAuth is also false")
-               }
-
-               if err = s.transport.writePacket(Marshal(&failureMsg)); err != 
nil {
-                       return nil, err
-               }
-       }
-
-       if err = s.transport.writePacket([]byte{msgUserAuthSuccess}); err != 
nil {
-               return nil, err
-       }
-       return perms, nil
-}
-
-// sshClientKeyboardInteractive implements a ClientKeyboardInteractive by
-// asking the client on the other side of a ServerConn.
-type sshClientKeyboardInteractive struct {
-       *connection
-}
-
-func (c *sshClientKeyboardInteractive) Challenge(user, instruction string, 
questions []string, echos []bool) (answers []string, err error) {
-       if len(questions) != len(echos) {
-               return nil, errors.New("ssh: echos and questions must have 
equal length")
-       }
-
-       var prompts []byte
-       for i := range questions {
-               prompts = appendString(prompts, questions[i])
-               prompts = appendBool(prompts, echos[i])
-       }
-
-       if err := c.transport.writePacket(Marshal(&userAuthInfoRequestMsg{
-               Instruction: instruction,
-               NumPrompts:  uint32(len(questions)),
-               Prompts:     prompts,
-       })); err != nil {
-               return nil, err
-       }
-
-       packet, err := c.transport.readPacket()
-       if err != nil {
-               return nil, err
-       }
-       if packet[0] != msgUserAuthInfoResponse {
-               return nil, unexpectedMessageError(msgUserAuthInfoResponse, 
packet[0])
-       }
-       packet = packet[1:]
-
-       n, packet, ok := parseUint32(packet)
-       if !ok || int(n) != len(questions) {
-               return nil, parseError(msgUserAuthInfoResponse)
-       }
-
-       for i := uint32(0); i < n; i++ {
-               ans, rest, ok := parseString(packet)
-               if !ok {
-                       return nil, parseError(msgUserAuthInfoResponse)
-               }
-
-               answers = append(answers, string(ans))
-               packet = rest
-       }
-       if len(packet) != 0 {
-               return nil, errors.New("ssh: junk at end of message")
-       }
-
-       return answers, nil
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/868863aa/cli/vendor/golang.org/x/crypto/ssh/session.go
----------------------------------------------------------------------
diff --git a/cli/vendor/golang.org/x/crypto/ssh/session.go 
b/cli/vendor/golang.org/x/crypto/ssh/session.go
deleted file mode 100644
index fd10cd1..0000000
--- a/cli/vendor/golang.org/x/crypto/ssh/session.go
+++ /dev/null
@@ -1,605 +0,0 @@
-// Copyright 2011 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package ssh
-
-// Session implements an interactive session described in
-// "RFC 4254, section 6".
-
-import (
-       "bytes"
-       "errors"
-       "fmt"
-       "io"
-       "io/ioutil"
-       "sync"
-)
-
-type Signal string
-
-// POSIX signals as listed in RFC 4254 Section 6.10.
-const (
-       SIGABRT Signal = "ABRT"
-       SIGALRM Signal = "ALRM"
-       SIGFPE  Signal = "FPE"
-       SIGHUP  Signal = "HUP"
-       SIGILL  Signal = "ILL"
-       SIGINT  Signal = "INT"
-       SIGKILL Signal = "KILL"
-       SIGPIPE Signal = "PIPE"
-       SIGQUIT Signal = "QUIT"
-       SIGSEGV Signal = "SEGV"
-       SIGTERM Signal = "TERM"
-       SIGUSR1 Signal = "USR1"
-       SIGUSR2 Signal = "USR2"
-)
-
-var signals = map[Signal]int{
-       SIGABRT: 6,
-       SIGALRM: 14,
-       SIGFPE:  8,
-       SIGHUP:  1,
-       SIGILL:  4,
-       SIGINT:  2,
-       SIGKILL: 9,
-       SIGPIPE: 13,
-       SIGQUIT: 3,
-       SIGSEGV: 11,
-       SIGTERM: 15,
-}
-
-type TerminalModes map[uint8]uint32
-
-// POSIX terminal mode flags as listed in RFC 4254 Section 8.
-const (
-       tty_OP_END    = 0
-       VINTR         = 1
-       VQUIT         = 2
-       VERASE        = 3
-       VKILL         = 4
-       VEOF          = 5
-       VEOL          = 6
-       VEOL2         = 7
-       VSTART        = 8
-       VSTOP         = 9
-       VSUSP         = 10
-       VDSUSP        = 11
-       VREPRINT      = 12
-       VWERASE       = 13
-       VLNEXT        = 14
-       VFLUSH        = 15
-       VSWTCH        = 16
-       VSTATUS       = 17
-       VDISCARD      = 18
-       IGNPAR        = 30
-       PARMRK        = 31
-       INPCK         = 32
-       ISTRIP        = 33
-       INLCR         = 34
-       IGNCR         = 35
-       ICRNL         = 36
-       IUCLC         = 37
-       IXON          = 38
-       IXANY         = 39
-       IXOFF         = 40
-       IMAXBEL       = 41
-       ISIG          = 50
-       ICANON        = 51
-       XCASE         = 52
-       ECHO          = 53
-       ECHOE         = 54
-       ECHOK         = 55
-       ECHONL        = 56
-       NOFLSH        = 57
-       TOSTOP        = 58
-       IEXTEN        = 59
-       ECHOCTL       = 60
-       ECHOKE        = 61
-       PENDIN        = 62
-       OPOST         = 70
-       OLCUC         = 71
-       ONLCR         = 72
-       OCRNL         = 73
-       ONOCR         = 74
-       ONLRET        = 75
-       CS7           = 90
-       CS8           = 91
-       PARENB        = 92
-       PARODD        = 93
-       TTY_OP_ISPEED = 128
-       TTY_OP_OSPEED = 129
-)
-
-// A Session represents a connection to a remote command or shell.
-type Session struct {
-       // Stdin specifies the remote process's standard input.
-       // If Stdin is nil, the remote process reads from an empty
-       // bytes.Buffer.
-       Stdin io.Reader
-
-       // Stdout and Stderr specify the remote process's standard
-       // output and error.
-       //
-       // If either is nil, Run connects the corresponding file
-       // descriptor to an instance of ioutil.Discard. There is a
-       // fixed amount of buffering that is shared for the two streams.
-       // If either blocks it may eventually cause the remote
-       // command to block.
-       Stdout io.Writer
-       Stderr io.Writer
-
-       ch        Channel // the channel backing this session
-       started   bool    // true once Start, Run or Shell is invoked.
-       copyFuncs []func() error
-       errors    chan error // one send per copyFunc
-
-       // true if pipe method is active
-       stdinpipe, stdoutpipe, stderrpipe bool
-
-       // stdinPipeWriter is non-nil if StdinPipe has not been called
-       // and Stdin was specified by the user; it is the write end of
-       // a pipe connecting Session.Stdin to the stdin channel.
-       stdinPipeWriter io.WriteCloser
-
-       exitStatus chan error
-}
-
-// SendRequest sends an out-of-band channel request on the SSH channel
-// underlying the session.
-func (s *Session) SendRequest(name string, wantReply bool, payload []byte) 
(bool, error) {
-       return s.ch.SendRequest(name, wantReply, payload)
-}
-
-func (s *Session) Close() error {
-       return s.ch.Close()
-}
-
-// RFC 4254 Section 6.4.
-type setenvRequest struct {
-       Name  string
-       Value string
-}
-
-// Setenv sets an environment variable that will be applied to any
-// command executed by Shell or Run.
-func (s *Session) Setenv(name, value string) error {
-       msg := setenvRequest{
-               Name:  name,
-               Value: value,
-       }
-       ok, err := s.ch.SendRequest("env", true, Marshal(&msg))
-       if err == nil && !ok {
-               err = errors.New("ssh: setenv failed")
-       }
-       return err
-}
-
-// RFC 4254 Section 6.2.
-type ptyRequestMsg struct {
-       Term     string
-       Columns  uint32
-       Rows     uint32
-       Width    uint32
-       Height   uint32
-       Modelist string
-}
-
-// RequestPty requests the association of a pty with the session on the remote 
host.
-func (s *Session) RequestPty(term string, h, w int, termmodes TerminalModes) 
error {
-       var tm []byte
-       for k, v := range termmodes {
-               kv := struct {
-                       Key byte
-                       Val uint32
-               }{k, v}
-
-               tm = append(tm, Marshal(&kv)...)
-       }
-       tm = append(tm, tty_OP_END)
-       req := ptyRequestMsg{
-               Term:     term,
-               Columns:  uint32(w),
-               Rows:     uint32(h),
-               Width:    uint32(w * 8),
-               Height:   uint32(h * 8),
-               Modelist: string(tm),
-       }
-       ok, err := s.ch.SendRequest("pty-req", true, Marshal(&req))
-       if err == nil && !ok {
-               err = errors.New("ssh: pty-req failed")
-       }
-       return err
-}
-
-// RFC 4254 Section 6.5.
-type subsystemRequestMsg struct {
-       Subsystem string
-}
-
-// RequestSubsystem requests the association of a subsystem with the session 
on the remote host.
-// A subsystem is a predefined command that runs in the background when the 
ssh session is initiated
-func (s *Session) RequestSubsystem(subsystem string) error {
-       msg := subsystemRequestMsg{
-               Subsystem: subsystem,
-       }
-       ok, err := s.ch.SendRequest("subsystem", true, Marshal(&msg))
-       if err == nil && !ok {
-               err = errors.New("ssh: subsystem request failed")
-       }
-       return err
-}
-
-// RFC 4254 Section 6.9.
-type signalMsg struct {
-       Signal string
-}
-
-// Signal sends the given signal to the remote process.
-// sig is one of the SIG* constants.
-func (s *Session) Signal(sig Signal) error {
-       msg := signalMsg{
-               Signal: string(sig),
-       }
-
-       _, err := s.ch.SendRequest("signal", false, Marshal(&msg))
-       return err
-}
-
-// RFC 4254 Section 6.5.
-type execMsg struct {
-       Command string
-}
-
-// Start runs cmd on the remote host. Typically, the remote
-// server passes cmd to the shell for interpretation.
-// A Session only accepts one call to Run, Start or Shell.
-func (s *Session) Start(cmd string) error {
-       if s.started {
-               return errors.New("ssh: session already started")
-       }
-       req := execMsg{
-               Command: cmd,
-       }
-
-       ok, err := s.ch.SendRequest("exec", true, Marshal(&req))
-       if err == nil && !ok {
-               err = fmt.Errorf("ssh: command %v failed", cmd)
-       }
-       if err != nil {
-               return err
-       }
-       return s.start()
-}
-
-// Run runs cmd on the remote host. Typically, the remote
-// server passes cmd to the shell for interpretation.
-// A Session only accepts one call to Run, Start, Shell, Output,
-// or CombinedOutput.
-//
-// The returned error is nil if the command runs, has no problems
-// copying stdin, stdout, and stderr, and exits with a zero exit
-// status.
-//
-// If the command fails to run or doesn't complete successfully, the
-// error is of type *ExitError. Other error types may be
-// returned for I/O problems.
-func (s *Session) Run(cmd string) error {
-       err := s.Start(cmd)
-       if err != nil {
-               return err
-       }
-       return s.Wait()
-}
-
-// Output runs cmd on the remote host and returns its standard output.
-func (s *Session) Output(cmd string) ([]byte, error) {
-       if s.Stdout != nil {
-               return nil, errors.New("ssh: Stdout already set")
-       }
-       var b bytes.Buffer
-       s.Stdout = &b
-       err := s.Run(cmd)
-       return b.Bytes(), err
-}
-
-type singleWriter struct {
-       b  bytes.Buffer
-       mu sync.Mutex
-}
-
-func (w *singleWriter) Write(p []byte) (int, error) {
-       w.mu.Lock()
-       defer w.mu.Unlock()
-       return w.b.Write(p)
-}
-
-// CombinedOutput runs cmd on the remote host and returns its combined
-// standard output and standard error.
-func (s *Session) CombinedOutput(cmd string) ([]byte, error) {
-       if s.Stdout != nil {
-               return nil, errors.New("ssh: Stdout already set")
-       }
-       if s.Stderr != nil {
-               return nil, errors.New("ssh: Stderr already set")
-       }
-       var b singleWriter
-       s.Stdout = &b
-       s.Stderr = &b
-       err := s.Run(cmd)
-       return b.b.Bytes(), err
-}
-
-// Shell starts a login shell on the remote host. A Session only
-// accepts one call to Run, Start, Shell, Output, or CombinedOutput.
-func (s *Session) Shell() error {
-       if s.started {
-               return errors.New("ssh: session already started")
-       }
-
-       ok, err := s.ch.SendRequest("shell", true, nil)
-       if err == nil && !ok {
-               return errors.New("ssh: could not start shell")
-       }
-       if err != nil {
-               return err
-       }
-       return s.start()
-}
-
-func (s *Session) start() error {
-       s.started = true
-
-       type F func(*Session)
-       for _, setupFd := range []F{(*Session).stdin, (*Session).stdout, 
(*Session).stderr} {
-               setupFd(s)
-       }
-
-       s.errors = make(chan error, len(s.copyFuncs))
-       for _, fn := range s.copyFuncs {
-               go func(fn func() error) {
-                       s.errors <- fn()
-               }(fn)
-       }
-       return nil
-}
-
-// Wait waits for the remote command to exit.
-//
-// The returned error is nil if the command runs, has no problems
-// copying stdin, stdout, and stderr, and exits with a zero exit
-// status.
-//
-// If the command fails to run or doesn't complete successfully, the
-// error is of type *ExitError. Other error types may be
-// returned for I/O problems.
-func (s *Session) Wait() error {
-       if !s.started {
-               return errors.New("ssh: session not started")
-       }
-       waitErr := <-s.exitStatus
-
-       if s.stdinPipeWriter != nil {
-               s.stdinPipeWriter.Close()
-       }
-       var copyError error
-       for _ = range s.copyFuncs {
-               if err := <-s.errors; err != nil && copyError == nil {
-                       copyError = err
-               }
-       }
-       if waitErr != nil {
-               return waitErr
-       }
-       return copyError
-}
-
-func (s *Session) wait(reqs <-chan *Request) error {
-       wm := Waitmsg{status: -1}
-       // Wait for msg channel to be closed before returning.
-       for msg := range reqs {
-               switch msg.Type {
-               case "exit-status":
-                       d := msg.Payload
-                       wm.status = int(d[0])<<24 | int(d[1])<<16 | 
int(d[2])<<8 | int(d[3])
-               case "exit-signal":
-                       var sigval struct {
-                               Signal     string
-                               CoreDumped bool
-                               Error      string
-                               Lang       string
-                       }
-                       if err := Unmarshal(msg.Payload, &sigval); err != nil {
-                               return err
-                       }
-
-                       // Must sanitize strings?
-                       wm.signal = sigval.Signal
-                       wm.msg = sigval.Error
-                       wm.lang = sigval.Lang
-               default:
-                       // This handles keepalives and matches
-                       // OpenSSH's behaviour.
-                       if msg.WantReply {
-                               msg.Reply(false, nil)
-                       }
-               }
-       }
-       if wm.status == 0 {
-               return nil
-       }
-       if wm.status == -1 {
-               // exit-status was never sent from server
-               if wm.signal == "" {
-                       return errors.New("wait: remote command exited without 
exit status or exit signal")
-               }
-               wm.status = 128
-               if _, ok := signals[Signal(wm.signal)]; ok {
-                       wm.status += signals[Signal(wm.signal)]
-               }
-       }
-       return &ExitError{wm}
-}
-
-func (s *Session) stdin() {
-       if s.stdinpipe {
-               return
-       }
-       var stdin io.Reader
-       if s.Stdin == nil {
-               stdin = new(bytes.Buffer)
-       } else {
-               r, w := io.Pipe()
-               go func() {
-                       _, err := io.Copy(w, s.Stdin)
-                       w.CloseWithError(err)
-               }()
-               stdin, s.stdinPipeWriter = r, w
-       }
-       s.copyFuncs = append(s.copyFuncs, func() error {
-               _, err := io.Copy(s.ch, stdin)
-               if err1 := s.ch.CloseWrite(); err == nil && err1 != io.EOF {
-                       err = err1
-               }
-               return err
-       })
-}
-
-func (s *Session) stdout() {
-       if s.stdoutpipe {
-               return
-       }
-       if s.Stdout == nil {
-               s.Stdout = ioutil.Discard
-       }
-       s.copyFuncs = append(s.copyFuncs, func() error {
-               _, err := io.Copy(s.Stdout, s.ch)
-               return err
-       })
-}
-
-func (s *Session) stderr() {
-       if s.stderrpipe {
-               return
-       }
-       if s.Stderr == nil {
-               s.Stderr = ioutil.Discard
-       }
-       s.copyFuncs = append(s.copyFuncs, func() error {
-               _, err := io.Copy(s.Stderr, s.ch.Stderr())
-               return err
-       })
-}
-
-// sessionStdin reroutes Close to CloseWrite.
-type sessionStdin struct {
-       io.Writer
-       ch Channel
-}
-
-func (s *sessionStdin) Close() error {
-       return s.ch.CloseWrite()
-}
-
-// StdinPipe returns a pipe that will be connected to the
-// remote command's standard input when the command starts.
-func (s *Session) StdinPipe() (io.WriteCloser, error) {
-       if s.Stdin != nil {
-               return nil, errors.New("ssh: Stdin already set")
-       }
-       if s.started {
-               return nil, errors.New("ssh: StdinPipe after process started")
-       }
-       s.stdinpipe = true
-       return &sessionStdin{s.ch, s.ch}, nil
-}
-
-// StdoutPipe returns a pipe that will be connected to the
-// remote command's standard output when the command starts.
-// There is a fixed amount of buffering that is shared between
-// stdout and stderr streams. If the StdoutPipe reader is
-// not serviced fast enough it may eventually cause the
-// remote command to block.
-func (s *Session) StdoutPipe() (io.Reader, error) {
-       if s.Stdout != nil {
-               return nil, errors.New("ssh: Stdout already set")
-       }
-       if s.started {
-               return nil, errors.New("ssh: StdoutPipe after process started")
-       }
-       s.stdoutpipe = true
-       return s.ch, nil
-}
-
-// StderrPipe returns a pipe that will be connected to the
-// remote command's standard error when the command starts.
-// There is a fixed amount of buffering that is shared between
-// stdout and stderr streams. If the StderrPipe reader is
-// not serviced fast enough it may eventually cause the
-// remote command to block.
-func (s *Session) StderrPipe() (io.Reader, error) {
-       if s.Stderr != nil {
-               return nil, errors.New("ssh: Stderr already set")
-       }
-       if s.started {
-               return nil, errors.New("ssh: StderrPipe after process started")
-       }
-       s.stderrpipe = true
-       return s.ch.Stderr(), nil
-}
-
-// newSession returns a new interactive session on the remote host.
-func newSession(ch Channel, reqs <-chan *Request) (*Session, error) {
-       s := &Session{
-               ch: ch,
-       }
-       s.exitStatus = make(chan error, 1)
-       go func() {
-               s.exitStatus <- s.wait(reqs)
-       }()
-
-       return s, nil
-}
-
-// An ExitError reports unsuccessful completion of a remote command.
-type ExitError struct {
-       Waitmsg
-}
-
-func (e *ExitError) Error() string {
-       return e.Waitmsg.String()
-}
-
-// Waitmsg stores the information about an exited remote command
-// as reported by Wait.
-type Waitmsg struct {
-       status int
-       signal string
-       msg    string
-       lang   string
-}
-
-// ExitStatus returns the exit status of the remote command.
-func (w Waitmsg) ExitStatus() int {
-       return w.status
-}
-
-// Signal returns the exit signal of the remote command if
-// it was terminated violently.
-func (w Waitmsg) Signal() string {
-       return w.signal
-}
-
-// Msg returns the exit message given by the remote command
-func (w Waitmsg) Msg() string {
-       return w.msg
-}
-
-// Lang returns the language tag. See RFC 3066
-func (w Waitmsg) Lang() string {
-       return w.lang
-}
-
-func (w Waitmsg) String() string {
-       return fmt.Sprintf("Process exited with: %v. Reason was: %v (%v)", 
w.status, w.msg, w.signal)
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/868863aa/cli/vendor/golang.org/x/crypto/ssh/session_test.go
----------------------------------------------------------------------
diff --git a/cli/vendor/golang.org/x/crypto/ssh/session_test.go 
b/cli/vendor/golang.org/x/crypto/ssh/session_test.go
deleted file mode 100644
index f7f0f76..0000000
--- a/cli/vendor/golang.org/x/crypto/ssh/session_test.go
+++ /dev/null
@@ -1,774 +0,0 @@
-// Copyright 2011 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package ssh
-
-// Session tests.
-
-import (
-       "bytes"
-       crypto_rand "crypto/rand"
-       "errors"
-       "io"
-       "io/ioutil"
-       "math/rand"
-       "net"
-       "testing"
-
-       "golang.org/x/crypto/ssh/terminal"
-)
-
-type serverType func(Channel, <-chan *Request, *testing.T)
-
-// dial constructs a new test server and returns a *ClientConn.
-func dial(handler serverType, t *testing.T) *Client {
-       c1, c2, err := netPipe()
-       if err != nil {
-               t.Fatalf("netPipe: %v", err)
-       }
-
-       go func() {
-               defer c1.Close()
-               conf := ServerConfig{
-                       NoClientAuth: true,
-               }
-               conf.AddHostKey(testSigners["rsa"])
-
-               _, chans, reqs, err := NewServerConn(c1, &conf)
-               if err != nil {
-                       t.Fatalf("Unable to handshake: %v", err)
-               }
-               go DiscardRequests(reqs)
-
-               for newCh := range chans {
-                       if newCh.ChannelType() != "session" {
-                               newCh.Reject(UnknownChannelType, "unknown 
channel type")
-                               continue
-                       }
-
-                       ch, inReqs, err := newCh.Accept()
-                       if err != nil {
-                               t.Errorf("Accept: %v", err)
-                               continue
-                       }
-                       go func() {
-                               handler(ch, inReqs, t)
-                       }()
-               }
-       }()
-
-       config := &ClientConfig{
-               User: "testuser",
-       }
-
-       conn, chans, reqs, err := NewClientConn(c2, "", config)
-       if err != nil {
-               t.Fatalf("unable to dial remote side: %v", err)
-       }
-
-       return NewClient(conn, chans, reqs)
-}
-
-// Test a simple string is returned to session.Stdout.
-func TestSessionShell(t *testing.T) {
-       conn := dial(shellHandler, t)
-       defer conn.Close()
-       session, err := conn.NewSession()
-       if err != nil {
-               t.Fatalf("Unable to request new session: %v", err)
-       }
-       defer session.Close()
-       stdout := new(bytes.Buffer)
-       session.Stdout = stdout
-       if err := session.Shell(); err != nil {
-               t.Fatalf("Unable to execute command: %s", err)
-       }
-       if err := session.Wait(); err != nil {
-               t.Fatalf("Remote command did not exit cleanly: %v", err)
-       }
-       actual := stdout.String()
-       if actual != "golang" {
-               t.Fatalf("Remote shell did not return expected string: 
expected=golang, actual=%s", actual)
-       }
-}
-
-// TODO(dfc) add support for Std{in,err}Pipe when the Server supports it.
-
-// Test a simple string is returned via StdoutPipe.
-func TestSessionStdoutPipe(t *testing.T) {
-       conn := dial(shellHandler, t)
-       defer conn.Close()
-       session, err := conn.NewSession()
-       if err != nil {
-               t.Fatalf("Unable to request new session: %v", err)
-       }
-       defer session.Close()
-       stdout, err := session.StdoutPipe()
-       if err != nil {
-               t.Fatalf("Unable to request StdoutPipe(): %v", err)
-       }
-       var buf bytes.Buffer
-       if err := session.Shell(); err != nil {
-               t.Fatalf("Unable to execute command: %v", err)
-       }
-       done := make(chan bool, 1)
-       go func() {
-               if _, err := io.Copy(&buf, stdout); err != nil {
-                       t.Errorf("Copy of stdout failed: %v", err)
-               }
-               done <- true
-       }()
-       if err := session.Wait(); err != nil {
-               t.Fatalf("Remote command did not exit cleanly: %v", err)
-       }
-       <-done
-       actual := buf.String()
-       if actual != "golang" {
-               t.Fatalf("Remote shell did not return expected string: 
expected=golang, actual=%s", actual)
-       }
-}
-
-// Test that a simple string is returned via the Output helper,
-// and that stderr is discarded.
-func TestSessionOutput(t *testing.T) {
-       conn := dial(fixedOutputHandler, t)
-       defer conn.Close()
-       session, err := conn.NewSession()
-       if err != nil {
-               t.Fatalf("Unable to request new session: %v", err)
-       }
-       defer session.Close()
-
-       buf, err := session.Output("") // cmd is ignored by fixedOutputHandler
-       if err != nil {
-               t.Error("Remote command did not exit cleanly:", err)
-       }
-       w := "this-is-stdout."
-       g := string(buf)
-       if g != w {
-               t.Error("Remote command did not return expected string:")
-               t.Logf("want %q", w)
-               t.Logf("got  %q", g)
-       }
-}
-
-// Test that both stdout and stderr are returned
-// via the CombinedOutput helper.
-func TestSessionCombinedOutput(t *testing.T) {
-       conn := dial(fixedOutputHandler, t)
-       defer conn.Close()
-       session, err := conn.NewSession()
-       if err != nil {
-               t.Fatalf("Unable to request new session: %v", err)
-       }
-       defer session.Close()
-
-       buf, err := session.CombinedOutput("") // cmd is ignored by 
fixedOutputHandler
-       if err != nil {
-               t.Error("Remote command did not exit cleanly:", err)
-       }
-       const stdout = "this-is-stdout."
-       const stderr = "this-is-stderr."
-       g := string(buf)
-       if g != stdout+stderr && g != stderr+stdout {
-               t.Error("Remote command did not return expected string:")
-               t.Logf("want %q, or %q", stdout+stderr, stderr+stdout)
-               t.Logf("got  %q", g)
-       }
-}
-
-// Test non-0 exit status is returned correctly.
-func TestExitStatusNonZero(t *testing.T) {
-       conn := dial(exitStatusNonZeroHandler, t)
-       defer conn.Close()
-       session, err := conn.NewSession()
-       if err != nil {
-               t.Fatalf("Unable to request new session: %v", err)
-       }
-       defer session.Close()
-       if err := session.Shell(); err != nil {
-               t.Fatalf("Unable to execute command: %v", err)
-       }
-       err = session.Wait()
-       if err == nil {
-               t.Fatalf("expected command to fail but it didn't")
-       }
-       e, ok := err.(*ExitError)
-       if !ok {
-               t.Fatalf("expected *ExitError but got %T", err)
-       }
-       if e.ExitStatus() != 15 {
-               t.Fatalf("expected command to exit with 15 but got %v", 
e.ExitStatus())
-       }
-}
-
-// Test 0 exit status is returned correctly.
-func TestExitStatusZero(t *testing.T) {
-       conn := dial(exitStatusZeroHandler, t)
-       defer conn.Close()
-       session, err := conn.NewSession()
-       if err != nil {
-               t.Fatalf("Unable to request new session: %v", err)
-       }
-       defer session.Close()
-
-       if err := session.Shell(); err != nil {
-               t.Fatalf("Unable to execute command: %v", err)
-       }
-       err = session.Wait()
-       if err != nil {
-               t.Fatalf("expected nil but got %v", err)
-       }
-}
-
-// Test exit signal and status are both returned correctly.
-func TestExitSignalAndStatus(t *testing.T) {
-       conn := dial(exitSignalAndStatusHandler, t)
-       defer conn.Close()
-       session, err := conn.NewSession()
-       if err != nil {
-               t.Fatalf("Unable to request new session: %v", err)
-       }
-       defer session.Close()
-       if err := session.Shell(); err != nil {
-               t.Fatalf("Unable to execute command: %v", err)
-       }
-       err = session.Wait()
-       if err == nil {
-               t.Fatalf("expected command to fail but it didn't")
-       }
-       e, ok := err.(*ExitError)
-       if !ok {
-               t.Fatalf("expected *ExitError but got %T", err)
-       }
-       if e.Signal() != "TERM" || e.ExitStatus() != 15 {
-               t.Fatalf("expected command to exit with signal TERM and status 
15 but got signal %s and status %v", e.Signal(), e.ExitStatus())
-       }
-}
-
-// Test exit signal and status are both returned correctly.
-func TestKnownExitSignalOnly(t *testing.T) {
-       conn := dial(exitSignalHandler, t)
-       defer conn.Close()
-       session, err := conn.NewSession()
-       if err != nil {
-               t.Fatalf("Unable to request new session: %v", err)
-       }
-       defer session.Close()
-       if err := session.Shell(); err != nil {
-               t.Fatalf("Unable to execute command: %v", err)
-       }
-       err = session.Wait()
-       if err == nil {
-               t.Fatalf("expected command to fail but it didn't")
-       }
-       e, ok := err.(*ExitError)
-       if !ok {
-               t.Fatalf("expected *ExitError but got %T", err)
-       }
-       if e.Signal() != "TERM" || e.ExitStatus() != 143 {
-               t.Fatalf("expected command to exit with signal TERM and status 
143 but got signal %s and status %v", e.Signal(), e.ExitStatus())
-       }
-}
-
-// Test exit signal and status are both returned correctly.
-func TestUnknownExitSignal(t *testing.T) {
-       conn := dial(exitSignalUnknownHandler, t)
-       defer conn.Close()
-       session, err := conn.NewSession()
-       if err != nil {
-               t.Fatalf("Unable to request new session: %v", err)
-       }
-       defer session.Close()
-       if err := session.Shell(); err != nil {
-               t.Fatalf("Unable to execute command: %v", err)
-       }
-       err = session.Wait()
-       if err == nil {
-               t.Fatalf("expected command to fail but it didn't")
-       }
-       e, ok := err.(*ExitError)
-       if !ok {
-               t.Fatalf("expected *ExitError but got %T", err)
-       }
-       if e.Signal() != "SYS" || e.ExitStatus() != 128 {
-               t.Fatalf("expected command to exit with signal SYS and status 
128 but got signal %s and status %v", e.Signal(), e.ExitStatus())
-       }
-}
-
-// Test WaitMsg is not returned if the channel closes abruptly.
-func TestExitWithoutStatusOrSignal(t *testing.T) {
-       conn := dial(exitWithoutSignalOrStatus, t)
-       defer conn.Close()
-       session, err := conn.NewSession()
-       if err != nil {
-               t.Fatalf("Unable to request new session: %v", err)
-       }
-       defer session.Close()
-       if err := session.Shell(); err != nil {
-               t.Fatalf("Unable to execute command: %v", err)
-       }
-       err = session.Wait()
-       if err == nil {
-               t.Fatalf("expected command to fail but it didn't")
-       }
-       _, ok := err.(*ExitError)
-       if ok {
-               // you can't actually test for errors.errorString
-               // because it's not exported.
-               t.Fatalf("expected *errorString but got %T", err)
-       }
-}
-
-// windowTestBytes is the number of bytes that we'll send to the SSH server.
-const windowTestBytes = 16000 * 200
-
-// TestServerWindow writes random data to the server. The server is expected 
to echo
-// the same data back, which is compared against the original.
-func TestServerWindow(t *testing.T) {
-       origBuf := bytes.NewBuffer(make([]byte, 0, windowTestBytes))
-       io.CopyN(origBuf, crypto_rand.Reader, windowTestBytes)
-       origBytes := origBuf.Bytes()
-
-       conn := dial(echoHandler, t)
-       defer conn.Close()
-       session, err := conn.NewSession()
-       if err != nil {
-               t.Fatal(err)
-       }
-       defer session.Close()
-       result := make(chan []byte)
-
-       go func() {
-               defer close(result)
-               echoedBuf := bytes.NewBuffer(make([]byte, 0, windowTestBytes))
-               serverStdout, err := session.StdoutPipe()
-               if err != nil {
-                       t.Errorf("StdoutPipe failed: %v", err)
-                       return
-               }
-               n, err := copyNRandomly("stdout", echoedBuf, serverStdout, 
windowTestBytes)
-               if err != nil && err != io.EOF {
-                       t.Errorf("Read only %d bytes from server, expected %d: 
%v", n, windowTestBytes, err)
-               }
-               result <- echoedBuf.Bytes()
-       }()
-
-       serverStdin, err := session.StdinPipe()
-       if err != nil {
-               t.Fatalf("StdinPipe failed: %v", err)
-       }
-       written, err := copyNRandomly("stdin", serverStdin, origBuf, 
windowTestBytes)
-       if err != nil {
-               t.Fatalf("failed to copy origBuf to serverStdin: %v", err)
-       }
-       if written != windowTestBytes {
-               t.Fatalf("Wrote only %d of %d bytes to server", written, 
windowTestBytes)
-       }
-
-       echoedBytes := <-result
-
-       if !bytes.Equal(origBytes, echoedBytes) {
-               t.Fatalf("Echoed buffer differed from original, orig %d, echoed 
%d", len(origBytes), len(echoedBytes))
-       }
-}
-
-// Verify the client can handle a keepalive packet from the server.
-func TestClientHandlesKeepalives(t *testing.T) {
-       conn := dial(channelKeepaliveSender, t)
-       defer conn.Close()
-       session, err := conn.NewSession()
-       if err != nil {
-               t.Fatal(err)
-       }
-       defer session.Close()
-       if err := session.Shell(); err != nil {
-               t.Fatalf("Unable to execute command: %v", err)
-       }
-       err = session.Wait()
-       if err != nil {
-               t.Fatalf("expected nil but got: %v", err)
-       }
-}
-
-type exitStatusMsg struct {
-       Status uint32
-}
-
-type exitSignalMsg struct {
-       Signal     string
-       CoreDumped bool
-       Errmsg     string
-       Lang       string
-}
-
-func handleTerminalRequests(in <-chan *Request) {
-       for req := range in {
-               ok := false
-               switch req.Type {
-               case "shell":
-                       ok = true
-                       if len(req.Payload) > 0 {
-                               // We don't accept any commands, only the 
default shell.
-                               ok = false
-                       }
-               case "env":
-                       ok = true
-               }
-               req.Reply(ok, nil)
-       }
-}
-
-func newServerShell(ch Channel, in <-chan *Request, prompt string) 
*terminal.Terminal {
-       term := terminal.NewTerminal(ch, prompt)
-       go handleTerminalRequests(in)
-       return term
-}
-
-func exitStatusZeroHandler(ch Channel, in <-chan *Request, t *testing.T) {
-       defer ch.Close()
-       // this string is returned to stdout
-       shell := newServerShell(ch, in, "> ")
-       readLine(shell, t)
-       sendStatus(0, ch, t)
-}
-
-func exitStatusNonZeroHandler(ch Channel, in <-chan *Request, t *testing.T) {
-       defer ch.Close()
-       shell := newServerShell(ch, in, "> ")
-       readLine(shell, t)
-       sendStatus(15, ch, t)
-}
-
-func exitSignalAndStatusHandler(ch Channel, in <-chan *Request, t *testing.T) {
-       defer ch.Close()
-       shell := newServerShell(ch, in, "> ")
-       readLine(shell, t)
-       sendStatus(15, ch, t)
-       sendSignal("TERM", ch, t)
-}
-
-func exitSignalHandler(ch Channel, in <-chan *Request, t *testing.T) {
-       defer ch.Close()
-       shell := newServerShell(ch, in, "> ")
-       readLine(shell, t)
-       sendSignal("TERM", ch, t)
-}
-
-func exitSignalUnknownHandler(ch Channel, in <-chan *Request, t *testing.T) {
-       defer ch.Close()
-       shell := newServerShell(ch, in, "> ")
-       readLine(shell, t)
-       sendSignal("SYS", ch, t)
-}
-
-func exitWithoutSignalOrStatus(ch Channel, in <-chan *Request, t *testing.T) {
-       defer ch.Close()
-       shell := newServerShell(ch, in, "> ")
-       readLine(shell, t)
-}
-
-func shellHandler(ch Channel, in <-chan *Request, t *testing.T) {
-       defer ch.Close()
-       // this string is returned to stdout
-       shell := newServerShell(ch, in, "golang")
-       readLine(shell, t)
-       sendStatus(0, ch, t)
-}
-
-// Ignores the command, writes fixed strings to stderr and stdout.
-// Strings are "this-is-stdout." and "this-is-stderr.".
-func fixedOutputHandler(ch Channel, in <-chan *Request, t *testing.T) {
-       defer ch.Close()
-       _, err := ch.Read(nil)
-
-       req, ok := <-in
-       if !ok {
-               t.Fatalf("error: expected channel request, got: %#v", err)
-               return
-       }
-
-       // ignore request, always send some text
-       req.Reply(true, nil)
-
-       _, err = io.WriteString(ch, "this-is-stdout.")
-       if err != nil {
-               t.Fatalf("error writing on server: %v", err)
-       }
-       _, err = io.WriteString(ch.Stderr(), "this-is-stderr.")
-       if err != nil {
-               t.Fatalf("error writing on server: %v", err)
-       }
-       sendStatus(0, ch, t)
-}
-
-func readLine(shell *terminal.Terminal, t *testing.T) {
-       if _, err := shell.ReadLine(); err != nil && err != io.EOF {
-               t.Errorf("unable to read line: %v", err)
-       }
-}
-
-func sendStatus(status uint32, ch Channel, t *testing.T) {
-       msg := exitStatusMsg{
-               Status: status,
-       }
-       if _, err := ch.SendRequest("exit-status", false, Marshal(&msg)); err 
!= nil {
-               t.Errorf("unable to send status: %v", err)
-       }
-}
-
-func sendSignal(signal string, ch Channel, t *testing.T) {
-       sig := exitSignalMsg{
-               Signal:     signal,
-               CoreDumped: false,
-               Errmsg:     "Process terminated",
-               Lang:       "en-GB-oed",
-       }
-       if _, err := ch.SendRequest("exit-signal", false, Marshal(&sig)); err 
!= nil {
-               t.Errorf("unable to send signal: %v", err)
-       }
-}
-
-func discardHandler(ch Channel, t *testing.T) {
-       defer ch.Close()
-       io.Copy(ioutil.Discard, ch)
-}
-
-func echoHandler(ch Channel, in <-chan *Request, t *testing.T) {
-       defer ch.Close()
-       if n, err := copyNRandomly("echohandler", ch, ch, windowTestBytes); err 
!= nil {
-               t.Errorf("short write, wrote %d, expected %d: %v ", n, 
windowTestBytes, err)
-       }
-}
-
-// copyNRandomly copies n bytes from src to dst. It uses a variable, and 
random,
-// buffer size to exercise more code paths.
-func copyNRandomly(title string, dst io.Writer, src io.Reader, n int) (int, 
error) {
-       var (
-               buf       = make([]byte, 32*1024)
-               written   int
-               remaining = n
-       )
-       for remaining > 0 {
-               l := rand.Intn(1 << 15)
-               if remaining < l {
-                       l = remaining
-               }
-               nr, er := src.Read(buf[:l])
-               nw, ew := dst.Write(buf[:nr])
-               remaining -= nw
-               written += nw
-               if ew != nil {
-                       return written, ew
-               }
-               if nr != nw {
-                       return written, io.ErrShortWrite
-               }
-               if er != nil && er != io.EOF {
-                       return written, er
-               }
-       }
-       return written, nil
-}
-
-func channelKeepaliveSender(ch Channel, in <-chan *Request, t *testing.T) {
-       defer ch.Close()
-       shell := newServerShell(ch, in, "> ")
-       readLine(shell, t)
-       if _, err := ch.SendRequest("keepal...@openssh.com", true, nil); err != 
nil {
-               t.Errorf("unable to send channel keepalive request: %v", err)
-       }
-       sendStatus(0, ch, t)
-}
-
-func TestClientWriteEOF(t *testing.T) {
-       conn := dial(simpleEchoHandler, t)
-       defer conn.Close()
-
-       session, err := conn.NewSession()
-       if err != nil {
-               t.Fatal(err)
-       }
-       defer session.Close()
-       stdin, err := session.StdinPipe()
-       if err != nil {
-               t.Fatalf("StdinPipe failed: %v", err)
-       }
-       stdout, err := session.StdoutPipe()
-       if err != nil {
-               t.Fatalf("StdoutPipe failed: %v", err)
-       }
-
-       data := []byte(`0000`)
-       _, err = stdin.Write(data)
-       if err != nil {
-               t.Fatalf("Write failed: %v", err)
-       }
-       stdin.Close()
-
-       res, err := ioutil.ReadAll(stdout)
-       if err != nil {
-               t.Fatalf("Read failed: %v", err)
-       }
-
-       if !bytes.Equal(data, res) {
-               t.Fatalf("Read differed from write, wrote: %v, read: %v", data, 
res)
-       }
-}
-
-func simpleEchoHandler(ch Channel, in <-chan *Request, t *testing.T) {
-       defer ch.Close()
-       data, err := ioutil.ReadAll(ch)
-       if err != nil {
-               t.Errorf("handler read error: %v", err)
-       }
-       _, err = ch.Write(data)
-       if err != nil {
-               t.Errorf("handler write error: %v", err)
-       }
-}
-
-func TestSessionID(t *testing.T) {
-       c1, c2, err := netPipe()
-       if err != nil {
-               t.Fatalf("netPipe: %v", err)
-       }
-       defer c1.Close()
-       defer c2.Close()
-
-       serverID := make(chan []byte, 1)
-       clientID := make(chan []byte, 1)
-
-       serverConf := &ServerConfig{
-               NoClientAuth: true,
-       }
-       serverConf.AddHostKey(testSigners["ecdsa"])
-       clientConf := &ClientConfig{
-               User: "user",
-       }
-
-       go func() {
-               conn, chans, reqs, err := NewServerConn(c1, serverConf)
-               if err != nil {
-                       t.Fatalf("server handshake: %v", err)
-               }
-               serverID <- conn.SessionID()
-               go DiscardRequests(reqs)
-               for ch := range chans {
-                       ch.Reject(Prohibited, "")
-               }
-       }()
-
-       go func() {
-               conn, chans, reqs, err := NewClientConn(c2, "", clientConf)
-               if err != nil {
-                       t.Fatalf("client handshake: %v", err)
-               }
-               clientID <- conn.SessionID()
-               go DiscardRequests(reqs)
-               for ch := range chans {
-                       ch.Reject(Prohibited, "")
-               }
-       }()
-
-       s := <-serverID
-       c := <-clientID
-       if bytes.Compare(s, c) != 0 {
-               t.Errorf("server session ID (%x) != client session ID (%x)", s, 
c)
-       } else if len(s) == 0 {
-               t.Errorf("client and server SessionID were empty.")
-       }
-}
-
-type noReadConn struct {
-       readSeen bool
-       net.Conn
-}
-
-func (c *noReadConn) Close() error {
-       return nil
-}
-
-func (c *noReadConn) Read(b []byte) (int, error) {
-       c.readSeen = true
-       return 0, errors.New("noReadConn error")
-}
-
-func TestInvalidServerConfiguration(t *testing.T) {
-       c1, c2, err := netPipe()
-       if err != nil {
-               t.Fatalf("netPipe: %v", err)
-       }
-       defer c1.Close()
-       defer c2.Close()
-
-       serveConn := noReadConn{Conn: c1}
-       serverConf := &ServerConfig{}
-
-       NewServerConn(&serveConn, serverConf)
-       if serveConn.readSeen {
-               t.Fatalf("NewServerConn attempted to Read() from Conn while 
configuration is missing host key")
-       }
-
-       serverConf.AddHostKey(testSigners["ecdsa"])
-
-       NewServerConn(&serveConn, serverConf)
-       if serveConn.readSeen {
-               t.Fatalf("NewServerConn attempted to Read() from Conn while 
configuration is missing authentication method")
-       }
-}
-
-func TestHostKeyAlgorithms(t *testing.T) {
-       serverConf := &ServerConfig{
-               NoClientAuth: true,
-       }
-       serverConf.AddHostKey(testSigners["rsa"])
-       serverConf.AddHostKey(testSigners["ecdsa"])
-
-       connect := func(clientConf *ClientConfig, want string) {
-               var alg string
-               clientConf.HostKeyCallback = func(h string, a net.Addr, key 
PublicKey) error {
-                       alg = key.Type()
-                       return nil
-               }
-               c1, c2, err := netPipe()
-               if err != nil {
-                       t.Fatalf("netPipe: %v", err)
-               }
-               defer c1.Close()
-               defer c2.Close()
-
-               go NewServerConn(c1, serverConf)
-               _, _, _, err = NewClientConn(c2, "", clientConf)
-               if err != nil {
-                       t.Fatalf("NewClientConn: %v", err)
-               }
-               if alg != want {
-                       t.Errorf("selected key algorithm %s, want %s", alg, 
want)
-               }
-       }
-
-       // By default, we get the preferred algorithm, which is ECDSA 256.
-
-       clientConf := &ClientConfig{}
-       connect(clientConf, KeyAlgoECDSA256)
-
-       // Client asks for RSA explicitly.
-       clientConf.HostKeyAlgorithms = []string{KeyAlgoRSA}
-       connect(clientConf, KeyAlgoRSA)
-
-       c1, c2, err := netPipe()
-       if err != nil {
-               t.Fatalf("netPipe: %v", err)
-       }
-       defer c1.Close()
-       defer c2.Close()
-
-       go NewServerConn(c1, serverConf)
-       clientConf.HostKeyAlgorithms = []string{"nonexistent-hostkey-algo"}
-       _, _, _, err = NewClientConn(c2, "", clientConf)
-       if err == nil {
-               t.Fatal("succeeded connecting with unknown hostkey algorithm")
-       }
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/868863aa/cli/vendor/golang.org/x/crypto/ssh/tcpip.go
----------------------------------------------------------------------
diff --git a/cli/vendor/golang.org/x/crypto/ssh/tcpip.go 
b/cli/vendor/golang.org/x/crypto/ssh/tcpip.go
deleted file mode 100644
index 6151241..0000000
--- a/cli/vendor/golang.org/x/crypto/ssh/tcpip.go
+++ /dev/null
@@ -1,407 +0,0 @@
-// Copyright 2011 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package ssh
-
-import (
-       "errors"
-       "fmt"
-       "io"
-       "math/rand"
-       "net"
-       "strconv"
-       "strings"
-       "sync"
-       "time"
-)
-
-// Listen requests the remote peer open a listening socket on
-// addr. Incoming connections will be available by calling Accept on
-// the returned net.Listener. The listener must be serviced, or the
-// SSH connection may hang.
-func (c *Client) Listen(n, addr string) (net.Listener, error) {
-       laddr, err := net.ResolveTCPAddr(n, addr)
-       if err != nil {
-               return nil, err
-       }
-       return c.ListenTCP(laddr)
-}
-
-// Automatic port allocation is broken with OpenSSH before 6.0. See
-// also https://bugzilla.mindrot.org/show_bug.cgi?id=2017.  In
-// particular, OpenSSH 5.9 sends a channelOpenMsg with port number 0,
-// rather than the actual port number. This means you can never open
-// two different listeners with auto allocated ports. We work around
-// this by trying explicit ports until we succeed.
-
-const openSSHPrefix = "OpenSSH_"
-
-var portRandomizer = rand.New(rand.NewSource(time.Now().UnixNano()))
-
-// isBrokenOpenSSHVersion returns true if the given version string
-// specifies a version of OpenSSH that is known to have a bug in port
-// forwarding.
-func isBrokenOpenSSHVersion(versionStr string) bool {
-       i := strings.Index(versionStr, openSSHPrefix)
-       if i < 0 {
-               return false
-       }
-       i += len(openSSHPrefix)
-       j := i
-       for ; j < len(versionStr); j++ {
-               if versionStr[j] < '0' || versionStr[j] > '9' {
-                       break
-               }
-       }
-       version, _ := strconv.Atoi(versionStr[i:j])
-       return version < 6
-}
-
-// autoPortListenWorkaround simulates automatic port allocation by
-// trying random ports repeatedly.
-func (c *Client) autoPortListenWorkaround(laddr *net.TCPAddr) (net.Listener, 
error) {
-       var sshListener net.Listener
-       var err error
-       const tries = 10
-       for i := 0; i < tries; i++ {
-               addr := *laddr
-               addr.Port = 1024 + portRandomizer.Intn(60000)
-               sshListener, err = c.ListenTCP(&addr)
-               if err == nil {
-                       laddr.Port = addr.Port
-                       return sshListener, err
-               }
-       }
-       return nil, fmt.Errorf("ssh: listen on random port failed after %d 
tries: %v", tries, err)
-}
-
-// RFC 4254 7.1
-type channelForwardMsg struct {
-       addr  string
-       rport uint32
-}
-
-// ListenTCP requests the remote peer open a listening socket
-// on laddr. Incoming connections will be available by calling
-// Accept on the returned net.Listener.
-func (c *Client) ListenTCP(laddr *net.TCPAddr) (net.Listener, error) {
-       if laddr.Port == 0 && isBrokenOpenSSHVersion(string(c.ServerVersion())) 
{
-               return c.autoPortListenWorkaround(laddr)
-       }
-
-       m := channelForwardMsg{
-               laddr.IP.String(),
-               uint32(laddr.Port),
-       }
-       // send message
-       ok, resp, err := c.SendRequest("tcpip-forward", true, Marshal(&m))
-       if err != nil {
-               return nil, err
-       }
-       if !ok {
-               return nil, errors.New("ssh: tcpip-forward request denied by 
peer")
-       }
-
-       // If the original port was 0, then the remote side will
-       // supply a real port number in the response.
-       if laddr.Port == 0 {
-               var p struct {
-                       Port uint32
-               }
-               if err := Unmarshal(resp, &p); err != nil {
-                       return nil, err
-               }
-               laddr.Port = int(p.Port)
-       }
-
-       // Register this forward, using the port number we obtained.
-       ch := c.forwards.add(*laddr)
-
-       return &tcpListener{laddr, c, ch}, nil
-}
-
-// forwardList stores a mapping between remote
-// forward requests and the tcpListeners.
-type forwardList struct {
-       sync.Mutex
-       entries []forwardEntry
-}
-
-// forwardEntry represents an established mapping of a laddr on a
-// remote ssh server to a channel connected to a tcpListener.
-type forwardEntry struct {
-       laddr net.TCPAddr
-       c     chan forward
-}
-
-// forward represents an incoming forwarded tcpip connection. The
-// arguments to add/remove/lookup should be address as specified in
-// the original forward-request.
-type forward struct {
-       newCh NewChannel   // the ssh client channel underlying this forward
-       raddr *net.TCPAddr // the raddr of the incoming connection
-}
-
-func (l *forwardList) add(addr net.TCPAddr) chan forward {
-       l.Lock()
-       defer l.Unlock()
-       f := forwardEntry{
-               addr,
-               make(chan forward, 1),
-       }
-       l.entries = append(l.entries, f)
-       return f.c
-}
-
-// See RFC 4254, section 7.2
-type forwardedTCPPayload struct {
-       Addr       string
-       Port       uint32
-       OriginAddr string
-       OriginPort uint32
-}
-
-// parseTCPAddr parses the originating address from the remote into a 
*net.TCPAddr.
-func parseTCPAddr(addr string, port uint32) (*net.TCPAddr, error) {
-       if port == 0 || port > 65535 {
-               return nil, fmt.Errorf("ssh: port number out of range: %d", 
port)
-       }
-       ip := net.ParseIP(string(addr))
-       if ip == nil {
-               return nil, fmt.Errorf("ssh: cannot parse IP address %q", addr)
-       }
-       return &net.TCPAddr{IP: ip, Port: int(port)}, nil
-}
-
-func (l *forwardList) handleChannels(in <-chan NewChannel) {
-       for ch := range in {
-               var payload forwardedTCPPayload
-               if err := Unmarshal(ch.ExtraData(), &payload); err != nil {
-                       ch.Reject(ConnectionFailed, "could not parse 
forwarded-tcpip payload: "+err.Error())
-                       continue
-               }
-
-               // RFC 4254 section 7.2 specifies that incoming
-               // addresses should list the address, in string
-               // format. It is implied that this should be an IP
-               // address, as it would be impossible to connect to it
-               // otherwise.
-               laddr, err := parseTCPAddr(payload.Addr, payload.Port)
-               if err != nil {
-                       ch.Reject(ConnectionFailed, err.Error())
-                       continue
-               }
-               raddr, err := parseTCPAddr(payload.OriginAddr, 
payload.OriginPort)
-               if err != nil {
-                       ch.Reject(ConnectionFailed, err.Error())
-                       continue
-               }
-
-               if ok := l.forward(*laddr, *raddr, ch); !ok {
-                       // Section 7.2, implementations MUST reject spurious 
incoming
-                       // connections.
-                       ch.Reject(Prohibited, "no forward for address")
-                       continue
-               }
-       }
-}
-
-// remove removes the forward entry, and the channel feeding its
-// listener.
-func (l *forwardList) remove(addr net.TCPAddr) {
-       l.Lock()
-       defer l.Unlock()
-       for i, f := range l.entries {
-               if addr.IP.Equal(f.laddr.IP) && addr.Port == f.laddr.Port {
-                       l.entries = append(l.entries[:i], l.entries[i+1:]...)
-                       close(f.c)
-                       return
-               }
-       }
-}
-
-// closeAll closes and clears all forwards.
-func (l *forwardList) closeAll() {
-       l.Lock()
-       defer l.Unlock()
-       for _, f := range l.entries {
-               close(f.c)
-       }
-       l.entries = nil
-}
-
-func (l *forwardList) forward(laddr, raddr net.TCPAddr, ch NewChannel) bool {
-       l.Lock()
-       defer l.Unlock()
-       for _, f := range l.entries {
-               if laddr.IP.Equal(f.laddr.IP) && laddr.Port == f.laddr.Port {
-                       f.c <- forward{ch, &raddr}
-                       return true
-               }
-       }
-       return false
-}
-
-type tcpListener struct {
-       laddr *net.TCPAddr
-
-       conn *Client
-       in   <-chan forward
-}
-
-// Accept waits for and returns the next connection to the listener.
-func (l *tcpListener) Accept() (net.Conn, error) {
-       s, ok := <-l.in
-       if !ok {
-               return nil, io.EOF
-       }
-       ch, incoming, err := s.newCh.Accept()
-       if err != nil {
-               return nil, err
-       }
-       go DiscardRequests(incoming)
-
-       return &tcpChanConn{
-               Channel: ch,
-               laddr:   l.laddr,
-               raddr:   s.raddr,
-       }, nil
-}
-
-// Close closes the listener.
-func (l *tcpListener) Close() error {
-       m := channelForwardMsg{
-               l.laddr.IP.String(),
-               uint32(l.laddr.Port),
-       }
-
-       // this also closes the listener.
-       l.conn.forwards.remove(*l.laddr)
-       ok, _, err := l.conn.SendRequest("cancel-tcpip-forward", true, 
Marshal(&m))
-       if err == nil && !ok {
-               err = errors.New("ssh: cancel-tcpip-forward failed")
-       }
-       return err
-}
-
-// Addr returns the listener's network address.
-func (l *tcpListener) Addr() net.Addr {
-       return l.laddr
-}
-
-// Dial initiates a connection to the addr from the remote host.
-// The resulting connection has a zero LocalAddr() and RemoteAddr().
-func (c *Client) Dial(n, addr string) (net.Conn, error) {
-       // Parse the address into host and numeric port.
-       host, portString, err := net.SplitHostPort(addr)
-       if err != nil {
-               return nil, err
-       }
-       port, err := strconv.ParseUint(portString, 10, 16)
-       if err != nil {
-               return nil, err
-       }
-       // Use a zero address for local and remote address.
-       zeroAddr := &net.TCPAddr{
-               IP:   net.IPv4zero,
-               Port: 0,
-       }
-       ch, err := c.dial(net.IPv4zero.String(), 0, host, int(port))
-       if err != nil {
-               return nil, err
-       }
-       return &tcpChanConn{
-               Channel: ch,
-               laddr:   zeroAddr,
-               raddr:   zeroAddr,
-       }, nil
-}
-
-// DialTCP connects to the remote address raddr on the network net,
-// which must be "tcp", "tcp4", or "tcp6".  If laddr is not nil, it is used
-// as the local address for the connection.
-func (c *Client) DialTCP(n string, laddr, raddr *net.TCPAddr) (net.Conn, 
error) {
-       if laddr == nil {
-               laddr = &net.TCPAddr{
-                       IP:   net.IPv4zero,
-                       Port: 0,
-               }
-       }
-       ch, err := c.dial(laddr.IP.String(), laddr.Port, raddr.IP.String(), 
raddr.Port)
-       if err != nil {
-               return nil, err
-       }
-       return &tcpChanConn{
-               Channel: ch,
-               laddr:   laddr,
-               raddr:   raddr,
-       }, nil
-}
-
-// RFC 4254 7.2
-type channelOpenDirectMsg struct {
-       raddr string
-       rport uint32
-       laddr string
-       lport uint32
-}
-
-func (c *Client) dial(laddr string, lport int, raddr string, rport int) 
(Channel, error) {
-       msg := channelOpenDirectMsg{
-               raddr: raddr,
-               rport: uint32(rport),
-               laddr: laddr,
-               lport: uint32(lport),
-       }
-       ch, in, err := c.OpenChannel("direct-tcpip", Marshal(&msg))
-       if err != nil {
-               return nil, err
-       }
-       go DiscardRequests(in)
-       return ch, err
-}
-
-type tcpChan struct {
-       Channel // the backing channel
-}
-
-// tcpChanConn fulfills the net.Conn interface without
-// the tcpChan having to hold laddr or raddr directly.
-type tcpChanConn struct {
-       Channel
-       laddr, raddr net.Addr
-}
-
-// LocalAddr returns the local network address.
-func (t *tcpChanConn) LocalAddr() net.Addr {
-       return t.laddr
-}
-
-// RemoteAddr returns the remote network address.
-func (t *tcpChanConn) RemoteAddr() net.Addr {
-       return t.raddr
-}
-
-// SetDeadline sets the read and write deadlines associated
-// with the connection.
-func (t *tcpChanConn) SetDeadline(deadline time.Time) error {
-       if err := t.SetReadDeadline(deadline); err != nil {
-               return err
-       }
-       return t.SetWriteDeadline(deadline)
-}
-
-// SetReadDeadline sets the read deadline.
-// A zero value for t means Read will not time out.
-// After the deadline, the error from Read will implement net.Error
-// with Timeout() == true.
-func (t *tcpChanConn) SetReadDeadline(deadline time.Time) error {
-       return errors.New("ssh: tcpChan: deadline not supported")
-}
-
-// SetWriteDeadline exists to satisfy the net.Conn interface
-// but is not implemented by this type.  It always returns an error.
-func (t *tcpChanConn) SetWriteDeadline(deadline time.Time) error {
-       return errors.New("ssh: tcpChan: deadline not supported")
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/868863aa/cli/vendor/golang.org/x/crypto/ssh/tcpip_test.go
----------------------------------------------------------------------
diff --git a/cli/vendor/golang.org/x/crypto/ssh/tcpip_test.go 
b/cli/vendor/golang.org/x/crypto/ssh/tcpip_test.go
deleted file mode 100644
index f1265cb..0000000
--- a/cli/vendor/golang.org/x/crypto/ssh/tcpip_test.go
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2014 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package ssh
-
-import (
-       "testing"
-)
-
-func TestAutoPortListenBroken(t *testing.T) {
-       broken := "SSH-2.0-OpenSSH_5.9hh11"
-       works := "SSH-2.0-OpenSSH_6.1"
-       if !isBrokenOpenSSHVersion(broken) {
-               t.Errorf("version %q not marked as broken", broken)
-       }
-       if isBrokenOpenSSHVersion(works) {
-               t.Errorf("version %q marked as broken", works)
-       }
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/868863aa/cli/vendor/golang.org/x/crypto/ssh/terminal/terminal_test.go
----------------------------------------------------------------------
diff --git a/cli/vendor/golang.org/x/crypto/ssh/terminal/terminal_test.go 
b/cli/vendor/golang.org/x/crypto/ssh/terminal/terminal_test.go
deleted file mode 100644
index a663fe4..0000000
--- a/cli/vendor/golang.org/x/crypto/ssh/terminal/terminal_test.go
+++ /dev/null
@@ -1,269 +0,0 @@
-// Copyright 2011 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package terminal
-
-import (
-       "io"
-       "testing"
-)
-
-type MockTerminal struct {
-       toSend       []byte
-       bytesPerRead int
-       received     []byte
-}
-
-func (c *MockTerminal) Read(data []byte) (n int, err error) {
-       n = len(data)
-       if n == 0 {
-               return
-       }
-       if n > len(c.toSend) {
-               n = len(c.toSend)
-       }
-       if n == 0 {
-               return 0, io.EOF
-       }
-       if c.bytesPerRead > 0 && n > c.bytesPerRead {
-               n = c.bytesPerRead
-       }
-       copy(data, c.toSend[:n])
-       c.toSend = c.toSend[n:]
-       return
-}
-
-func (c *MockTerminal) Write(data []byte) (n int, err error) {
-       c.received = append(c.received, data...)
-       return len(data), nil
-}
-
-func TestClose(t *testing.T) {
-       c := &MockTerminal{}
-       ss := NewTerminal(c, "> ")
-       line, err := ss.ReadLine()
-       if line != "" {
-               t.Errorf("Expected empty line but got: %s", line)
-       }
-       if err != io.EOF {
-               t.Errorf("Error should have been EOF but got: %s", err)
-       }
-}
-
-var keyPressTests = []struct {
-       in             string
-       line           string
-       err            error
-       throwAwayLines int
-}{
-       {
-               err: io.EOF,
-       },
-       {
-               in:   "\r",
-               line: "",
-       },
-       {
-               in:   "foo\r",
-               line: "foo",
-       },
-       {
-               in:   "a\x1b[Cb\r", // right
-               line: "ab",
-       },
-       {
-               in:   "a\x1b[Db\r", // left
-               line: "ba",
-       },
-       {
-               in:   "a\177b\r", // backspace
-               line: "b",
-       },
-       {
-               in: "\x1b[A\r", // up
-       },
-       {
-               in: "\x1b[B\r", // down
-       },
-       {
-               in:   "line\x1b[A\x1b[B\r", // up then down
-               line: "line",
-       },
-       {
-               in:             "line1\rline2\x1b[A\r", // recall previous line.
-               line:           "line1",
-               throwAwayLines: 1,
-       },
-       {
-               // recall two previous lines and append.
-               in:             "line1\rline2\rline3\x1b[A\x1b[Axxx\r",
-               line:           "line1xxx",
-               throwAwayLines: 2,
-       },
-       {
-               // Ctrl-A to move to beginning of line followed by ^K to kill
-               // line.
-               in:   "a b \001\013\r",
-               line: "",
-       },
-       {
-               // Ctrl-A to move to beginning of line, Ctrl-E to move to end,
-               // finally ^K to kill nothing.
-               in:   "a b \001\005\013\r",
-               line: "a b ",
-       },
-       {
-               in:   "\027\r",
-               line: "",
-       },
-       {
-               in:   "a\027\r",
-               line: "",
-       },
-       {
-               in:   "a \027\r",
-               line: "",
-       },
-       {
-               in:   "a b\027\r",
-               line: "a ",
-       },
-       {
-               in:   "a b \027\r",
-               line: "a ",
-       },
-       {
-               in:   "one two thr\x1b[D\027\r",
-               line: "one two r",
-       },
-       {
-               in:   "\013\r",
-               line: "",
-       },
-       {
-               in:   "a\013\r",
-               line: "a",
-       },
-       {
-               in:   "ab\x1b[D\013\r",
-               line: "a",
-       },
-       {
-               in:   "Ξεσκεπάζω\r",
-               line: "Ξεσκεπάζω",
-       },
-       {
-               in:             "£\r\x1b[A\177\r", // non-ASCII char, enter, 
up, backspace.
-               line:           "",
-               throwAwayLines: 1,
-       },
-       {
-               in:             "£\r££\x1b[A\x1b[B\177\r", // non-ASCII 
char, enter, 2x non-ASCII, up, down, backspace, enter.
-               line:           "£",
-               throwAwayLines: 1,
-       },
-       {
-               // Ctrl-D at the end of the line should be ignored.
-               in:   "a\004\r",
-               line: "a",
-       },
-       {
-               // a, b, left, Ctrl-D should erase the b.
-               in:   "ab\x1b[D\004\r",
-               line: "a",
-       },
-       {
-               // a, b, c, d, left, left, ^U should erase to the beginning of
-               // the line.
-               in:   "abcd\x1b[D\x1b[D\025\r",
-               line: "cd",
-       },
-       {
-               // Bracketed paste mode: control sequences should be returned
-               // verbatim in paste mode.
-               in:   "abc\x1b[200~de\177f\x1b[201~\177\r",
-               line: "abcde\177",
-       },
-       {
-               // Enter in bracketed paste mode should still work.
-               in:             "abc\x1b[200~d\refg\x1b[201~h\r",
-               line:           "efgh",
-               throwAwayLines: 1,
-       },
-       {
-               // Lines consisting entirely of pasted data should be indicated 
as such.
-               in:   "\x1b[200~a\r",
-               line: "a",
-               err:  ErrPasteIndicator,
-       },
-}
-
-func TestKeyPresses(t *testing.T) {
-       for i, test := range keyPressTests {
-               for j := 1; j < len(test.in); j++ {
-                       c := &MockTerminal{
-                               toSend:       []byte(test.in),
-                               bytesPerRead: j,
-                       }
-                       ss := NewTerminal(c, "> ")
-                       for k := 0; k < test.throwAwayLines; k++ {
-                               _, err := ss.ReadLine()
-                               if err != nil {
-                                       t.Errorf("Throwaway line %d from test 
%d resulted in error: %s", k, i, err)
-                               }
-                       }
-                       line, err := ss.ReadLine()
-                       if line != test.line {
-                               t.Errorf("Line resulting from test %d (%d bytes 
per read) was '%s', expected '%s'", i, j, line, test.line)
-                               break
-                       }
-                       if err != test.err {
-                               t.Errorf("Error resulting from test %d (%d 
bytes per read) was '%v', expected '%v'", i, j, err, test.err)
-                               break
-                       }
-               }
-       }
-}
-
-func TestPasswordNotSaved(t *testing.T) {
-       c := &MockTerminal{
-               toSend:       []byte("password\r\x1b[A\r"),
-               bytesPerRead: 1,
-       }
-       ss := NewTerminal(c, "> ")
-       pw, _ := ss.ReadPassword("> ")
-       if pw != "password" {
-               t.Fatalf("failed to read password, got %s", pw)
-       }
-       line, _ := ss.ReadLine()
-       if len(line) > 0 {
-               t.Fatalf("password was saved in history")
-       }
-}
-
-var setSizeTests = []struct {
-       width, height int
-}{
-       {40, 13},
-       {80, 24},
-       {132, 43},
-}
-
-func TestTerminalSetSize(t *testing.T) {
-       for _, setSize := range setSizeTests {
-               c := &MockTerminal{
-                       toSend:       []byte("password\r\x1b[A\r"),
-                       bytesPerRead: 1,
-               }
-               ss := NewTerminal(c, "> ")
-               ss.SetSize(setSize.width, setSize.height)
-               pw, _ := ss.ReadPassword("Password: ")
-               if pw != "password" {
-                       t.Fatalf("failed to read password, got %s", pw)
-               }
-               if string(c.received) != "Password: \r\n" {
-                       t.Errorf("failed to set the temporary prompt expected 
%q, got %q", "Password: ", c.received)
-               }
-       }
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/868863aa/cli/vendor/golang.org/x/crypto/ssh/test/agent_unix_test.go
----------------------------------------------------------------------
diff --git a/cli/vendor/golang.org/x/crypto/ssh/test/agent_unix_test.go 
b/cli/vendor/golang.org/x/crypto/ssh/test/agent_unix_test.go
deleted file mode 100644
index f481253..0000000
--- a/cli/vendor/golang.org/x/crypto/ssh/test/agent_unix_test.go
+++ /dev/null
@@ -1,59 +0,0 @@
-// Copyright 2014 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build darwin dragonfly freebsd linux netbsd openbsd
-
-package test
-
-import (
-       "bytes"
-       "testing"
-
-       "golang.org/x/crypto/ssh"
-       "golang.org/x/crypto/ssh/agent"
-)
-
-func TestAgentForward(t *testing.T) {
-       server := newServer(t)
-       defer server.Shutdown()
-       conn := server.Dial(clientConfig())
-       defer conn.Close()
-
-       keyring := agent.NewKeyring()
-       if err := keyring.Add(agent.AddedKey{PrivateKey: 
testPrivateKeys["dsa"]}); err != nil {
-               t.Fatalf("Error adding key: %s", err)
-       }
-       if err := keyring.Add(agent.AddedKey{
-               PrivateKey:       testPrivateKeys["dsa"],
-               ConfirmBeforeUse: true,
-               LifetimeSecs:     3600,
-       }); err != nil {
-               t.Fatalf("Error adding key with constraints: %s", err)
-       }
-       pub := testPublicKeys["dsa"]
-
-       sess, err := conn.NewSession()
-       if err != nil {
-               t.Fatalf("NewSession: %v", err)
-       }
-       if err := agent.RequestAgentForwarding(sess); err != nil {
-               t.Fatalf("RequestAgentForwarding: %v", err)
-       }
-
-       if err := agent.ForwardToAgent(conn, keyring); err != nil {
-               t.Fatalf("SetupForwardKeyring: %v", err)
-       }
-       out, err := sess.CombinedOutput("ssh-add -L")
-       if err != nil {
-               t.Fatalf("running ssh-add: %v, out %s", err, out)
-       }
-       key, _, _, _, err := ssh.ParseAuthorizedKey(out)
-       if err != nil {
-               t.Fatalf("ParseAuthorizedKey(%q): %v", out, err)
-       }
-
-       if !bytes.Equal(key.Marshal(), pub.Marshal()) {
-               t.Fatalf("got key %s, want %s", ssh.MarshalAuthorizedKey(key), 
ssh.MarshalAuthorizedKey(pub))
-       }
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/868863aa/cli/vendor/golang.org/x/crypto/ssh/test/cert_test.go
----------------------------------------------------------------------
diff --git a/cli/vendor/golang.org/x/crypto/ssh/test/cert_test.go 
b/cli/vendor/golang.org/x/crypto/ssh/test/cert_test.go
deleted file mode 100644
index 364790f..0000000
--- a/cli/vendor/golang.org/x/crypto/ssh/test/cert_test.go
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright 2014 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build darwin dragonfly freebsd linux netbsd openbsd
-
-package test
-
-import (
-       "crypto/rand"
-       "testing"
-
-       "golang.org/x/crypto/ssh"
-)
-
-func TestCertLogin(t *testing.T) {
-       s := newServer(t)
-       defer s.Shutdown()
-
-       // Use a key different from the default.
-       clientKey := testSigners["dsa"]
-       caAuthKey := testSigners["ecdsa"]
-       cert := &ssh.Certificate{
-               Key:             clientKey.PublicKey(),
-               ValidPrincipals: []string{username()},
-               CertType:        ssh.UserCert,
-               ValidBefore:     ssh.CertTimeInfinity,
-       }
-       if err := cert.SignCert(rand.Reader, caAuthKey); err != nil {
-               t.Fatalf("SetSignature: %v", err)
-       }
-
-       certSigner, err := ssh.NewCertSigner(cert, clientKey)
-       if err != nil {
-               t.Fatalf("NewCertSigner: %v", err)
-       }
-
-       conf := &ssh.ClientConfig{
-               User: username(),
-       }
-       conf.Auth = append(conf.Auth, ssh.PublicKeys(certSigner))
-       client, err := s.TryDial(conf)
-       if err != nil {
-               t.Fatalf("TryDial: %v", err)
-       }
-       client.Close()
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/868863aa/cli/vendor/golang.org/x/crypto/ssh/test/doc.go
----------------------------------------------------------------------
diff --git a/cli/vendor/golang.org/x/crypto/ssh/test/doc.go 
b/cli/vendor/golang.org/x/crypto/ssh/test/doc.go
deleted file mode 100644
index 3f9b334..0000000
--- a/cli/vendor/golang.org/x/crypto/ssh/test/doc.go
+++ /dev/null
@@ -1,7 +0,0 @@
-// Copyright 2012 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// This package contains integration tests for the
-// golang.org/x/crypto/ssh package.
-package test // import "golang.org/x/crypto/ssh/test"

http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/868863aa/cli/vendor/golang.org/x/crypto/ssh/test/forward_unix_test.go
----------------------------------------------------------------------
diff --git a/cli/vendor/golang.org/x/crypto/ssh/test/forward_unix_test.go 
b/cli/vendor/golang.org/x/crypto/ssh/test/forward_unix_test.go
deleted file mode 100644
index 877a88c..0000000
--- a/cli/vendor/golang.org/x/crypto/ssh/test/forward_unix_test.go
+++ /dev/null
@@ -1,160 +0,0 @@
-// Copyright 2012 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build darwin dragonfly freebsd linux netbsd openbsd
-
-package test
-
-import (
-       "bytes"
-       "io"
-       "io/ioutil"
-       "math/rand"
-       "net"
-       "testing"
-       "time"
-)
-
-func TestPortForward(t *testing.T) {
-       server := newServer(t)
-       defer server.Shutdown()
-       conn := server.Dial(clientConfig())
-       defer conn.Close()
-
-       sshListener, err := conn.Listen("tcp", "localhost:0")
-       if err != nil {
-               t.Fatal(err)
-       }
-
-       go func() {
-               sshConn, err := sshListener.Accept()
-               if err != nil {
-                       t.Fatalf("listen.Accept failed: %v", err)
-               }
-
-               _, err = io.Copy(sshConn, sshConn)
-               if err != nil && err != io.EOF {
-                       t.Fatalf("ssh client copy: %v", err)
-               }
-               sshConn.Close()
-       }()
-
-       forwardedAddr := sshListener.Addr().String()
-       tcpConn, err := net.Dial("tcp", forwardedAddr)
-       if err != nil {
-               t.Fatalf("TCP dial failed: %v", err)
-       }
-
-       readChan := make(chan []byte)
-       go func() {
-               data, _ := ioutil.ReadAll(tcpConn)
-               readChan <- data
-       }()
-
-       // Invent some data.
-       data := make([]byte, 100*1000)
-       for i := range data {
-               data[i] = byte(i % 255)
-       }
-
-       var sent []byte
-       for len(sent) < 1000*1000 {
-               // Send random sized chunks
-               m := rand.Intn(len(data))
-               n, err := tcpConn.Write(data[:m])
-               if err != nil {
-                       break
-               }
-               sent = append(sent, data[:n]...)
-       }
-       if err := tcpConn.(*net.TCPConn).CloseWrite(); err != nil {
-               t.Errorf("tcpConn.CloseWrite: %v", err)
-       }
-
-       read := <-readChan
-
-       if len(sent) != len(read) {
-               t.Fatalf("got %d bytes, want %d", len(read), len(sent))
-       }
-       if bytes.Compare(sent, read) != 0 {
-               t.Fatalf("read back data does not match")
-       }
-
-       if err := sshListener.Close(); err != nil {
-               t.Fatalf("sshListener.Close: %v", err)
-       }
-
-       // Check that the forward disappeared.
-       tcpConn, err = net.Dial("tcp", forwardedAddr)
-       if err == nil {
-               tcpConn.Close()
-               t.Errorf("still listening to %s after closing", forwardedAddr)
-       }
-}
-
-func TestAcceptClose(t *testing.T) {
-       server := newServer(t)
-       defer server.Shutdown()
-       conn := server.Dial(clientConfig())
-
-       sshListener, err := conn.Listen("tcp", "localhost:0")
-       if err != nil {
-               t.Fatal(err)
-       }
-
-       quit := make(chan error, 1)
-       go func() {
-               for {
-                       c, err := sshListener.Accept()
-                       if err != nil {
-                               quit <- err
-                               break
-                       }
-                       c.Close()
-               }
-       }()
-       sshListener.Close()
-
-       select {
-       case <-time.After(1 * time.Second):
-               t.Errorf("timeout: listener did not close.")
-       case err := <-quit:
-               t.Logf("quit as expected (error %v)", err)
-       }
-}
-
-// Check that listeners exit if the underlying client transport dies.
-func TestPortForwardConnectionClose(t *testing.T) {
-       server := newServer(t)
-       defer server.Shutdown()
-       conn := server.Dial(clientConfig())
-
-       sshListener, err := conn.Listen("tcp", "localhost:0")
-       if err != nil {
-               t.Fatal(err)
-       }
-
-       quit := make(chan error, 1)
-       go func() {
-               for {
-                       c, err := sshListener.Accept()
-                       if err != nil {
-                               quit <- err
-                               break
-                       }
-                       c.Close()
-               }
-       }()
-
-       // It would be even nicer if we closed the server side, but it
-       // is more involved as the fd for that side is dup()ed.
-       server.clientConn.Close()
-
-       select {
-       case <-time.After(1 * time.Second):
-               t.Errorf("timeout: listener did not close.")
-       case err := <-quit:
-               t.Logf("quit as expected (error %v)", err)
-       }
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/868863aa/cli/vendor/golang.org/x/crypto/ssh/test/session_test.go
----------------------------------------------------------------------
diff --git a/cli/vendor/golang.org/x/crypto/ssh/test/session_test.go 
b/cli/vendor/golang.org/x/crypto/ssh/test/session_test.go
deleted file mode 100644
index c0e714b..0000000
--- a/cli/vendor/golang.org/x/crypto/ssh/test/session_test.go
+++ /dev/null
@@ -1,340 +0,0 @@
-// Copyright 2012 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build !windows
-
-package test
-
-// Session functional tests.
-
-import (
-       "bytes"
-       "errors"
-       "io"
-       "strings"
-       "testing"
-
-       "golang.org/x/crypto/ssh"
-)
-
-func TestRunCommandSuccess(t *testing.T) {
-       server := newServer(t)
-       defer server.Shutdown()
-       conn := server.Dial(clientConfig())
-       defer conn.Close()
-
-       session, err := conn.NewSession()
-       if err != nil {
-               t.Fatalf("session failed: %v", err)
-       }
-       defer session.Close()
-       err = session.Run("true")
-       if err != nil {
-               t.Fatalf("session failed: %v", err)
-       }
-}
-
-func TestHostKeyCheck(t *testing.T) {
-       server := newServer(t)
-       defer server.Shutdown()
-
-       conf := clientConfig()
-       hostDB := hostKeyDB()
-       conf.HostKeyCallback = hostDB.Check
-
-       // change the keys.
-       hostDB.keys[ssh.KeyAlgoRSA][25]++
-       hostDB.keys[ssh.KeyAlgoDSA][25]++
-       hostDB.keys[ssh.KeyAlgoECDSA256][25]++
-
-       conn, err := server.TryDial(conf)
-       if err == nil {
-               conn.Close()
-               t.Fatalf("dial should have failed.")
-       } else if !strings.Contains(err.Error(), "host key mismatch") {
-               t.Fatalf("'host key mismatch' not found in %v", err)
-       }
-}
-
-func TestRunCommandStdin(t *testing.T) {
-       server := newServer(t)
-       defer server.Shutdown()
-       conn := server.Dial(clientConfig())
-       defer conn.Close()
-
-       session, err := conn.NewSession()
-       if err != nil {
-               t.Fatalf("session failed: %v", err)
-       }
-       defer session.Close()
-
-       r, w := io.Pipe()
-       defer r.Close()
-       defer w.Close()
-       session.Stdin = r
-
-       err = session.Run("true")
-       if err != nil {
-               t.Fatalf("session failed: %v", err)
-       }
-}
-
-func TestRunCommandStdinError(t *testing.T) {
-       server := newServer(t)
-       defer server.Shutdown()
-       conn := server.Dial(clientConfig())
-       defer conn.Close()
-
-       session, err := conn.NewSession()
-       if err != nil {
-               t.Fatalf("session failed: %v", err)
-       }
-       defer session.Close()
-
-       r, w := io.Pipe()
-       defer r.Close()
-       session.Stdin = r
-       pipeErr := errors.New("closing write end of pipe")
-       w.CloseWithError(pipeErr)
-
-       err = session.Run("true")
-       if err != pipeErr {
-               t.Fatalf("expected %v, found %v", pipeErr, err)
-       }
-}
-
-func TestRunCommandFailed(t *testing.T) {
-       server := newServer(t)
-       defer server.Shutdown()
-       conn := server.Dial(clientConfig())
-       defer conn.Close()
-
-       session, err := conn.NewSession()
-       if err != nil {
-               t.Fatalf("session failed: %v", err)
-       }
-       defer session.Close()
-       err = session.Run(`bash -c "kill -9 $$"`)
-       if err == nil {
-               t.Fatalf("session succeeded: %v", err)
-       }
-}
-
-func TestRunCommandWeClosed(t *testing.T) {
-       server := newServer(t)
-       defer server.Shutdown()
-       conn := server.Dial(clientConfig())
-       defer conn.Close()
-
-       session, err := conn.NewSession()
-       if err != nil {
-               t.Fatalf("session failed: %v", err)
-       }
-       err = session.Shell()
-       if err != nil {
-               t.Fatalf("shell failed: %v", err)
-       }
-       err = session.Close()
-       if err != nil {
-               t.Fatalf("shell failed: %v", err)
-       }
-}
-
-func TestFuncLargeRead(t *testing.T) {
-       server := newServer(t)
-       defer server.Shutdown()
-       conn := server.Dial(clientConfig())
-       defer conn.Close()
-
-       session, err := conn.NewSession()
-       if err != nil {
-               t.Fatalf("unable to create new session: %s", err)
-       }
-
-       stdout, err := session.StdoutPipe()
-       if err != nil {
-               t.Fatalf("unable to acquire stdout pipe: %s", err)
-       }
-
-       err = session.Start("dd if=/dev/urandom bs=2048 count=1024")
-       if err != nil {
-               t.Fatalf("unable to execute remote command: %s", err)
-       }
-
-       buf := new(bytes.Buffer)
-       n, err := io.Copy(buf, stdout)
-       if err != nil {
-               t.Fatalf("error reading from remote stdout: %s", err)
-       }
-
-       if n != 2048*1024 {
-               t.Fatalf("Expected %d bytes but read only %d from remote 
command", 2048, n)
-       }
-}
-
-func TestKeyChange(t *testing.T) {
-       server := newServer(t)
-       defer server.Shutdown()
-       conf := clientConfig()
-       hostDB := hostKeyDB()
-       conf.HostKeyCallback = hostDB.Check
-       conf.RekeyThreshold = 1024
-       conn := server.Dial(conf)
-       defer conn.Close()
-
-       for i := 0; i < 4; i++ {
-               session, err := conn.NewSession()
-               if err != nil {
-                       t.Fatalf("unable to create new session: %s", err)
-               }
-
-               stdout, err := session.StdoutPipe()
-               if err != nil {
-                       t.Fatalf("unable to acquire stdout pipe: %s", err)
-               }
-
-               err = session.Start("dd if=/dev/urandom bs=1024 count=1")
-               if err != nil {
-                       t.Fatalf("unable to execute remote command: %s", err)
-               }
-               buf := new(bytes.Buffer)
-               n, err := io.Copy(buf, stdout)
-               if err != nil {
-                       t.Fatalf("error reading from remote stdout: %s", err)
-               }
-
-               want := int64(1024)
-               if n != want {
-                       t.Fatalf("Expected %d bytes but read only %d from 
remote command", want, n)
-               }
-       }
-
-       if changes := hostDB.checkCount; changes < 4 {
-               t.Errorf("got %d key changes, want 4", changes)
-       }
-}
-
-func TestInvalidTerminalMode(t *testing.T) {
-       server := newServer(t)
-       defer server.Shutdown()
-       conn := server.Dial(clientConfig())
-       defer conn.Close()
-
-       session, err := conn.NewSession()
-       if err != nil {
-               t.Fatalf("session failed: %v", err)
-       }
-       defer session.Close()
-
-       if err = session.RequestPty("vt100", 80, 40, ssh.TerminalModes{255: 
1984}); err == nil {
-               t.Fatalf("req-pty failed: successful request with invalid mode")
-       }
-}
-
-func TestValidTerminalMode(t *testing.T) {
-       server := newServer(t)
-       defer server.Shutdown()
-       conn := server.Dial(clientConfig())
-       defer conn.Close()
-
-       session, err := conn.NewSession()
-       if err != nil {
-               t.Fatalf("session failed: %v", err)
-       }
-       defer session.Close()
-
-       stdout, err := session.StdoutPipe()
-       if err != nil {
-               t.Fatalf("unable to acquire stdout pipe: %s", err)
-       }
-
-       stdin, err := session.StdinPipe()
-       if err != nil {
-               t.Fatalf("unable to acquire stdin pipe: %s", err)
-       }
-
-       tm := ssh.TerminalModes{ssh.ECHO: 0}
-       if err = session.RequestPty("xterm", 80, 40, tm); err != nil {
-               t.Fatalf("req-pty failed: %s", err)
-       }
-
-       err = session.Shell()
-       if err != nil {
-               t.Fatalf("session failed: %s", err)
-       }
-
-       stdin.Write([]byte("stty -a && exit\n"))
-
-       var buf bytes.Buffer
-       if _, err := io.Copy(&buf, stdout); err != nil {
-               t.Fatalf("reading failed: %s", err)
-       }
-
-       if sttyOutput := buf.String(); !strings.Contains(sttyOutput, "-echo ") {
-               t.Fatalf("terminal mode failure: expected -echo in stty output, 
got %s", sttyOutput)
-       }
-}
-
-func TestCiphers(t *testing.T) {
-       var config ssh.Config
-       config.SetDefaults()
-       cipherOrder := config.Ciphers
-       // This cipher will not be tested when commented out in cipher.go it 
will
-       // fallback to the next available as per line 292.
-       cipherOrder = append(cipherOrder, "aes128-cbc")
-
-       for _, ciph := range cipherOrder {
-               server := newServer(t)
-               defer server.Shutdown()
-               conf := clientConfig()
-               conf.Ciphers = []string{ciph}
-               // Don't fail if sshd doesnt have the cipher.
-               conf.Ciphers = append(conf.Ciphers, cipherOrder...)
-               conn, err := server.TryDial(conf)
-               if err == nil {
-                       conn.Close()
-               } else {
-                       t.Fatalf("failed for cipher %q", ciph)
-               }
-       }
-}
-
-func TestMACs(t *testing.T) {
-       var config ssh.Config
-       config.SetDefaults()
-       macOrder := config.MACs
-
-       for _, mac := range macOrder {
-               server := newServer(t)
-               defer server.Shutdown()
-               conf := clientConfig()
-               conf.MACs = []string{mac}
-               // Don't fail if sshd doesnt have the MAC.
-               conf.MACs = append(conf.MACs, macOrder...)
-               if conn, err := server.TryDial(conf); err == nil {
-                       conn.Close()
-               } else {
-                       t.Fatalf("failed for MAC %q", mac)
-               }
-       }
-}
-
-func TestKeyExchanges(t *testing.T) {
-       var config ssh.Config
-       config.SetDefaults()
-       kexOrder := config.KeyExchanges
-       for _, kex := range kexOrder {
-               server := newServer(t)
-               defer server.Shutdown()
-               conf := clientConfig()
-               // Don't fail if sshd doesnt have the kex.
-               conf.KeyExchanges = append([]string{kex}, kexOrder...)
-               conn, err := server.TryDial(conf)
-               if err == nil {
-                       conn.Close()
-               } else {
-                       t.Errorf("failed for kex %q", kex)
-               }
-       }
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/868863aa/cli/vendor/golang.org/x/crypto/ssh/test/tcpip_test.go
----------------------------------------------------------------------
diff --git a/cli/vendor/golang.org/x/crypto/ssh/test/tcpip_test.go 
b/cli/vendor/golang.org/x/crypto/ssh/test/tcpip_test.go
deleted file mode 100644
index a2eb935..0000000
--- a/cli/vendor/golang.org/x/crypto/ssh/test/tcpip_test.go
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright 2012 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build !windows
-
-package test
-
-// direct-tcpip functional tests
-
-import (
-       "io"
-       "net"
-       "testing"
-)
-
-func TestDial(t *testing.T) {
-       server := newServer(t)
-       defer server.Shutdown()
-       sshConn := server.Dial(clientConfig())
-       defer sshConn.Close()
-
-       l, err := net.Listen("tcp", "127.0.0.1:0")
-       if err != nil {
-               t.Fatalf("Listen: %v", err)
-       }
-       defer l.Close()
-
-       go func() {
-               for {
-                       c, err := l.Accept()
-                       if err != nil {
-                               break
-                       }
-
-                       io.WriteString(c, c.RemoteAddr().String())
-                       c.Close()
-               }
-       }()
-
-       conn, err := sshConn.Dial("tcp", l.Addr().String())
-       if err != nil {
-               t.Fatalf("Dial: %v", err)
-       }
-       defer conn.Close()
-}

Reply via email to