mirror of
				https://github.com/appleboy/drone-ssh.git
				synced 2025-10-29 00:51:15 +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
	 Josh Komoroske
						Josh Komoroske