@@ -40,6 +40,38 @@ func TestClient(t *testing.T) {
40
40
assert .Error (t , err )
41
41
}
42
42
43
+ func TestClientSSH (t * testing.T ) {
44
+ s := newServer (t )
45
+ if s == nil {
46
+ return
47
+ }
48
+ s .useSSH = true
49
+ defer func () {
50
+ assert .NoError (t , s .Close ())
51
+ }()
52
+
53
+ c , err := NewClient (s .Addr , Timeout (time .Second ), SSH (sshClientTestConfig ))
54
+ if ! assert .NoError (t , err ) {
55
+ return
56
+ }
57
+
58
+ defer func () {
59
+ assert .Error (t , c .Close ())
60
+ }()
61
+
62
+ _ , err = c .Exec ("version" )
63
+ assert .NoError (t , err )
64
+
65
+ _ , err = c .ExecCmd (NewCmd ("version" ))
66
+ assert .NoError (t , err )
67
+
68
+ _ , err = c .ExecCmd (NewCmd ("invalid" ))
69
+ assert .Error (t , err )
70
+
71
+ _ , err = c .ExecCmd (NewCmd ("disconnect" ))
72
+ assert .Error (t , err )
73
+ }
74
+
43
75
func TestClientNilOption (t * testing.T ) {
44
76
_ , err := NewClient ("" , nil )
45
77
if ! assert .Error (t , err ) {
@@ -79,6 +111,27 @@ func TestClientDisconnect(t *testing.T) {
79
111
assert .Error (t , err )
80
112
}
81
113
114
+ func TestClientDisconnectSSH (t * testing.T ) {
115
+ s := newServer (t )
116
+ if s == nil {
117
+ return
118
+ }
119
+ s .useSSH = true
120
+ defer func () {
121
+ assert .NoError (t , s .Close ())
122
+ }()
123
+
124
+ c , err := NewClient (s .Addr , Timeout (time .Second ), SSH (sshClientTestConfig ))
125
+ if ! assert .NoError (t , err ) {
126
+ return
127
+ }
128
+
129
+ assert .NoError (t , c .Close ())
130
+
131
+ _ , err = c .Exec ("version" )
132
+ assert .Error (t , err )
133
+ }
134
+
82
135
func TestClientWriteFail (t * testing.T ) {
83
136
s := newServer (t )
84
137
if s == nil {
@@ -92,7 +145,7 @@ func TestClientWriteFail(t *testing.T) {
92
145
if ! assert .NoError (t , err ) {
93
146
return
94
147
}
95
- assert .NoError (t , c .conn .(* net.TCPConn ).CloseWrite ())
148
+ assert .NoError (t , c .conn .(* legacyConnection ). Conn .( * net.TCPConn ).CloseWrite ())
96
149
97
150
_ , err = c .Exec ("version" )
98
151
assert .Error (t , err )
@@ -108,6 +161,16 @@ func TestClientDialFail(t *testing.T) {
108
161
assert .NoError (t , c .Close ())
109
162
}
110
163
164
+ func TestClientDialFailSSH (t * testing.T ) {
165
+ c , err := NewClient ("127.0.0.1" , Timeout (time .Nanosecond ), SSH (sshClientTestConfig ))
166
+ if assert .Error (t , err ) {
167
+ return
168
+ }
169
+
170
+ // Should never get here
171
+ assert .NoError (t , c .Close ())
172
+ }
173
+
111
174
func TestClientTimeout (t * testing.T ) {
112
175
s := newServer (t )
113
176
if s == nil {
@@ -127,6 +190,26 @@ func TestClientTimeout(t *testing.T) {
127
190
assert .Error (t , err )
128
191
}
129
192
193
+ func TestClientTimeoutSSH (t * testing.T ) {
194
+ s := newServer (t )
195
+ if s == nil {
196
+ return
197
+ }
198
+ s .useSSH = true
199
+ defer func () {
200
+ assert .NoError (t , s .Close ())
201
+ }()
202
+
203
+ c , err := NewClient (s .Addr , Timeout (time .Millisecond * 100 ), SSH (sshClientTestConfig ))
204
+ if ! assert .NoError (t , err ) {
205
+ return
206
+ }
207
+
208
+ // Not receiving a response must cause a timeout
209
+ _ , err = c .Exec (" " )
210
+ assert .Error (t , err )
211
+ }
212
+
130
213
func TestClientDeadline (t * testing.T ) {
131
214
s := newServer (t )
132
215
if s == nil {
@@ -151,6 +234,31 @@ func TestClientDeadline(t *testing.T) {
151
234
assert .NoError (t , err )
152
235
}
153
236
237
+ func TestClientDeadlineSSH (t * testing.T ) {
238
+ s := newServer (t )
239
+ if s == nil {
240
+ return
241
+ }
242
+ s .useSSH = true
243
+ defer func () {
244
+ assert .NoError (t , s .Close ())
245
+ }()
246
+
247
+ c , err := NewClient (s .Addr , Timeout (time .Millisecond * 100 ), SSH (sshClientTestConfig ))
248
+ if ! assert .NoError (t , err ) {
249
+ return
250
+ }
251
+
252
+ _ , err = c .Exec ("version" )
253
+ assert .NoError (t , err )
254
+
255
+ // Inactivity must not cause a timeout
256
+ time .Sleep (c .timeout * 2 )
257
+
258
+ _ , err = c .Exec ("version" )
259
+ assert .NoError (t , err )
260
+ }
261
+
154
262
func TestClientNoHeader (t * testing.T ) {
155
263
s := newServerStopped (t )
156
264
if s == nil {
@@ -211,6 +319,26 @@ func TestClientFailConn(t *testing.T) {
211
319
assert .NoError (t , c .Close ())
212
320
}
213
321
322
+ func TestClientFailConnSSH (t * testing.T ) {
323
+ s := newServerStopped (t )
324
+ if s == nil {
325
+ return
326
+ }
327
+ s .failConn = true
328
+ s .Start ()
329
+ defer func () {
330
+ assert .NoError (t , s .Close ())
331
+ }()
332
+
333
+ c , err := NewClient (s .Addr , Timeout (time .Second ), SSH (sshClientTestConfig ))
334
+ if assert .Error (t , err ) {
335
+ return
336
+ }
337
+
338
+ // Should never get here
339
+ assert .NoError (t , c .Close ())
340
+ }
341
+
214
342
func TestClientBadHeader (t * testing.T ) {
215
343
s := newServerStopped (t )
216
344
if s == nil {
0 commit comments