mirror of
https://github.com/appleboy/drone-ssh.git
synced 2025-07-02 21:52:51 +08:00
Connection timeout tests
This commit is contained in:
parent
ffacfb6ce8
commit
b40bfc56ce
@ -8,6 +8,8 @@ import (
|
|||||||
"github.com/appleboy/easyssh-proxy"
|
"github.com/appleboy/easyssh-proxy"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestMissingHostOrUser(t *testing.T) {
|
func TestMissingHostOrUser(t *testing.T) {
|
||||||
@ -457,6 +459,56 @@ func TestEnvOutput(t *testing.T) {
|
|||||||
assert.Equal(t, unindent(expected), unindent(buffer.String()))
|
assert.Equal(t, unindent(expected), unindent(buffer.String()))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TestConnectTimeoutRetry tests that when a network error occurs, the connect
|
||||||
|
// is retried until it either succeeds or the configured timeout is hit.
|
||||||
|
func TestConnectTimeoutRetry(t *testing.T) {
|
||||||
|
start := time.Now()
|
||||||
|
|
||||||
|
plugin := Plugin{
|
||||||
|
Config: Config{
|
||||||
|
Host: []string{"localhost"},
|
||||||
|
UserName: "drone-scp",
|
||||||
|
Port: 2200,
|
||||||
|
KeyPath: "./tests/.ssh/id_rsa",
|
||||||
|
Script: []string{"exit"},
|
||||||
|
RetryTimeout: 15 * time.Second,
|
||||||
|
Sync: true,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
err := plugin.Exec()
|
||||||
|
assert.NotNil(t, err)
|
||||||
|
|
||||||
|
end := time.Now()
|
||||||
|
assert.WithinDuration(t, start.Local().Add(15*time.Second), end, 2*time.Second)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// TestConnectTimeoutRetry tests that when a non-network error occurs, the connect
|
||||||
|
// is not retried and instead returns the error immediately.
|
||||||
|
func TestConnectTimeoutImmediate(t *testing.T) {
|
||||||
|
start := time.Now()
|
||||||
|
|
||||||
|
plugin := Plugin{
|
||||||
|
Config: Config{
|
||||||
|
Host: []string{"localhost"},
|
||||||
|
UserName: "drone-scp",
|
||||||
|
Port: 22,
|
||||||
|
Key: "",
|
||||||
|
Script: []string{"exit"},
|
||||||
|
RetryTimeout: 60 * time.Second,
|
||||||
|
Sync: true,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
err := plugin.Exec()
|
||||||
|
assert.NotNil(t, err)
|
||||||
|
|
||||||
|
end := time.Now()
|
||||||
|
assert.WithinDuration(t, start.Local().Add(time.Second), end, 2*time.Second)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
func unindent(text string) string {
|
func unindent(text string) string {
|
||||||
return strings.TrimSpace(strings.Replace(text, "\t", "", -1))
|
return strings.TrimSpace(strings.Replace(text, "\t", "", -1))
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user