mirror of
				https://github.com/optim-enterprises-bv/vault.git
				synced 2025-10-31 02:28:09 +00:00 
			
		
		
		
	Update deps
This commit is contained in:
		
							
								
								
									
										98
									
								
								Godeps/Godeps.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										98
									
								
								Godeps/Godeps.json
									
									
									
										generated
									
									
									
								
							| @@ -7,7 +7,7 @@ | |||||||
| 	"Deps": [ | 	"Deps": [ | ||||||
| 		{ | 		{ | ||||||
| 			"ImportPath": "github.com/armon/go-metrics", | 			"ImportPath": "github.com/armon/go-metrics", | ||||||
| 			"Rev": "b2d95e5291cdbc26997d1301a5e467ecbb240e25" | 			"Rev": "6c5fa0d8f48f4661c9ba8709799c88d425ad20f0" | ||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			"ImportPath": "github.com/armon/go-radix", | 			"ImportPath": "github.com/armon/go-radix", | ||||||
| @@ -15,68 +15,68 @@ | |||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			"ImportPath": "github.com/aws/aws-sdk-go/aws", | 			"ImportPath": "github.com/aws/aws-sdk-go/aws", | ||||||
| 			"Comment": "v0.9.0rc1-13-g87dbf7e", | 			"Comment": "v0.9.9-3-g7553d52", | ||||||
| 			"Rev": "87dbf7e29df163bd17d9cea9a03cb75eb8b76d29" | 			"Rev": "7553d5227962c0f226768d0435881e99ec0cab35" | ||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			"ImportPath": "github.com/aws/aws-sdk-go/internal/endpoints", | 			"ImportPath": "github.com/aws/aws-sdk-go/internal/endpoints", | ||||||
| 			"Comment": "v0.9.0rc1-13-g87dbf7e", | 			"Comment": "v0.9.9-3-g7553d52", | ||||||
| 			"Rev": "87dbf7e29df163bd17d9cea9a03cb75eb8b76d29" | 			"Rev": "7553d5227962c0f226768d0435881e99ec0cab35" | ||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			"ImportPath": "github.com/aws/aws-sdk-go/internal/protocol/ec2query", | 			"ImportPath": "github.com/aws/aws-sdk-go/internal/protocol/ec2query", | ||||||
| 			"Comment": "v0.9.0rc1-13-g87dbf7e", | 			"Comment": "v0.9.9-3-g7553d52", | ||||||
| 			"Rev": "87dbf7e29df163bd17d9cea9a03cb75eb8b76d29" | 			"Rev": "7553d5227962c0f226768d0435881e99ec0cab35" | ||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			"ImportPath": "github.com/aws/aws-sdk-go/internal/protocol/query", | 			"ImportPath": "github.com/aws/aws-sdk-go/internal/protocol/query", | ||||||
| 			"Comment": "v0.9.0rc1-13-g87dbf7e", | 			"Comment": "v0.9.9-3-g7553d52", | ||||||
| 			"Rev": "87dbf7e29df163bd17d9cea9a03cb75eb8b76d29" | 			"Rev": "7553d5227962c0f226768d0435881e99ec0cab35" | ||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			"ImportPath": "github.com/aws/aws-sdk-go/internal/protocol/rest", | 			"ImportPath": "github.com/aws/aws-sdk-go/internal/protocol/rest", | ||||||
| 			"Comment": "v0.9.0rc1-13-g87dbf7e", | 			"Comment": "v0.9.9-3-g7553d52", | ||||||
| 			"Rev": "87dbf7e29df163bd17d9cea9a03cb75eb8b76d29" | 			"Rev": "7553d5227962c0f226768d0435881e99ec0cab35" | ||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			"ImportPath": "github.com/aws/aws-sdk-go/internal/protocol/restxml", | 			"ImportPath": "github.com/aws/aws-sdk-go/internal/protocol/restxml", | ||||||
| 			"Comment": "v0.9.0rc1-13-g87dbf7e", | 			"Comment": "v0.9.9-3-g7553d52", | ||||||
| 			"Rev": "87dbf7e29df163bd17d9cea9a03cb75eb8b76d29" | 			"Rev": "7553d5227962c0f226768d0435881e99ec0cab35" | ||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			"ImportPath": "github.com/aws/aws-sdk-go/internal/protocol/xml/xmlutil", | 			"ImportPath": "github.com/aws/aws-sdk-go/internal/protocol/xml/xmlutil", | ||||||
| 			"Comment": "v0.9.0rc1-13-g87dbf7e", | 			"Comment": "v0.9.9-3-g7553d52", | ||||||
| 			"Rev": "87dbf7e29df163bd17d9cea9a03cb75eb8b76d29" | 			"Rev": "7553d5227962c0f226768d0435881e99ec0cab35" | ||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			"ImportPath": "github.com/aws/aws-sdk-go/internal/signer/v4", | 			"ImportPath": "github.com/aws/aws-sdk-go/internal/signer/v4", | ||||||
| 			"Comment": "v0.9.0rc1-13-g87dbf7e", | 			"Comment": "v0.9.9-3-g7553d52", | ||||||
| 			"Rev": "87dbf7e29df163bd17d9cea9a03cb75eb8b76d29" | 			"Rev": "7553d5227962c0f226768d0435881e99ec0cab35" | ||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			"ImportPath": "github.com/aws/aws-sdk-go/service/ec2", | 			"ImportPath": "github.com/aws/aws-sdk-go/service/ec2", | ||||||
| 			"Comment": "v0.9.0rc1-13-g87dbf7e", | 			"Comment": "v0.9.9-3-g7553d52", | ||||||
| 			"Rev": "87dbf7e29df163bd17d9cea9a03cb75eb8b76d29" | 			"Rev": "7553d5227962c0f226768d0435881e99ec0cab35" | ||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			"ImportPath": "github.com/aws/aws-sdk-go/service/iam", | 			"ImportPath": "github.com/aws/aws-sdk-go/service/iam", | ||||||
| 			"Comment": "v0.9.0rc1-13-g87dbf7e", | 			"Comment": "v0.9.9-3-g7553d52", | ||||||
| 			"Rev": "87dbf7e29df163bd17d9cea9a03cb75eb8b76d29" | 			"Rev": "7553d5227962c0f226768d0435881e99ec0cab35" | ||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			"ImportPath": "github.com/aws/aws-sdk-go/service/s3", | 			"ImportPath": "github.com/aws/aws-sdk-go/service/s3", | ||||||
| 			"Comment": "v0.9.0rc1-13-g87dbf7e", | 			"Comment": "v0.9.9-3-g7553d52", | ||||||
| 			"Rev": "87dbf7e29df163bd17d9cea9a03cb75eb8b76d29" | 			"Rev": "7553d5227962c0f226768d0435881e99ec0cab35" | ||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			"ImportPath": "github.com/coreos/go-etcd/etcd", | 			"ImportPath": "github.com/coreos/go-etcd/etcd", | ||||||
| 			"Comment": "v2.0.0-28-g126041e", | 			"Comment": "v2.0.0-34-gde3514f", | ||||||
| 			"Rev": "126041ef7b24a28359a12f8bf7f6a7db6756113d" | 			"Rev": "de3514f25635bbfb024fdaf2a8d5f67378492675" | ||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			"ImportPath": "github.com/dgrijalva/jwt-go", | 			"ImportPath": "github.com/dgrijalva/jwt-go", | ||||||
| 			"Comment": "v2.3.0-1-g9fe8afe", | 			"Comment": "v2.3.0-4-gc1da563", | ||||||
| 			"Rev": "9fe8afe96d32468fba230b8b22acea86251f0506" | 			"Rev": "c1da56349675b292d3200463e2c88b9aa5e02391" | ||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			"ImportPath": "github.com/duosecurity/duo_api_golang", | 			"ImportPath": "github.com/duosecurity/duo_api_golang", | ||||||
| @@ -93,13 +93,13 @@ | |||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			"ImportPath": "github.com/go-sql-driver/mysql", | 			"ImportPath": "github.com/go-sql-driver/mysql", | ||||||
| 			"Comment": "v1.2-118-g3dd7008", | 			"Comment": "v1.2-119-g527bcd5", | ||||||
| 			"Rev": "3dd7008ac1529aca1bcd8a9db75228a71ba23cac" | 			"Rev": "527bcd55aab2e53314f1a150922560174b493034" | ||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			"ImportPath": "github.com/gocql/gocql", | 			"ImportPath": "github.com/gocql/gocql", | ||||||
| 			"Comment": "1st_gen_framing-225-g9d122d6", | 			"Comment": "1st_gen_framing-268-g2641ef0", | ||||||
| 			"Rev": "9d122d6ceec00b4b73bfb70de5587cdee7078d17" | 			"Rev": "2641ef08fabdc0182465a14a4f23f1521acb2834" | ||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			"ImportPath": "github.com/golang/snappy", | 			"ImportPath": "github.com/golang/snappy", | ||||||
| @@ -107,7 +107,7 @@ | |||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			"ImportPath": "github.com/google/go-github/github", | 			"ImportPath": "github.com/google/go-github/github", | ||||||
| 			"Rev": "7277108aa3e8823e0e028f6c74aea2f4ce4a1b5a" | 			"Rev": "0d67682ce830f252a1d56215f39b71199036361d" | ||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			"ImportPath": "github.com/google/go-querystring/query", | 			"ImportPath": "github.com/google/go-querystring/query", | ||||||
| @@ -115,8 +115,8 @@ | |||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			"ImportPath": "github.com/hashicorp/consul/api", | 			"ImportPath": "github.com/hashicorp/consul/api", | ||||||
| 			"Comment": "v0.5.2-216-g134db62", | 			"Comment": "v0.5.2-313-gde08067", | ||||||
| 			"Rev": "134db6293762848681fc9244343bbd19f61d8149" | 			"Rev": "de080672fee9e6104572eeea89eccdca135bb918" | ||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			"ImportPath": "github.com/hashicorp/errwrap", | 			"ImportPath": "github.com/hashicorp/errwrap", | ||||||
| @@ -124,7 +124,7 @@ | |||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			"ImportPath": "github.com/hashicorp/go-multierror", | 			"ImportPath": "github.com/hashicorp/go-multierror", | ||||||
| 			"Rev": "56912fb08d85084aa318edcf2bba735b97cf35c5" | 			"Rev": "d30f09973e19c1dfcd120b2d9c4f168e68d6b5d5" | ||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			"ImportPath": "github.com/hashicorp/go-syslog", | 			"ImportPath": "github.com/hashicorp/go-syslog", | ||||||
| @@ -136,7 +136,7 @@ | |||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			"ImportPath": "github.com/hashicorp/hcl", | 			"ImportPath": "github.com/hashicorp/hcl", | ||||||
| 			"Rev": "54864211433d45cb780682431585b3e573b49e4a" | 			"Rev": "4de51957ef8d4aba6e285ddfc587633bbfc7c0e8" | ||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			"ImportPath": "github.com/hashicorp/logutils", | 			"ImportPath": "github.com/hashicorp/logutils", | ||||||
| @@ -161,7 +161,7 @@ | |||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			"ImportPath": "github.com/mitchellh/go-homedir", | 			"ImportPath": "github.com/mitchellh/go-homedir", | ||||||
| 			"Rev": "1f6da4a72e57d4e7edd4a7295a585e0a3999a2d4" | 			"Rev": "df55a15e5ce646808815381b3db47a8c66ea62f4" | ||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			"ImportPath": "github.com/mitchellh/mapstructure", | 			"ImportPath": "github.com/mitchellh/mapstructure", | ||||||
| @@ -173,8 +173,8 @@ | |||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			"ImportPath": "github.com/ryanuber/columnize", | 			"ImportPath": "github.com/ryanuber/columnize", | ||||||
| 			"Comment": "v2.0.1-6-g44cb478", | 			"Comment": "v2.0.1-8-g983d3a5", | ||||||
| 			"Rev": "44cb4788b2ec3c3d158dd3d1b50aba7d66f4b59a" | 			"Rev": "983d3a5fab1bf04d1b412465d2d9f8430e2e917e" | ||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			"ImportPath": "github.com/samuel/go-zookeeper/zk", | 			"ImportPath": "github.com/samuel/go-zookeeper/zk", | ||||||
| @@ -182,7 +182,7 @@ | |||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			"ImportPath": "github.com/ugorji/go/codec", | 			"ImportPath": "github.com/ugorji/go/codec", | ||||||
| 			"Rev": "5abd4e96a45c386928ed2ca2a7ef63e2533e18ec" | 			"Rev": "1d5269ed4e89d423d40362a0914e1c99adb13cc8" | ||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			"ImportPath": "github.com/vaughan0/go-ini", | 			"ImportPath": "github.com/vaughan0/go-ini", | ||||||
| @@ -190,35 +190,35 @@ | |||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			"ImportPath": "golang.org/x/crypto/bcrypt", | 			"ImportPath": "golang.org/x/crypto/bcrypt", | ||||||
| 			"Rev": "81bf7719a6b7ce9b665598222362b50122dfc13b" | 			"Rev": "aedad9a179ec1ea11b7064c57cbc6dc30d7724ec" | ||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			"ImportPath": "golang.org/x/crypto/blowfish", | 			"ImportPath": "golang.org/x/crypto/blowfish", | ||||||
| 			"Rev": "81bf7719a6b7ce9b665598222362b50122dfc13b" | 			"Rev": "aedad9a179ec1ea11b7064c57cbc6dc30d7724ec" | ||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			"ImportPath": "golang.org/x/crypto/cast5", | 			"ImportPath": "golang.org/x/crypto/cast5", | ||||||
| 			"Rev": "81bf7719a6b7ce9b665598222362b50122dfc13b" | 			"Rev": "aedad9a179ec1ea11b7064c57cbc6dc30d7724ec" | ||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			"ImportPath": "golang.org/x/crypto/curve25519", | 			"ImportPath": "golang.org/x/crypto/curve25519", | ||||||
| 			"Rev": "81bf7719a6b7ce9b665598222362b50122dfc13b" | 			"Rev": "aedad9a179ec1ea11b7064c57cbc6dc30d7724ec" | ||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			"ImportPath": "golang.org/x/crypto/openpgp", | 			"ImportPath": "golang.org/x/crypto/openpgp", | ||||||
| 			"Rev": "81bf7719a6b7ce9b665598222362b50122dfc13b" | 			"Rev": "aedad9a179ec1ea11b7064c57cbc6dc30d7724ec" | ||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			"ImportPath": "golang.org/x/crypto/ssh", | 			"ImportPath": "golang.org/x/crypto/ssh", | ||||||
| 			"Rev": "81bf7719a6b7ce9b665598222362b50122dfc13b" | 			"Rev": "aedad9a179ec1ea11b7064c57cbc6dc30d7724ec" | ||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			"ImportPath": "golang.org/x/net/context", | 			"ImportPath": "golang.org/x/net/context", | ||||||
| 			"Rev": "66f0418ca41253f8d1a024eb9754e9441a8e79b9" | 			"Rev": "db8e4de5b2d6653f66aea53094624468caad15d2" | ||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			"ImportPath": "golang.org/x/oauth2", | 			"ImportPath": "golang.org/x/oauth2", | ||||||
| 			"Rev": "397fe7649477ff2e8ced8fc0b2696f781e53745a" | 			"Rev": "82de3fe653a61c1b0174fba87c5f1ca06226ed51" | ||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			"ImportPath": "gopkg.in/asn1-ber.v1", | 			"ImportPath": "gopkg.in/asn1-ber.v1", | ||||||
| @@ -227,7 +227,7 @@ | |||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			"ImportPath": "gopkg.in/inf.v0", | 			"ImportPath": "gopkg.in/inf.v0", | ||||||
| 			"Rev": "c85f1217d51339c0fa3a498cc8b2075de695dae6" | 			"Rev": "3887ee99ecf07df5b447e9b00d9c0b2adaa9f3e4" | ||||||
| 		} | 		} | ||||||
| 	] | 	] | ||||||
| } | } | ||||||
|   | |||||||
							
								
								
									
										109
									
								
								Godeps/_workspace/src/github.com/armon/go-metrics/datadog/dogstatsd.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										109
									
								
								Godeps/_workspace/src/github.com/armon/go-metrics/datadog/dogstatsd.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,109 @@ | |||||||
|  | package datadog | ||||||
|  |  | ||||||
|  | import ( | ||||||
|  | 	"fmt" | ||||||
|  | 	"strings" | ||||||
|  |  | ||||||
|  | 	"github.com/DataDog/datadog-go/statsd" | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | // DogStatsdSink provides a MetricSink that can be used | ||||||
|  | // with a dogstatsd server. It utilizes the Dogstatsd client at github.com/DataDog/datadog-go/statsd | ||||||
|  | type DogStatsdSink struct { | ||||||
|  | 	client            *statsd.Client | ||||||
|  | 	hostName          string | ||||||
|  | 	propagateHostname bool | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // NewDogStatsdSink is used to create a new DogStatsdSink with sane defaults | ||||||
|  | func NewDogStatsdSink(addr string, hostName string) (*DogStatsdSink, error) { | ||||||
|  | 	client, err := statsd.New(addr) | ||||||
|  | 	if err != nil { | ||||||
|  | 		return nil, err | ||||||
|  | 	} | ||||||
|  | 	sink := &DogStatsdSink{ | ||||||
|  | 		client:            client, | ||||||
|  | 		hostName:          hostName, | ||||||
|  | 		propagateHostname: false, | ||||||
|  | 	} | ||||||
|  | 	return sink, nil | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // SetTags sets common tags on the Dogstatsd Client that will be sent | ||||||
|  | // along with all dogstatsd packets. | ||||||
|  | // Ref: http://docs.datadoghq.com/guides/dogstatsd/#tags | ||||||
|  | func (s *DogStatsdSink) SetTags(tags []string) { | ||||||
|  | 	s.client.Tags = tags | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // EnableHostnamePropagation forces a Dogstatsd `host` tag with the value specified by `s.HostName` | ||||||
|  | // Since the go-metrics package has its own mechanism for attaching a hostname to metrics, | ||||||
|  | // setting the `propagateHostname` flag ensures that `s.HostName` overrides the host tag naively set by the DogStatsd server | ||||||
|  | func (s *DogStatsdSink) EnableHostNamePropagation() { | ||||||
|  | 	s.propagateHostname = true | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func (s *DogStatsdSink) flattenKey(parts []string) string { | ||||||
|  | 	joined := strings.Join(parts, ".") | ||||||
|  | 	return strings.Map(func(r rune) rune { | ||||||
|  | 		switch r { | ||||||
|  | 		case ':': | ||||||
|  | 			fallthrough | ||||||
|  | 		case ' ': | ||||||
|  | 			return '_' | ||||||
|  | 		default: | ||||||
|  | 			return r | ||||||
|  | 		} | ||||||
|  | 	}, joined) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func (s *DogStatsdSink) parseKey(key []string) ([]string, []string) { | ||||||
|  | 	// Since DogStatsd supports dimensionality via tags on metric keys, this sink's approach is to splice the hostname out of the key in favor of a `host` tag | ||||||
|  | 	// The `host` tag is either forced here, or set downstream by the DogStatsd server | ||||||
|  |  | ||||||
|  | 	var tags []string | ||||||
|  | 	hostName := s.hostName | ||||||
|  |  | ||||||
|  | 	//Splice the hostname out of the key | ||||||
|  | 	for i, el := range key { | ||||||
|  | 		if el == hostName { | ||||||
|  | 			key = append(key[:i], key[i+1:]...) | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	if s.propagateHostname { | ||||||
|  | 		tags = append(tags, fmt.Sprintf("host:%s", hostName)) | ||||||
|  | 	} | ||||||
|  | 	return key, tags | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // Implementation of methods in the MetricSink interface | ||||||
|  |  | ||||||
|  | func (s *DogStatsdSink) SetGauge(key []string, val float32) { | ||||||
|  | 	key, tags := s.parseKey(key) | ||||||
|  | 	flatKey := s.flattenKey(key) | ||||||
|  |  | ||||||
|  | 	rate := 1.0 | ||||||
|  | 	s.client.Gauge(flatKey, float64(val), tags, rate) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func (s *DogStatsdSink) IncrCounter(key []string, val float32) { | ||||||
|  | 	key, tags := s.parseKey(key) | ||||||
|  | 	flatKey := s.flattenKey(key) | ||||||
|  |  | ||||||
|  | 	rate := 1.0 | ||||||
|  | 	s.client.Count(flatKey, int64(val), tags, rate) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // EmitKey is not implemented since DogStatsd does not provide a metric type that holds an | ||||||
|  | // arbitrary number of values | ||||||
|  | func (s *DogStatsdSink) EmitKey(key []string, val float32) { | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func (s *DogStatsdSink) AddSample(key []string, val float32) { | ||||||
|  | 	key, tags := s.parseKey(key) | ||||||
|  | 	flatKey := s.flattenKey(key) | ||||||
|  |  | ||||||
|  | 	rate := 1.0 | ||||||
|  | 	s.client.TimeInMilliseconds(flatKey, float64(val), tags, rate) | ||||||
|  | } | ||||||
							
								
								
									
										46
									
								
								Godeps/_workspace/src/github.com/armon/go-metrics/inmem_signal_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										46
									
								
								Godeps/_workspace/src/github.com/armon/go-metrics/inmem_signal_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,46 +0,0 @@ | |||||||
| package metrics |  | ||||||
|  |  | ||||||
| import ( |  | ||||||
| 	"bytes" |  | ||||||
| 	"os" |  | ||||||
| 	"strings" |  | ||||||
| 	"syscall" |  | ||||||
| 	"testing" |  | ||||||
| 	"time" |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| func TestInmemSignal(t *testing.T) { |  | ||||||
| 	buf := bytes.NewBuffer(nil) |  | ||||||
| 	inm := NewInmemSink(10*time.Millisecond, 50*time.Millisecond) |  | ||||||
| 	sig := NewInmemSignal(inm, syscall.SIGUSR1, buf) |  | ||||||
| 	defer sig.Stop() |  | ||||||
|  |  | ||||||
| 	inm.SetGauge([]string{"foo"}, 42) |  | ||||||
| 	inm.EmitKey([]string{"bar"}, 42) |  | ||||||
| 	inm.IncrCounter([]string{"baz"}, 42) |  | ||||||
| 	inm.AddSample([]string{"wow"}, 42) |  | ||||||
|  |  | ||||||
| 	// Wait for period to end |  | ||||||
| 	time.Sleep(15 * time.Millisecond) |  | ||||||
|  |  | ||||||
| 	// Send signal! |  | ||||||
| 	syscall.Kill(os.Getpid(), syscall.SIGUSR1) |  | ||||||
|  |  | ||||||
| 	// Wait for flush |  | ||||||
| 	time.Sleep(10 * time.Millisecond) |  | ||||||
|  |  | ||||||
| 	// Check the output |  | ||||||
| 	out := string(buf.Bytes()) |  | ||||||
| 	if !strings.Contains(out, "[G] 'foo': 42") { |  | ||||||
| 		t.Fatalf("bad: %v", out) |  | ||||||
| 	} |  | ||||||
| 	if !strings.Contains(out, "[P] 'bar': 42") { |  | ||||||
| 		t.Fatalf("bad: %v", out) |  | ||||||
| 	} |  | ||||||
| 	if !strings.Contains(out, "[C] 'baz': Count: 1 Sum: 42") { |  | ||||||
| 		t.Fatalf("bad: %v", out) |  | ||||||
| 	} |  | ||||||
| 	if !strings.Contains(out, "[S] 'wow': Count: 1 Sum: 42") { |  | ||||||
| 		t.Fatalf("bad: %v", out) |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
							
								
								
									
										104
									
								
								Godeps/_workspace/src/github.com/armon/go-metrics/inmem_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										104
									
								
								Godeps/_workspace/src/github.com/armon/go-metrics/inmem_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,104 +0,0 @@ | |||||||
| package metrics |  | ||||||
|  |  | ||||||
| import ( |  | ||||||
| 	"math" |  | ||||||
| 	"testing" |  | ||||||
| 	"time" |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| func TestInmemSink(t *testing.T) { |  | ||||||
| 	inm := NewInmemSink(10*time.Millisecond, 50*time.Millisecond) |  | ||||||
|  |  | ||||||
| 	data := inm.Data() |  | ||||||
| 	if len(data) != 1 { |  | ||||||
| 		t.Fatalf("bad: %v", data) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	// Add data points |  | ||||||
| 	inm.SetGauge([]string{"foo", "bar"}, 42) |  | ||||||
| 	inm.EmitKey([]string{"foo", "bar"}, 42) |  | ||||||
| 	inm.IncrCounter([]string{"foo", "bar"}, 20) |  | ||||||
| 	inm.IncrCounter([]string{"foo", "bar"}, 22) |  | ||||||
| 	inm.AddSample([]string{"foo", "bar"}, 20) |  | ||||||
| 	inm.AddSample([]string{"foo", "bar"}, 22) |  | ||||||
|  |  | ||||||
| 	data = inm.Data() |  | ||||||
| 	if len(data) != 1 { |  | ||||||
| 		t.Fatalf("bad: %v", data) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	intvM := data[0] |  | ||||||
| 	intvM.RLock() |  | ||||||
|  |  | ||||||
| 	if time.Now().Sub(intvM.Interval) > 10*time.Millisecond { |  | ||||||
| 		t.Fatalf("interval too old") |  | ||||||
| 	} |  | ||||||
| 	if intvM.Gauges["foo.bar"] != 42 { |  | ||||||
| 		t.Fatalf("bad val: %v", intvM.Gauges) |  | ||||||
| 	} |  | ||||||
| 	if intvM.Points["foo.bar"][0] != 42 { |  | ||||||
| 		t.Fatalf("bad val: %v", intvM.Points) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	agg := intvM.Counters["foo.bar"] |  | ||||||
| 	if agg.Count != 2 { |  | ||||||
| 		t.Fatalf("bad val: %v", agg) |  | ||||||
| 	} |  | ||||||
| 	if agg.Sum != 42 { |  | ||||||
| 		t.Fatalf("bad val: %v", agg) |  | ||||||
| 	} |  | ||||||
| 	if agg.SumSq != 884 { |  | ||||||
| 		t.Fatalf("bad val: %v", agg) |  | ||||||
| 	} |  | ||||||
| 	if agg.Min != 20 { |  | ||||||
| 		t.Fatalf("bad val: %v", agg) |  | ||||||
| 	} |  | ||||||
| 	if agg.Max != 22 { |  | ||||||
| 		t.Fatalf("bad val: %v", agg) |  | ||||||
| 	} |  | ||||||
| 	if agg.Mean() != 21 { |  | ||||||
| 		t.Fatalf("bad val: %v", agg) |  | ||||||
| 	} |  | ||||||
| 	if agg.Stddev() != math.Sqrt(2) { |  | ||||||
| 		t.Fatalf("bad val: %v", agg) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	if agg.LastUpdated.IsZero() { |  | ||||||
| 		t.Fatalf("agg.LastUpdated is not set: %v", agg) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	diff := time.Now().Sub(agg.LastUpdated).Seconds() |  | ||||||
| 	if diff > 1 { |  | ||||||
| 		t.Fatalf("time diff too great: %f", diff) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	if agg = intvM.Samples["foo.bar"]; agg == nil { |  | ||||||
| 		t.Fatalf("missing sample") |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	intvM.RUnlock() |  | ||||||
|  |  | ||||||
| 	for i := 1; i < 10; i++ { |  | ||||||
| 		time.Sleep(10 * time.Millisecond) |  | ||||||
| 		inm.SetGauge([]string{"foo", "bar"}, 42) |  | ||||||
| 		data = inm.Data() |  | ||||||
| 		if len(data) != min(i+1, 5) { |  | ||||||
| 			t.Fatalf("bad: %v", data) |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	// Should not exceed 5 intervals! |  | ||||||
| 	time.Sleep(10 * time.Millisecond) |  | ||||||
| 	inm.SetGauge([]string{"foo", "bar"}, 42) |  | ||||||
| 	data = inm.Data() |  | ||||||
| 	if len(data) != 5 { |  | ||||||
| 		t.Fatalf("bad: %v", data) |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func min(a, b int) int { |  | ||||||
| 	if a < b { |  | ||||||
| 		return a |  | ||||||
| 	} |  | ||||||
| 	return b |  | ||||||
| } |  | ||||||
							
								
								
									
										262
									
								
								Godeps/_workspace/src/github.com/armon/go-metrics/metrics_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										262
									
								
								Godeps/_workspace/src/github.com/armon/go-metrics/metrics_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,262 +0,0 @@ | |||||||
| package metrics |  | ||||||
|  |  | ||||||
| import ( |  | ||||||
| 	"reflect" |  | ||||||
| 	"runtime" |  | ||||||
| 	"testing" |  | ||||||
| 	"time" |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| func mockMetric() (*MockSink, *Metrics) { |  | ||||||
| 	m := &MockSink{} |  | ||||||
| 	met := &Metrics{sink: m} |  | ||||||
| 	return m, met |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestMetrics_SetGauge(t *testing.T) { |  | ||||||
| 	m, met := mockMetric() |  | ||||||
| 	met.SetGauge([]string{"key"}, float32(1)) |  | ||||||
| 	if m.keys[0][0] != "key" { |  | ||||||
| 		t.Fatalf("") |  | ||||||
| 	} |  | ||||||
| 	if m.vals[0] != 1 { |  | ||||||
| 		t.Fatalf("") |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	m, met = mockMetric() |  | ||||||
| 	met.HostName = "test" |  | ||||||
| 	met.EnableHostname = true |  | ||||||
| 	met.SetGauge([]string{"key"}, float32(1)) |  | ||||||
| 	if m.keys[0][0] != "test" || m.keys[0][1] != "key" { |  | ||||||
| 		t.Fatalf("") |  | ||||||
| 	} |  | ||||||
| 	if m.vals[0] != 1 { |  | ||||||
| 		t.Fatalf("") |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	m, met = mockMetric() |  | ||||||
| 	met.EnableTypePrefix = true |  | ||||||
| 	met.SetGauge([]string{"key"}, float32(1)) |  | ||||||
| 	if m.keys[0][0] != "gauge" || m.keys[0][1] != "key" { |  | ||||||
| 		t.Fatalf("") |  | ||||||
| 	} |  | ||||||
| 	if m.vals[0] != 1 { |  | ||||||
| 		t.Fatalf("") |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	m, met = mockMetric() |  | ||||||
| 	met.ServiceName = "service" |  | ||||||
| 	met.SetGauge([]string{"key"}, float32(1)) |  | ||||||
| 	if m.keys[0][0] != "service" || m.keys[0][1] != "key" { |  | ||||||
| 		t.Fatalf("") |  | ||||||
| 	} |  | ||||||
| 	if m.vals[0] != 1 { |  | ||||||
| 		t.Fatalf("") |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestMetrics_EmitKey(t *testing.T) { |  | ||||||
| 	m, met := mockMetric() |  | ||||||
| 	met.EmitKey([]string{"key"}, float32(1)) |  | ||||||
| 	if m.keys[0][0] != "key" { |  | ||||||
| 		t.Fatalf("") |  | ||||||
| 	} |  | ||||||
| 	if m.vals[0] != 1 { |  | ||||||
| 		t.Fatalf("") |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	m, met = mockMetric() |  | ||||||
| 	met.EnableTypePrefix = true |  | ||||||
| 	met.EmitKey([]string{"key"}, float32(1)) |  | ||||||
| 	if m.keys[0][0] != "kv" || m.keys[0][1] != "key" { |  | ||||||
| 		t.Fatalf("") |  | ||||||
| 	} |  | ||||||
| 	if m.vals[0] != 1 { |  | ||||||
| 		t.Fatalf("") |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	m, met = mockMetric() |  | ||||||
| 	met.ServiceName = "service" |  | ||||||
| 	met.EmitKey([]string{"key"}, float32(1)) |  | ||||||
| 	if m.keys[0][0] != "service" || m.keys[0][1] != "key" { |  | ||||||
| 		t.Fatalf("") |  | ||||||
| 	} |  | ||||||
| 	if m.vals[0] != 1 { |  | ||||||
| 		t.Fatalf("") |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestMetrics_IncrCounter(t *testing.T) { |  | ||||||
| 	m, met := mockMetric() |  | ||||||
| 	met.IncrCounter([]string{"key"}, float32(1)) |  | ||||||
| 	if m.keys[0][0] != "key" { |  | ||||||
| 		t.Fatalf("") |  | ||||||
| 	} |  | ||||||
| 	if m.vals[0] != 1 { |  | ||||||
| 		t.Fatalf("") |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	m, met = mockMetric() |  | ||||||
| 	met.EnableTypePrefix = true |  | ||||||
| 	met.IncrCounter([]string{"key"}, float32(1)) |  | ||||||
| 	if m.keys[0][0] != "counter" || m.keys[0][1] != "key" { |  | ||||||
| 		t.Fatalf("") |  | ||||||
| 	} |  | ||||||
| 	if m.vals[0] != 1 { |  | ||||||
| 		t.Fatalf("") |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	m, met = mockMetric() |  | ||||||
| 	met.ServiceName = "service" |  | ||||||
| 	met.IncrCounter([]string{"key"}, float32(1)) |  | ||||||
| 	if m.keys[0][0] != "service" || m.keys[0][1] != "key" { |  | ||||||
| 		t.Fatalf("") |  | ||||||
| 	} |  | ||||||
| 	if m.vals[0] != 1 { |  | ||||||
| 		t.Fatalf("") |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestMetrics_AddSample(t *testing.T) { |  | ||||||
| 	m, met := mockMetric() |  | ||||||
| 	met.AddSample([]string{"key"}, float32(1)) |  | ||||||
| 	if m.keys[0][0] != "key" { |  | ||||||
| 		t.Fatalf("") |  | ||||||
| 	} |  | ||||||
| 	if m.vals[0] != 1 { |  | ||||||
| 		t.Fatalf("") |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	m, met = mockMetric() |  | ||||||
| 	met.EnableTypePrefix = true |  | ||||||
| 	met.AddSample([]string{"key"}, float32(1)) |  | ||||||
| 	if m.keys[0][0] != "sample" || m.keys[0][1] != "key" { |  | ||||||
| 		t.Fatalf("") |  | ||||||
| 	} |  | ||||||
| 	if m.vals[0] != 1 { |  | ||||||
| 		t.Fatalf("") |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	m, met = mockMetric() |  | ||||||
| 	met.ServiceName = "service" |  | ||||||
| 	met.AddSample([]string{"key"}, float32(1)) |  | ||||||
| 	if m.keys[0][0] != "service" || m.keys[0][1] != "key" { |  | ||||||
| 		t.Fatalf("") |  | ||||||
| 	} |  | ||||||
| 	if m.vals[0] != 1 { |  | ||||||
| 		t.Fatalf("") |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestMetrics_MeasureSince(t *testing.T) { |  | ||||||
| 	m, met := mockMetric() |  | ||||||
| 	met.TimerGranularity = time.Millisecond |  | ||||||
| 	n := time.Now() |  | ||||||
| 	met.MeasureSince([]string{"key"}, n) |  | ||||||
| 	if m.keys[0][0] != "key" { |  | ||||||
| 		t.Fatalf("") |  | ||||||
| 	} |  | ||||||
| 	if m.vals[0] > 0.1 { |  | ||||||
| 		t.Fatalf("") |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	m, met = mockMetric() |  | ||||||
| 	met.TimerGranularity = time.Millisecond |  | ||||||
| 	met.EnableTypePrefix = true |  | ||||||
| 	met.MeasureSince([]string{"key"}, n) |  | ||||||
| 	if m.keys[0][0] != "timer" || m.keys[0][1] != "key" { |  | ||||||
| 		t.Fatalf("") |  | ||||||
| 	} |  | ||||||
| 	if m.vals[0] > 0.1 { |  | ||||||
| 		t.Fatalf("") |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	m, met = mockMetric() |  | ||||||
| 	met.TimerGranularity = time.Millisecond |  | ||||||
| 	met.ServiceName = "service" |  | ||||||
| 	met.MeasureSince([]string{"key"}, n) |  | ||||||
| 	if m.keys[0][0] != "service" || m.keys[0][1] != "key" { |  | ||||||
| 		t.Fatalf("") |  | ||||||
| 	} |  | ||||||
| 	if m.vals[0] > 0.1 { |  | ||||||
| 		t.Fatalf("") |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestMetrics_EmitRuntimeStats(t *testing.T) { |  | ||||||
| 	runtime.GC() |  | ||||||
| 	m, met := mockMetric() |  | ||||||
| 	met.emitRuntimeStats() |  | ||||||
|  |  | ||||||
| 	if m.keys[0][0] != "runtime" || m.keys[0][1] != "num_goroutines" { |  | ||||||
| 		t.Fatalf("bad key %v", m.keys) |  | ||||||
| 	} |  | ||||||
| 	if m.vals[0] <= 1 { |  | ||||||
| 		t.Fatalf("bad val: %v", m.vals) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	if m.keys[1][0] != "runtime" || m.keys[1][1] != "alloc_bytes" { |  | ||||||
| 		t.Fatalf("bad key %v", m.keys) |  | ||||||
| 	} |  | ||||||
| 	if m.vals[1] <= 40000 { |  | ||||||
| 		t.Fatalf("bad val: %v", m.vals) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	if m.keys[2][0] != "runtime" || m.keys[2][1] != "sys_bytes" { |  | ||||||
| 		t.Fatalf("bad key %v", m.keys) |  | ||||||
| 	} |  | ||||||
| 	if m.vals[2] <= 100000 { |  | ||||||
| 		t.Fatalf("bad val: %v", m.vals) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	if m.keys[3][0] != "runtime" || m.keys[3][1] != "malloc_count" { |  | ||||||
| 		t.Fatalf("bad key %v", m.keys) |  | ||||||
| 	} |  | ||||||
| 	if m.vals[3] <= 100 { |  | ||||||
| 		t.Fatalf("bad val: %v", m.vals) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	if m.keys[4][0] != "runtime" || m.keys[4][1] != "free_count" { |  | ||||||
| 		t.Fatalf("bad key %v", m.keys) |  | ||||||
| 	} |  | ||||||
| 	if m.vals[4] <= 100 { |  | ||||||
| 		t.Fatalf("bad val: %v", m.vals) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	if m.keys[5][0] != "runtime" || m.keys[5][1] != "heap_objects" { |  | ||||||
| 		t.Fatalf("bad key %v", m.keys) |  | ||||||
| 	} |  | ||||||
| 	if m.vals[5] <= 100 { |  | ||||||
| 		t.Fatalf("bad val: %v", m.vals) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	if m.keys[6][0] != "runtime" || m.keys[6][1] != "total_gc_pause_ns" { |  | ||||||
| 		t.Fatalf("bad key %v", m.keys) |  | ||||||
| 	} |  | ||||||
| 	if m.vals[6] <= 100000 { |  | ||||||
| 		t.Fatalf("bad val: %v", m.vals) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	if m.keys[7][0] != "runtime" || m.keys[7][1] != "total_gc_runs" { |  | ||||||
| 		t.Fatalf("bad key %v", m.keys) |  | ||||||
| 	} |  | ||||||
| 	if m.vals[7] <= 1 { |  | ||||||
| 		t.Fatalf("bad val: %v", m.vals) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	if m.keys[8][0] != "runtime" || m.keys[8][1] != "gc_pause_ns" { |  | ||||||
| 		t.Fatalf("bad key %v", m.keys) |  | ||||||
| 	} |  | ||||||
| 	if m.vals[8] <= 1000 { |  | ||||||
| 		t.Fatalf("bad val: %v", m.vals) |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestInsert(t *testing.T) { |  | ||||||
| 	k := []string{"hi", "bob"} |  | ||||||
| 	exp := []string{"hi", "there", "bob"} |  | ||||||
| 	out := insert(1, "there", k) |  | ||||||
| 	if !reflect.DeepEqual(exp, out) { |  | ||||||
| 		t.Fatalf("bad insert %v %v", exp, out) |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
							
								
								
									
										120
									
								
								Godeps/_workspace/src/github.com/armon/go-metrics/sink_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										120
									
								
								Godeps/_workspace/src/github.com/armon/go-metrics/sink_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,120 +0,0 @@ | |||||||
| package metrics |  | ||||||
|  |  | ||||||
| import ( |  | ||||||
| 	"reflect" |  | ||||||
| 	"testing" |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| type MockSink struct { |  | ||||||
| 	keys [][]string |  | ||||||
| 	vals []float32 |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func (m *MockSink) SetGauge(key []string, val float32) { |  | ||||||
| 	m.keys = append(m.keys, key) |  | ||||||
| 	m.vals = append(m.vals, val) |  | ||||||
| } |  | ||||||
| func (m *MockSink) EmitKey(key []string, val float32) { |  | ||||||
| 	m.keys = append(m.keys, key) |  | ||||||
| 	m.vals = append(m.vals, val) |  | ||||||
| } |  | ||||||
| func (m *MockSink) IncrCounter(key []string, val float32) { |  | ||||||
| 	m.keys = append(m.keys, key) |  | ||||||
| 	m.vals = append(m.vals, val) |  | ||||||
| } |  | ||||||
| func (m *MockSink) AddSample(key []string, val float32) { |  | ||||||
| 	m.keys = append(m.keys, key) |  | ||||||
| 	m.vals = append(m.vals, val) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestFanoutSink_Gauge(t *testing.T) { |  | ||||||
| 	m1 := &MockSink{} |  | ||||||
| 	m2 := &MockSink{} |  | ||||||
| 	fh := &FanoutSink{m1, m2} |  | ||||||
|  |  | ||||||
| 	k := []string{"test"} |  | ||||||
| 	v := float32(42.0) |  | ||||||
| 	fh.SetGauge(k, v) |  | ||||||
|  |  | ||||||
| 	if !reflect.DeepEqual(m1.keys[0], k) { |  | ||||||
| 		t.Fatalf("key not equal") |  | ||||||
| 	} |  | ||||||
| 	if !reflect.DeepEqual(m2.keys[0], k) { |  | ||||||
| 		t.Fatalf("key not equal") |  | ||||||
| 	} |  | ||||||
| 	if !reflect.DeepEqual(m1.vals[0], v) { |  | ||||||
| 		t.Fatalf("val not equal") |  | ||||||
| 	} |  | ||||||
| 	if !reflect.DeepEqual(m2.vals[0], v) { |  | ||||||
| 		t.Fatalf("val not equal") |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestFanoutSink_Key(t *testing.T) { |  | ||||||
| 	m1 := &MockSink{} |  | ||||||
| 	m2 := &MockSink{} |  | ||||||
| 	fh := &FanoutSink{m1, m2} |  | ||||||
|  |  | ||||||
| 	k := []string{"test"} |  | ||||||
| 	v := float32(42.0) |  | ||||||
| 	fh.EmitKey(k, v) |  | ||||||
|  |  | ||||||
| 	if !reflect.DeepEqual(m1.keys[0], k) { |  | ||||||
| 		t.Fatalf("key not equal") |  | ||||||
| 	} |  | ||||||
| 	if !reflect.DeepEqual(m2.keys[0], k) { |  | ||||||
| 		t.Fatalf("key not equal") |  | ||||||
| 	} |  | ||||||
| 	if !reflect.DeepEqual(m1.vals[0], v) { |  | ||||||
| 		t.Fatalf("val not equal") |  | ||||||
| 	} |  | ||||||
| 	if !reflect.DeepEqual(m2.vals[0], v) { |  | ||||||
| 		t.Fatalf("val not equal") |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestFanoutSink_Counter(t *testing.T) { |  | ||||||
| 	m1 := &MockSink{} |  | ||||||
| 	m2 := &MockSink{} |  | ||||||
| 	fh := &FanoutSink{m1, m2} |  | ||||||
|  |  | ||||||
| 	k := []string{"test"} |  | ||||||
| 	v := float32(42.0) |  | ||||||
| 	fh.IncrCounter(k, v) |  | ||||||
|  |  | ||||||
| 	if !reflect.DeepEqual(m1.keys[0], k) { |  | ||||||
| 		t.Fatalf("key not equal") |  | ||||||
| 	} |  | ||||||
| 	if !reflect.DeepEqual(m2.keys[0], k) { |  | ||||||
| 		t.Fatalf("key not equal") |  | ||||||
| 	} |  | ||||||
| 	if !reflect.DeepEqual(m1.vals[0], v) { |  | ||||||
| 		t.Fatalf("val not equal") |  | ||||||
| 	} |  | ||||||
| 	if !reflect.DeepEqual(m2.vals[0], v) { |  | ||||||
| 		t.Fatalf("val not equal") |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestFanoutSink_Sample(t *testing.T) { |  | ||||||
| 	m1 := &MockSink{} |  | ||||||
| 	m2 := &MockSink{} |  | ||||||
| 	fh := &FanoutSink{m1, m2} |  | ||||||
|  |  | ||||||
| 	k := []string{"test"} |  | ||||||
| 	v := float32(42.0) |  | ||||||
| 	fh.AddSample(k, v) |  | ||||||
|  |  | ||||||
| 	if !reflect.DeepEqual(m1.keys[0], k) { |  | ||||||
| 		t.Fatalf("key not equal") |  | ||||||
| 	} |  | ||||||
| 	if !reflect.DeepEqual(m2.keys[0], k) { |  | ||||||
| 		t.Fatalf("key not equal") |  | ||||||
| 	} |  | ||||||
| 	if !reflect.DeepEqual(m1.vals[0], v) { |  | ||||||
| 		t.Fatalf("val not equal") |  | ||||||
| 	} |  | ||||||
| 	if !reflect.DeepEqual(m2.vals[0], v) { |  | ||||||
| 		t.Fatalf("val not equal") |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
							
								
								
									
										110
									
								
								Godeps/_workspace/src/github.com/armon/go-metrics/start_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										110
									
								
								Godeps/_workspace/src/github.com/armon/go-metrics/start_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,110 +0,0 @@ | |||||||
| package metrics |  | ||||||
|  |  | ||||||
| import ( |  | ||||||
| 	"reflect" |  | ||||||
| 	"testing" |  | ||||||
| 	"time" |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| func TestDefaultConfig(t *testing.T) { |  | ||||||
| 	conf := DefaultConfig("service") |  | ||||||
| 	if conf.ServiceName != "service" { |  | ||||||
| 		t.Fatalf("Bad name") |  | ||||||
| 	} |  | ||||||
| 	if conf.HostName == "" { |  | ||||||
| 		t.Fatalf("missing hostname") |  | ||||||
| 	} |  | ||||||
| 	if !conf.EnableHostname || !conf.EnableRuntimeMetrics { |  | ||||||
| 		t.Fatalf("expect true") |  | ||||||
| 	} |  | ||||||
| 	if conf.EnableTypePrefix { |  | ||||||
| 		t.Fatalf("expect false") |  | ||||||
| 	} |  | ||||||
| 	if conf.TimerGranularity != time.Millisecond { |  | ||||||
| 		t.Fatalf("bad granularity") |  | ||||||
| 	} |  | ||||||
| 	if conf.ProfileInterval != time.Second { |  | ||||||
| 		t.Fatalf("bad interval") |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func Test_GlobalMetrics_SetGauge(t *testing.T) { |  | ||||||
| 	m := &MockSink{} |  | ||||||
| 	globalMetrics = &Metrics{sink: m} |  | ||||||
|  |  | ||||||
| 	k := []string{"test"} |  | ||||||
| 	v := float32(42.0) |  | ||||||
| 	SetGauge(k, v) |  | ||||||
|  |  | ||||||
| 	if !reflect.DeepEqual(m.keys[0], k) { |  | ||||||
| 		t.Fatalf("key not equal") |  | ||||||
| 	} |  | ||||||
| 	if !reflect.DeepEqual(m.vals[0], v) { |  | ||||||
| 		t.Fatalf("val not equal") |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func Test_GlobalMetrics_EmitKey(t *testing.T) { |  | ||||||
| 	m := &MockSink{} |  | ||||||
| 	globalMetrics = &Metrics{sink: m} |  | ||||||
|  |  | ||||||
| 	k := []string{"test"} |  | ||||||
| 	v := float32(42.0) |  | ||||||
| 	EmitKey(k, v) |  | ||||||
|  |  | ||||||
| 	if !reflect.DeepEqual(m.keys[0], k) { |  | ||||||
| 		t.Fatalf("key not equal") |  | ||||||
| 	} |  | ||||||
| 	if !reflect.DeepEqual(m.vals[0], v) { |  | ||||||
| 		t.Fatalf("val not equal") |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func Test_GlobalMetrics_IncrCounter(t *testing.T) { |  | ||||||
| 	m := &MockSink{} |  | ||||||
| 	globalMetrics = &Metrics{sink: m} |  | ||||||
|  |  | ||||||
| 	k := []string{"test"} |  | ||||||
| 	v := float32(42.0) |  | ||||||
| 	IncrCounter(k, v) |  | ||||||
|  |  | ||||||
| 	if !reflect.DeepEqual(m.keys[0], k) { |  | ||||||
| 		t.Fatalf("key not equal") |  | ||||||
| 	} |  | ||||||
| 	if !reflect.DeepEqual(m.vals[0], v) { |  | ||||||
| 		t.Fatalf("val not equal") |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func Test_GlobalMetrics_AddSample(t *testing.T) { |  | ||||||
| 	m := &MockSink{} |  | ||||||
| 	globalMetrics = &Metrics{sink: m} |  | ||||||
|  |  | ||||||
| 	k := []string{"test"} |  | ||||||
| 	v := float32(42.0) |  | ||||||
| 	AddSample(k, v) |  | ||||||
|  |  | ||||||
| 	if !reflect.DeepEqual(m.keys[0], k) { |  | ||||||
| 		t.Fatalf("key not equal") |  | ||||||
| 	} |  | ||||||
| 	if !reflect.DeepEqual(m.vals[0], v) { |  | ||||||
| 		t.Fatalf("val not equal") |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func Test_GlobalMetrics_MeasureSince(t *testing.T) { |  | ||||||
| 	m := &MockSink{} |  | ||||||
| 	globalMetrics = &Metrics{sink: m} |  | ||||||
| 	globalMetrics.TimerGranularity = time.Millisecond |  | ||||||
|  |  | ||||||
| 	k := []string{"test"} |  | ||||||
| 	now := time.Now() |  | ||||||
| 	MeasureSince(k, now) |  | ||||||
|  |  | ||||||
| 	if !reflect.DeepEqual(m.keys[0], k) { |  | ||||||
| 		t.Fatalf("key not equal") |  | ||||||
| 	} |  | ||||||
| 	if m.vals[0] > 0.1 { |  | ||||||
| 		t.Fatalf("val too large %v", m.vals[0]) |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
							
								
								
									
										105
									
								
								Godeps/_workspace/src/github.com/armon/go-metrics/statsd_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										105
									
								
								Godeps/_workspace/src/github.com/armon/go-metrics/statsd_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,105 +0,0 @@ | |||||||
| package metrics |  | ||||||
|  |  | ||||||
| import ( |  | ||||||
| 	"bufio" |  | ||||||
| 	"bytes" |  | ||||||
| 	"net" |  | ||||||
| 	"testing" |  | ||||||
| 	"time" |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| func TestStatsd_Flatten(t *testing.T) { |  | ||||||
| 	s := &StatsdSink{} |  | ||||||
| 	flat := s.flattenKey([]string{"a", "b", "c", "d"}) |  | ||||||
| 	if flat != "a.b.c.d" { |  | ||||||
| 		t.Fatalf("Bad flat") |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestStatsd_PushFullQueue(t *testing.T) { |  | ||||||
| 	q := make(chan string, 1) |  | ||||||
| 	q <- "full" |  | ||||||
|  |  | ||||||
| 	s := &StatsdSink{metricQueue: q} |  | ||||||
| 	s.pushMetric("omit") |  | ||||||
|  |  | ||||||
| 	out := <-q |  | ||||||
| 	if out != "full" { |  | ||||||
| 		t.Fatalf("bad val %v", out) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	select { |  | ||||||
| 	case v := <-q: |  | ||||||
| 		t.Fatalf("bad val %v", v) |  | ||||||
| 	default: |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestStatsd_Conn(t *testing.T) { |  | ||||||
| 	addr := "127.0.0.1:7524" |  | ||||||
| 	done := make(chan bool) |  | ||||||
| 	go func() { |  | ||||||
| 		list, err := net.ListenUDP("udp", &net.UDPAddr{IP: net.ParseIP("127.0.0.1"), Port: 7524}) |  | ||||||
| 		if err != nil { |  | ||||||
| 			panic(err) |  | ||||||
| 		} |  | ||||||
| 		defer list.Close() |  | ||||||
| 		buf := make([]byte, 1500) |  | ||||||
| 		n, err := list.Read(buf) |  | ||||||
| 		if err != nil { |  | ||||||
| 			panic(err) |  | ||||||
| 		} |  | ||||||
| 		buf = buf[:n] |  | ||||||
| 		reader := bufio.NewReader(bytes.NewReader(buf)) |  | ||||||
|  |  | ||||||
| 		line, err := reader.ReadString('\n') |  | ||||||
| 		if err != nil { |  | ||||||
| 			t.Fatalf("unexpected err %s", err) |  | ||||||
| 		} |  | ||||||
| 		if line != "gauge.val:1.000000|g\n" { |  | ||||||
| 			t.Fatalf("bad line %s", line) |  | ||||||
| 		} |  | ||||||
|  |  | ||||||
| 		line, err = reader.ReadString('\n') |  | ||||||
| 		if err != nil { |  | ||||||
| 			t.Fatalf("unexpected err %s", err) |  | ||||||
| 		} |  | ||||||
| 		if line != "key.other:2.000000|kv\n" { |  | ||||||
| 			t.Fatalf("bad line %s", line) |  | ||||||
| 		} |  | ||||||
|  |  | ||||||
| 		line, err = reader.ReadString('\n') |  | ||||||
| 		if err != nil { |  | ||||||
| 			t.Fatalf("unexpected err %s", err) |  | ||||||
| 		} |  | ||||||
| 		if line != "counter.me:3.000000|c\n" { |  | ||||||
| 			t.Fatalf("bad line %s", line) |  | ||||||
| 		} |  | ||||||
|  |  | ||||||
| 		line, err = reader.ReadString('\n') |  | ||||||
| 		if err != nil { |  | ||||||
| 			t.Fatalf("unexpected err %s", err) |  | ||||||
| 		} |  | ||||||
| 		if line != "sample.slow_thingy:4.000000|ms\n" { |  | ||||||
| 			t.Fatalf("bad line %s", line) |  | ||||||
| 		} |  | ||||||
|  |  | ||||||
| 		done <- true |  | ||||||
| 	}() |  | ||||||
| 	s, err := NewStatsdSink(addr) |  | ||||||
| 	if err != nil { |  | ||||||
| 		t.Fatalf("bad error") |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	s.SetGauge([]string{"gauge", "val"}, float32(1)) |  | ||||||
| 	s.EmitKey([]string{"key", "other"}, float32(2)) |  | ||||||
| 	s.IncrCounter([]string{"counter", "me"}, float32(3)) |  | ||||||
| 	s.AddSample([]string{"sample", "slow thingy"}, float32(4)) |  | ||||||
|  |  | ||||||
| 	select { |  | ||||||
| 	case <-done: |  | ||||||
| 		s.Shutdown() |  | ||||||
| 	case <-time.After(3 * time.Second): |  | ||||||
| 		t.Fatalf("timeout") |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
							
								
								
									
										101
									
								
								Godeps/_workspace/src/github.com/armon/go-metrics/statsite_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										101
									
								
								Godeps/_workspace/src/github.com/armon/go-metrics/statsite_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,101 +0,0 @@ | |||||||
| package metrics |  | ||||||
|  |  | ||||||
| import ( |  | ||||||
| 	"bufio" |  | ||||||
| 	"net" |  | ||||||
| 	"testing" |  | ||||||
| 	"time" |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| func acceptConn(addr string) net.Conn { |  | ||||||
| 	ln, _ := net.Listen("tcp", addr) |  | ||||||
| 	conn, _ := ln.Accept() |  | ||||||
| 	return conn |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestStatsite_Flatten(t *testing.T) { |  | ||||||
| 	s := &StatsiteSink{} |  | ||||||
| 	flat := s.flattenKey([]string{"a", "b", "c", "d"}) |  | ||||||
| 	if flat != "a.b.c.d" { |  | ||||||
| 		t.Fatalf("Bad flat") |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestStatsite_PushFullQueue(t *testing.T) { |  | ||||||
| 	q := make(chan string, 1) |  | ||||||
| 	q <- "full" |  | ||||||
|  |  | ||||||
| 	s := &StatsiteSink{metricQueue: q} |  | ||||||
| 	s.pushMetric("omit") |  | ||||||
|  |  | ||||||
| 	out := <-q |  | ||||||
| 	if out != "full" { |  | ||||||
| 		t.Fatalf("bad val %v", out) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	select { |  | ||||||
| 	case v := <-q: |  | ||||||
| 		t.Fatalf("bad val %v", v) |  | ||||||
| 	default: |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestStatsite_Conn(t *testing.T) { |  | ||||||
| 	addr := "localhost:7523" |  | ||||||
| 	done := make(chan bool) |  | ||||||
| 	go func() { |  | ||||||
| 		conn := acceptConn(addr) |  | ||||||
| 		reader := bufio.NewReader(conn) |  | ||||||
|  |  | ||||||
| 		line, err := reader.ReadString('\n') |  | ||||||
| 		if err != nil { |  | ||||||
| 			t.Fatalf("unexpected err %s", err) |  | ||||||
| 		} |  | ||||||
| 		if line != "gauge.val:1.000000|g\n" { |  | ||||||
| 			t.Fatalf("bad line %s", line) |  | ||||||
| 		} |  | ||||||
|  |  | ||||||
| 		line, err = reader.ReadString('\n') |  | ||||||
| 		if err != nil { |  | ||||||
| 			t.Fatalf("unexpected err %s", err) |  | ||||||
| 		} |  | ||||||
| 		if line != "key.other:2.000000|kv\n" { |  | ||||||
| 			t.Fatalf("bad line %s", line) |  | ||||||
| 		} |  | ||||||
|  |  | ||||||
| 		line, err = reader.ReadString('\n') |  | ||||||
| 		if err != nil { |  | ||||||
| 			t.Fatalf("unexpected err %s", err) |  | ||||||
| 		} |  | ||||||
| 		if line != "counter.me:3.000000|c\n" { |  | ||||||
| 			t.Fatalf("bad line %s", line) |  | ||||||
| 		} |  | ||||||
|  |  | ||||||
| 		line, err = reader.ReadString('\n') |  | ||||||
| 		if err != nil { |  | ||||||
| 			t.Fatalf("unexpected err %s", err) |  | ||||||
| 		} |  | ||||||
| 		if line != "sample.slow_thingy:4.000000|ms\n" { |  | ||||||
| 			t.Fatalf("bad line %s", line) |  | ||||||
| 		} |  | ||||||
|  |  | ||||||
| 		conn.Close() |  | ||||||
| 		done <- true |  | ||||||
| 	}() |  | ||||||
| 	s, err := NewStatsiteSink(addr) |  | ||||||
| 	if err != nil { |  | ||||||
| 		t.Fatalf("bad error") |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	s.SetGauge([]string{"gauge", "val"}, float32(1)) |  | ||||||
| 	s.EmitKey([]string{"key", "other"}, float32(2)) |  | ||||||
| 	s.IncrCounter([]string{"counter", "me"}, float32(3)) |  | ||||||
| 	s.AddSample([]string{"sample", "slow thingy"}, float32(4)) |  | ||||||
|  |  | ||||||
| 	select { |  | ||||||
| 	case <-done: |  | ||||||
| 		s.Shutdown() |  | ||||||
| 	case <-time.After(3 * time.Second): |  | ||||||
| 		t.Fatalf("timeout") |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
							
								
								
									
										319
									
								
								Godeps/_workspace/src/github.com/armon/go-radix/radix_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										319
									
								
								Godeps/_workspace/src/github.com/armon/go-radix/radix_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,319 +0,0 @@ | |||||||
| package radix |  | ||||||
|  |  | ||||||
| import ( |  | ||||||
| 	crand "crypto/rand" |  | ||||||
| 	"fmt" |  | ||||||
| 	"reflect" |  | ||||||
| 	"sort" |  | ||||||
| 	"testing" |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| func TestRadix(t *testing.T) { |  | ||||||
| 	var min, max string |  | ||||||
| 	inp := make(map[string]interface{}) |  | ||||||
| 	for i := 0; i < 1000; i++ { |  | ||||||
| 		gen := generateUUID() |  | ||||||
| 		inp[gen] = i |  | ||||||
| 		if gen < min || i == 0 { |  | ||||||
| 			min = gen |  | ||||||
| 		} |  | ||||||
| 		if gen > max || i == 0 { |  | ||||||
| 			max = gen |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	r := NewFromMap(inp) |  | ||||||
| 	if r.Len() != len(inp) { |  | ||||||
| 		t.Fatalf("bad length: %v %v", r.Len(), len(inp)) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	r.Walk(func(k string, v interface{}) bool { |  | ||||||
| 		println(k) |  | ||||||
| 		return false |  | ||||||
| 	}) |  | ||||||
|  |  | ||||||
| 	for k, v := range inp { |  | ||||||
| 		out, ok := r.Get(k) |  | ||||||
| 		if !ok { |  | ||||||
| 			t.Fatalf("missing key: %v", k) |  | ||||||
| 		} |  | ||||||
| 		if out != v { |  | ||||||
| 			t.Fatalf("value mis-match: %v %v", out, v) |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	// Check min and max |  | ||||||
| 	outMin, _, _ := r.Minimum() |  | ||||||
| 	if outMin != min { |  | ||||||
| 		t.Fatalf("bad minimum: %v %v", outMin, min) |  | ||||||
| 	} |  | ||||||
| 	outMax, _, _ := r.Maximum() |  | ||||||
| 	if outMax != max { |  | ||||||
| 		t.Fatalf("bad maximum: %v %v", outMax, max) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	for k, v := range inp { |  | ||||||
| 		out, ok := r.Delete(k) |  | ||||||
| 		if !ok { |  | ||||||
| 			t.Fatalf("missing key: %v", k) |  | ||||||
| 		} |  | ||||||
| 		if out != v { |  | ||||||
| 			t.Fatalf("value mis-match: %v %v", out, v) |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
| 	if r.Len() != 0 { |  | ||||||
| 		t.Fatalf("bad length: %v", r.Len()) |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestRoot(t *testing.T) { |  | ||||||
| 	r := New() |  | ||||||
| 	_, ok := r.Delete("") |  | ||||||
| 	if ok { |  | ||||||
| 		t.Fatalf("bad") |  | ||||||
| 	} |  | ||||||
| 	_, ok = r.Insert("", true) |  | ||||||
| 	if ok { |  | ||||||
| 		t.Fatalf("bad") |  | ||||||
| 	} |  | ||||||
| 	val, ok := r.Get("") |  | ||||||
| 	if !ok || val != true { |  | ||||||
| 		t.Fatalf("bad: %v", val) |  | ||||||
| 	} |  | ||||||
| 	val, ok = r.Delete("") |  | ||||||
| 	if !ok || val != true { |  | ||||||
| 		t.Fatalf("bad: %v", val) |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestDelete(t *testing.T) { |  | ||||||
|  |  | ||||||
| 	r := New() |  | ||||||
|  |  | ||||||
| 	s := []string{"", "A", "AB"} |  | ||||||
|  |  | ||||||
| 	for _, ss := range s { |  | ||||||
| 		r.Insert(ss, true) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	for _, ss := range s { |  | ||||||
| 		_, ok := r.Delete(ss) |  | ||||||
| 		if !ok { |  | ||||||
| 			t.Fatalf("bad %q", ss) |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestLongestPrefix(t *testing.T) { |  | ||||||
| 	r := New() |  | ||||||
|  |  | ||||||
| 	keys := []string{ |  | ||||||
| 		"", |  | ||||||
| 		"foo", |  | ||||||
| 		"foobar", |  | ||||||
| 		"foobarbaz", |  | ||||||
| 		"foobarbazzip", |  | ||||||
| 		"foozip", |  | ||||||
| 	} |  | ||||||
| 	for _, k := range keys { |  | ||||||
| 		r.Insert(k, nil) |  | ||||||
| 	} |  | ||||||
| 	if r.Len() != len(keys) { |  | ||||||
| 		t.Fatalf("bad len: %v %v", r.Len(), len(keys)) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	type exp struct { |  | ||||||
| 		inp string |  | ||||||
| 		out string |  | ||||||
| 	} |  | ||||||
| 	cases := []exp{ |  | ||||||
| 		{"a", ""}, |  | ||||||
| 		{"abc", ""}, |  | ||||||
| 		{"fo", ""}, |  | ||||||
| 		{"foo", "foo"}, |  | ||||||
| 		{"foob", "foo"}, |  | ||||||
| 		{"foobar", "foobar"}, |  | ||||||
| 		{"foobarba", "foobar"}, |  | ||||||
| 		{"foobarbaz", "foobarbaz"}, |  | ||||||
| 		{"foobarbazzi", "foobarbaz"}, |  | ||||||
| 		{"foobarbazzip", "foobarbazzip"}, |  | ||||||
| 		{"foozi", "foo"}, |  | ||||||
| 		{"foozip", "foozip"}, |  | ||||||
| 		{"foozipzap", "foozip"}, |  | ||||||
| 	} |  | ||||||
| 	for _, test := range cases { |  | ||||||
| 		m, _, ok := r.LongestPrefix(test.inp) |  | ||||||
| 		if !ok { |  | ||||||
| 			t.Fatalf("no match: %v", test) |  | ||||||
| 		} |  | ||||||
| 		if m != test.out { |  | ||||||
| 			t.Fatalf("mis-match: %v %v", m, test) |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestWalkPrefix(t *testing.T) { |  | ||||||
| 	r := New() |  | ||||||
|  |  | ||||||
| 	keys := []string{ |  | ||||||
| 		"foobar", |  | ||||||
| 		"foo/bar/baz", |  | ||||||
| 		"foo/baz/bar", |  | ||||||
| 		"foo/zip/zap", |  | ||||||
| 		"zipzap", |  | ||||||
| 	} |  | ||||||
| 	for _, k := range keys { |  | ||||||
| 		r.Insert(k, nil) |  | ||||||
| 	} |  | ||||||
| 	if r.Len() != len(keys) { |  | ||||||
| 		t.Fatalf("bad len: %v %v", r.Len(), len(keys)) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	type exp struct { |  | ||||||
| 		inp string |  | ||||||
| 		out []string |  | ||||||
| 	} |  | ||||||
| 	cases := []exp{ |  | ||||||
| 		exp{ |  | ||||||
| 			"f", |  | ||||||
| 			[]string{"foobar", "foo/bar/baz", "foo/baz/bar", "foo/zip/zap"}, |  | ||||||
| 		}, |  | ||||||
| 		exp{ |  | ||||||
| 			"foo", |  | ||||||
| 			[]string{"foobar", "foo/bar/baz", "foo/baz/bar", "foo/zip/zap"}, |  | ||||||
| 		}, |  | ||||||
| 		exp{ |  | ||||||
| 			"foob", |  | ||||||
| 			[]string{"foobar"}, |  | ||||||
| 		}, |  | ||||||
| 		exp{ |  | ||||||
| 			"foo/", |  | ||||||
| 			[]string{"foo/bar/baz", "foo/baz/bar", "foo/zip/zap"}, |  | ||||||
| 		}, |  | ||||||
| 		exp{ |  | ||||||
| 			"foo/b", |  | ||||||
| 			[]string{"foo/bar/baz", "foo/baz/bar"}, |  | ||||||
| 		}, |  | ||||||
| 		exp{ |  | ||||||
| 			"foo/ba", |  | ||||||
| 			[]string{"foo/bar/baz", "foo/baz/bar"}, |  | ||||||
| 		}, |  | ||||||
| 		exp{ |  | ||||||
| 			"foo/bar", |  | ||||||
| 			[]string{"foo/bar/baz"}, |  | ||||||
| 		}, |  | ||||||
| 		exp{ |  | ||||||
| 			"foo/bar/baz", |  | ||||||
| 			[]string{"foo/bar/baz"}, |  | ||||||
| 		}, |  | ||||||
| 		exp{ |  | ||||||
| 			"foo/bar/bazoo", |  | ||||||
| 			[]string{}, |  | ||||||
| 		}, |  | ||||||
| 		exp{ |  | ||||||
| 			"z", |  | ||||||
| 			[]string{"zipzap"}, |  | ||||||
| 		}, |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	for _, test := range cases { |  | ||||||
| 		out := []string{} |  | ||||||
| 		fn := func(s string, v interface{}) bool { |  | ||||||
| 			out = append(out, s) |  | ||||||
| 			return false |  | ||||||
| 		} |  | ||||||
| 		r.WalkPrefix(test.inp, fn) |  | ||||||
| 		sort.Strings(out) |  | ||||||
| 		sort.Strings(test.out) |  | ||||||
| 		if !reflect.DeepEqual(out, test.out) { |  | ||||||
| 			t.Fatalf("mis-match: %v %v", out, test.out) |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestWalkPath(t *testing.T) { |  | ||||||
| 	r := New() |  | ||||||
|  |  | ||||||
| 	keys := []string{ |  | ||||||
| 		"foo", |  | ||||||
| 		"foo/bar", |  | ||||||
| 		"foo/bar/baz", |  | ||||||
| 		"foo/baz/bar", |  | ||||||
| 		"foo/zip/zap", |  | ||||||
| 		"zipzap", |  | ||||||
| 	} |  | ||||||
| 	for _, k := range keys { |  | ||||||
| 		r.Insert(k, nil) |  | ||||||
| 	} |  | ||||||
| 	if r.Len() != len(keys) { |  | ||||||
| 		t.Fatalf("bad len: %v %v", r.Len(), len(keys)) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	type exp struct { |  | ||||||
| 		inp string |  | ||||||
| 		out []string |  | ||||||
| 	} |  | ||||||
| 	cases := []exp{ |  | ||||||
| 		exp{ |  | ||||||
| 			"f", |  | ||||||
| 			[]string{}, |  | ||||||
| 		}, |  | ||||||
| 		exp{ |  | ||||||
| 			"foo", |  | ||||||
| 			[]string{"foo"}, |  | ||||||
| 		}, |  | ||||||
| 		exp{ |  | ||||||
| 			"foo/", |  | ||||||
| 			[]string{"foo"}, |  | ||||||
| 		}, |  | ||||||
| 		exp{ |  | ||||||
| 			"foo/ba", |  | ||||||
| 			[]string{"foo"}, |  | ||||||
| 		}, |  | ||||||
| 		exp{ |  | ||||||
| 			"foo/bar", |  | ||||||
| 			[]string{"foo", "foo/bar"}, |  | ||||||
| 		}, |  | ||||||
| 		exp{ |  | ||||||
| 			"foo/bar/baz", |  | ||||||
| 			[]string{"foo", "foo/bar", "foo/bar/baz"}, |  | ||||||
| 		}, |  | ||||||
| 		exp{ |  | ||||||
| 			"foo/bar/bazoo", |  | ||||||
| 			[]string{"foo", "foo/bar", "foo/bar/baz"}, |  | ||||||
| 		}, |  | ||||||
| 		exp{ |  | ||||||
| 			"z", |  | ||||||
| 			[]string{}, |  | ||||||
| 		}, |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	for _, test := range cases { |  | ||||||
| 		out := []string{} |  | ||||||
| 		fn := func(s string, v interface{}) bool { |  | ||||||
| 			out = append(out, s) |  | ||||||
| 			return false |  | ||||||
| 		} |  | ||||||
| 		r.WalkPath(test.inp, fn) |  | ||||||
| 		sort.Strings(out) |  | ||||||
| 		sort.Strings(test.out) |  | ||||||
| 		if !reflect.DeepEqual(out, test.out) { |  | ||||||
| 			t.Fatalf("mis-match: %v %v", out, test.out) |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // generateUUID is used to generate a random UUID |  | ||||||
| func generateUUID() string { |  | ||||||
| 	buf := make([]byte, 16) |  | ||||||
| 	if _, err := crand.Read(buf); err != nil { |  | ||||||
| 		panic(fmt.Errorf("failed to read random bytes: %v", err)) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	return fmt.Sprintf("%08x-%04x-%04x-%04x-%12x", |  | ||||||
| 		buf[0:4], |  | ||||||
| 		buf[4:6], |  | ||||||
| 		buf[6:8], |  | ||||||
| 		buf[8:10], |  | ||||||
| 		buf[10:16]) |  | ||||||
| } |  | ||||||
							
								
								
									
										2
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/awserr/types.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/awserr/types.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -113,7 +113,7 @@ func newRequestError(err Error, statusCode int, requestID string) *requestError | |||||||
| // Error returns the string representation of the error. | // Error returns the string representation of the error. | ||||||
| // Satisfies the error interface. | // Satisfies the error interface. | ||||||
| func (r requestError) Error() string { | func (r requestError) Error() string { | ||||||
| 	extra := fmt.Sprintf("status code: %d, request id: [%s]", | 	extra := fmt.Sprintf("status code: %d, request id: %s", | ||||||
| 		r.statusCode, r.requestID) | 		r.statusCode, r.requestID) | ||||||
| 	return SprintError(r.Code(), r.Message(), extra, r.OrigErr()) | 	return SprintError(r.Code(), r.Message(), extra, r.OrigErr()) | ||||||
| } | } | ||||||
|   | |||||||
							
								
								
									
										201
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/awsutil/copy_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										201
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/awsutil/copy_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,201 +0,0 @@ | |||||||
| package awsutil_test |  | ||||||
|  |  | ||||||
| import ( |  | ||||||
| 	"bytes" |  | ||||||
| 	"fmt" |  | ||||||
| 	"io" |  | ||||||
| 	"io/ioutil" |  | ||||||
| 	"testing" |  | ||||||
|  |  | ||||||
| 	"github.com/aws/aws-sdk-go/aws/awsutil" |  | ||||||
| 	"github.com/stretchr/testify/assert" |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| func ExampleCopy() { |  | ||||||
| 	type Foo struct { |  | ||||||
| 		A int |  | ||||||
| 		B []*string |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	// Create the initial value |  | ||||||
| 	str1 := "hello" |  | ||||||
| 	str2 := "bye bye" |  | ||||||
| 	f1 := &Foo{A: 1, B: []*string{&str1, &str2}} |  | ||||||
|  |  | ||||||
| 	// Do the copy |  | ||||||
| 	var f2 Foo |  | ||||||
| 	awsutil.Copy(&f2, f1) |  | ||||||
|  |  | ||||||
| 	// Print the result |  | ||||||
| 	fmt.Println(awsutil.Prettify(f2)) |  | ||||||
|  |  | ||||||
| 	// Output: |  | ||||||
| 	// { |  | ||||||
| 	//   A: 1, |  | ||||||
| 	//   B: ["hello","bye bye"] |  | ||||||
| 	// } |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestCopy(t *testing.T) { |  | ||||||
| 	type Foo struct { |  | ||||||
| 		A int |  | ||||||
| 		B []*string |  | ||||||
| 		C map[string]*int |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	// Create the initial value |  | ||||||
| 	str1 := "hello" |  | ||||||
| 	str2 := "bye bye" |  | ||||||
| 	int1 := 1 |  | ||||||
| 	int2 := 2 |  | ||||||
| 	f1 := &Foo{ |  | ||||||
| 		A: 1, |  | ||||||
| 		B: []*string{&str1, &str2}, |  | ||||||
| 		C: map[string]*int{ |  | ||||||
| 			"A": &int1, |  | ||||||
| 			"B": &int2, |  | ||||||
| 		}, |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	// Do the copy |  | ||||||
| 	var f2 Foo |  | ||||||
| 	awsutil.Copy(&f2, f1) |  | ||||||
|  |  | ||||||
| 	// Values are equal |  | ||||||
| 	assert.Equal(t, f2.A, f1.A) |  | ||||||
| 	assert.Equal(t, f2.B, f1.B) |  | ||||||
| 	assert.Equal(t, f2.C, f1.C) |  | ||||||
|  |  | ||||||
| 	// But pointers are not! |  | ||||||
| 	str3 := "nothello" |  | ||||||
| 	int3 := 57 |  | ||||||
| 	f2.A = 100 |  | ||||||
| 	f2.B[0] = &str3 |  | ||||||
| 	f2.C["B"] = &int3 |  | ||||||
| 	assert.NotEqual(t, f2.A, f1.A) |  | ||||||
| 	assert.NotEqual(t, f2.B, f1.B) |  | ||||||
| 	assert.NotEqual(t, f2.C, f1.C) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestCopyIgnoreNilMembers(t *testing.T) { |  | ||||||
| 	type Foo struct { |  | ||||||
| 		A *string |  | ||||||
| 		B []string |  | ||||||
| 		C map[string]string |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	f := &Foo{} |  | ||||||
| 	assert.Nil(t, f.A) |  | ||||||
| 	assert.Nil(t, f.B) |  | ||||||
| 	assert.Nil(t, f.C) |  | ||||||
|  |  | ||||||
| 	var f2 Foo |  | ||||||
| 	awsutil.Copy(&f2, f) |  | ||||||
| 	assert.Nil(t, f2.A) |  | ||||||
| 	assert.Nil(t, f2.B) |  | ||||||
| 	assert.Nil(t, f2.C) |  | ||||||
|  |  | ||||||
| 	fcopy := awsutil.CopyOf(f) |  | ||||||
| 	f3 := fcopy.(*Foo) |  | ||||||
| 	assert.Nil(t, f3.A) |  | ||||||
| 	assert.Nil(t, f3.B) |  | ||||||
| 	assert.Nil(t, f3.C) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestCopyPrimitive(t *testing.T) { |  | ||||||
| 	str := "hello" |  | ||||||
| 	var s string |  | ||||||
| 	awsutil.Copy(&s, &str) |  | ||||||
| 	assert.Equal(t, "hello", s) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestCopyNil(t *testing.T) { |  | ||||||
| 	var s string |  | ||||||
| 	awsutil.Copy(&s, nil) |  | ||||||
| 	assert.Equal(t, "", s) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestCopyReader(t *testing.T) { |  | ||||||
| 	var buf io.Reader = bytes.NewReader([]byte("hello world")) |  | ||||||
| 	var r io.Reader |  | ||||||
| 	awsutil.Copy(&r, buf) |  | ||||||
| 	b, err := ioutil.ReadAll(r) |  | ||||||
| 	assert.NoError(t, err) |  | ||||||
| 	assert.Equal(t, []byte("hello world"), b) |  | ||||||
|  |  | ||||||
| 	// empty bytes because this is not a deep copy |  | ||||||
| 	b, err = ioutil.ReadAll(buf) |  | ||||||
| 	assert.NoError(t, err) |  | ||||||
| 	assert.Equal(t, []byte(""), b) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestCopyDifferentStructs(t *testing.T) { |  | ||||||
| 	type SrcFoo struct { |  | ||||||
| 		A                int |  | ||||||
| 		B                []*string |  | ||||||
| 		C                map[string]*int |  | ||||||
| 		SrcUnique        string |  | ||||||
| 		SameNameDiffType int |  | ||||||
| 	} |  | ||||||
| 	type DstFoo struct { |  | ||||||
| 		A                int |  | ||||||
| 		B                []*string |  | ||||||
| 		C                map[string]*int |  | ||||||
| 		DstUnique        int |  | ||||||
| 		SameNameDiffType string |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	// Create the initial value |  | ||||||
| 	str1 := "hello" |  | ||||||
| 	str2 := "bye bye" |  | ||||||
| 	int1 := 1 |  | ||||||
| 	int2 := 2 |  | ||||||
| 	f1 := &SrcFoo{ |  | ||||||
| 		A: 1, |  | ||||||
| 		B: []*string{&str1, &str2}, |  | ||||||
| 		C: map[string]*int{ |  | ||||||
| 			"A": &int1, |  | ||||||
| 			"B": &int2, |  | ||||||
| 		}, |  | ||||||
| 		SrcUnique:        "unique", |  | ||||||
| 		SameNameDiffType: 1, |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	// Do the copy |  | ||||||
| 	var f2 DstFoo |  | ||||||
| 	awsutil.Copy(&f2, f1) |  | ||||||
|  |  | ||||||
| 	// Values are equal |  | ||||||
| 	assert.Equal(t, f2.A, f1.A) |  | ||||||
| 	assert.Equal(t, f2.B, f1.B) |  | ||||||
| 	assert.Equal(t, f2.C, f1.C) |  | ||||||
| 	assert.Equal(t, "unique", f1.SrcUnique) |  | ||||||
| 	assert.Equal(t, 1, f1.SameNameDiffType) |  | ||||||
| 	assert.Equal(t, 0, f2.DstUnique) |  | ||||||
| 	assert.Equal(t, "", f2.SameNameDiffType) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func ExampleCopyOf() { |  | ||||||
| 	type Foo struct { |  | ||||||
| 		A int |  | ||||||
| 		B []*string |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	// Create the initial value |  | ||||||
| 	str1 := "hello" |  | ||||||
| 	str2 := "bye bye" |  | ||||||
| 	f1 := &Foo{A: 1, B: []*string{&str1, &str2}} |  | ||||||
|  |  | ||||||
| 	// Do the copy |  | ||||||
| 	v := awsutil.CopyOf(f1) |  | ||||||
| 	var f2 *Foo = v.(*Foo) |  | ||||||
|  |  | ||||||
| 	// Print the result |  | ||||||
| 	fmt.Println(awsutil.Prettify(f2)) |  | ||||||
|  |  | ||||||
| 	// Output: |  | ||||||
| 	// { |  | ||||||
| 	//   A: 1, |  | ||||||
| 	//   B: ["hello","bye bye"] |  | ||||||
| 	// } |  | ||||||
| } |  | ||||||
							
								
								
									
										68
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/awsutil/path_value_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										68
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/awsutil/path_value_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,68 +0,0 @@ | |||||||
| package awsutil_test |  | ||||||
|  |  | ||||||
| import ( |  | ||||||
| 	"testing" |  | ||||||
|  |  | ||||||
| 	"github.com/aws/aws-sdk-go/aws/awsutil" |  | ||||||
| 	"github.com/stretchr/testify/assert" |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| type Struct struct { |  | ||||||
| 	A []Struct |  | ||||||
| 	z []Struct |  | ||||||
| 	B *Struct |  | ||||||
| 	D *Struct |  | ||||||
| 	C string |  | ||||||
| } |  | ||||||
|  |  | ||||||
| var data = Struct{ |  | ||||||
| 	A: []Struct{{C: "value1"}, {C: "value2"}, {C: "value3"}}, |  | ||||||
| 	z: []Struct{{C: "value1"}, {C: "value2"}, {C: "value3"}}, |  | ||||||
| 	B: &Struct{B: &Struct{C: "terminal"}, D: &Struct{C: "terminal2"}}, |  | ||||||
| 	C: "initial", |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestValueAtPathSuccess(t *testing.T) { |  | ||||||
| 	assert.Equal(t, []interface{}{"initial"}, awsutil.ValuesAtPath(data, "C")) |  | ||||||
| 	assert.Equal(t, []interface{}{"value1"}, awsutil.ValuesAtPath(data, "A[0].C")) |  | ||||||
| 	assert.Equal(t, []interface{}{"value2"}, awsutil.ValuesAtPath(data, "A[1].C")) |  | ||||||
| 	assert.Equal(t, []interface{}{"value3"}, awsutil.ValuesAtPath(data, "A[2].C")) |  | ||||||
| 	assert.Equal(t, []interface{}{"value3"}, awsutil.ValuesAtAnyPath(data, "a[2].c")) |  | ||||||
| 	assert.Equal(t, []interface{}{"value3"}, awsutil.ValuesAtPath(data, "A[-1].C")) |  | ||||||
| 	assert.Equal(t, []interface{}{"value1", "value2", "value3"}, awsutil.ValuesAtPath(data, "A[].C")) |  | ||||||
| 	assert.Equal(t, []interface{}{"terminal"}, awsutil.ValuesAtPath(data, "B . B . C")) |  | ||||||
| 	assert.Equal(t, []interface{}{"terminal", "terminal2"}, awsutil.ValuesAtPath(data, "B.*.C")) |  | ||||||
| 	assert.Equal(t, []interface{}{"initial"}, awsutil.ValuesAtPath(data, "A.D.X || C")) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestValueAtPathFailure(t *testing.T) { |  | ||||||
| 	assert.Equal(t, []interface{}(nil), awsutil.ValuesAtPath(data, "C.x")) |  | ||||||
| 	assert.Equal(t, []interface{}(nil), awsutil.ValuesAtPath(data, ".x")) |  | ||||||
| 	assert.Equal(t, []interface{}{}, awsutil.ValuesAtPath(data, "X.Y.Z")) |  | ||||||
| 	assert.Equal(t, []interface{}{}, awsutil.ValuesAtPath(data, "A[100].C")) |  | ||||||
| 	assert.Equal(t, []interface{}{}, awsutil.ValuesAtPath(data, "A[3].C")) |  | ||||||
| 	assert.Equal(t, []interface{}{}, awsutil.ValuesAtPath(data, "B.B.C.Z")) |  | ||||||
| 	assert.Equal(t, []interface{}(nil), awsutil.ValuesAtPath(data, "z[-1].C")) |  | ||||||
| 	assert.Equal(t, []interface{}{}, awsutil.ValuesAtPath(nil, "A.B.C")) |  | ||||||
| 	assert.Equal(t, []interface{}{}, awsutil.ValuesAtPath(Struct{}, "A")) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestSetValueAtPathSuccess(t *testing.T) { |  | ||||||
| 	var s Struct |  | ||||||
| 	awsutil.SetValueAtPath(&s, "C", "test1") |  | ||||||
| 	awsutil.SetValueAtPath(&s, "B.B.C", "test2") |  | ||||||
| 	awsutil.SetValueAtPath(&s, "B.D.C", "test3") |  | ||||||
| 	assert.Equal(t, "test1", s.C) |  | ||||||
| 	assert.Equal(t, "test2", s.B.B.C) |  | ||||||
| 	assert.Equal(t, "test3", s.B.D.C) |  | ||||||
|  |  | ||||||
| 	awsutil.SetValueAtPath(&s, "B.*.C", "test0") |  | ||||||
| 	assert.Equal(t, "test0", s.B.B.C) |  | ||||||
| 	assert.Equal(t, "test0", s.B.D.C) |  | ||||||
|  |  | ||||||
| 	var s2 Struct |  | ||||||
| 	awsutil.SetValueAtAnyPath(&s2, "b.b.c", "test0") |  | ||||||
| 	assert.Equal(t, "test0", s2.B.B.C) |  | ||||||
| 	awsutil.SetValueAtAnyPath(&s2, "A", []Struct{{}}) |  | ||||||
| 	assert.Equal(t, []Struct{{}}, s2.A) |  | ||||||
| } |  | ||||||
							
								
								
									
										18
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/config.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										18
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/config.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -2,6 +2,7 @@ package aws | |||||||
|  |  | ||||||
| import ( | import ( | ||||||
| 	"net/http" | 	"net/http" | ||||||
|  | 	"time" | ||||||
|  |  | ||||||
| 	"github.com/aws/aws-sdk-go/aws/credentials" | 	"github.com/aws/aws-sdk-go/aws/credentials" | ||||||
| ) | ) | ||||||
| @@ -11,10 +12,10 @@ import ( | |||||||
| const DefaultRetries = -1 | const DefaultRetries = -1 | ||||||
|  |  | ||||||
| // A Config provides service configuration for service clients. By default, | // A Config provides service configuration for service clients. By default, | ||||||
| // all clients will use the {DefaultConfig} structure. | // all clients will use the {defaults.DefaultConfig} structure. | ||||||
| type Config struct { | type Config struct { | ||||||
| 	// The credentials object to use when signing requests. Defaults to | 	// The credentials object to use when signing requests. Defaults to | ||||||
| 	// {DefaultChainCredentials}. | 	// {defaults.DefaultChainCredentials}. | ||||||
| 	Credentials *credentials.Credentials | 	Credentials *credentials.Credentials | ||||||
|  |  | ||||||
| 	// An optional endpoint URL (hostname only or fully qualified URI) | 	// An optional endpoint URL (hostname only or fully qualified URI) | ||||||
| @@ -73,6 +74,8 @@ type Config struct { | |||||||
| 	// @see http://docs.aws.amazon.com/AmazonS3/latest/dev/VirtualHosting.html | 	// @see http://docs.aws.amazon.com/AmazonS3/latest/dev/VirtualHosting.html | ||||||
| 	//   Amazon S3: Virtual Hosting of Buckets | 	//   Amazon S3: Virtual Hosting of Buckets | ||||||
| 	S3ForcePathStyle *bool | 	S3ForcePathStyle *bool | ||||||
|  |  | ||||||
|  | 	SleepDelay func(time.Duration) | ||||||
| } | } | ||||||
|  |  | ||||||
| // NewConfig returns a new Config pointer that can be chained with builder methods to | // NewConfig returns a new Config pointer that can be chained with builder methods to | ||||||
| @@ -161,6 +164,13 @@ func (c *Config) WithS3ForcePathStyle(force bool) *Config { | |||||||
| 	return c | 	return c | ||||||
| } | } | ||||||
|  |  | ||||||
|  | // WithSleepDelay overrides the function used to sleep while waiting for the | ||||||
|  | // next retry. Defaults to time.Sleep. | ||||||
|  | func (c *Config) WithSleepDelay(fn func(time.Duration)) *Config { | ||||||
|  | 	c.SleepDelay = fn | ||||||
|  | 	return c | ||||||
|  | } | ||||||
|  |  | ||||||
| // Merge returns a new Config with the other Config's attribute values merged into | // Merge returns a new Config with the other Config's attribute values merged into | ||||||
| // this Config. If the other Config's attribute is nil it will not be merged into | // this Config. If the other Config's attribute is nil it will not be merged into | ||||||
| // the new Config to be returned. | // the new Config to be returned. | ||||||
| @@ -215,6 +225,10 @@ func (c Config) Merge(other *Config) *Config { | |||||||
| 		dst.S3ForcePathStyle = other.S3ForcePathStyle | 		dst.S3ForcePathStyle = other.S3ForcePathStyle | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | 	if other.SleepDelay != nil { | ||||||
|  | 		dst.SleepDelay = other.SleepDelay | ||||||
|  | 	} | ||||||
|  |  | ||||||
| 	return &dst | 	return &dst | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										80
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/config_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										80
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/config_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,80 +0,0 @@ | |||||||
| package aws |  | ||||||
|  |  | ||||||
| import ( |  | ||||||
| 	"net/http" |  | ||||||
| 	"reflect" |  | ||||||
| 	"testing" |  | ||||||
|  |  | ||||||
| 	"github.com/aws/aws-sdk-go/aws/credentials" |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| var testCredentials = credentials.NewStaticCredentials("AKID", "SECRET", "SESSION") |  | ||||||
|  |  | ||||||
| var copyTestConfig = Config{ |  | ||||||
| 	Credentials:             testCredentials, |  | ||||||
| 	Endpoint:                String("CopyTestEndpoint"), |  | ||||||
| 	Region:                  String("COPY_TEST_AWS_REGION"), |  | ||||||
| 	DisableSSL:              Bool(true), |  | ||||||
| 	HTTPClient:              http.DefaultClient, |  | ||||||
| 	LogLevel:                LogLevel(LogDebug), |  | ||||||
| 	Logger:                  NewDefaultLogger(), |  | ||||||
| 	MaxRetries:              Int(DefaultRetries), |  | ||||||
| 	DisableParamValidation:  Bool(true), |  | ||||||
| 	DisableComputeChecksums: Bool(true), |  | ||||||
| 	S3ForcePathStyle:        Bool(true), |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestCopy(t *testing.T) { |  | ||||||
| 	want := copyTestConfig |  | ||||||
| 	got := copyTestConfig.Copy() |  | ||||||
| 	if !reflect.DeepEqual(*got, want) { |  | ||||||
| 		t.Errorf("Copy() = %+v", got) |  | ||||||
| 		t.Errorf("    want %+v", want) |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestCopyReturnsNewInstance(t *testing.T) { |  | ||||||
| 	want := copyTestConfig |  | ||||||
| 	got := copyTestConfig.Copy() |  | ||||||
| 	if got == &want { |  | ||||||
| 		t.Errorf("Copy() = %p; want different instance as source %p", got, &want) |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| var mergeTestZeroValueConfig = Config{} |  | ||||||
|  |  | ||||||
| var mergeTestConfig = Config{ |  | ||||||
| 	Credentials:             testCredentials, |  | ||||||
| 	Endpoint:                String("MergeTestEndpoint"), |  | ||||||
| 	Region:                  String("MERGE_TEST_AWS_REGION"), |  | ||||||
| 	DisableSSL:              Bool(true), |  | ||||||
| 	HTTPClient:              http.DefaultClient, |  | ||||||
| 	LogLevel:                LogLevel(LogDebug), |  | ||||||
| 	Logger:                  NewDefaultLogger(), |  | ||||||
| 	MaxRetries:              Int(10), |  | ||||||
| 	DisableParamValidation:  Bool(true), |  | ||||||
| 	DisableComputeChecksums: Bool(true), |  | ||||||
| 	S3ForcePathStyle:        Bool(true), |  | ||||||
| } |  | ||||||
|  |  | ||||||
| var mergeTests = []struct { |  | ||||||
| 	cfg  *Config |  | ||||||
| 	in   *Config |  | ||||||
| 	want *Config |  | ||||||
| }{ |  | ||||||
| 	{&Config{}, nil, &Config{}}, |  | ||||||
| 	{&Config{}, &mergeTestZeroValueConfig, &Config{}}, |  | ||||||
| 	{&Config{}, &mergeTestConfig, &mergeTestConfig}, |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestMerge(t *testing.T) { |  | ||||||
| 	for i, tt := range mergeTests { |  | ||||||
| 		got := tt.cfg.Merge(tt.in) |  | ||||||
| 		if !reflect.DeepEqual(got, tt.want) { |  | ||||||
| 			t.Errorf("Config %d %+v", i, tt.cfg) |  | ||||||
| 			t.Errorf("   Merge(%+v)", tt.in) |  | ||||||
| 			t.Errorf("     got %+v", got) |  | ||||||
| 			t.Errorf("    want %+v", tt.want) |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
							
								
								
									
										437
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/convert_types_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										437
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/convert_types_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,437 +0,0 @@ | |||||||
| package aws |  | ||||||
|  |  | ||||||
| import ( |  | ||||||
| 	"testing" |  | ||||||
| 	"time" |  | ||||||
|  |  | ||||||
| 	"github.com/stretchr/testify/assert" |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| var testCasesStringSlice = [][]string{ |  | ||||||
| 	{"a", "b", "c", "d", "e"}, |  | ||||||
| 	{"a", "b", "", "", "e"}, |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestStringSlice(t *testing.T) { |  | ||||||
| 	for idx, in := range testCasesStringSlice { |  | ||||||
| 		if in == nil { |  | ||||||
| 			continue |  | ||||||
| 		} |  | ||||||
| 		out := StringSlice(in) |  | ||||||
| 		assert.Len(t, out, len(in), "Unexpected len at idx %d", idx) |  | ||||||
| 		for i := range out { |  | ||||||
| 			assert.Equal(t, in[i], *(out[i]), "Unexpected value at idx %d", idx) |  | ||||||
| 		} |  | ||||||
|  |  | ||||||
| 		out2 := StringValueSlice(out) |  | ||||||
| 		assert.Len(t, out2, len(in), "Unexpected len at idx %d", idx) |  | ||||||
| 		assert.Equal(t, in, out2, "Unexpected value at idx %d", idx) |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| var testCasesStringValueSlice = [][]*string{ |  | ||||||
| 	{String("a"), String("b"), nil, String("c")}, |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestStringValueSlice(t *testing.T) { |  | ||||||
| 	for idx, in := range testCasesStringValueSlice { |  | ||||||
| 		if in == nil { |  | ||||||
| 			continue |  | ||||||
| 		} |  | ||||||
| 		out := StringValueSlice(in) |  | ||||||
| 		assert.Len(t, out, len(in), "Unexpected len at idx %d", idx) |  | ||||||
| 		for i := range out { |  | ||||||
| 			if in[i] == nil { |  | ||||||
| 				assert.Empty(t, out[i], "Unexpected value at idx %d", idx) |  | ||||||
| 			} else { |  | ||||||
| 				assert.Equal(t, *(in[i]), out[i], "Unexpected value at idx %d", idx) |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
|  |  | ||||||
| 		out2 := StringSlice(out) |  | ||||||
| 		assert.Len(t, out2, len(in), "Unexpected len at idx %d", idx) |  | ||||||
| 		for i := range out2 { |  | ||||||
| 			if in[i] == nil { |  | ||||||
| 				assert.Empty(t, *(out2[i]), "Unexpected value at idx %d", idx) |  | ||||||
| 			} else { |  | ||||||
| 				assert.Equal(t, in[i], out2[i], "Unexpected value at idx %d", idx) |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| var testCasesStringMap = []map[string]string{ |  | ||||||
| 	{"a": "1", "b": "2", "c": "3"}, |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestStringMap(t *testing.T) { |  | ||||||
| 	for idx, in := range testCasesStringMap { |  | ||||||
| 		if in == nil { |  | ||||||
| 			continue |  | ||||||
| 		} |  | ||||||
| 		out := StringMap(in) |  | ||||||
| 		assert.Len(t, out, len(in), "Unexpected len at idx %d", idx) |  | ||||||
| 		for i := range out { |  | ||||||
| 			assert.Equal(t, in[i], *(out[i]), "Unexpected value at idx %d", idx) |  | ||||||
| 		} |  | ||||||
|  |  | ||||||
| 		out2 := StringValueMap(out) |  | ||||||
| 		assert.Len(t, out2, len(in), "Unexpected len at idx %d", idx) |  | ||||||
| 		assert.Equal(t, in, out2, "Unexpected value at idx %d", idx) |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| var testCasesBoolSlice = [][]bool{ |  | ||||||
| 	{true, true, false, false}, |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestBoolSlice(t *testing.T) { |  | ||||||
| 	for idx, in := range testCasesBoolSlice { |  | ||||||
| 		if in == nil { |  | ||||||
| 			continue |  | ||||||
| 		} |  | ||||||
| 		out := BoolSlice(in) |  | ||||||
| 		assert.Len(t, out, len(in), "Unexpected len at idx %d", idx) |  | ||||||
| 		for i := range out { |  | ||||||
| 			assert.Equal(t, in[i], *(out[i]), "Unexpected value at idx %d", idx) |  | ||||||
| 		} |  | ||||||
|  |  | ||||||
| 		out2 := BoolValueSlice(out) |  | ||||||
| 		assert.Len(t, out2, len(in), "Unexpected len at idx %d", idx) |  | ||||||
| 		assert.Equal(t, in, out2, "Unexpected value at idx %d", idx) |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| var testCasesBoolValueSlice = [][]*bool{} |  | ||||||
|  |  | ||||||
| func TestBoolValueSlice(t *testing.T) { |  | ||||||
| 	for idx, in := range testCasesBoolValueSlice { |  | ||||||
| 		if in == nil { |  | ||||||
| 			continue |  | ||||||
| 		} |  | ||||||
| 		out := BoolValueSlice(in) |  | ||||||
| 		assert.Len(t, out, len(in), "Unexpected len at idx %d", idx) |  | ||||||
| 		for i := range out { |  | ||||||
| 			if in[i] == nil { |  | ||||||
| 				assert.Empty(t, out[i], "Unexpected value at idx %d", idx) |  | ||||||
| 			} else { |  | ||||||
| 				assert.Equal(t, *(in[i]), out[i], "Unexpected value at idx %d", idx) |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
|  |  | ||||||
| 		out2 := BoolSlice(out) |  | ||||||
| 		assert.Len(t, out2, len(in), "Unexpected len at idx %d", idx) |  | ||||||
| 		for i := range out2 { |  | ||||||
| 			if in[i] == nil { |  | ||||||
| 				assert.Empty(t, *(out2[i]), "Unexpected value at idx %d", idx) |  | ||||||
| 			} else { |  | ||||||
| 				assert.Equal(t, in[i], out2[i], "Unexpected value at idx %d", idx) |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| var testCasesBoolMap = []map[string]bool{ |  | ||||||
| 	{"a": true, "b": false, "c": true}, |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestBoolMap(t *testing.T) { |  | ||||||
| 	for idx, in := range testCasesBoolMap { |  | ||||||
| 		if in == nil { |  | ||||||
| 			continue |  | ||||||
| 		} |  | ||||||
| 		out := BoolMap(in) |  | ||||||
| 		assert.Len(t, out, len(in), "Unexpected len at idx %d", idx) |  | ||||||
| 		for i := range out { |  | ||||||
| 			assert.Equal(t, in[i], *(out[i]), "Unexpected value at idx %d", idx) |  | ||||||
| 		} |  | ||||||
|  |  | ||||||
| 		out2 := BoolValueMap(out) |  | ||||||
| 		assert.Len(t, out2, len(in), "Unexpected len at idx %d", idx) |  | ||||||
| 		assert.Equal(t, in, out2, "Unexpected value at idx %d", idx) |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| var testCasesIntSlice = [][]int{ |  | ||||||
| 	{1, 2, 3, 4}, |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestIntSlice(t *testing.T) { |  | ||||||
| 	for idx, in := range testCasesIntSlice { |  | ||||||
| 		if in == nil { |  | ||||||
| 			continue |  | ||||||
| 		} |  | ||||||
| 		out := IntSlice(in) |  | ||||||
| 		assert.Len(t, out, len(in), "Unexpected len at idx %d", idx) |  | ||||||
| 		for i := range out { |  | ||||||
| 			assert.Equal(t, in[i], *(out[i]), "Unexpected value at idx %d", idx) |  | ||||||
| 		} |  | ||||||
|  |  | ||||||
| 		out2 := IntValueSlice(out) |  | ||||||
| 		assert.Len(t, out2, len(in), "Unexpected len at idx %d", idx) |  | ||||||
| 		assert.Equal(t, in, out2, "Unexpected value at idx %d", idx) |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| var testCasesIntValueSlice = [][]*int{} |  | ||||||
|  |  | ||||||
| func TestIntValueSlice(t *testing.T) { |  | ||||||
| 	for idx, in := range testCasesIntValueSlice { |  | ||||||
| 		if in == nil { |  | ||||||
| 			continue |  | ||||||
| 		} |  | ||||||
| 		out := IntValueSlice(in) |  | ||||||
| 		assert.Len(t, out, len(in), "Unexpected len at idx %d", idx) |  | ||||||
| 		for i := range out { |  | ||||||
| 			if in[i] == nil { |  | ||||||
| 				assert.Empty(t, out[i], "Unexpected value at idx %d", idx) |  | ||||||
| 			} else { |  | ||||||
| 				assert.Equal(t, *(in[i]), out[i], "Unexpected value at idx %d", idx) |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
|  |  | ||||||
| 		out2 := IntSlice(out) |  | ||||||
| 		assert.Len(t, out2, len(in), "Unexpected len at idx %d", idx) |  | ||||||
| 		for i := range out2 { |  | ||||||
| 			if in[i] == nil { |  | ||||||
| 				assert.Empty(t, *(out2[i]), "Unexpected value at idx %d", idx) |  | ||||||
| 			} else { |  | ||||||
| 				assert.Equal(t, in[i], out2[i], "Unexpected value at idx %d", idx) |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| var testCasesIntMap = []map[string]int{ |  | ||||||
| 	{"a": 3, "b": 2, "c": 1}, |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestIntMap(t *testing.T) { |  | ||||||
| 	for idx, in := range testCasesIntMap { |  | ||||||
| 		if in == nil { |  | ||||||
| 			continue |  | ||||||
| 		} |  | ||||||
| 		out := IntMap(in) |  | ||||||
| 		assert.Len(t, out, len(in), "Unexpected len at idx %d", idx) |  | ||||||
| 		for i := range out { |  | ||||||
| 			assert.Equal(t, in[i], *(out[i]), "Unexpected value at idx %d", idx) |  | ||||||
| 		} |  | ||||||
|  |  | ||||||
| 		out2 := IntValueMap(out) |  | ||||||
| 		assert.Len(t, out2, len(in), "Unexpected len at idx %d", idx) |  | ||||||
| 		assert.Equal(t, in, out2, "Unexpected value at idx %d", idx) |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| var testCasesInt64Slice = [][]int64{ |  | ||||||
| 	{1, 2, 3, 4}, |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestInt64Slice(t *testing.T) { |  | ||||||
| 	for idx, in := range testCasesInt64Slice { |  | ||||||
| 		if in == nil { |  | ||||||
| 			continue |  | ||||||
| 		} |  | ||||||
| 		out := Int64Slice(in) |  | ||||||
| 		assert.Len(t, out, len(in), "Unexpected len at idx %d", idx) |  | ||||||
| 		for i := range out { |  | ||||||
| 			assert.Equal(t, in[i], *(out[i]), "Unexpected value at idx %d", idx) |  | ||||||
| 		} |  | ||||||
|  |  | ||||||
| 		out2 := Int64ValueSlice(out) |  | ||||||
| 		assert.Len(t, out2, len(in), "Unexpected len at idx %d", idx) |  | ||||||
| 		assert.Equal(t, in, out2, "Unexpected value at idx %d", idx) |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| var testCasesInt64ValueSlice = [][]*int64{} |  | ||||||
|  |  | ||||||
| func TestInt64ValueSlice(t *testing.T) { |  | ||||||
| 	for idx, in := range testCasesInt64ValueSlice { |  | ||||||
| 		if in == nil { |  | ||||||
| 			continue |  | ||||||
| 		} |  | ||||||
| 		out := Int64ValueSlice(in) |  | ||||||
| 		assert.Len(t, out, len(in), "Unexpected len at idx %d", idx) |  | ||||||
| 		for i := range out { |  | ||||||
| 			if in[i] == nil { |  | ||||||
| 				assert.Empty(t, out[i], "Unexpected value at idx %d", idx) |  | ||||||
| 			} else { |  | ||||||
| 				assert.Equal(t, *(in[i]), out[i], "Unexpected value at idx %d", idx) |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
|  |  | ||||||
| 		out2 := Int64Slice(out) |  | ||||||
| 		assert.Len(t, out2, len(in), "Unexpected len at idx %d", idx) |  | ||||||
| 		for i := range out2 { |  | ||||||
| 			if in[i] == nil { |  | ||||||
| 				assert.Empty(t, *(out2[i]), "Unexpected value at idx %d", idx) |  | ||||||
| 			} else { |  | ||||||
| 				assert.Equal(t, in[i], out2[i], "Unexpected value at idx %d", idx) |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| var testCasesInt64Map = []map[string]int64{ |  | ||||||
| 	{"a": 3, "b": 2, "c": 1}, |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestInt64Map(t *testing.T) { |  | ||||||
| 	for idx, in := range testCasesInt64Map { |  | ||||||
| 		if in == nil { |  | ||||||
| 			continue |  | ||||||
| 		} |  | ||||||
| 		out := Int64Map(in) |  | ||||||
| 		assert.Len(t, out, len(in), "Unexpected len at idx %d", idx) |  | ||||||
| 		for i := range out { |  | ||||||
| 			assert.Equal(t, in[i], *(out[i]), "Unexpected value at idx %d", idx) |  | ||||||
| 		} |  | ||||||
|  |  | ||||||
| 		out2 := Int64ValueMap(out) |  | ||||||
| 		assert.Len(t, out2, len(in), "Unexpected len at idx %d", idx) |  | ||||||
| 		assert.Equal(t, in, out2, "Unexpected value at idx %d", idx) |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| var testCasesFloat64Slice = [][]float64{ |  | ||||||
| 	{1, 2, 3, 4}, |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestFloat64Slice(t *testing.T) { |  | ||||||
| 	for idx, in := range testCasesFloat64Slice { |  | ||||||
| 		if in == nil { |  | ||||||
| 			continue |  | ||||||
| 		} |  | ||||||
| 		out := Float64Slice(in) |  | ||||||
| 		assert.Len(t, out, len(in), "Unexpected len at idx %d", idx) |  | ||||||
| 		for i := range out { |  | ||||||
| 			assert.Equal(t, in[i], *(out[i]), "Unexpected value at idx %d", idx) |  | ||||||
| 		} |  | ||||||
|  |  | ||||||
| 		out2 := Float64ValueSlice(out) |  | ||||||
| 		assert.Len(t, out2, len(in), "Unexpected len at idx %d", idx) |  | ||||||
| 		assert.Equal(t, in, out2, "Unexpected value at idx %d", idx) |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| var testCasesFloat64ValueSlice = [][]*float64{} |  | ||||||
|  |  | ||||||
| func TestFloat64ValueSlice(t *testing.T) { |  | ||||||
| 	for idx, in := range testCasesFloat64ValueSlice { |  | ||||||
| 		if in == nil { |  | ||||||
| 			continue |  | ||||||
| 		} |  | ||||||
| 		out := Float64ValueSlice(in) |  | ||||||
| 		assert.Len(t, out, len(in), "Unexpected len at idx %d", idx) |  | ||||||
| 		for i := range out { |  | ||||||
| 			if in[i] == nil { |  | ||||||
| 				assert.Empty(t, out[i], "Unexpected value at idx %d", idx) |  | ||||||
| 			} else { |  | ||||||
| 				assert.Equal(t, *(in[i]), out[i], "Unexpected value at idx %d", idx) |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
|  |  | ||||||
| 		out2 := Float64Slice(out) |  | ||||||
| 		assert.Len(t, out2, len(in), "Unexpected len at idx %d", idx) |  | ||||||
| 		for i := range out2 { |  | ||||||
| 			if in[i] == nil { |  | ||||||
| 				assert.Empty(t, *(out2[i]), "Unexpected value at idx %d", idx) |  | ||||||
| 			} else { |  | ||||||
| 				assert.Equal(t, in[i], out2[i], "Unexpected value at idx %d", idx) |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| var testCasesFloat64Map = []map[string]float64{ |  | ||||||
| 	{"a": 3, "b": 2, "c": 1}, |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestFloat64Map(t *testing.T) { |  | ||||||
| 	for idx, in := range testCasesFloat64Map { |  | ||||||
| 		if in == nil { |  | ||||||
| 			continue |  | ||||||
| 		} |  | ||||||
| 		out := Float64Map(in) |  | ||||||
| 		assert.Len(t, out, len(in), "Unexpected len at idx %d", idx) |  | ||||||
| 		for i := range out { |  | ||||||
| 			assert.Equal(t, in[i], *(out[i]), "Unexpected value at idx %d", idx) |  | ||||||
| 		} |  | ||||||
|  |  | ||||||
| 		out2 := Float64ValueMap(out) |  | ||||||
| 		assert.Len(t, out2, len(in), "Unexpected len at idx %d", idx) |  | ||||||
| 		assert.Equal(t, in, out2, "Unexpected value at idx %d", idx) |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| var testCasesTimeSlice = [][]time.Time{ |  | ||||||
| 	{time.Now(), time.Now().AddDate(100, 0, 0)}, |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestTimeSlice(t *testing.T) { |  | ||||||
| 	for idx, in := range testCasesTimeSlice { |  | ||||||
| 		if in == nil { |  | ||||||
| 			continue |  | ||||||
| 		} |  | ||||||
| 		out := TimeSlice(in) |  | ||||||
| 		assert.Len(t, out, len(in), "Unexpected len at idx %d", idx) |  | ||||||
| 		for i := range out { |  | ||||||
| 			assert.Equal(t, in[i], *(out[i]), "Unexpected value at idx %d", idx) |  | ||||||
| 		} |  | ||||||
|  |  | ||||||
| 		out2 := TimeValueSlice(out) |  | ||||||
| 		assert.Len(t, out2, len(in), "Unexpected len at idx %d", idx) |  | ||||||
| 		assert.Equal(t, in, out2, "Unexpected value at idx %d", idx) |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| var testCasesTimeValueSlice = [][]*time.Time{} |  | ||||||
|  |  | ||||||
| func TestTimeValueSlice(t *testing.T) { |  | ||||||
| 	for idx, in := range testCasesTimeValueSlice { |  | ||||||
| 		if in == nil { |  | ||||||
| 			continue |  | ||||||
| 		} |  | ||||||
| 		out := TimeValueSlice(in) |  | ||||||
| 		assert.Len(t, out, len(in), "Unexpected len at idx %d", idx) |  | ||||||
| 		for i := range out { |  | ||||||
| 			if in[i] == nil { |  | ||||||
| 				assert.Empty(t, out[i], "Unexpected value at idx %d", idx) |  | ||||||
| 			} else { |  | ||||||
| 				assert.Equal(t, *(in[i]), out[i], "Unexpected value at idx %d", idx) |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
|  |  | ||||||
| 		out2 := TimeSlice(out) |  | ||||||
| 		assert.Len(t, out2, len(in), "Unexpected len at idx %d", idx) |  | ||||||
| 		for i := range out2 { |  | ||||||
| 			if in[i] == nil { |  | ||||||
| 				assert.Empty(t, *(out2[i]), "Unexpected value at idx %d", idx) |  | ||||||
| 			} else { |  | ||||||
| 				assert.Equal(t, in[i], out2[i], "Unexpected value at idx %d", idx) |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| var testCasesTimeMap = []map[string]time.Time{ |  | ||||||
| 	{"a": time.Now().AddDate(-100, 0, 0), "b": time.Now()}, |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestTimeMap(t *testing.T) { |  | ||||||
| 	for idx, in := range testCasesTimeMap { |  | ||||||
| 		if in == nil { |  | ||||||
| 			continue |  | ||||||
| 		} |  | ||||||
| 		out := TimeMap(in) |  | ||||||
| 		assert.Len(t, out, len(in), "Unexpected len at idx %d", idx) |  | ||||||
| 		for i := range out { |  | ||||||
| 			assert.Equal(t, in[i], *(out[i]), "Unexpected value at idx %d", idx) |  | ||||||
| 		} |  | ||||||
|  |  | ||||||
| 		out2 := TimeValueMap(out) |  | ||||||
| 		assert.Len(t, out2, len(in), "Unexpected len at idx %d", idx) |  | ||||||
| 		assert.Equal(t, in, out2, "Unexpected value at idx %d", idx) |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
| @@ -1,4 +1,4 @@ | |||||||
| package service | package corehandlers | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
| 	"bytes" | 	"bytes" | ||||||
| @@ -9,16 +9,12 @@ import ( | |||||||
| 	"net/url" | 	"net/url" | ||||||
| 	"regexp" | 	"regexp" | ||||||
| 	"strconv" | 	"strconv" | ||||||
| 	"time" |  | ||||||
| 
 | 
 | ||||||
| 	"github.com/aws/aws-sdk-go/aws" | 	"github.com/aws/aws-sdk-go/aws" | ||||||
| 	"github.com/aws/aws-sdk-go/aws/awserr" | 	"github.com/aws/aws-sdk-go/aws/awserr" | ||||||
|  | 	"github.com/aws/aws-sdk-go/aws/request" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| var sleepDelay = func(delay time.Duration) { |  | ||||||
| 	time.Sleep(delay) |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| // Interface for matching types which also have a Len method. | // Interface for matching types which also have a Len method. | ||||||
| type lener interface { | type lener interface { | ||||||
| 	Len() int | 	Len() int | ||||||
| @@ -27,7 +23,7 @@ type lener interface { | |||||||
| // BuildContentLength builds the content length of a request based on the body, | // BuildContentLength builds the content length of a request based on the body, | ||||||
| // or will use the HTTPRequest.Header's "Content-Length" if defined. If unable | // or will use the HTTPRequest.Header's "Content-Length" if defined. If unable | ||||||
| // to determine request body length and no "Content-Length" was specified it will panic. | // to determine request body length and no "Content-Length" was specified it will panic. | ||||||
| func BuildContentLength(r *Request) { | var BuildContentLengthHandler = request.NamedHandler{"core.BuildContentLengthHandler", func(r *request.Request) { | ||||||
| 	if slength := r.HTTPRequest.Header.Get("Content-Length"); slength != "" { | 	if slength := r.HTTPRequest.Header.Get("Content-Length"); slength != "" { | ||||||
| 		length, _ := strconv.ParseInt(slength, 10, 64) | 		length, _ := strconv.ParseInt(slength, 10, 64) | ||||||
| 		r.HTTPRequest.ContentLength = length | 		r.HTTPRequest.ContentLength = length | ||||||
| @@ -41,27 +37,27 @@ func BuildContentLength(r *Request) { | |||||||
| 	case lener: | 	case lener: | ||||||
| 		length = int64(body.Len()) | 		length = int64(body.Len()) | ||||||
| 	case io.Seeker: | 	case io.Seeker: | ||||||
| 		r.bodyStart, _ = body.Seek(0, 1) | 		r.BodyStart, _ = body.Seek(0, 1) | ||||||
| 		end, _ := body.Seek(0, 2) | 		end, _ := body.Seek(0, 2) | ||||||
| 		body.Seek(r.bodyStart, 0) // make sure to seek back to original location | 		body.Seek(r.BodyStart, 0) // make sure to seek back to original location | ||||||
| 		length = end - r.bodyStart | 		length = end - r.BodyStart | ||||||
| 	default: | 	default: | ||||||
| 		panic("Cannot get length of body, must provide `ContentLength`") | 		panic("Cannot get length of body, must provide `ContentLength`") | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	r.HTTPRequest.ContentLength = length | 	r.HTTPRequest.ContentLength = length | ||||||
| 	r.HTTPRequest.Header.Set("Content-Length", fmt.Sprintf("%d", length)) | 	r.HTTPRequest.Header.Set("Content-Length", fmt.Sprintf("%d", length)) | ||||||
| } | }} | ||||||
| 
 | 
 | ||||||
| // UserAgentHandler is a request handler for injecting User agent into requests. | // UserAgentHandler is a request handler for injecting User agent into requests. | ||||||
| func UserAgentHandler(r *Request) { | var UserAgentHandler = request.NamedHandler{"core.UserAgentHandler", func(r *request.Request) { | ||||||
| 	r.HTTPRequest.Header.Set("User-Agent", aws.SDKName+"/"+aws.SDKVersion) | 	r.HTTPRequest.Header.Set("User-Agent", aws.SDKName+"/"+aws.SDKVersion) | ||||||
| } | }} | ||||||
| 
 | 
 | ||||||
| var reStatusCode = regexp.MustCompile(`^(\d+)`) | var reStatusCode = regexp.MustCompile(`^(\d{3})`) | ||||||
| 
 | 
 | ||||||
| // SendHandler is a request handler to send service request using HTTP client. | // SendHandler is a request handler to send service request using HTTP client. | ||||||
| func SendHandler(r *Request) { | var SendHandler = request.NamedHandler{"core.SendHandler", func(r *request.Request) { | ||||||
| 	var err error | 	var err error | ||||||
| 	r.HTTPResponse, err = r.Service.Config.HTTPClient.Do(r.HTTPRequest) | 	r.HTTPResponse, err = r.Service.Config.HTTPClient.Do(r.HTTPRequest) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| @@ -69,8 +65,8 @@ func SendHandler(r *Request) { | |||||||
| 		// response. e.g. 301 without location header comes back as string | 		// response. e.g. 301 without location header comes back as string | ||||||
| 		// error and r.HTTPResponse is nil. Other url redirect errors will | 		// error and r.HTTPResponse is nil. Other url redirect errors will | ||||||
| 		// comeback in a similar method. | 		// comeback in a similar method. | ||||||
| 		if e, ok := err.(*url.Error); ok { | 		if e, ok := err.(*url.Error); ok && e.Err != nil { | ||||||
| 			if s := reStatusCode.FindStringSubmatch(e.Error()); s != nil { | 			if s := reStatusCode.FindStringSubmatch(e.Err.Error()); s != nil { | ||||||
| 				code, _ := strconv.ParseInt(s[1], 10, 64) | 				code, _ := strconv.ParseInt(s[1], 10, 64) | ||||||
| 				r.HTTPResponse = &http.Response{ | 				r.HTTPResponse = &http.Response{ | ||||||
| 					StatusCode: int(code), | 					StatusCode: int(code), | ||||||
| @@ -93,66 +89,48 @@ func SendHandler(r *Request) { | |||||||
| 		r.Error = awserr.New("RequestError", "send request failed", err) | 		r.Error = awserr.New("RequestError", "send request failed", err) | ||||||
| 		r.Retryable = aws.Bool(true) // network errors are retryable | 		r.Retryable = aws.Bool(true) // network errors are retryable | ||||||
| 	} | 	} | ||||||
| } | }} | ||||||
| 
 | 
 | ||||||
| // ValidateResponseHandler is a request handler to validate service response. | // ValidateResponseHandler is a request handler to validate service response. | ||||||
| func ValidateResponseHandler(r *Request) { | var ValidateResponseHandler = request.NamedHandler{"core.ValidateResponseHandler", func(r *request.Request) { | ||||||
| 	if r.HTTPResponse.StatusCode == 0 || r.HTTPResponse.StatusCode >= 300 { | 	if r.HTTPResponse.StatusCode == 0 || r.HTTPResponse.StatusCode >= 300 { | ||||||
| 		// this may be replaced by an UnmarshalError handler | 		// this may be replaced by an UnmarshalError handler | ||||||
| 		r.Error = awserr.New("UnknownError", "unknown error", nil) | 		r.Error = awserr.New("UnknownError", "unknown error", nil) | ||||||
| 	} | 	} | ||||||
| } | }} | ||||||
| 
 | 
 | ||||||
| // AfterRetryHandler performs final checks to determine if the request should | // AfterRetryHandler performs final checks to determine if the request should | ||||||
| // be retried and how long to delay. | // be retried and how long to delay. | ||||||
| func AfterRetryHandler(r *Request) { | var AfterRetryHandler = request.NamedHandler{"core.AfterRetryHandler", func(r *request.Request) { | ||||||
| 	// If one of the other handlers already set the retry state | 	// If one of the other handlers already set the retry state | ||||||
| 	// we don't want to override it based on the service's state | 	// we don't want to override it based on the service's state | ||||||
| 	if r.Retryable == nil { | 	if r.Retryable == nil { | ||||||
| 		r.Retryable = aws.Bool(r.Service.ShouldRetry(r)) | 		r.Retryable = aws.Bool(r.ShouldRetry(r)) | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	if r.WillRetry() { | 	if r.WillRetry() { | ||||||
| 		r.RetryDelay = r.Service.RetryRules(r) | 		r.RetryDelay = r.RetryRules(r) | ||||||
| 		sleepDelay(r.RetryDelay) | 		r.Service.Config.SleepDelay(r.RetryDelay) | ||||||
| 
 | 
 | ||||||
| 		// when the expired token exception occurs the credentials | 		// when the expired token exception occurs the credentials | ||||||
| 		// need to be expired locally so that the next request to | 		// need to be expired locally so that the next request to | ||||||
| 		// get credentials will trigger a credentials refresh. | 		// get credentials will trigger a credentials refresh. | ||||||
| 		if r.Error != nil { | 		if r.IsErrorExpired() { | ||||||
| 			if err, ok := r.Error.(awserr.Error); ok { | 			r.Service.Config.Credentials.Expire() | ||||||
| 				if isCodeExpiredCreds(err.Code()) { |  | ||||||
| 					r.Config.Credentials.Expire() |  | ||||||
| 				} |  | ||||||
| 			} |  | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		r.RetryCount++ | 		r.RetryCount++ | ||||||
| 		r.Error = nil | 		r.Error = nil | ||||||
| 	} | 	} | ||||||
| } | }} | ||||||
| 
 |  | ||||||
| var ( |  | ||||||
| 	// ErrMissingRegion is an error that is returned if region configuration is |  | ||||||
| 	// not found. |  | ||||||
| 	// |  | ||||||
| 	// @readonly |  | ||||||
| 	ErrMissingRegion error = awserr.New("MissingRegion", "could not find region configuration", nil) |  | ||||||
| 
 |  | ||||||
| 	// ErrMissingEndpoint is an error that is returned if an endpoint cannot be |  | ||||||
| 	// resolved for a service. |  | ||||||
| 	// |  | ||||||
| 	// @readonly |  | ||||||
| 	ErrMissingEndpoint error = awserr.New("MissingEndpoint", "'Endpoint' configuration is required for this service", nil) |  | ||||||
| ) |  | ||||||
| 
 | 
 | ||||||
| // ValidateEndpointHandler is a request handler to validate a request had the | // ValidateEndpointHandler is a request handler to validate a request had the | ||||||
| // appropriate Region and Endpoint set. Will set r.Error if the endpoint or | // appropriate Region and Endpoint set. Will set r.Error if the endpoint or | ||||||
| // region is not valid. | // region is not valid. | ||||||
| func ValidateEndpointHandler(r *Request) { | var ValidateEndpointHandler = request.NamedHandler{"core.ValidateEndpointHandler", func(r *request.Request) { | ||||||
| 	if r.Service.SigningRegion == "" && aws.StringValue(r.Service.Config.Region) == "" { | 	if r.Service.SigningRegion == "" && aws.StringValue(r.Service.Config.Region) == "" { | ||||||
| 		r.Error = ErrMissingRegion | 		r.Error = aws.ErrMissingRegion | ||||||
| 	} else if r.Service.Endpoint == "" { | 	} else if r.Service.Endpoint == "" { | ||||||
| 		r.Error = ErrMissingEndpoint | 		r.Error = aws.ErrMissingEndpoint | ||||||
| 	} | 	} | ||||||
| } | }} | ||||||
							
								
								
									
										144
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/corehandlers/param_validator.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										144
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/corehandlers/param_validator.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,144 @@ | |||||||
|  | package corehandlers | ||||||
|  |  | ||||||
|  | import ( | ||||||
|  | 	"fmt" | ||||||
|  | 	"reflect" | ||||||
|  | 	"strconv" | ||||||
|  | 	"strings" | ||||||
|  |  | ||||||
|  | 	"github.com/aws/aws-sdk-go/aws/awserr" | ||||||
|  | 	"github.com/aws/aws-sdk-go/aws/request" | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | // ValidateParameters is a request handler to validate the input parameters. | ||||||
|  | // Validating parameters only has meaning if done prior to the request being sent. | ||||||
|  | var ValidateParametersHandler = request.NamedHandler{"core.ValidateParametersHandler", func(r *request.Request) { | ||||||
|  | 	if r.ParamsFilled() { | ||||||
|  | 		v := validator{errors: []string{}} | ||||||
|  | 		v.validateAny(reflect.ValueOf(r.Params), "") | ||||||
|  |  | ||||||
|  | 		if count := len(v.errors); count > 0 { | ||||||
|  | 			format := "%d validation errors:\n- %s" | ||||||
|  | 			msg := fmt.Sprintf(format, count, strings.Join(v.errors, "\n- ")) | ||||||
|  | 			r.Error = awserr.New("InvalidParameter", msg, nil) | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | }} | ||||||
|  |  | ||||||
|  | // A validator validates values. Collects validations errors which occurs. | ||||||
|  | type validator struct { | ||||||
|  | 	errors []string | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // validateAny will validate any struct, slice or map type. All validations | ||||||
|  | // are also performed recursively for nested types. | ||||||
|  | func (v *validator) validateAny(value reflect.Value, path string) { | ||||||
|  | 	value = reflect.Indirect(value) | ||||||
|  | 	if !value.IsValid() { | ||||||
|  | 		return | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	switch value.Kind() { | ||||||
|  | 	case reflect.Struct: | ||||||
|  | 		v.validateStruct(value, path) | ||||||
|  | 	case reflect.Slice: | ||||||
|  | 		for i := 0; i < value.Len(); i++ { | ||||||
|  | 			v.validateAny(value.Index(i), path+fmt.Sprintf("[%d]", i)) | ||||||
|  | 		} | ||||||
|  | 	case reflect.Map: | ||||||
|  | 		for _, n := range value.MapKeys() { | ||||||
|  | 			v.validateAny(value.MapIndex(n), path+fmt.Sprintf("[%q]", n.String())) | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // validateStruct will validate the struct value's fields. If the structure has | ||||||
|  | // nested types those types will be validated also. | ||||||
|  | func (v *validator) validateStruct(value reflect.Value, path string) { | ||||||
|  | 	prefix := "." | ||||||
|  | 	if path == "" { | ||||||
|  | 		prefix = "" | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	for i := 0; i < value.Type().NumField(); i++ { | ||||||
|  | 		f := value.Type().Field(i) | ||||||
|  | 		if strings.ToLower(f.Name[0:1]) == f.Name[0:1] { | ||||||
|  | 			continue | ||||||
|  | 		} | ||||||
|  | 		fvalue := value.FieldByName(f.Name) | ||||||
|  |  | ||||||
|  | 		err := validateField(f, fvalue, validateFieldRequired, validateFieldMin) | ||||||
|  | 		if err != nil { | ||||||
|  | 			v.errors = append(v.errors, fmt.Sprintf("%s: %s", err.Error(), path+prefix+f.Name)) | ||||||
|  | 			continue | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		v.validateAny(fvalue, path+prefix+f.Name) | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | type validatorFunc func(f reflect.StructField, fvalue reflect.Value) error | ||||||
|  |  | ||||||
|  | func validateField(f reflect.StructField, fvalue reflect.Value, funcs ...validatorFunc) error { | ||||||
|  | 	for _, fn := range funcs { | ||||||
|  | 		if err := fn(f, fvalue); err != nil { | ||||||
|  | 			return err | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 	return nil | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // Validates that a field has a valid value provided for required fields. | ||||||
|  | func validateFieldRequired(f reflect.StructField, fvalue reflect.Value) error { | ||||||
|  | 	if f.Tag.Get("required") == "" { | ||||||
|  | 		return nil | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	switch fvalue.Kind() { | ||||||
|  | 	case reflect.Ptr, reflect.Slice, reflect.Map: | ||||||
|  | 		if fvalue.IsNil() { | ||||||
|  | 			return fmt.Errorf("missing required parameter") | ||||||
|  | 		} | ||||||
|  | 	default: | ||||||
|  | 		if !fvalue.IsValid() { | ||||||
|  | 			return fmt.Errorf("missing required parameter") | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 	return nil | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // Validates that if a value is provided for a field, that value must be at | ||||||
|  | // least a minimum length. | ||||||
|  | func validateFieldMin(f reflect.StructField, fvalue reflect.Value) error { | ||||||
|  | 	minStr := f.Tag.Get("min") | ||||||
|  | 	if minStr == "" { | ||||||
|  | 		return nil | ||||||
|  | 	} | ||||||
|  | 	min, _ := strconv.ParseInt(minStr, 10, 64) | ||||||
|  |  | ||||||
|  | 	kind := fvalue.Kind() | ||||||
|  | 	if kind == reflect.Ptr { | ||||||
|  | 		if fvalue.IsNil() { | ||||||
|  | 			return nil | ||||||
|  | 		} | ||||||
|  | 		fvalue = fvalue.Elem() | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	switch fvalue.Kind() { | ||||||
|  | 	case reflect.String: | ||||||
|  | 		if int64(fvalue.Len()) < min { | ||||||
|  | 			return fmt.Errorf("field too short, minimum length %d", min) | ||||||
|  | 		} | ||||||
|  | 	case reflect.Slice, reflect.Map: | ||||||
|  | 		if fvalue.IsNil() { | ||||||
|  | 			return nil | ||||||
|  | 		} | ||||||
|  | 		if int64(fvalue.Len()) < min { | ||||||
|  | 			return fmt.Errorf("field too short, minimum length %d", min) | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		// TODO min can also apply to number minimum value. | ||||||
|  |  | ||||||
|  | 	} | ||||||
|  | 	return nil | ||||||
|  | } | ||||||
							
								
								
									
										73
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/credentials/chain_provider_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										73
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/credentials/chain_provider_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,73 +0,0 @@ | |||||||
| package credentials |  | ||||||
|  |  | ||||||
| import ( |  | ||||||
| 	"testing" |  | ||||||
|  |  | ||||||
| 	"github.com/aws/aws-sdk-go/aws/awserr" |  | ||||||
| 	"github.com/stretchr/testify/assert" |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| func TestChainProviderGet(t *testing.T) { |  | ||||||
| 	p := &ChainProvider{ |  | ||||||
| 		Providers: []Provider{ |  | ||||||
| 			&stubProvider{err: awserr.New("FirstError", "first provider error", nil)}, |  | ||||||
| 			&stubProvider{err: awserr.New("SecondError", "second provider error", nil)}, |  | ||||||
| 			&stubProvider{ |  | ||||||
| 				creds: Value{ |  | ||||||
| 					AccessKeyID:     "AKID", |  | ||||||
| 					SecretAccessKey: "SECRET", |  | ||||||
| 					SessionToken:    "", |  | ||||||
| 				}, |  | ||||||
| 			}, |  | ||||||
| 		}, |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	creds, err := p.Retrieve() |  | ||||||
| 	assert.Nil(t, err, "Expect no error") |  | ||||||
| 	assert.Equal(t, "AKID", creds.AccessKeyID, "Expect access key ID to match") |  | ||||||
| 	assert.Equal(t, "SECRET", creds.SecretAccessKey, "Expect secret access key to match") |  | ||||||
| 	assert.Empty(t, creds.SessionToken, "Expect session token to be empty") |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestChainProviderIsExpired(t *testing.T) { |  | ||||||
| 	stubProvider := &stubProvider{expired: true} |  | ||||||
| 	p := &ChainProvider{ |  | ||||||
| 		Providers: []Provider{ |  | ||||||
| 			stubProvider, |  | ||||||
| 		}, |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	assert.True(t, p.IsExpired(), "Expect expired to be true before any Retrieve") |  | ||||||
| 	_, err := p.Retrieve() |  | ||||||
| 	assert.Nil(t, err, "Expect no error") |  | ||||||
| 	assert.False(t, p.IsExpired(), "Expect not expired after retrieve") |  | ||||||
|  |  | ||||||
| 	stubProvider.expired = true |  | ||||||
| 	assert.True(t, p.IsExpired(), "Expect return of expired provider") |  | ||||||
|  |  | ||||||
| 	_, err = p.Retrieve() |  | ||||||
| 	assert.False(t, p.IsExpired(), "Expect not expired after retrieve") |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestChainProviderWithNoProvider(t *testing.T) { |  | ||||||
| 	p := &ChainProvider{ |  | ||||||
| 		Providers: []Provider{}, |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	assert.True(t, p.IsExpired(), "Expect expired with no providers") |  | ||||||
| 	_, err := p.Retrieve() |  | ||||||
| 	assert.Equal(t, ErrNoValidProvidersFoundInChain, err, "Expect no providers error returned") |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestChainProviderWithNoValidProvider(t *testing.T) { |  | ||||||
| 	p := &ChainProvider{ |  | ||||||
| 		Providers: []Provider{ |  | ||||||
| 			&stubProvider{err: awserr.New("FirstError", "first provider error", nil)}, |  | ||||||
| 			&stubProvider{err: awserr.New("SecondError", "second provider error", nil)}, |  | ||||||
| 		}, |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	assert.True(t, p.IsExpired(), "Expect expired with no providers") |  | ||||||
| 	_, err := p.Retrieve() |  | ||||||
| 	assert.Equal(t, ErrNoValidProvidersFoundInChain, err, "Expect no providers error returned") |  | ||||||
| } |  | ||||||
							
								
								
									
										62
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/credentials/credentials_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										62
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/credentials/credentials_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,62 +0,0 @@ | |||||||
| package credentials |  | ||||||
|  |  | ||||||
| import ( |  | ||||||
| 	"testing" |  | ||||||
|  |  | ||||||
| 	"github.com/aws/aws-sdk-go/aws/awserr" |  | ||||||
| 	"github.com/stretchr/testify/assert" |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| type stubProvider struct { |  | ||||||
| 	creds   Value |  | ||||||
| 	expired bool |  | ||||||
| 	err     error |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func (s *stubProvider) Retrieve() (Value, error) { |  | ||||||
| 	s.expired = false |  | ||||||
| 	return s.creds, s.err |  | ||||||
| } |  | ||||||
| func (s *stubProvider) IsExpired() bool { |  | ||||||
| 	return s.expired |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestCredentialsGet(t *testing.T) { |  | ||||||
| 	c := NewCredentials(&stubProvider{ |  | ||||||
| 		creds: Value{ |  | ||||||
| 			AccessKeyID:     "AKID", |  | ||||||
| 			SecretAccessKey: "SECRET", |  | ||||||
| 			SessionToken:    "", |  | ||||||
| 		}, |  | ||||||
| 		expired: true, |  | ||||||
| 	}) |  | ||||||
|  |  | ||||||
| 	creds, err := c.Get() |  | ||||||
| 	assert.Nil(t, err, "Expected no error") |  | ||||||
| 	assert.Equal(t, "AKID", creds.AccessKeyID, "Expect access key ID to match") |  | ||||||
| 	assert.Equal(t, "SECRET", creds.SecretAccessKey, "Expect secret access key to match") |  | ||||||
| 	assert.Empty(t, creds.SessionToken, "Expect session token to be empty") |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestCredentialsGetWithError(t *testing.T) { |  | ||||||
| 	c := NewCredentials(&stubProvider{err: awserr.New("provider error", "", nil), expired: true}) |  | ||||||
|  |  | ||||||
| 	_, err := c.Get() |  | ||||||
| 	assert.Equal(t, "provider error", err.(awserr.Error).Code(), "Expected provider error") |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestCredentialsExpire(t *testing.T) { |  | ||||||
| 	stub := &stubProvider{} |  | ||||||
| 	c := NewCredentials(stub) |  | ||||||
|  |  | ||||||
| 	stub.expired = false |  | ||||||
| 	assert.True(t, c.IsExpired(), "Expected to start out expired") |  | ||||||
| 	c.Expire() |  | ||||||
| 	assert.True(t, c.IsExpired(), "Expected to be expired") |  | ||||||
|  |  | ||||||
| 	c.forceRefresh = false |  | ||||||
| 	assert.False(t, c.IsExpired(), "Expected not to be expired") |  | ||||||
|  |  | ||||||
| 	stub.expired = true |  | ||||||
| 	assert.True(t, c.IsExpired(), "Expected to be expired") |  | ||||||
| } |  | ||||||
| @@ -1,161 +0,0 @@ | |||||||
| package ec2rolecreds_test |  | ||||||
|  |  | ||||||
| import ( |  | ||||||
| 	"fmt" |  | ||||||
| 	"net/http" |  | ||||||
| 	"net/http/httptest" |  | ||||||
| 	"testing" |  | ||||||
| 	"time" |  | ||||||
|  |  | ||||||
| 	"github.com/stretchr/testify/assert" |  | ||||||
|  |  | ||||||
| 	"github.com/aws/aws-sdk-go/aws" |  | ||||||
| 	"github.com/aws/aws-sdk-go/aws/awserr" |  | ||||||
| 	"github.com/aws/aws-sdk-go/aws/credentials/ec2rolecreds" |  | ||||||
| 	"github.com/aws/aws-sdk-go/aws/ec2metadata" |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| const credsRespTmpl = `{ |  | ||||||
|   "Code": "Success", |  | ||||||
|   "Type": "AWS-HMAC", |  | ||||||
|   "AccessKeyId" : "accessKey", |  | ||||||
|   "SecretAccessKey" : "secret", |  | ||||||
|   "Token" : "token", |  | ||||||
|   "Expiration" : "%s", |  | ||||||
|   "LastUpdated" : "2009-11-23T0:00:00Z" |  | ||||||
| }` |  | ||||||
|  |  | ||||||
| const credsFailRespTmpl = `{ |  | ||||||
|   "Code": "ErrorCode", |  | ||||||
|   "Message": "ErrorMsg", |  | ||||||
|   "LastUpdated": "2009-11-23T0:00:00Z" |  | ||||||
| }` |  | ||||||
|  |  | ||||||
| func initTestServer(expireOn string, failAssume bool) *httptest.Server { |  | ||||||
| 	server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { |  | ||||||
| 		if r.URL.Path == "/latest/meta-data/iam/security-credentials" { |  | ||||||
| 			fmt.Fprintln(w, "RoleName") |  | ||||||
| 		} else if r.URL.Path == "/latest/meta-data/iam/security-credentials/RoleName" { |  | ||||||
| 			if failAssume { |  | ||||||
| 				fmt.Fprintf(w, credsFailRespTmpl) |  | ||||||
| 			} else { |  | ||||||
| 				fmt.Fprintf(w, credsRespTmpl, expireOn) |  | ||||||
| 			} |  | ||||||
| 		} else { |  | ||||||
| 			http.Error(w, "bad request", http.StatusBadRequest) |  | ||||||
| 		} |  | ||||||
| 	})) |  | ||||||
|  |  | ||||||
| 	return server |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestEC2RoleProvider(t *testing.T) { |  | ||||||
| 	server := initTestServer("2014-12-16T01:51:37Z", false) |  | ||||||
| 	defer server.Close() |  | ||||||
|  |  | ||||||
| 	p := &ec2rolecreds.EC2RoleProvider{ |  | ||||||
| 		Client: ec2metadata.New(&ec2metadata.Config{Endpoint: aws.String(server.URL + "/latest")}), |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	creds, err := p.Retrieve() |  | ||||||
| 	assert.Nil(t, err, "Expect no error") |  | ||||||
|  |  | ||||||
| 	assert.Equal(t, "accessKey", creds.AccessKeyID, "Expect access key ID to match") |  | ||||||
| 	assert.Equal(t, "secret", creds.SecretAccessKey, "Expect secret access key to match") |  | ||||||
| 	assert.Equal(t, "token", creds.SessionToken, "Expect session token to match") |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestEC2RoleProviderFailAssume(t *testing.T) { |  | ||||||
| 	server := initTestServer("2014-12-16T01:51:37Z", true) |  | ||||||
| 	defer server.Close() |  | ||||||
|  |  | ||||||
| 	p := &ec2rolecreds.EC2RoleProvider{ |  | ||||||
| 		Client: ec2metadata.New(&ec2metadata.Config{Endpoint: aws.String(server.URL + "/latest")}), |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	creds, err := p.Retrieve() |  | ||||||
| 	assert.Error(t, err, "Expect error") |  | ||||||
|  |  | ||||||
| 	e := err.(awserr.Error) |  | ||||||
| 	assert.Equal(t, "ErrorCode", e.Code()) |  | ||||||
| 	assert.Equal(t, "ErrorMsg", e.Message()) |  | ||||||
| 	assert.Nil(t, e.OrigErr()) |  | ||||||
|  |  | ||||||
| 	assert.Equal(t, "", creds.AccessKeyID, "Expect access key ID to match") |  | ||||||
| 	assert.Equal(t, "", creds.SecretAccessKey, "Expect secret access key to match") |  | ||||||
| 	assert.Equal(t, "", creds.SessionToken, "Expect session token to match") |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestEC2RoleProviderIsExpired(t *testing.T) { |  | ||||||
| 	server := initTestServer("2014-12-16T01:51:37Z", false) |  | ||||||
| 	defer server.Close() |  | ||||||
|  |  | ||||||
| 	p := &ec2rolecreds.EC2RoleProvider{ |  | ||||||
| 		Client: ec2metadata.New(&ec2metadata.Config{Endpoint: aws.String(server.URL + "/latest")}), |  | ||||||
| 	} |  | ||||||
| 	p.CurrentTime = func() time.Time { |  | ||||||
| 		return time.Date(2014, 12, 15, 21, 26, 0, 0, time.UTC) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	assert.True(t, p.IsExpired(), "Expect creds to be expired before retrieve.") |  | ||||||
|  |  | ||||||
| 	_, err := p.Retrieve() |  | ||||||
| 	assert.Nil(t, err, "Expect no error") |  | ||||||
|  |  | ||||||
| 	assert.False(t, p.IsExpired(), "Expect creds to not be expired after retrieve.") |  | ||||||
|  |  | ||||||
| 	p.CurrentTime = func() time.Time { |  | ||||||
| 		return time.Date(3014, 12, 15, 21, 26, 0, 0, time.UTC) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	assert.True(t, p.IsExpired(), "Expect creds to be expired.") |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestEC2RoleProviderExpiryWindowIsExpired(t *testing.T) { |  | ||||||
| 	server := initTestServer("2014-12-16T01:51:37Z", false) |  | ||||||
| 	defer server.Close() |  | ||||||
|  |  | ||||||
| 	p := &ec2rolecreds.EC2RoleProvider{ |  | ||||||
| 		Client:       ec2metadata.New(&ec2metadata.Config{Endpoint: aws.String(server.URL + "/latest")}), |  | ||||||
| 		ExpiryWindow: time.Hour * 1, |  | ||||||
| 	} |  | ||||||
| 	p.CurrentTime = func() time.Time { |  | ||||||
| 		return time.Date(2014, 12, 15, 0, 51, 37, 0, time.UTC) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	assert.True(t, p.IsExpired(), "Expect creds to be expired before retrieve.") |  | ||||||
|  |  | ||||||
| 	_, err := p.Retrieve() |  | ||||||
| 	assert.Nil(t, err, "Expect no error") |  | ||||||
|  |  | ||||||
| 	assert.False(t, p.IsExpired(), "Expect creds to not be expired after retrieve.") |  | ||||||
|  |  | ||||||
| 	p.CurrentTime = func() time.Time { |  | ||||||
| 		return time.Date(2014, 12, 16, 0, 55, 37, 0, time.UTC) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	assert.True(t, p.IsExpired(), "Expect creds to be expired.") |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func BenchmarkEC2RoleProvider(b *testing.B) { |  | ||||||
| 	server := initTestServer("2014-12-16T01:51:37Z", false) |  | ||||||
| 	defer server.Close() |  | ||||||
|  |  | ||||||
| 	p := &ec2rolecreds.EC2RoleProvider{ |  | ||||||
| 		Client: ec2metadata.New(&ec2metadata.Config{Endpoint: aws.String(server.URL + "/latest")}), |  | ||||||
| 	} |  | ||||||
| 	_, err := p.Retrieve() |  | ||||||
| 	if err != nil { |  | ||||||
| 		b.Fatal(err) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	b.ResetTimer() |  | ||||||
| 	b.RunParallel(func(pb *testing.PB) { |  | ||||||
| 		for pb.Next() { |  | ||||||
| 			_, err := p.Retrieve() |  | ||||||
| 			if err != nil { |  | ||||||
| 				b.Fatal(err) |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
| 	}) |  | ||||||
| } |  | ||||||
							
								
								
									
										70
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/credentials/env_provider_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										70
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/credentials/env_provider_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,70 +0,0 @@ | |||||||
| package credentials |  | ||||||
|  |  | ||||||
| import ( |  | ||||||
| 	"github.com/stretchr/testify/assert" |  | ||||||
| 	"os" |  | ||||||
| 	"testing" |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| func TestEnvProviderRetrieve(t *testing.T) { |  | ||||||
| 	os.Clearenv() |  | ||||||
| 	os.Setenv("AWS_ACCESS_KEY_ID", "access") |  | ||||||
| 	os.Setenv("AWS_SECRET_ACCESS_KEY", "secret") |  | ||||||
| 	os.Setenv("AWS_SESSION_TOKEN", "token") |  | ||||||
|  |  | ||||||
| 	e := EnvProvider{} |  | ||||||
| 	creds, err := e.Retrieve() |  | ||||||
| 	assert.Nil(t, err, "Expect no error") |  | ||||||
|  |  | ||||||
| 	assert.Equal(t, "access", creds.AccessKeyID, "Expect access key ID to match") |  | ||||||
| 	assert.Equal(t, "secret", creds.SecretAccessKey, "Expect secret access key to match") |  | ||||||
| 	assert.Equal(t, "token", creds.SessionToken, "Expect session token to match") |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestEnvProviderIsExpired(t *testing.T) { |  | ||||||
| 	os.Clearenv() |  | ||||||
| 	os.Setenv("AWS_ACCESS_KEY_ID", "access") |  | ||||||
| 	os.Setenv("AWS_SECRET_ACCESS_KEY", "secret") |  | ||||||
| 	os.Setenv("AWS_SESSION_TOKEN", "token") |  | ||||||
|  |  | ||||||
| 	e := EnvProvider{} |  | ||||||
|  |  | ||||||
| 	assert.True(t, e.IsExpired(), "Expect creds to be expired before retrieve.") |  | ||||||
|  |  | ||||||
| 	_, err := e.Retrieve() |  | ||||||
| 	assert.Nil(t, err, "Expect no error") |  | ||||||
|  |  | ||||||
| 	assert.False(t, e.IsExpired(), "Expect creds to not be expired after retrieve.") |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestEnvProviderNoAccessKeyID(t *testing.T) { |  | ||||||
| 	os.Clearenv() |  | ||||||
| 	os.Setenv("AWS_SECRET_ACCESS_KEY", "secret") |  | ||||||
|  |  | ||||||
| 	e := EnvProvider{} |  | ||||||
| 	creds, err := e.Retrieve() |  | ||||||
| 	assert.Equal(t, ErrAccessKeyIDNotFound, err, "ErrAccessKeyIDNotFound expected, but was %#v error: %#v", creds, err) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestEnvProviderNoSecretAccessKey(t *testing.T) { |  | ||||||
| 	os.Clearenv() |  | ||||||
| 	os.Setenv("AWS_ACCESS_KEY_ID", "access") |  | ||||||
|  |  | ||||||
| 	e := EnvProvider{} |  | ||||||
| 	creds, err := e.Retrieve() |  | ||||||
| 	assert.Equal(t, ErrSecretAccessKeyNotFound, err, "ErrSecretAccessKeyNotFound expected, but was %#v error: %#v", creds, err) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestEnvProviderAlternateNames(t *testing.T) { |  | ||||||
| 	os.Clearenv() |  | ||||||
| 	os.Setenv("AWS_ACCESS_KEY", "access") |  | ||||||
| 	os.Setenv("AWS_SECRET_KEY", "secret") |  | ||||||
|  |  | ||||||
| 	e := EnvProvider{} |  | ||||||
| 	creds, err := e.Retrieve() |  | ||||||
| 	assert.Nil(t, err, "Expect no error") |  | ||||||
|  |  | ||||||
| 	assert.Equal(t, "access", creds.AccessKeyID, "Expected access key ID") |  | ||||||
| 	assert.Equal(t, "secret", creds.SecretAccessKey, "Expected secret access key") |  | ||||||
| 	assert.Empty(t, creds.SessionToken, "Expected no token") |  | ||||||
| } |  | ||||||
| @@ -1,90 +0,0 @@ | |||||||
| package credentials |  | ||||||
|  |  | ||||||
| import ( |  | ||||||
| 	"github.com/stretchr/testify/assert" |  | ||||||
| 	"os" |  | ||||||
| 	"testing" |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| func TestSharedCredentialsProvider(t *testing.T) { |  | ||||||
| 	os.Clearenv() |  | ||||||
|  |  | ||||||
| 	p := SharedCredentialsProvider{Filename: "example.ini", Profile: ""} |  | ||||||
| 	creds, err := p.Retrieve() |  | ||||||
| 	assert.Nil(t, err, "Expect no error") |  | ||||||
|  |  | ||||||
| 	assert.Equal(t, "accessKey", creds.AccessKeyID, "Expect access key ID to match") |  | ||||||
| 	assert.Equal(t, "secret", creds.SecretAccessKey, "Expect secret access key to match") |  | ||||||
| 	assert.Equal(t, "token", creds.SessionToken, "Expect session token to match") |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestSharedCredentialsProviderIsExpired(t *testing.T) { |  | ||||||
| 	os.Clearenv() |  | ||||||
|  |  | ||||||
| 	p := SharedCredentialsProvider{Filename: "example.ini", Profile: ""} |  | ||||||
|  |  | ||||||
| 	assert.True(t, p.IsExpired(), "Expect creds to be expired before retrieve") |  | ||||||
|  |  | ||||||
| 	_, err := p.Retrieve() |  | ||||||
| 	assert.Nil(t, err, "Expect no error") |  | ||||||
|  |  | ||||||
| 	assert.False(t, p.IsExpired(), "Expect creds to not be expired after retrieve") |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestSharedCredentialsProviderWithAWS_SHARED_CREDENTIALS_FILE(t *testing.T) { |  | ||||||
| 	os.Clearenv() |  | ||||||
| 	os.Setenv("AWS_SHARED_CREDENTIALS_FILE", "example.ini") |  | ||||||
| 	p := SharedCredentialsProvider{} |  | ||||||
| 	creds, err := p.Retrieve() |  | ||||||
|  |  | ||||||
| 	assert.Nil(t, err, "Expect no error") |  | ||||||
|  |  | ||||||
| 	assert.Equal(t, "accessKey", creds.AccessKeyID, "Expect access key ID to match") |  | ||||||
| 	assert.Equal(t, "secret", creds.SecretAccessKey, "Expect secret access key to match") |  | ||||||
| 	assert.Equal(t, "token", creds.SessionToken, "Expect session token to match") |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestSharedCredentialsProviderWithAWS_PROFILE(t *testing.T) { |  | ||||||
| 	os.Clearenv() |  | ||||||
| 	os.Setenv("AWS_PROFILE", "no_token") |  | ||||||
|  |  | ||||||
| 	p := SharedCredentialsProvider{Filename: "example.ini", Profile: ""} |  | ||||||
| 	creds, err := p.Retrieve() |  | ||||||
| 	assert.Nil(t, err, "Expect no error") |  | ||||||
|  |  | ||||||
| 	assert.Equal(t, "accessKey", creds.AccessKeyID, "Expect access key ID to match") |  | ||||||
| 	assert.Equal(t, "secret", creds.SecretAccessKey, "Expect secret access key to match") |  | ||||||
| 	assert.Empty(t, creds.SessionToken, "Expect no token") |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestSharedCredentialsProviderWithoutTokenFromProfile(t *testing.T) { |  | ||||||
| 	os.Clearenv() |  | ||||||
|  |  | ||||||
| 	p := SharedCredentialsProvider{Filename: "example.ini", Profile: "no_token"} |  | ||||||
| 	creds, err := p.Retrieve() |  | ||||||
| 	assert.Nil(t, err, "Expect no error") |  | ||||||
|  |  | ||||||
| 	assert.Equal(t, "accessKey", creds.AccessKeyID, "Expect access key ID to match") |  | ||||||
| 	assert.Equal(t, "secret", creds.SecretAccessKey, "Expect secret access key to match") |  | ||||||
| 	assert.Empty(t, creds.SessionToken, "Expect no token") |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func BenchmarkSharedCredentialsProvider(b *testing.B) { |  | ||||||
| 	os.Clearenv() |  | ||||||
|  |  | ||||||
| 	p := SharedCredentialsProvider{Filename: "example.ini", Profile: ""} |  | ||||||
| 	_, err := p.Retrieve() |  | ||||||
| 	if err != nil { |  | ||||||
| 		b.Fatal(err) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	b.ResetTimer() |  | ||||||
| 	b.RunParallel(func(pb *testing.PB) { |  | ||||||
| 		for pb.Next() { |  | ||||||
| 			_, err := p.Retrieve() |  | ||||||
| 			if err != nil { |  | ||||||
| 				b.Fatal(err) |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
| 	}) |  | ||||||
| } |  | ||||||
							
								
								
									
										34
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/credentials/static_provider_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										34
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/credentials/static_provider_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,34 +0,0 @@ | |||||||
| package credentials |  | ||||||
|  |  | ||||||
| import ( |  | ||||||
| 	"github.com/stretchr/testify/assert" |  | ||||||
| 	"testing" |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| func TestStaticProviderGet(t *testing.T) { |  | ||||||
| 	s := StaticProvider{ |  | ||||||
| 		Value: Value{ |  | ||||||
| 			AccessKeyID:     "AKID", |  | ||||||
| 			SecretAccessKey: "SECRET", |  | ||||||
| 			SessionToken:    "", |  | ||||||
| 		}, |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	creds, err := s.Retrieve() |  | ||||||
| 	assert.Nil(t, err, "Expect no error") |  | ||||||
| 	assert.Equal(t, "AKID", creds.AccessKeyID, "Expect access key ID to match") |  | ||||||
| 	assert.Equal(t, "SECRET", creds.SecretAccessKey, "Expect secret access key to match") |  | ||||||
| 	assert.Empty(t, creds.SessionToken, "Expect no session token") |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestStaticProviderIsExpired(t *testing.T) { |  | ||||||
| 	s := StaticProvider{ |  | ||||||
| 		Value: Value{ |  | ||||||
| 			AccessKeyID:     "AKID", |  | ||||||
| 			SecretAccessKey: "SECRET", |  | ||||||
| 			SessionToken:    "", |  | ||||||
| 		}, |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	assert.False(t, s.IsExpired(), "Expect static credentials to never expire") |  | ||||||
| } |  | ||||||
| @@ -54,6 +54,9 @@ type AssumeRoleProvider struct { | |||||||
| 	// Expiry duration of the STS credentials. Defaults to 15 minutes if not set. | 	// Expiry duration of the STS credentials. Defaults to 15 minutes if not set. | ||||||
| 	Duration time.Duration | 	Duration time.Duration | ||||||
|  |  | ||||||
|  | 	// Optional ExternalID to pass along, defaults to nil if not set. | ||||||
|  | 	ExternalID *string | ||||||
|  |  | ||||||
| 	// ExpiryWindow will allow the credentials to trigger refreshing prior to | 	// ExpiryWindow will allow the credentials to trigger refreshing prior to | ||||||
| 	// the credentials actually expiring. This is beneficial so race conditions | 	// the credentials actually expiring. This is beneficial so race conditions | ||||||
| 	// with expiring credentials do not cause request to fail unexpectedly | 	// with expiring credentials do not cause request to fail unexpectedly | ||||||
| @@ -104,6 +107,7 @@ func (p *AssumeRoleProvider) Retrieve() (credentials.Value, error) { | |||||||
| 		DurationSeconds: aws.Int64(int64(p.Duration / time.Second)), | 		DurationSeconds: aws.Int64(int64(p.Duration / time.Second)), | ||||||
| 		RoleArn:         aws.String(p.RoleARN), | 		RoleArn:         aws.String(p.RoleARN), | ||||||
| 		RoleSessionName: aws.String(p.RoleSessionName), | 		RoleSessionName: aws.String(p.RoleSessionName), | ||||||
|  | 		ExternalId:      p.ExternalID, | ||||||
| 	}) | 	}) | ||||||
|  |  | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
|   | |||||||
| @@ -1,59 +0,0 @@ | |||||||
| package stscreds |  | ||||||
|  |  | ||||||
| import ( |  | ||||||
| 	"testing" |  | ||||||
| 	"time" |  | ||||||
|  |  | ||||||
| 	"github.com/aws/aws-sdk-go/aws" |  | ||||||
| 	"github.com/aws/aws-sdk-go/service/sts" |  | ||||||
| 	"github.com/stretchr/testify/assert" |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| type stubSTS struct { |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func (s *stubSTS) AssumeRole(input *sts.AssumeRoleInput) (*sts.AssumeRoleOutput, error) { |  | ||||||
| 	expiry := time.Now().Add(60 * time.Minute) |  | ||||||
| 	return &sts.AssumeRoleOutput{ |  | ||||||
| 		Credentials: &sts.Credentials{ |  | ||||||
| 			// Just reflect the role arn to the provider. |  | ||||||
| 			AccessKeyId:     input.RoleArn, |  | ||||||
| 			SecretAccessKey: aws.String("assumedSecretAccessKey"), |  | ||||||
| 			SessionToken:    aws.String("assumedSessionToken"), |  | ||||||
| 			Expiration:      &expiry, |  | ||||||
| 		}, |  | ||||||
| 	}, nil |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestAssumeRoleProvider(t *testing.T) { |  | ||||||
| 	stub := &stubSTS{} |  | ||||||
| 	p := &AssumeRoleProvider{ |  | ||||||
| 		Client:  stub, |  | ||||||
| 		RoleARN: "roleARN", |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	creds, err := p.Retrieve() |  | ||||||
| 	assert.Nil(t, err, "Expect no error") |  | ||||||
|  |  | ||||||
| 	assert.Equal(t, "roleARN", creds.AccessKeyID, "Expect access key ID to be reflected role ARN") |  | ||||||
| 	assert.Equal(t, "assumedSecretAccessKey", creds.SecretAccessKey, "Expect secret access key to match") |  | ||||||
| 	assert.Equal(t, "assumedSessionToken", creds.SessionToken, "Expect session token to match") |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func BenchmarkAssumeRoleProvider(b *testing.B) { |  | ||||||
| 	stub := &stubSTS{} |  | ||||||
| 	p := &AssumeRoleProvider{ |  | ||||||
| 		Client:  stub, |  | ||||||
| 		RoleARN: "roleARN", |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	b.ResetTimer() |  | ||||||
| 	b.RunParallel(func(pb *testing.PB) { |  | ||||||
| 		for pb.Next() { |  | ||||||
| 			_, err := p.Retrieve() |  | ||||||
| 			if err != nil { |  | ||||||
| 				b.Fatal(err) |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
| 	}) |  | ||||||
| } |  | ||||||
							
								
								
									
										3
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/defaults/defaults.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/defaults/defaults.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -35,4 +35,5 @@ var DefaultConfig = aws.NewConfig(). | |||||||
| 	WithHTTPClient(http.DefaultClient). | 	WithHTTPClient(http.DefaultClient). | ||||||
| 	WithMaxRetries(aws.DefaultRetries). | 	WithMaxRetries(aws.DefaultRetries). | ||||||
| 	WithLogger(aws.NewDefaultLogger()). | 	WithLogger(aws.NewDefaultLogger()). | ||||||
| 	WithLogLevel(aws.LogOff) | 	WithLogLevel(aws.LogOff). | ||||||
|  | 	WithSleepDelay(time.Sleep) | ||||||
|   | |||||||
							
								
								
									
										6
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/ec2metadata/api.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/ec2metadata/api.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -3,19 +3,19 @@ package ec2metadata | |||||||
| import ( | import ( | ||||||
| 	"path" | 	"path" | ||||||
|  |  | ||||||
| 	"github.com/aws/aws-sdk-go/aws/service" | 	"github.com/aws/aws-sdk-go/aws/request" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| // GetMetadata uses the path provided to request | // GetMetadata uses the path provided to request | ||||||
| func (c *Client) GetMetadata(p string) (string, error) { | func (c *Client) GetMetadata(p string) (string, error) { | ||||||
| 	op := &service.Operation{ | 	op := &request.Operation{ | ||||||
| 		Name:       "GetMetadata", | 		Name:       "GetMetadata", | ||||||
| 		HTTPMethod: "GET", | 		HTTPMethod: "GET", | ||||||
| 		HTTPPath:   path.Join("/", "meta-data", p), | 		HTTPPath:   path.Join("/", "meta-data", p), | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	output := &metadataOutput{} | 	output := &metadataOutput{} | ||||||
| 	req := service.NewRequest(c.Service, op, nil, output) | 	req := request.New(c.Service.ServiceInfo, c.Service.Handlers, c.Service.Retryer, op, nil, output) | ||||||
|  |  | ||||||
| 	return output.Content, req.Send() | 	return output.Content, req.Send() | ||||||
| } | } | ||||||
|   | |||||||
							
								
								
									
										100
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/ec2metadata/api_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										100
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/ec2metadata/api_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,100 +0,0 @@ | |||||||
| package ec2metadata_test |  | ||||||
|  |  | ||||||
| import ( |  | ||||||
| 	"bytes" |  | ||||||
| 	"io/ioutil" |  | ||||||
| 	"net/http" |  | ||||||
| 	"net/http/httptest" |  | ||||||
| 	"path" |  | ||||||
| 	"testing" |  | ||||||
|  |  | ||||||
| 	"github.com/stretchr/testify/assert" |  | ||||||
|  |  | ||||||
| 	"github.com/aws/aws-sdk-go/aws" |  | ||||||
| 	"github.com/aws/aws-sdk-go/aws/awserr" |  | ||||||
| 	"github.com/aws/aws-sdk-go/aws/ec2metadata" |  | ||||||
| 	"github.com/aws/aws-sdk-go/aws/service" |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| func initTestServer(path string, resp string) *httptest.Server { |  | ||||||
| 	return httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { |  | ||||||
| 		if r.RequestURI != path { |  | ||||||
| 			http.Error(w, "not found", http.StatusNotFound) |  | ||||||
| 			return |  | ||||||
| 		} |  | ||||||
|  |  | ||||||
| 		w.Write([]byte(resp)) |  | ||||||
| 	})) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestEndpoint(t *testing.T) { |  | ||||||
| 	c := ec2metadata.New(&ec2metadata.Config{}) |  | ||||||
| 	op := &service.Operation{ |  | ||||||
| 		Name:       "GetMetadata", |  | ||||||
| 		HTTPMethod: "GET", |  | ||||||
| 		HTTPPath:   path.Join("/", "meta-data", "testpath"), |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	req := service.NewRequest(c.Service, op, nil, nil) |  | ||||||
| 	assert.Equal(t, "http://169.254.169.254/latest", req.Endpoint) |  | ||||||
| 	assert.Equal(t, "http://169.254.169.254/latest/meta-data/testpath", req.HTTPRequest.URL.String()) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestGetMetadata(t *testing.T) { |  | ||||||
| 	server := initTestServer( |  | ||||||
| 		"/latest/meta-data/some/path", |  | ||||||
| 		"success", // real response includes suffix |  | ||||||
| 	) |  | ||||||
| 	defer server.Close() |  | ||||||
| 	c := ec2metadata.New(&ec2metadata.Config{Endpoint: aws.String(server.URL + "/latest")}) |  | ||||||
|  |  | ||||||
| 	resp, err := c.GetMetadata("some/path") |  | ||||||
|  |  | ||||||
| 	assert.NoError(t, err) |  | ||||||
| 	assert.Equal(t, "success", resp) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestGetRegion(t *testing.T) { |  | ||||||
| 	server := initTestServer( |  | ||||||
| 		"/latest/meta-data/placement/availability-zone", |  | ||||||
| 		"us-west-2a", // real response includes suffix |  | ||||||
| 	) |  | ||||||
| 	defer server.Close() |  | ||||||
| 	c := ec2metadata.New(&ec2metadata.Config{Endpoint: aws.String(server.URL + "/latest")}) |  | ||||||
|  |  | ||||||
| 	region, err := c.Region() |  | ||||||
|  |  | ||||||
| 	assert.NoError(t, err) |  | ||||||
| 	assert.Equal(t, "us-west-2", region) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestMetadataAvailable(t *testing.T) { |  | ||||||
| 	server := initTestServer( |  | ||||||
| 		"/latest/meta-data/instance-id", |  | ||||||
| 		"instance-id", |  | ||||||
| 	) |  | ||||||
| 	defer server.Close() |  | ||||||
| 	c := ec2metadata.New(&ec2metadata.Config{Endpoint: aws.String(server.URL + "/latest")}) |  | ||||||
|  |  | ||||||
| 	available := c.Available() |  | ||||||
|  |  | ||||||
| 	assert.True(t, available) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestMetadataNotAvailable(t *testing.T) { |  | ||||||
| 	c := ec2metadata.New(nil) |  | ||||||
| 	c.Handlers.Send.Clear() |  | ||||||
| 	c.Handlers.Send.PushBack(func(r *service.Request) { |  | ||||||
| 		r.HTTPResponse = &http.Response{ |  | ||||||
| 			StatusCode: int(0), |  | ||||||
| 			Status:     http.StatusText(int(0)), |  | ||||||
| 			Body:       ioutil.NopCloser(bytes.NewReader([]byte{})), |  | ||||||
| 		} |  | ||||||
| 		r.Error = awserr.New("RequestError", "send request failed", nil) |  | ||||||
| 		r.Retryable = aws.Bool(true) // network errors are retryable |  | ||||||
| 	}) |  | ||||||
|  |  | ||||||
| 	available := c.Available() |  | ||||||
|  |  | ||||||
| 	assert.False(t, available) |  | ||||||
| } |  | ||||||
							
								
								
									
										20
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/ec2metadata/service.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										20
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/ec2metadata/service.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -7,7 +7,9 @@ import ( | |||||||
| 	"github.com/aws/aws-sdk-go/aws" | 	"github.com/aws/aws-sdk-go/aws" | ||||||
| 	"github.com/aws/aws-sdk-go/aws/awserr" | 	"github.com/aws/aws-sdk-go/aws/awserr" | ||||||
| 	"github.com/aws/aws-sdk-go/aws/credentials" | 	"github.com/aws/aws-sdk-go/aws/credentials" | ||||||
|  | 	"github.com/aws/aws-sdk-go/aws/request" | ||||||
| 	"github.com/aws/aws-sdk-go/aws/service" | 	"github.com/aws/aws-sdk-go/aws/service" | ||||||
|  | 	"github.com/aws/aws-sdk-go/aws/service/serviceinfo" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| // DefaultRetries states the default number of times the service client will | // DefaultRetries states the default number of times the service client will | ||||||
| @@ -56,10 +58,12 @@ type Client struct { | |||||||
| // with the defaults package and credentials EC2 Role Provider. | // with the defaults package and credentials EC2 Role Provider. | ||||||
| func New(config *Config) *Client { | func New(config *Config) *Client { | ||||||
| 	service := &service.Service{ | 	service := &service.Service{ | ||||||
| 		Config:      copyConfig(config), | 		ServiceInfo: serviceinfo.ServiceInfo{ | ||||||
| 		ServiceName: "Client", | 			Config:      copyConfig(config), | ||||||
| 		Endpoint:    "http://169.254.169.254/latest", | 			ServiceName: "Client", | ||||||
| 		APIVersion:  "latest", | 			Endpoint:    "http://169.254.169.254/latest", | ||||||
|  | 			APIVersion:  "latest", | ||||||
|  | 		}, | ||||||
| 	} | 	} | ||||||
| 	service.Initialize() | 	service.Initialize() | ||||||
| 	service.Handlers.Unmarshal.PushBack(unmarshalHandler) | 	service.Handlers.Unmarshal.PushBack(unmarshalHandler) | ||||||
| @@ -103,7 +107,7 @@ type metadataOutput struct { | |||||||
| 	Content string | 	Content string | ||||||
| } | } | ||||||
|  |  | ||||||
| func unmarshalHandler(r *service.Request) { | func unmarshalHandler(r *request.Request) { | ||||||
| 	defer r.HTTPResponse.Body.Close() | 	defer r.HTTPResponse.Body.Close() | ||||||
| 	b, err := ioutil.ReadAll(r.HTTPResponse.Body) | 	b, err := ioutil.ReadAll(r.HTTPResponse.Body) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| @@ -114,7 +118,7 @@ func unmarshalHandler(r *service.Request) { | |||||||
| 	data.Content = string(b) | 	data.Content = string(b) | ||||||
| } | } | ||||||
|  |  | ||||||
| func unmarshalError(r *service.Request) { | func unmarshalError(r *request.Request) { | ||||||
| 	defer r.HTTPResponse.Body.Close() | 	defer r.HTTPResponse.Body.Close() | ||||||
| 	_, err := ioutil.ReadAll(r.HTTPResponse.Body) | 	_, err := ioutil.ReadAll(r.HTTPResponse.Body) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| @@ -124,8 +128,8 @@ func unmarshalError(r *service.Request) { | |||||||
| 	// TODO extract the error... | 	// TODO extract the error... | ||||||
| } | } | ||||||
|  |  | ||||||
| func validateEndpointHandler(r *service.Request) { | func validateEndpointHandler(r *request.Request) { | ||||||
| 	if r.Service.Endpoint == "" { | 	if r.Service.Endpoint == "" { | ||||||
| 		r.Error = service.ErrMissingEndpoint | 		r.Error = aws.ErrMissingEndpoint | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|   | |||||||
							
								
								
									
										17
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/errors.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/errors.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,17 @@ | |||||||
|  | package aws | ||||||
|  |  | ||||||
|  | import "github.com/aws/aws-sdk-go/aws/awserr" | ||||||
|  |  | ||||||
|  | var ( | ||||||
|  | 	// ErrMissingRegion is an error that is returned if region configuration is | ||||||
|  | 	// not found. | ||||||
|  | 	// | ||||||
|  | 	// @readonly | ||||||
|  | 	ErrMissingRegion error = awserr.New("MissingRegion", "could not find region configuration", nil) | ||||||
|  |  | ||||||
|  | 	// ErrMissingEndpoint is an error that is returned if an endpoint cannot be | ||||||
|  | 	// resolved for a service. | ||||||
|  | 	// | ||||||
|  | 	// @readonly | ||||||
|  | 	ErrMissingEndpoint error = awserr.New("MissingEndpoint", "'Endpoint' configuration is required for this service", nil) | ||||||
|  | ) | ||||||
| @@ -1,4 +1,4 @@ | |||||||
| package service | package request | ||||||
| 
 | 
 | ||||||
| // A Handlers provides a collection of request handlers for various | // A Handlers provides a collection of request handlers for various | ||||||
| // stages of handling requests. | // stages of handling requests. | ||||||
| @@ -15,8 +15,8 @@ type Handlers struct { | |||||||
| 	AfterRetry       HandlerList | 	AfterRetry       HandlerList | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // copy returns of this handler's lists. | // Copy returns of this handler's lists. | ||||||
| func (h *Handlers) copy() Handlers { | func (h *Handlers) Copy() Handlers { | ||||||
| 	return Handlers{ | 	return Handlers{ | ||||||
| 		Validate:         h.Validate.copy(), | 		Validate:         h.Validate.copy(), | ||||||
| 		Build:            h.Build.copy(), | 		Build:            h.Build.copy(), | ||||||
| @@ -47,19 +47,25 @@ func (h *Handlers) Clear() { | |||||||
| 
 | 
 | ||||||
| // A HandlerList manages zero or more handlers in a list. | // A HandlerList manages zero or more handlers in a list. | ||||||
| type HandlerList struct { | type HandlerList struct { | ||||||
| 	list []func(*Request) | 	list []NamedHandler | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // A NamedHandler is a struct that contains a name and function callback. | ||||||
|  | type NamedHandler struct { | ||||||
|  | 	Name string | ||||||
|  | 	Fn   func(*Request) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // copy creates a copy of the handler list. | // copy creates a copy of the handler list. | ||||||
| func (l *HandlerList) copy() HandlerList { | func (l *HandlerList) copy() HandlerList { | ||||||
| 	var n HandlerList | 	var n HandlerList | ||||||
| 	n.list = append([]func(*Request){}, l.list...) | 	n.list = append([]NamedHandler{}, l.list...) | ||||||
| 	return n | 	return n | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // Clear clears the handler list. | // Clear clears the handler list. | ||||||
| func (l *HandlerList) Clear() { | func (l *HandlerList) Clear() { | ||||||
| 	l.list = []func(*Request){} | 	l.list = []NamedHandler{} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // Len returns the number of handlers in the list. | // Len returns the number of handlers in the list. | ||||||
| @@ -67,19 +73,40 @@ func (l *HandlerList) Len() int { | |||||||
| 	return len(l.list) | 	return len(l.list) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // PushBack pushes handlers f to the back of the handler list. | // PushBack pushes handler f to the back of the handler list. | ||||||
| func (l *HandlerList) PushBack(f ...func(*Request)) { | func (l *HandlerList) PushBack(f func(*Request)) { | ||||||
| 	l.list = append(l.list, f...) | 	l.list = append(l.list, NamedHandler{"__anonymous", f}) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // PushFront pushes handlers f to the front of the handler list. | // PushFront pushes handler f to the front of the handler list. | ||||||
| func (l *HandlerList) PushFront(f ...func(*Request)) { | func (l *HandlerList) PushFront(f func(*Request)) { | ||||||
| 	l.list = append(f, l.list...) | 	l.list = append([]NamedHandler{{"__anonymous", f}}, l.list...) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // PushBackNamed pushes named handler f to the back of the handler list. | ||||||
|  | func (l *HandlerList) PushBackNamed(n NamedHandler) { | ||||||
|  | 	l.list = append(l.list, n) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // PushFrontNamed pushes named handler f to the front of the handler list. | ||||||
|  | func (l *HandlerList) PushFrontNamed(n NamedHandler) { | ||||||
|  | 	l.list = append([]NamedHandler{n}, l.list...) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // Remove removes a NamedHandler n | ||||||
|  | func (l *HandlerList) Remove(n NamedHandler) { | ||||||
|  | 	newlist := []NamedHandler{} | ||||||
|  | 	for _, m := range l.list { | ||||||
|  | 		if m.Name != n.Name { | ||||||
|  | 			newlist = append(newlist, m) | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 	l.list = newlist | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // Run executes all handlers in the list with a given request object. | // Run executes all handlers in the list with a given request object. | ||||||
| func (l *HandlerList) Run(r *Request) { | func (l *HandlerList) Run(r *Request) { | ||||||
| 	for _, f := range l.list { | 	for _, f := range l.list { | ||||||
| 		f(r) | 		f.Fn(r) | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
| @@ -1,4 +1,4 @@ | |||||||
| package service | package request | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
| 	"bytes" | 	"bytes" | ||||||
| @@ -13,11 +13,13 @@ import ( | |||||||
| 
 | 
 | ||||||
| 	"github.com/aws/aws-sdk-go/aws" | 	"github.com/aws/aws-sdk-go/aws" | ||||||
| 	"github.com/aws/aws-sdk-go/aws/awsutil" | 	"github.com/aws/aws-sdk-go/aws/awsutil" | ||||||
|  | 	"github.com/aws/aws-sdk-go/aws/service/serviceinfo" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| // A Request is the service request to be made. | // A Request is the service request to be made. | ||||||
| type Request struct { | type Request struct { | ||||||
| 	*Service | 	Retryer | ||||||
|  | 	Service      serviceinfo.ServiceInfo | ||||||
| 	Handlers     Handlers | 	Handlers     Handlers | ||||||
| 	Time         time.Time | 	Time         time.Time | ||||||
| 	ExpireTime   time.Duration | 	ExpireTime   time.Duration | ||||||
| @@ -25,7 +27,7 @@ type Request struct { | |||||||
| 	HTTPRequest  *http.Request | 	HTTPRequest  *http.Request | ||||||
| 	HTTPResponse *http.Response | 	HTTPResponse *http.Response | ||||||
| 	Body         io.ReadSeeker | 	Body         io.ReadSeeker | ||||||
| 	bodyStart    int64 // offset from beginning of Body that the request body starts | 	BodyStart    int64 // offset from beginning of Body that the request body starts | ||||||
| 	Params       interface{} | 	Params       interface{} | ||||||
| 	Error        error | 	Error        error | ||||||
| 	Data         interface{} | 	Data         interface{} | ||||||
| @@ -53,13 +55,13 @@ type Paginator struct { | |||||||
| 	TruncationToken string | 	TruncationToken string | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // NewRequest returns a new Request pointer for the service API | // New returns a new Request pointer for the service API | ||||||
| // operation and parameters. | // operation and parameters. | ||||||
| // | // | ||||||
| // Params is any value of input parameters to be the request payload. | // Params is any value of input parameters to be the request payload. | ||||||
| // Data is pointer value to an object which the request's response | // Data is pointer value to an object which the request's response | ||||||
| // payload will be deserialized to. | // payload will be deserialized to. | ||||||
| func NewRequest(service *Service, operation *Operation, params interface{}, data interface{}) *Request { | func New(service serviceinfo.ServiceInfo, handlers Handlers, retryer Retryer, operation *Operation, params interface{}, data interface{}) *Request { | ||||||
| 	method := operation.HTTPMethod | 	method := operation.HTTPMethod | ||||||
| 	if method == "" { | 	if method == "" { | ||||||
| 		method = "POST" | 		method = "POST" | ||||||
| @@ -73,8 +75,9 @@ func NewRequest(service *Service, operation *Operation, params interface{}, data | |||||||
| 	httpReq.URL, _ = url.Parse(service.Endpoint + p) | 	httpReq.URL, _ = url.Parse(service.Endpoint + p) | ||||||
| 
 | 
 | ||||||
| 	r := &Request{ | 	r := &Request{ | ||||||
|  | 		Retryer:     retryer, | ||||||
| 		Service:     service, | 		Service:     service, | ||||||
| 		Handlers:    service.Handlers.copy(), | 		Handlers:    handlers.Copy(), | ||||||
| 		Time:        time.Now(), | 		Time:        time.Now(), | ||||||
| 		ExpireTime:  0, | 		ExpireTime:  0, | ||||||
| 		Operation:   operation, | 		Operation:   operation, | ||||||
| @@ -91,7 +94,7 @@ func NewRequest(service *Service, operation *Operation, params interface{}, data | |||||||
| 
 | 
 | ||||||
| // WillRetry returns if the request's can be retried. | // WillRetry returns if the request's can be retried. | ||||||
| func (r *Request) WillRetry() bool { | func (r *Request) WillRetry() bool { | ||||||
| 	return r.Error != nil && aws.BoolValue(r.Retryable) && r.RetryCount < r.Service.MaxRetries() | 	return r.Error != nil && aws.BoolValue(r.Retryable) && r.RetryCount < r.MaxRetries() | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // ParamsFilled returns if the request's parameters have been populated | // ParamsFilled returns if the request's parameters have been populated | ||||||
| @@ -137,7 +140,7 @@ func (r *Request) Presign(expireTime time.Duration) (string, error) { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func debugLogReqError(r *Request, stage string, retrying bool, err error) { | func debugLogReqError(r *Request, stage string, retrying bool, err error) { | ||||||
| 	if !r.Config.LogLevel.Matches(aws.LogDebugWithRequestErrors) { | 	if !r.Service.Config.LogLevel.Matches(aws.LogDebugWithRequestErrors) { | ||||||
| 		return | 		return | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| @@ -146,8 +149,8 @@ func debugLogReqError(r *Request, stage string, retrying bool, err error) { | |||||||
| 		retryStr = "will retry" | 		retryStr = "will retry" | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	r.Config.Logger.Log(fmt.Sprintf("DEBUG: %s %s/%s failed, %s, error %v", | 	r.Service.Config.Logger.Log(fmt.Sprintf("DEBUG: %s %s/%s failed, %s, error %v", | ||||||
| 		stage, r.ServiceName, r.Operation.Name, retryStr, err)) | 		stage, r.Service.ServiceName, r.Operation.Name, retryStr, err)) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // Build will build the request's object so it can be signed and sent | // Build will build the request's object so it can be signed and sent | ||||||
| @@ -202,14 +205,14 @@ func (r *Request) Send() error { | |||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		if aws.BoolValue(r.Retryable) { | 		if aws.BoolValue(r.Retryable) { | ||||||
| 			if r.Config.LogLevel.Matches(aws.LogDebugWithRequestRetries) { | 			if r.Service.Config.LogLevel.Matches(aws.LogDebugWithRequestRetries) { | ||||||
| 				r.Config.Logger.Log(fmt.Sprintf("DEBUG: Retrying Request %s/%s, attempt %d", | 				r.Service.Config.Logger.Log(fmt.Sprintf("DEBUG: Retrying Request %s/%s, attempt %d", | ||||||
| 					r.ServiceName, r.Operation.Name, r.RetryCount)) | 					r.Service.ServiceName, r.Operation.Name, r.RetryCount)) | ||||||
| 			} | 			} | ||||||
| 
 | 
 | ||||||
| 			// Re-seek the body back to the original point in for a retry so that | 			// Re-seek the body back to the original point in for a retry so that | ||||||
| 			// send will send the body's contents again in the upcoming request. | 			// send will send the body's contents again in the upcoming request. | ||||||
| 			r.Body.Seek(r.bodyStart, 0) | 			r.Body.Seek(r.BodyStart, 0) | ||||||
| 			r.HTTPRequest.Body = ioutil.NopCloser(r.Body) | 			r.HTTPRequest.Body = ioutil.NopCloser(r.Body) | ||||||
| 		} | 		} | ||||||
| 		r.Retryable = nil | 		r.Retryable = nil | ||||||
| @@ -312,7 +315,7 @@ func (r *Request) NextPage() *Request { | |||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	data := reflect.New(reflect.TypeOf(r.Data).Elem()).Interface() | 	data := reflect.New(reflect.TypeOf(r.Data).Elem()).Interface() | ||||||
| 	nr := NewRequest(r.Service, r.Operation, awsutil.CopyOf(r.Params), data) | 	nr := New(r.Service, r.Handlers, r.Retryer, r.Operation, awsutil.CopyOf(r.Params), data) | ||||||
| 	for i, intok := range nr.Operation.InputTokens { | 	for i, intok := range nr.Operation.InputTokens { | ||||||
| 		awsutil.SetValueAtAnyPath(nr.Params, intok, tokens[i]) | 		awsutil.SetValueAtAnyPath(nr.Params, intok, tokens[i]) | ||||||
| 	} | 	} | ||||||
							
								
								
									
										71
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/request/retryer.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										71
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/request/retryer.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,71 @@ | |||||||
|  | package request | ||||||
|  |  | ||||||
|  | import ( | ||||||
|  | 	"time" | ||||||
|  |  | ||||||
|  | 	"github.com/aws/aws-sdk-go/aws/awserr" | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | // Retryer is an interface to control retry logic for a given service. | ||||||
|  | // The default implementation used by most services is the service.DefaultRetryer | ||||||
|  | // structure, which contains basic retry logic using exponential backoff. | ||||||
|  | type Retryer interface { | ||||||
|  | 	RetryRules(*Request) time.Duration | ||||||
|  | 	ShouldRetry(*Request) bool | ||||||
|  | 	MaxRetries() uint | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // retryableCodes is a collection of service response codes which are retry-able | ||||||
|  | // without any further action. | ||||||
|  | var retryableCodes = map[string]struct{}{ | ||||||
|  | 	"RequestError":                           {}, | ||||||
|  | 	"ProvisionedThroughputExceededException": {}, | ||||||
|  | 	"Throttling":                             {}, | ||||||
|  | 	"ThrottlingException":                    {}, | ||||||
|  | 	"RequestLimitExceeded":                   {}, | ||||||
|  | 	"RequestThrottled":                       {}, | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // credsExpiredCodes is a collection of error codes which signify the credentials | ||||||
|  | // need to be refreshed. Expired tokens require refreshing of credentials, and | ||||||
|  | // resigning before the request can be retried. | ||||||
|  | var credsExpiredCodes = map[string]struct{}{ | ||||||
|  | 	"ExpiredToken":          {}, | ||||||
|  | 	"ExpiredTokenException": {}, | ||||||
|  | 	"RequestExpired":        {}, // EC2 Only | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func isCodeRetryable(code string) bool { | ||||||
|  | 	if _, ok := retryableCodes[code]; ok { | ||||||
|  | 		return true | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	return isCodeExpiredCreds(code) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func isCodeExpiredCreds(code string) bool { | ||||||
|  | 	_, ok := credsExpiredCodes[code] | ||||||
|  | 	return ok | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // IsErrorRetryable returns whether the error is retryable, based on its Code. | ||||||
|  | // Returns false if the request has no Error set. | ||||||
|  | func (r *Request) IsErrorRetryable() bool { | ||||||
|  | 	if r.Error != nil { | ||||||
|  | 		if err, ok := r.Error.(awserr.Error); ok { | ||||||
|  | 			return isCodeRetryable(err.Code()) | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 	return false | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // IsErrorExpired returns whether the error code is a credential expiry error. | ||||||
|  | // Returns false if the request has no Error set. | ||||||
|  | func (r *Request) IsErrorExpired() bool { | ||||||
|  | 	if r.Error != nil { | ||||||
|  | 		if err, ok := r.Error.(awserr.Error); ok { | ||||||
|  | 			return isCodeExpiredCreds(err.Code()) | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 	return false | ||||||
|  | } | ||||||
							
								
								
									
										51
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/service/default_retryer.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/service/default_retryer.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,51 @@ | |||||||
|  | package service | ||||||
|  |  | ||||||
|  | import ( | ||||||
|  | 	"math" | ||||||
|  | 	"math/rand" | ||||||
|  | 	"time" | ||||||
|  |  | ||||||
|  | 	"github.com/aws/aws-sdk-go/aws" | ||||||
|  | 	"github.com/aws/aws-sdk-go/aws/request" | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | // DefaultRetryer implements basic retry logic using exponential backoff for | ||||||
|  | // most services. If you want to implement custom retry logic, implement the | ||||||
|  | // request.Retryer interface or create a structure type that composes this | ||||||
|  | // struct and override the specific methods. For example, to override only | ||||||
|  | // the MaxRetries method: | ||||||
|  | // | ||||||
|  | //		type retryer struct { | ||||||
|  | //      service.DefaultRetryer | ||||||
|  | //    } | ||||||
|  | // | ||||||
|  | //    // This implementation always has 100 max retries | ||||||
|  | //    func (d retryer) MaxRetries() uint { return 100 } | ||||||
|  | type DefaultRetryer struct { | ||||||
|  | 	*Service | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // MaxRetries returns the number of maximum returns the service will use to make | ||||||
|  | // an individual API request. | ||||||
|  | func (d DefaultRetryer) MaxRetries() uint { | ||||||
|  | 	if aws.IntValue(d.Service.Config.MaxRetries) < 0 { | ||||||
|  | 		return d.DefaultMaxRetries | ||||||
|  | 	} | ||||||
|  | 	return uint(aws.IntValue(d.Service.Config.MaxRetries)) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | var seededRand = rand.New(rand.NewSource(time.Now().UnixNano())) | ||||||
|  |  | ||||||
|  | // RetryRules returns the delay duration before retrying this request again | ||||||
|  | func (d DefaultRetryer) RetryRules(r *request.Request) time.Duration { | ||||||
|  | 	delay := int(math.Pow(2, float64(r.RetryCount))) * (seededRand.Intn(30) + 30) | ||||||
|  | 	return time.Duration(delay) * time.Millisecond | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // ShouldRetry returns if the request should be retried. | ||||||
|  | func (d DefaultRetryer) ShouldRetry(r *request.Request) bool { | ||||||
|  | 	if r.HTTPResponse.StatusCode >= 500 { | ||||||
|  | 		return true | ||||||
|  | 	} | ||||||
|  | 	return r.IsErrorRetryable() | ||||||
|  | } | ||||||
							
								
								
									
										106
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/service/handler_functions_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										106
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/service/handler_functions_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,106 +0,0 @@ | |||||||
| package service |  | ||||||
|  |  | ||||||
| import ( |  | ||||||
| 	"fmt" |  | ||||||
| 	"net/http" |  | ||||||
| 	"os" |  | ||||||
| 	"testing" |  | ||||||
|  |  | ||||||
| 	"github.com/stretchr/testify/assert" |  | ||||||
|  |  | ||||||
| 	"github.com/aws/aws-sdk-go/aws" |  | ||||||
| 	"github.com/aws/aws-sdk-go/aws/awserr" |  | ||||||
| 	"github.com/aws/aws-sdk-go/aws/credentials" |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| func TestValidateEndpointHandler(t *testing.T) { |  | ||||||
| 	os.Clearenv() |  | ||||||
| 	svc := NewService(aws.NewConfig().WithRegion("us-west-2")) |  | ||||||
| 	svc.Handlers.Clear() |  | ||||||
| 	svc.Handlers.Validate.PushBack(ValidateEndpointHandler) |  | ||||||
|  |  | ||||||
| 	req := NewRequest(svc, &Operation{Name: "Operation"}, nil, nil) |  | ||||||
| 	err := req.Build() |  | ||||||
|  |  | ||||||
| 	assert.NoError(t, err) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestValidateEndpointHandlerErrorRegion(t *testing.T) { |  | ||||||
| 	os.Clearenv() |  | ||||||
| 	svc := NewService(nil) |  | ||||||
| 	svc.Handlers.Clear() |  | ||||||
| 	svc.Handlers.Validate.PushBack(ValidateEndpointHandler) |  | ||||||
|  |  | ||||||
| 	req := NewRequest(svc, &Operation{Name: "Operation"}, nil, nil) |  | ||||||
| 	err := req.Build() |  | ||||||
|  |  | ||||||
| 	assert.Error(t, err) |  | ||||||
| 	assert.Equal(t, ErrMissingRegion, err) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type mockCredsProvider struct { |  | ||||||
| 	expired        bool |  | ||||||
| 	retrieveCalled bool |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func (m *mockCredsProvider) Retrieve() (credentials.Value, error) { |  | ||||||
| 	m.retrieveCalled = true |  | ||||||
| 	return credentials.Value{}, nil |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func (m *mockCredsProvider) IsExpired() bool { |  | ||||||
| 	return m.expired |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestAfterRetryRefreshCreds(t *testing.T) { |  | ||||||
| 	os.Clearenv() |  | ||||||
| 	credProvider := &mockCredsProvider{} |  | ||||||
| 	svc := NewService(&aws.Config{Credentials: credentials.NewCredentials(credProvider), MaxRetries: aws.Int(1)}) |  | ||||||
|  |  | ||||||
| 	svc.Handlers.Clear() |  | ||||||
| 	svc.Handlers.ValidateResponse.PushBack(func(r *Request) { |  | ||||||
| 		r.Error = awserr.New("UnknownError", "", nil) |  | ||||||
| 		r.HTTPResponse = &http.Response{StatusCode: 400} |  | ||||||
| 	}) |  | ||||||
| 	svc.Handlers.UnmarshalError.PushBack(func(r *Request) { |  | ||||||
| 		r.Error = awserr.New("ExpiredTokenException", "", nil) |  | ||||||
| 	}) |  | ||||||
| 	svc.Handlers.AfterRetry.PushBack(func(r *Request) { |  | ||||||
| 		AfterRetryHandler(r) |  | ||||||
| 	}) |  | ||||||
|  |  | ||||||
| 	assert.True(t, svc.Config.Credentials.IsExpired(), "Expect to start out expired") |  | ||||||
| 	assert.False(t, credProvider.retrieveCalled) |  | ||||||
|  |  | ||||||
| 	req := NewRequest(svc, &Operation{Name: "Operation"}, nil, nil) |  | ||||||
| 	req.Send() |  | ||||||
|  |  | ||||||
| 	assert.True(t, svc.Config.Credentials.IsExpired()) |  | ||||||
| 	assert.False(t, credProvider.retrieveCalled) |  | ||||||
|  |  | ||||||
| 	_, err := svc.Config.Credentials.Get() |  | ||||||
| 	assert.NoError(t, err) |  | ||||||
| 	assert.True(t, credProvider.retrieveCalled) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type testSendHandlerTransport struct{} |  | ||||||
|  |  | ||||||
| func (t *testSendHandlerTransport) RoundTrip(r *http.Request) (*http.Response, error) { |  | ||||||
| 	return nil, fmt.Errorf("mock error") |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestSendHandlerError(t *testing.T) { |  | ||||||
| 	svc := NewService(&aws.Config{ |  | ||||||
| 		HTTPClient: &http.Client{ |  | ||||||
| 			Transport: &testSendHandlerTransport{}, |  | ||||||
| 		}, |  | ||||||
| 	}) |  | ||||||
| 	svc.Handlers.Clear() |  | ||||||
| 	svc.Handlers.Send.PushBack(SendHandler) |  | ||||||
| 	r := NewRequest(svc, &Operation{Name: "Operation"}, nil, nil) |  | ||||||
|  |  | ||||||
| 	r.Send() |  | ||||||
|  |  | ||||||
| 	assert.Error(t, r.Error) |  | ||||||
| 	assert.NotNil(t, r.HTTPResponse) |  | ||||||
| } |  | ||||||
							
								
								
									
										33
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/service/handlers_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										33
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/service/handlers_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,33 +0,0 @@ | |||||||
| package service |  | ||||||
|  |  | ||||||
| import ( |  | ||||||
| 	"testing" |  | ||||||
|  |  | ||||||
| 	"github.com/stretchr/testify/assert" |  | ||||||
|  |  | ||||||
| 	"github.com/aws/aws-sdk-go/aws" |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| func TestHandlerList(t *testing.T) { |  | ||||||
| 	s := "" |  | ||||||
| 	r := &Request{} |  | ||||||
| 	l := HandlerList{} |  | ||||||
| 	l.PushBack(func(r *Request) { |  | ||||||
| 		s += "a" |  | ||||||
| 		r.Data = s |  | ||||||
| 	}) |  | ||||||
| 	l.Run(r) |  | ||||||
| 	assert.Equal(t, "a", s) |  | ||||||
| 	assert.Equal(t, "a", r.Data) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestMultipleHandlers(t *testing.T) { |  | ||||||
| 	r := &Request{} |  | ||||||
| 	l := HandlerList{} |  | ||||||
| 	l.PushBack(func(r *Request) { r.Data = nil }) |  | ||||||
| 	l.PushFront(func(r *Request) { r.Data = aws.Bool(true) }) |  | ||||||
| 	l.Run(r) |  | ||||||
| 	if r.Data != nil { |  | ||||||
| 		t.Error("Expected handler to execute") |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
							
								
								
									
										89
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/service/param_validator.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										89
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/service/param_validator.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,89 +0,0 @@ | |||||||
| package service |  | ||||||
|  |  | ||||||
| import ( |  | ||||||
| 	"fmt" |  | ||||||
| 	"reflect" |  | ||||||
| 	"strings" |  | ||||||
|  |  | ||||||
| 	"github.com/aws/aws-sdk-go/aws/awserr" |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| // ValidateParameters is a request handler to validate the input parameters. |  | ||||||
| // Validating parameters only has meaning if done prior to the request being sent. |  | ||||||
| func ValidateParameters(r *Request) { |  | ||||||
| 	if r.ParamsFilled() { |  | ||||||
| 		v := validator{errors: []string{}} |  | ||||||
| 		v.validateAny(reflect.ValueOf(r.Params), "") |  | ||||||
|  |  | ||||||
| 		if count := len(v.errors); count > 0 { |  | ||||||
| 			format := "%d validation errors:\n- %s" |  | ||||||
| 			msg := fmt.Sprintf(format, count, strings.Join(v.errors, "\n- ")) |  | ||||||
| 			r.Error = awserr.New("InvalidParameter", msg, nil) |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // A validator validates values. Collects validations errors which occurs. |  | ||||||
| type validator struct { |  | ||||||
| 	errors []string |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // validateAny will validate any struct, slice or map type. All validations |  | ||||||
| // are also performed recursively for nested types. |  | ||||||
| func (v *validator) validateAny(value reflect.Value, path string) { |  | ||||||
| 	value = reflect.Indirect(value) |  | ||||||
| 	if !value.IsValid() { |  | ||||||
| 		return |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	switch value.Kind() { |  | ||||||
| 	case reflect.Struct: |  | ||||||
| 		v.validateStruct(value, path) |  | ||||||
| 	case reflect.Slice: |  | ||||||
| 		for i := 0; i < value.Len(); i++ { |  | ||||||
| 			v.validateAny(value.Index(i), path+fmt.Sprintf("[%d]", i)) |  | ||||||
| 		} |  | ||||||
| 	case reflect.Map: |  | ||||||
| 		for _, n := range value.MapKeys() { |  | ||||||
| 			v.validateAny(value.MapIndex(n), path+fmt.Sprintf("[%q]", n.String())) |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // validateStruct will validate the struct value's fields. If the structure has |  | ||||||
| // nested types those types will be validated also. |  | ||||||
| func (v *validator) validateStruct(value reflect.Value, path string) { |  | ||||||
| 	prefix := "." |  | ||||||
| 	if path == "" { |  | ||||||
| 		prefix = "" |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	for i := 0; i < value.Type().NumField(); i++ { |  | ||||||
| 		f := value.Type().Field(i) |  | ||||||
| 		if strings.ToLower(f.Name[0:1]) == f.Name[0:1] { |  | ||||||
| 			continue |  | ||||||
| 		} |  | ||||||
| 		fvalue := value.FieldByName(f.Name) |  | ||||||
|  |  | ||||||
| 		notset := false |  | ||||||
| 		if f.Tag.Get("required") != "" { |  | ||||||
| 			switch fvalue.Kind() { |  | ||||||
| 			case reflect.Ptr, reflect.Slice, reflect.Map: |  | ||||||
| 				if fvalue.IsNil() { |  | ||||||
| 					notset = true |  | ||||||
| 				} |  | ||||||
| 			default: |  | ||||||
| 				if !fvalue.IsValid() { |  | ||||||
| 					notset = true |  | ||||||
| 				} |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
|  |  | ||||||
| 		if notset { |  | ||||||
| 			msg := "missing required parameter: " + path + prefix + f.Name |  | ||||||
| 			v.errors = append(v.errors, msg) |  | ||||||
| 		} else { |  | ||||||
| 			v.validateAny(fvalue, path+prefix+f.Name) |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
							
								
								
									
										85
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/service/param_validator_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										85
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/service/param_validator_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,85 +0,0 @@ | |||||||
| package service |  | ||||||
|  |  | ||||||
| import ( |  | ||||||
| 	"testing" |  | ||||||
|  |  | ||||||
| 	"github.com/stretchr/testify/assert" |  | ||||||
|  |  | ||||||
| 	"github.com/aws/aws-sdk-go/aws" |  | ||||||
| 	"github.com/aws/aws-sdk-go/aws/awserr" |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| var testSvc = func() *Service { |  | ||||||
| 	s := &Service{ |  | ||||||
| 		Config:      &aws.Config{}, |  | ||||||
| 		ServiceName: "mock-service", |  | ||||||
| 		APIVersion:  "2015-01-01", |  | ||||||
| 	} |  | ||||||
| 	return s |  | ||||||
| }() |  | ||||||
|  |  | ||||||
| type StructShape struct { |  | ||||||
| 	RequiredList   []*ConditionalStructShape          `required:"true"` |  | ||||||
| 	RequiredMap    map[string]*ConditionalStructShape `required:"true"` |  | ||||||
| 	RequiredBool   *bool                              `required:"true"` |  | ||||||
| 	OptionalStruct *ConditionalStructShape |  | ||||||
|  |  | ||||||
| 	hiddenParameter *string |  | ||||||
|  |  | ||||||
| 	metadataStructureShape |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type metadataStructureShape struct { |  | ||||||
| 	SDKShapeTraits bool |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type ConditionalStructShape struct { |  | ||||||
| 	Name           *string `required:"true"` |  | ||||||
| 	SDKShapeTraits bool |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestNoErrors(t *testing.T) { |  | ||||||
| 	input := &StructShape{ |  | ||||||
| 		RequiredList: []*ConditionalStructShape{}, |  | ||||||
| 		RequiredMap: map[string]*ConditionalStructShape{ |  | ||||||
| 			"key1": {Name: aws.String("Name")}, |  | ||||||
| 			"key2": {Name: aws.String("Name")}, |  | ||||||
| 		}, |  | ||||||
| 		RequiredBool:   aws.Bool(true), |  | ||||||
| 		OptionalStruct: &ConditionalStructShape{Name: aws.String("Name")}, |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	req := NewRequest(testSvc, &Operation{}, input, nil) |  | ||||||
| 	ValidateParameters(req) |  | ||||||
| 	assert.NoError(t, req.Error) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestMissingRequiredParameters(t *testing.T) { |  | ||||||
| 	input := &StructShape{} |  | ||||||
| 	req := NewRequest(testSvc, &Operation{}, input, nil) |  | ||||||
| 	ValidateParameters(req) |  | ||||||
|  |  | ||||||
| 	assert.Error(t, req.Error) |  | ||||||
| 	assert.Equal(t, "InvalidParameter", req.Error.(awserr.Error).Code()) |  | ||||||
| 	assert.Equal(t, "3 validation errors:\n- missing required parameter: RequiredList\n- missing required parameter: RequiredMap\n- missing required parameter: RequiredBool", req.Error.(awserr.Error).Message()) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestNestedMissingRequiredParameters(t *testing.T) { |  | ||||||
| 	input := &StructShape{ |  | ||||||
| 		RequiredList: []*ConditionalStructShape{{}}, |  | ||||||
| 		RequiredMap: map[string]*ConditionalStructShape{ |  | ||||||
| 			"key1": {Name: aws.String("Name")}, |  | ||||||
| 			"key2": {}, |  | ||||||
| 		}, |  | ||||||
| 		RequiredBool:   aws.Bool(true), |  | ||||||
| 		OptionalStruct: &ConditionalStructShape{}, |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	req := NewRequest(testSvc, &Operation{}, input, nil) |  | ||||||
| 	ValidateParameters(req) |  | ||||||
|  |  | ||||||
| 	assert.Error(t, req.Error) |  | ||||||
| 	assert.Equal(t, "InvalidParameter", req.Error.(awserr.Error).Code()) |  | ||||||
| 	assert.Equal(t, "3 validation errors:\n- missing required parameter: RequiredList[0].Name\n- missing required parameter: RequiredMap[\"key2\"].Name\n- missing required parameter: OptionalStruct.Name", req.Error.(awserr.Error).Message()) |  | ||||||
|  |  | ||||||
| } |  | ||||||
							
								
								
									
										307
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/service/request_pagination_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										307
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/service/request_pagination_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,307 +0,0 @@ | |||||||
| package service_test |  | ||||||
|  |  | ||||||
| import ( |  | ||||||
| 	"testing" |  | ||||||
|  |  | ||||||
| 	"github.com/stretchr/testify/assert" |  | ||||||
|  |  | ||||||
| 	"github.com/aws/aws-sdk-go/aws" |  | ||||||
| 	"github.com/aws/aws-sdk-go/aws/service" |  | ||||||
| 	"github.com/aws/aws-sdk-go/internal/test/unit" |  | ||||||
| 	"github.com/aws/aws-sdk-go/service/dynamodb" |  | ||||||
| 	"github.com/aws/aws-sdk-go/service/s3" |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| var _ = unit.Imported |  | ||||||
|  |  | ||||||
| // Use DynamoDB methods for simplicity |  | ||||||
| func TestPagination(t *testing.T) { |  | ||||||
| 	db := dynamodb.New(nil) |  | ||||||
| 	tokens, pages, numPages, gotToEnd := []string{}, []string{}, 0, false |  | ||||||
|  |  | ||||||
| 	reqNum := 0 |  | ||||||
| 	resps := []*dynamodb.ListTablesOutput{ |  | ||||||
| 		{TableNames: []*string{aws.String("Table1"), aws.String("Table2")}, LastEvaluatedTableName: aws.String("Table2")}, |  | ||||||
| 		{TableNames: []*string{aws.String("Table3"), aws.String("Table4")}, LastEvaluatedTableName: aws.String("Table4")}, |  | ||||||
| 		{TableNames: []*string{aws.String("Table5")}}, |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	db.Handlers.Send.Clear() // mock sending |  | ||||||
| 	db.Handlers.Unmarshal.Clear() |  | ||||||
| 	db.Handlers.UnmarshalMeta.Clear() |  | ||||||
| 	db.Handlers.ValidateResponse.Clear() |  | ||||||
| 	db.Handlers.Build.PushBack(func(r *service.Request) { |  | ||||||
| 		in := r.Params.(*dynamodb.ListTablesInput) |  | ||||||
| 		if in == nil { |  | ||||||
| 			tokens = append(tokens, "") |  | ||||||
| 		} else if in.ExclusiveStartTableName != nil { |  | ||||||
| 			tokens = append(tokens, *in.ExclusiveStartTableName) |  | ||||||
| 		} |  | ||||||
| 	}) |  | ||||||
| 	db.Handlers.Unmarshal.PushBack(func(r *service.Request) { |  | ||||||
| 		r.Data = resps[reqNum] |  | ||||||
| 		reqNum++ |  | ||||||
| 	}) |  | ||||||
|  |  | ||||||
| 	params := &dynamodb.ListTablesInput{Limit: aws.Int64(2)} |  | ||||||
| 	err := db.ListTablesPages(params, func(p *dynamodb.ListTablesOutput, last bool) bool { |  | ||||||
| 		numPages++ |  | ||||||
| 		for _, t := range p.TableNames { |  | ||||||
| 			pages = append(pages, *t) |  | ||||||
| 		} |  | ||||||
| 		if last { |  | ||||||
| 			if gotToEnd { |  | ||||||
| 				assert.Fail(t, "last=true happened twice") |  | ||||||
| 			} |  | ||||||
| 			gotToEnd = true |  | ||||||
| 		} |  | ||||||
| 		return true |  | ||||||
| 	}) |  | ||||||
|  |  | ||||||
| 	assert.Equal(t, []string{"Table2", "Table4"}, tokens) |  | ||||||
| 	assert.Equal(t, []string{"Table1", "Table2", "Table3", "Table4", "Table5"}, pages) |  | ||||||
| 	assert.Equal(t, 3, numPages) |  | ||||||
| 	assert.True(t, gotToEnd) |  | ||||||
| 	assert.Nil(t, err) |  | ||||||
| 	assert.Nil(t, params.ExclusiveStartTableName) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // Use DynamoDB methods for simplicity |  | ||||||
| func TestPaginationEachPage(t *testing.T) { |  | ||||||
| 	db := dynamodb.New(nil) |  | ||||||
| 	tokens, pages, numPages, gotToEnd := []string{}, []string{}, 0, false |  | ||||||
|  |  | ||||||
| 	reqNum := 0 |  | ||||||
| 	resps := []*dynamodb.ListTablesOutput{ |  | ||||||
| 		{TableNames: []*string{aws.String("Table1"), aws.String("Table2")}, LastEvaluatedTableName: aws.String("Table2")}, |  | ||||||
| 		{TableNames: []*string{aws.String("Table3"), aws.String("Table4")}, LastEvaluatedTableName: aws.String("Table4")}, |  | ||||||
| 		{TableNames: []*string{aws.String("Table5")}}, |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	db.Handlers.Send.Clear() // mock sending |  | ||||||
| 	db.Handlers.Unmarshal.Clear() |  | ||||||
| 	db.Handlers.UnmarshalMeta.Clear() |  | ||||||
| 	db.Handlers.ValidateResponse.Clear() |  | ||||||
| 	db.Handlers.Build.PushBack(func(r *service.Request) { |  | ||||||
| 		in := r.Params.(*dynamodb.ListTablesInput) |  | ||||||
| 		if in == nil { |  | ||||||
| 			tokens = append(tokens, "") |  | ||||||
| 		} else if in.ExclusiveStartTableName != nil { |  | ||||||
| 			tokens = append(tokens, *in.ExclusiveStartTableName) |  | ||||||
| 		} |  | ||||||
| 	}) |  | ||||||
| 	db.Handlers.Unmarshal.PushBack(func(r *service.Request) { |  | ||||||
| 		r.Data = resps[reqNum] |  | ||||||
| 		reqNum++ |  | ||||||
| 	}) |  | ||||||
|  |  | ||||||
| 	params := &dynamodb.ListTablesInput{Limit: aws.Int64(2)} |  | ||||||
| 	req, _ := db.ListTablesRequest(params) |  | ||||||
| 	err := req.EachPage(func(p interface{}, last bool) bool { |  | ||||||
| 		numPages++ |  | ||||||
| 		for _, t := range p.(*dynamodb.ListTablesOutput).TableNames { |  | ||||||
| 			pages = append(pages, *t) |  | ||||||
| 		} |  | ||||||
| 		if last { |  | ||||||
| 			if gotToEnd { |  | ||||||
| 				assert.Fail(t, "last=true happened twice") |  | ||||||
| 			} |  | ||||||
| 			gotToEnd = true |  | ||||||
| 		} |  | ||||||
|  |  | ||||||
| 		return true |  | ||||||
| 	}) |  | ||||||
|  |  | ||||||
| 	assert.Equal(t, []string{"Table2", "Table4"}, tokens) |  | ||||||
| 	assert.Equal(t, []string{"Table1", "Table2", "Table3", "Table4", "Table5"}, pages) |  | ||||||
| 	assert.Equal(t, 3, numPages) |  | ||||||
| 	assert.True(t, gotToEnd) |  | ||||||
| 	assert.Nil(t, err) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // Use DynamoDB methods for simplicity |  | ||||||
| func TestPaginationEarlyExit(t *testing.T) { |  | ||||||
| 	db := dynamodb.New(nil) |  | ||||||
| 	numPages, gotToEnd := 0, false |  | ||||||
|  |  | ||||||
| 	reqNum := 0 |  | ||||||
| 	resps := []*dynamodb.ListTablesOutput{ |  | ||||||
| 		{TableNames: []*string{aws.String("Table1"), aws.String("Table2")}, LastEvaluatedTableName: aws.String("Table2")}, |  | ||||||
| 		{TableNames: []*string{aws.String("Table3"), aws.String("Table4")}, LastEvaluatedTableName: aws.String("Table4")}, |  | ||||||
| 		{TableNames: []*string{aws.String("Table5")}}, |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	db.Handlers.Send.Clear() // mock sending |  | ||||||
| 	db.Handlers.Unmarshal.Clear() |  | ||||||
| 	db.Handlers.UnmarshalMeta.Clear() |  | ||||||
| 	db.Handlers.ValidateResponse.Clear() |  | ||||||
| 	db.Handlers.Unmarshal.PushBack(func(r *service.Request) { |  | ||||||
| 		r.Data = resps[reqNum] |  | ||||||
| 		reqNum++ |  | ||||||
| 	}) |  | ||||||
|  |  | ||||||
| 	params := &dynamodb.ListTablesInput{Limit: aws.Int64(2)} |  | ||||||
| 	err := db.ListTablesPages(params, func(p *dynamodb.ListTablesOutput, last bool) bool { |  | ||||||
| 		numPages++ |  | ||||||
| 		if numPages == 2 { |  | ||||||
| 			return false |  | ||||||
| 		} |  | ||||||
| 		if last { |  | ||||||
| 			if gotToEnd { |  | ||||||
| 				assert.Fail(t, "last=true happened twice") |  | ||||||
| 			} |  | ||||||
| 			gotToEnd = true |  | ||||||
| 		} |  | ||||||
| 		return true |  | ||||||
| 	}) |  | ||||||
|  |  | ||||||
| 	assert.Equal(t, 2, numPages) |  | ||||||
| 	assert.False(t, gotToEnd) |  | ||||||
| 	assert.Nil(t, err) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestSkipPagination(t *testing.T) { |  | ||||||
| 	client := s3.New(nil) |  | ||||||
| 	client.Handlers.Send.Clear() // mock sending |  | ||||||
| 	client.Handlers.Unmarshal.Clear() |  | ||||||
| 	client.Handlers.UnmarshalMeta.Clear() |  | ||||||
| 	client.Handlers.ValidateResponse.Clear() |  | ||||||
| 	client.Handlers.Unmarshal.PushBack(func(r *service.Request) { |  | ||||||
| 		r.Data = &s3.HeadBucketOutput{} |  | ||||||
| 	}) |  | ||||||
|  |  | ||||||
| 	req, _ := client.HeadBucketRequest(&s3.HeadBucketInput{Bucket: aws.String("bucket")}) |  | ||||||
|  |  | ||||||
| 	numPages, gotToEnd := 0, false |  | ||||||
| 	req.EachPage(func(p interface{}, last bool) bool { |  | ||||||
| 		numPages++ |  | ||||||
| 		if last { |  | ||||||
| 			gotToEnd = true |  | ||||||
| 		} |  | ||||||
| 		return true |  | ||||||
| 	}) |  | ||||||
| 	assert.Equal(t, 1, numPages) |  | ||||||
| 	assert.True(t, gotToEnd) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // Use S3 for simplicity |  | ||||||
| func TestPaginationTruncation(t *testing.T) { |  | ||||||
| 	count := 0 |  | ||||||
| 	client := s3.New(nil) |  | ||||||
|  |  | ||||||
| 	reqNum := &count |  | ||||||
| 	resps := []*s3.ListObjectsOutput{ |  | ||||||
| 		{IsTruncated: aws.Bool(true), Contents: []*s3.Object{{Key: aws.String("Key1")}}}, |  | ||||||
| 		{IsTruncated: aws.Bool(true), Contents: []*s3.Object{{Key: aws.String("Key2")}}}, |  | ||||||
| 		{IsTruncated: aws.Bool(false), Contents: []*s3.Object{{Key: aws.String("Key3")}}}, |  | ||||||
| 		{IsTruncated: aws.Bool(true), Contents: []*s3.Object{{Key: aws.String("Key4")}}}, |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	client.Handlers.Send.Clear() // mock sending |  | ||||||
| 	client.Handlers.Unmarshal.Clear() |  | ||||||
| 	client.Handlers.UnmarshalMeta.Clear() |  | ||||||
| 	client.Handlers.ValidateResponse.Clear() |  | ||||||
| 	client.Handlers.Unmarshal.PushBack(func(r *service.Request) { |  | ||||||
| 		r.Data = resps[*reqNum] |  | ||||||
| 		*reqNum++ |  | ||||||
| 	}) |  | ||||||
|  |  | ||||||
| 	params := &s3.ListObjectsInput{Bucket: aws.String("bucket")} |  | ||||||
|  |  | ||||||
| 	results := []string{} |  | ||||||
| 	err := client.ListObjectsPages(params, func(p *s3.ListObjectsOutput, last bool) bool { |  | ||||||
| 		results = append(results, *p.Contents[0].Key) |  | ||||||
| 		return true |  | ||||||
| 	}) |  | ||||||
|  |  | ||||||
| 	assert.Equal(t, []string{"Key1", "Key2", "Key3"}, results) |  | ||||||
| 	assert.Nil(t, err) |  | ||||||
|  |  | ||||||
| 	// Try again without truncation token at all |  | ||||||
| 	count = 0 |  | ||||||
| 	resps[1].IsTruncated = nil |  | ||||||
| 	resps[2].IsTruncated = aws.Bool(true) |  | ||||||
| 	results = []string{} |  | ||||||
| 	err = client.ListObjectsPages(params, func(p *s3.ListObjectsOutput, last bool) bool { |  | ||||||
| 		results = append(results, *p.Contents[0].Key) |  | ||||||
| 		return true |  | ||||||
| 	}) |  | ||||||
|  |  | ||||||
| 	assert.Equal(t, []string{"Key1", "Key2"}, results) |  | ||||||
| 	assert.Nil(t, err) |  | ||||||
|  |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // Benchmarks |  | ||||||
| var benchResps = []*dynamodb.ListTablesOutput{ |  | ||||||
| 	{TableNames: []*string{aws.String("TABLE"), aws.String("NXT")}, LastEvaluatedTableName: aws.String("NXT")}, |  | ||||||
| 	{TableNames: []*string{aws.String("TABLE"), aws.String("NXT")}, LastEvaluatedTableName: aws.String("NXT")}, |  | ||||||
| 	{TableNames: []*string{aws.String("TABLE"), aws.String("NXT")}, LastEvaluatedTableName: aws.String("NXT")}, |  | ||||||
| 	{TableNames: []*string{aws.String("TABLE"), aws.String("NXT")}, LastEvaluatedTableName: aws.String("NXT")}, |  | ||||||
| 	{TableNames: []*string{aws.String("TABLE"), aws.String("NXT")}, LastEvaluatedTableName: aws.String("NXT")}, |  | ||||||
| 	{TableNames: []*string{aws.String("TABLE"), aws.String("NXT")}, LastEvaluatedTableName: aws.String("NXT")}, |  | ||||||
| 	{TableNames: []*string{aws.String("TABLE"), aws.String("NXT")}, LastEvaluatedTableName: aws.String("NXT")}, |  | ||||||
| 	{TableNames: []*string{aws.String("TABLE"), aws.String("NXT")}, LastEvaluatedTableName: aws.String("NXT")}, |  | ||||||
| 	{TableNames: []*string{aws.String("TABLE"), aws.String("NXT")}, LastEvaluatedTableName: aws.String("NXT")}, |  | ||||||
| 	{TableNames: []*string{aws.String("TABLE"), aws.String("NXT")}, LastEvaluatedTableName: aws.String("NXT")}, |  | ||||||
| 	{TableNames: []*string{aws.String("TABLE"), aws.String("NXT")}, LastEvaluatedTableName: aws.String("NXT")}, |  | ||||||
| 	{TableNames: []*string{aws.String("TABLE"), aws.String("NXT")}, LastEvaluatedTableName: aws.String("NXT")}, |  | ||||||
| 	{TableNames: []*string{aws.String("TABLE"), aws.String("NXT")}, LastEvaluatedTableName: aws.String("NXT")}, |  | ||||||
| 	{TableNames: []*string{aws.String("TABLE")}}, |  | ||||||
| } |  | ||||||
|  |  | ||||||
| var benchDb = func() *dynamodb.DynamoDB { |  | ||||||
| 	db := dynamodb.New(nil) |  | ||||||
| 	db.Handlers.Send.Clear() // mock sending |  | ||||||
| 	db.Handlers.Unmarshal.Clear() |  | ||||||
| 	db.Handlers.UnmarshalMeta.Clear() |  | ||||||
| 	db.Handlers.ValidateResponse.Clear() |  | ||||||
| 	return db |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func BenchmarkCodegenIterator(b *testing.B) { |  | ||||||
| 	reqNum := 0 |  | ||||||
| 	db := benchDb() |  | ||||||
| 	db.Handlers.Unmarshal.PushBack(func(r *service.Request) { |  | ||||||
| 		r.Data = benchResps[reqNum] |  | ||||||
| 		reqNum++ |  | ||||||
| 	}) |  | ||||||
|  |  | ||||||
| 	input := &dynamodb.ListTablesInput{Limit: aws.Int64(2)} |  | ||||||
| 	iter := func(fn func(*dynamodb.ListTablesOutput, bool) bool) error { |  | ||||||
| 		page, _ := db.ListTablesRequest(input) |  | ||||||
| 		for ; page != nil; page = page.NextPage() { |  | ||||||
| 			page.Send() |  | ||||||
| 			out := page.Data.(*dynamodb.ListTablesOutput) |  | ||||||
| 			if result := fn(out, !page.HasNextPage()); page.Error != nil || !result { |  | ||||||
| 				return page.Error |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
| 		return nil |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	for i := 0; i < b.N; i++ { |  | ||||||
| 		reqNum = 0 |  | ||||||
| 		iter(func(p *dynamodb.ListTablesOutput, last bool) bool { |  | ||||||
| 			return true |  | ||||||
| 		}) |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func BenchmarkEachPageIterator(b *testing.B) { |  | ||||||
| 	reqNum := 0 |  | ||||||
| 	db := benchDb() |  | ||||||
| 	db.Handlers.Unmarshal.PushBack(func(r *service.Request) { |  | ||||||
| 		r.Data = benchResps[reqNum] |  | ||||||
| 		reqNum++ |  | ||||||
| 	}) |  | ||||||
|  |  | ||||||
| 	input := &dynamodb.ListTablesInput{Limit: aws.Int64(2)} |  | ||||||
| 	for i := 0; i < b.N; i++ { |  | ||||||
| 		reqNum = 0 |  | ||||||
| 		req, _ := db.ListTablesRequest(input) |  | ||||||
| 		req.EachPage(func(p interface{}, last bool) bool { |  | ||||||
| 			return true |  | ||||||
| 		}) |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
							
								
								
									
										226
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/service/request_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										226
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/service/request_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,226 +0,0 @@ | |||||||
| package service |  | ||||||
|  |  | ||||||
| import ( |  | ||||||
| 	"bytes" |  | ||||||
| 	"encoding/json" |  | ||||||
| 	"fmt" |  | ||||||
| 	"io" |  | ||||||
| 	"io/ioutil" |  | ||||||
| 	"net/http" |  | ||||||
| 	"testing" |  | ||||||
| 	"time" |  | ||||||
|  |  | ||||||
| 	"github.com/aws/aws-sdk-go/aws" |  | ||||||
| 	"github.com/aws/aws-sdk-go/aws/awserr" |  | ||||||
| 	"github.com/aws/aws-sdk-go/aws/credentials" |  | ||||||
| 	"github.com/stretchr/testify/assert" |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| type testData struct { |  | ||||||
| 	Data string |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func body(str string) io.ReadCloser { |  | ||||||
| 	return ioutil.NopCloser(bytes.NewReader([]byte(str))) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func unmarshal(req *Request) { |  | ||||||
| 	defer req.HTTPResponse.Body.Close() |  | ||||||
| 	if req.Data != nil { |  | ||||||
| 		json.NewDecoder(req.HTTPResponse.Body).Decode(req.Data) |  | ||||||
| 	} |  | ||||||
| 	return |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func unmarshalError(req *Request) { |  | ||||||
| 	bodyBytes, err := ioutil.ReadAll(req.HTTPResponse.Body) |  | ||||||
| 	if err != nil { |  | ||||||
| 		req.Error = awserr.New("UnmarshaleError", req.HTTPResponse.Status, err) |  | ||||||
| 		return |  | ||||||
| 	} |  | ||||||
| 	if len(bodyBytes) == 0 { |  | ||||||
| 		req.Error = awserr.NewRequestFailure( |  | ||||||
| 			awserr.New("UnmarshaleError", req.HTTPResponse.Status, fmt.Errorf("empty body")), |  | ||||||
| 			req.HTTPResponse.StatusCode, |  | ||||||
| 			"", |  | ||||||
| 		) |  | ||||||
| 		return |  | ||||||
| 	} |  | ||||||
| 	var jsonErr jsonErrorResponse |  | ||||||
| 	if err := json.Unmarshal(bodyBytes, &jsonErr); err != nil { |  | ||||||
| 		req.Error = awserr.New("UnmarshaleError", "JSON unmarshal", err) |  | ||||||
| 		return |  | ||||||
| 	} |  | ||||||
| 	req.Error = awserr.NewRequestFailure( |  | ||||||
| 		awserr.New(jsonErr.Code, jsonErr.Message, nil), |  | ||||||
| 		req.HTTPResponse.StatusCode, |  | ||||||
| 		"", |  | ||||||
| 	) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type jsonErrorResponse struct { |  | ||||||
| 	Code    string `json:"__type"` |  | ||||||
| 	Message string `json:"message"` |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // test that retries occur for 5xx status codes |  | ||||||
| func TestRequestRecoverRetry5xx(t *testing.T) { |  | ||||||
| 	reqNum := 0 |  | ||||||
| 	reqs := []http.Response{ |  | ||||||
| 		{StatusCode: 500, Body: body(`{"__type":"UnknownError","message":"An error occurred."}`)}, |  | ||||||
| 		{StatusCode: 501, Body: body(`{"__type":"UnknownError","message":"An error occurred."}`)}, |  | ||||||
| 		{StatusCode: 200, Body: body(`{"data":"valid"}`)}, |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	s := NewService(aws.NewConfig().WithMaxRetries(10)) |  | ||||||
| 	s.Handlers.Validate.Clear() |  | ||||||
| 	s.Handlers.Unmarshal.PushBack(unmarshal) |  | ||||||
| 	s.Handlers.UnmarshalError.PushBack(unmarshalError) |  | ||||||
| 	s.Handlers.Send.Clear() // mock sending |  | ||||||
| 	s.Handlers.Send.PushBack(func(r *Request) { |  | ||||||
| 		r.HTTPResponse = &reqs[reqNum] |  | ||||||
| 		reqNum++ |  | ||||||
| 	}) |  | ||||||
| 	out := &testData{} |  | ||||||
| 	r := NewRequest(s, &Operation{Name: "Operation"}, nil, out) |  | ||||||
| 	err := r.Send() |  | ||||||
| 	assert.Nil(t, err) |  | ||||||
| 	assert.Equal(t, 2, int(r.RetryCount)) |  | ||||||
| 	assert.Equal(t, "valid", out.Data) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // test that retries occur for 4xx status codes with a response type that can be retried - see `shouldRetry` |  | ||||||
| func TestRequestRecoverRetry4xxRetryable(t *testing.T) { |  | ||||||
| 	reqNum := 0 |  | ||||||
| 	reqs := []http.Response{ |  | ||||||
| 		{StatusCode: 400, Body: body(`{"__type":"Throttling","message":"Rate exceeded."}`)}, |  | ||||||
| 		{StatusCode: 429, Body: body(`{"__type":"ProvisionedThroughputExceededException","message":"Rate exceeded."}`)}, |  | ||||||
| 		{StatusCode: 200, Body: body(`{"data":"valid"}`)}, |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	s := NewService(aws.NewConfig().WithMaxRetries(10)) |  | ||||||
| 	s.Handlers.Validate.Clear() |  | ||||||
| 	s.Handlers.Unmarshal.PushBack(unmarshal) |  | ||||||
| 	s.Handlers.UnmarshalError.PushBack(unmarshalError) |  | ||||||
| 	s.Handlers.Send.Clear() // mock sending |  | ||||||
| 	s.Handlers.Send.PushBack(func(r *Request) { |  | ||||||
| 		r.HTTPResponse = &reqs[reqNum] |  | ||||||
| 		reqNum++ |  | ||||||
| 	}) |  | ||||||
| 	out := &testData{} |  | ||||||
| 	r := NewRequest(s, &Operation{Name: "Operation"}, nil, out) |  | ||||||
| 	err := r.Send() |  | ||||||
| 	assert.Nil(t, err) |  | ||||||
| 	assert.Equal(t, 2, int(r.RetryCount)) |  | ||||||
| 	assert.Equal(t, "valid", out.Data) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // test that retries don't occur for 4xx status codes with a response type that can't be retried |  | ||||||
| func TestRequest4xxUnretryable(t *testing.T) { |  | ||||||
| 	s := NewService(aws.NewConfig().WithMaxRetries(10)) |  | ||||||
| 	s.Handlers.Validate.Clear() |  | ||||||
| 	s.Handlers.Unmarshal.PushBack(unmarshal) |  | ||||||
| 	s.Handlers.UnmarshalError.PushBack(unmarshalError) |  | ||||||
| 	s.Handlers.Send.Clear() // mock sending |  | ||||||
| 	s.Handlers.Send.PushBack(func(r *Request) { |  | ||||||
| 		r.HTTPResponse = &http.Response{StatusCode: 401, Body: body(`{"__type":"SignatureDoesNotMatch","message":"Signature does not match."}`)} |  | ||||||
| 	}) |  | ||||||
| 	out := &testData{} |  | ||||||
| 	r := NewRequest(s, &Operation{Name: "Operation"}, nil, out) |  | ||||||
| 	err := r.Send() |  | ||||||
| 	assert.NotNil(t, err) |  | ||||||
| 	if e, ok := err.(awserr.RequestFailure); ok { |  | ||||||
| 		assert.Equal(t, 401, e.StatusCode()) |  | ||||||
| 	} else { |  | ||||||
| 		assert.Fail(t, "Expected error to be a service failure") |  | ||||||
| 	} |  | ||||||
| 	assert.Equal(t, "SignatureDoesNotMatch", err.(awserr.Error).Code()) |  | ||||||
| 	assert.Equal(t, "Signature does not match.", err.(awserr.Error).Message()) |  | ||||||
| 	assert.Equal(t, 0, int(r.RetryCount)) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestRequestExhaustRetries(t *testing.T) { |  | ||||||
| 	delays := []time.Duration{} |  | ||||||
| 	sleepDelay = func(delay time.Duration) { |  | ||||||
| 		delays = append(delays, delay) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	reqNum := 0 |  | ||||||
| 	reqs := []http.Response{ |  | ||||||
| 		{StatusCode: 500, Body: body(`{"__type":"UnknownError","message":"An error occurred."}`)}, |  | ||||||
| 		{StatusCode: 500, Body: body(`{"__type":"UnknownError","message":"An error occurred."}`)}, |  | ||||||
| 		{StatusCode: 500, Body: body(`{"__type":"UnknownError","message":"An error occurred."}`)}, |  | ||||||
| 		{StatusCode: 500, Body: body(`{"__type":"UnknownError","message":"An error occurred."}`)}, |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	s := NewService(aws.NewConfig().WithMaxRetries(aws.DefaultRetries)) |  | ||||||
| 	s.Handlers.Validate.Clear() |  | ||||||
| 	s.Handlers.Unmarshal.PushBack(unmarshal) |  | ||||||
| 	s.Handlers.UnmarshalError.PushBack(unmarshalError) |  | ||||||
| 	s.Handlers.Send.Clear() // mock sending |  | ||||||
| 	s.Handlers.Send.PushBack(func(r *Request) { |  | ||||||
| 		r.HTTPResponse = &reqs[reqNum] |  | ||||||
| 		reqNum++ |  | ||||||
| 	}) |  | ||||||
| 	r := NewRequest(s, &Operation{Name: "Operation"}, nil, nil) |  | ||||||
| 	err := r.Send() |  | ||||||
| 	assert.NotNil(t, err) |  | ||||||
| 	if e, ok := err.(awserr.RequestFailure); ok { |  | ||||||
| 		assert.Equal(t, 500, e.StatusCode()) |  | ||||||
| 	} else { |  | ||||||
| 		assert.Fail(t, "Expected error to be a service failure") |  | ||||||
| 	} |  | ||||||
| 	assert.Equal(t, "UnknownError", err.(awserr.Error).Code()) |  | ||||||
| 	assert.Equal(t, "An error occurred.", err.(awserr.Error).Message()) |  | ||||||
| 	assert.Equal(t, 3, int(r.RetryCount)) |  | ||||||
|  |  | ||||||
| 	expectDelays := []struct{ min, max time.Duration }{{30, 59}, {60, 118}, {120, 236}} |  | ||||||
| 	for i, v := range delays { |  | ||||||
| 		min := expectDelays[i].min * time.Millisecond |  | ||||||
| 		max := expectDelays[i].max * time.Millisecond |  | ||||||
| 		assert.True(t, min <= v && v <= max, |  | ||||||
| 			"Expect delay to be within range, i:%d, v:%s, min:%s, max:%s", i, v, min, max) |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // test that the request is retried after the credentials are expired. |  | ||||||
| func TestRequestRecoverExpiredCreds(t *testing.T) { |  | ||||||
| 	reqNum := 0 |  | ||||||
| 	reqs := []http.Response{ |  | ||||||
| 		{StatusCode: 400, Body: body(`{"__type":"ExpiredTokenException","message":"expired token"}`)}, |  | ||||||
| 		{StatusCode: 200, Body: body(`{"data":"valid"}`)}, |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	s := NewService(&aws.Config{MaxRetries: aws.Int(10), Credentials: credentials.NewStaticCredentials("AKID", "SECRET", "")}) |  | ||||||
| 	s.Handlers.Validate.Clear() |  | ||||||
| 	s.Handlers.Unmarshal.PushBack(unmarshal) |  | ||||||
| 	s.Handlers.UnmarshalError.PushBack(unmarshalError) |  | ||||||
|  |  | ||||||
| 	credExpiredBeforeRetry := false |  | ||||||
| 	credExpiredAfterRetry := false |  | ||||||
|  |  | ||||||
| 	s.Handlers.AfterRetry.PushBack(func(r *Request) { |  | ||||||
| 		credExpiredAfterRetry = r.Config.Credentials.IsExpired() |  | ||||||
| 	}) |  | ||||||
|  |  | ||||||
| 	s.Handlers.Sign.Clear() |  | ||||||
| 	s.Handlers.Sign.PushBack(func(r *Request) { |  | ||||||
| 		r.Config.Credentials.Get() |  | ||||||
| 	}) |  | ||||||
| 	s.Handlers.Send.Clear() // mock sending |  | ||||||
| 	s.Handlers.Send.PushBack(func(r *Request) { |  | ||||||
| 		r.HTTPResponse = &reqs[reqNum] |  | ||||||
| 		reqNum++ |  | ||||||
| 	}) |  | ||||||
| 	out := &testData{} |  | ||||||
| 	r := NewRequest(s, &Operation{Name: "Operation"}, nil, out) |  | ||||||
| 	err := r.Send() |  | ||||||
| 	assert.Nil(t, err) |  | ||||||
|  |  | ||||||
| 	assert.False(t, credExpiredBeforeRetry, "Expect valid creds before retry check") |  | ||||||
| 	assert.True(t, credExpiredAfterRetry, "Expect expired creds after retry check") |  | ||||||
| 	assert.False(t, s.Config.Credentials.IsExpired(), "Expect valid creds after cred expired recovery") |  | ||||||
|  |  | ||||||
| 	assert.Equal(t, 1, int(r.RetryCount)) |  | ||||||
| 	assert.Equal(t, "valid", out.Data) |  | ||||||
| } |  | ||||||
							
								
								
									
										137
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/service/service.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										137
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/service/service.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -3,40 +3,32 @@ package service | |||||||
| import ( | import ( | ||||||
| 	"fmt" | 	"fmt" | ||||||
| 	"io/ioutil" | 	"io/ioutil" | ||||||
| 	"math" |  | ||||||
| 	"math/rand" |  | ||||||
| 	"net/http" | 	"net/http" | ||||||
| 	"net/http/httputil" | 	"net/http/httputil" | ||||||
| 	"regexp" | 	"regexp" | ||||||
| 	"time" | 	"time" | ||||||
|  |  | ||||||
| 	"github.com/aws/aws-sdk-go/aws" | 	"github.com/aws/aws-sdk-go/aws" | ||||||
| 	"github.com/aws/aws-sdk-go/aws/awserr" | 	"github.com/aws/aws-sdk-go/aws/corehandlers" | ||||||
|  | 	"github.com/aws/aws-sdk-go/aws/request" | ||||||
|  | 	"github.com/aws/aws-sdk-go/aws/service/serviceinfo" | ||||||
| 	"github.com/aws/aws-sdk-go/internal/endpoints" | 	"github.com/aws/aws-sdk-go/internal/endpoints" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| // A Service implements the base service request and response handling | // A Service implements the base service request and response handling | ||||||
| // used by all services. | // used by all services. | ||||||
| type Service struct { | type Service struct { | ||||||
| 	Config            *aws.Config | 	serviceinfo.ServiceInfo | ||||||
| 	Handlers          Handlers | 	request.Retryer | ||||||
| 	ServiceName       string |  | ||||||
| 	APIVersion        string |  | ||||||
| 	Endpoint          string |  | ||||||
| 	SigningName       string |  | ||||||
| 	SigningRegion     string |  | ||||||
| 	JSONVersion       string |  | ||||||
| 	TargetPrefix      string |  | ||||||
| 	RetryRules        func(*Request) time.Duration |  | ||||||
| 	ShouldRetry       func(*Request) bool |  | ||||||
| 	DefaultMaxRetries uint | 	DefaultMaxRetries uint | ||||||
|  | 	Handlers          request.Handlers | ||||||
| } | } | ||||||
|  |  | ||||||
| var schemeRE = regexp.MustCompile("^([^:]+)://") | var schemeRE = regexp.MustCompile("^([^:]+)://") | ||||||
|  |  | ||||||
| // NewService will return a pointer to a new Server object initialized. | // New will return a pointer to a new Server object initialized. | ||||||
| func NewService(config *aws.Config) *Service { | func New(config *aws.Config) *Service { | ||||||
| 	svc := &Service{Config: config} | 	svc := &Service{ServiceInfo: serviceinfo.ServiceInfo{Config: config}} | ||||||
| 	svc.Initialize() | 	svc.Initialize() | ||||||
| 	return svc | 	return svc | ||||||
| } | } | ||||||
| @@ -49,28 +41,29 @@ func (s *Service) Initialize() { | |||||||
| 	if s.Config.HTTPClient == nil { | 	if s.Config.HTTPClient == nil { | ||||||
| 		s.Config.HTTPClient = http.DefaultClient | 		s.Config.HTTPClient = http.DefaultClient | ||||||
| 	} | 	} | ||||||
|  | 	if s.Config.SleepDelay == nil { | ||||||
| 	if s.RetryRules == nil { | 		s.Config.SleepDelay = time.Sleep | ||||||
| 		s.RetryRules = retryRules |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	if s.ShouldRetry == nil { |  | ||||||
| 		s.ShouldRetry = shouldRetry |  | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | 	s.Retryer = DefaultRetryer{s} | ||||||
| 	s.DefaultMaxRetries = 3 | 	s.DefaultMaxRetries = 3 | ||||||
| 	s.Handlers.Validate.PushBack(ValidateEndpointHandler) | 	s.Handlers.Validate.PushBackNamed(corehandlers.ValidateEndpointHandler) | ||||||
| 	s.Handlers.Build.PushBack(UserAgentHandler) | 	s.Handlers.Build.PushBackNamed(corehandlers.UserAgentHandler) | ||||||
| 	s.Handlers.Sign.PushBack(BuildContentLength) | 	s.Handlers.Sign.PushBackNamed(corehandlers.BuildContentLengthHandler) | ||||||
| 	s.Handlers.Send.PushBack(SendHandler) | 	s.Handlers.Send.PushBackNamed(corehandlers.SendHandler) | ||||||
| 	s.Handlers.AfterRetry.PushBack(AfterRetryHandler) | 	s.Handlers.AfterRetry.PushBackNamed(corehandlers.AfterRetryHandler) | ||||||
| 	s.Handlers.ValidateResponse.PushBack(ValidateResponseHandler) | 	s.Handlers.ValidateResponse.PushBackNamed(corehandlers.ValidateResponseHandler) | ||||||
|  | 	if !aws.BoolValue(s.Config.DisableParamValidation) { | ||||||
|  | 		s.Handlers.Validate.PushBackNamed(corehandlers.ValidateParametersHandler) | ||||||
|  | 	} | ||||||
| 	s.AddDebugHandlers() | 	s.AddDebugHandlers() | ||||||
| 	s.buildEndpoint() | 	s.buildEndpoint() | ||||||
|  | } | ||||||
|  |  | ||||||
| 	if !aws.BoolValue(s.Config.DisableParamValidation) { | // NewRequest returns a new Request pointer for the service API | ||||||
| 		s.Handlers.Validate.PushBack(ValidateParameters) | // operation and parameters. | ||||||
| 	} | func (s *Service) NewRequest(operation *request.Operation, params interface{}, data interface{}) *request.Request { | ||||||
|  | 	return request.New(s.ServiceInfo, s.Handlers, s.Retryer, operation, params, data) | ||||||
| } | } | ||||||
|  |  | ||||||
| // buildEndpoint builds the endpoint values the service will use to make requests with. | // buildEndpoint builds the endpoint values the service will use to make requests with. | ||||||
| @@ -107,19 +100,19 @@ const logReqMsg = `DEBUG: Request %s/%s Details: | |||||||
| %s | %s | ||||||
| -----------------------------------------------------` | -----------------------------------------------------` | ||||||
|  |  | ||||||
| func logRequest(r *Request) { | func logRequest(r *request.Request) { | ||||||
| 	logBody := r.Config.LogLevel.Matches(aws.LogDebugWithHTTPBody) | 	logBody := r.Service.Config.LogLevel.Matches(aws.LogDebugWithHTTPBody) | ||||||
| 	dumpedBody, _ := httputil.DumpRequestOut(r.HTTPRequest, logBody) | 	dumpedBody, _ := httputil.DumpRequestOut(r.HTTPRequest, logBody) | ||||||
|  |  | ||||||
| 	if logBody { | 	if logBody { | ||||||
| 		// Reset the request body because dumpRequest will re-wrap the r.HTTPRequest's | 		// Reset the request body because dumpRequest will re-wrap the r.HTTPRequest's | ||||||
| 		// Body as a NoOpCloser and will not be reset after read by the HTTP | 		// Body as a NoOpCloser and will not be reset after read by the HTTP | ||||||
| 		// client reader. | 		// client reader. | ||||||
| 		r.Body.Seek(r.bodyStart, 0) | 		r.Body.Seek(r.BodyStart, 0) | ||||||
| 		r.HTTPRequest.Body = ioutil.NopCloser(r.Body) | 		r.HTTPRequest.Body = ioutil.NopCloser(r.Body) | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	r.Config.Logger.Log(fmt.Sprintf(logReqMsg, r.ServiceName, r.Operation.Name, string(dumpedBody))) | 	r.Service.Config.Logger.Log(fmt.Sprintf(logReqMsg, r.Service.ServiceName, r.Operation.Name, string(dumpedBody))) | ||||||
| } | } | ||||||
|  |  | ||||||
| const logRespMsg = `DEBUG: Response %s/%s Details: | const logRespMsg = `DEBUG: Response %s/%s Details: | ||||||
| @@ -127,78 +120,14 @@ const logRespMsg = `DEBUG: Response %s/%s Details: | |||||||
| %s | %s | ||||||
| -----------------------------------------------------` | -----------------------------------------------------` | ||||||
|  |  | ||||||
| func logResponse(r *Request) { | func logResponse(r *request.Request) { | ||||||
| 	var msg = "no reponse data" | 	var msg = "no reponse data" | ||||||
| 	if r.HTTPResponse != nil { | 	if r.HTTPResponse != nil { | ||||||
| 		logBody := r.Config.LogLevel.Matches(aws.LogDebugWithHTTPBody) | 		logBody := r.Service.Config.LogLevel.Matches(aws.LogDebugWithHTTPBody) | ||||||
| 		dumpedBody, _ := httputil.DumpResponse(r.HTTPResponse, logBody) | 		dumpedBody, _ := httputil.DumpResponse(r.HTTPResponse, logBody) | ||||||
| 		msg = string(dumpedBody) | 		msg = string(dumpedBody) | ||||||
| 	} else if r.Error != nil { | 	} else if r.Error != nil { | ||||||
| 		msg = r.Error.Error() | 		msg = r.Error.Error() | ||||||
| 	} | 	} | ||||||
| 	r.Config.Logger.Log(fmt.Sprintf(logRespMsg, r.ServiceName, r.Operation.Name, msg)) | 	r.Service.Config.Logger.Log(fmt.Sprintf(logRespMsg, r.Service.ServiceName, r.Operation.Name, msg)) | ||||||
| } |  | ||||||
|  |  | ||||||
| // MaxRetries returns the number of maximum returns the service will use to make |  | ||||||
| // an individual API request. |  | ||||||
| func (s *Service) MaxRetries() uint { |  | ||||||
| 	if aws.IntValue(s.Config.MaxRetries) < 0 { |  | ||||||
| 		return s.DefaultMaxRetries |  | ||||||
| 	} |  | ||||||
| 	return uint(aws.IntValue(s.Config.MaxRetries)) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| var seededRand = rand.New(rand.NewSource(time.Now().UnixNano())) |  | ||||||
|  |  | ||||||
| // retryRules returns the delay duration before retrying this request again |  | ||||||
| func retryRules(r *Request) time.Duration { |  | ||||||
|  |  | ||||||
| 	delay := int(math.Pow(2, float64(r.RetryCount))) * (seededRand.Intn(30) + 30) |  | ||||||
| 	return time.Duration(delay) * time.Millisecond |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // retryableCodes is a collection of service response codes which are retry-able |  | ||||||
| // without any further action. |  | ||||||
| var retryableCodes = map[string]struct{}{ |  | ||||||
| 	"RequestError":                           {}, |  | ||||||
| 	"ProvisionedThroughputExceededException": {}, |  | ||||||
| 	"Throttling":                             {}, |  | ||||||
| 	"ThrottlingException":                    {}, |  | ||||||
| 	"RequestLimitExceeded":                   {}, |  | ||||||
| 	"RequestThrottled":                       {}, |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // credsExpiredCodes is a collection of error codes which signify the credentials |  | ||||||
| // need to be refreshed. Expired tokens require refreshing of credentials, and |  | ||||||
| // resigning before the request can be retried. |  | ||||||
| var credsExpiredCodes = map[string]struct{}{ |  | ||||||
| 	"ExpiredToken":          {}, |  | ||||||
| 	"ExpiredTokenException": {}, |  | ||||||
| 	"RequestExpired":        {}, // EC2 Only |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func isCodeRetryable(code string) bool { |  | ||||||
| 	if _, ok := retryableCodes[code]; ok { |  | ||||||
| 		return true |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	return isCodeExpiredCreds(code) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func isCodeExpiredCreds(code string) bool { |  | ||||||
| 	_, ok := credsExpiredCodes[code] |  | ||||||
| 	return ok |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // shouldRetry returns if the request should be retried. |  | ||||||
| func shouldRetry(r *Request) bool { |  | ||||||
| 	if r.HTTPResponse.StatusCode >= 500 { |  | ||||||
| 		return true |  | ||||||
| 	} |  | ||||||
| 	if r.Error != nil { |  | ||||||
| 		if err, ok := r.Error.(awserr.Error); ok { |  | ||||||
| 			return isCodeRetryable(err.Code()) |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
| 	return false |  | ||||||
| } | } | ||||||
|   | |||||||
							
								
								
									
										15
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/service/serviceinfo/service_info.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/service/serviceinfo/service_info.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,15 @@ | |||||||
|  | package serviceinfo | ||||||
|  |  | ||||||
|  | import "github.com/aws/aws-sdk-go/aws" | ||||||
|  |  | ||||||
|  | // ServiceInfo wraps immutable data from the service.Service structure. | ||||||
|  | type ServiceInfo struct { | ||||||
|  | 	Config        *aws.Config | ||||||
|  | 	ServiceName   string | ||||||
|  | 	APIVersion    string | ||||||
|  | 	Endpoint      string | ||||||
|  | 	SigningName   string | ||||||
|  | 	SigningRegion string | ||||||
|  | 	JSONVersion   string | ||||||
|  | 	TargetPrefix  string | ||||||
|  | } | ||||||
							
								
								
									
										56
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/types_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										56
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/types_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,56 +0,0 @@ | |||||||
| package aws |  | ||||||
|  |  | ||||||
| import ( |  | ||||||
| 	"math/rand" |  | ||||||
| 	"testing" |  | ||||||
|  |  | ||||||
| 	"github.com/stretchr/testify/assert" |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| func TestWriteAtBuffer(t *testing.T) { |  | ||||||
| 	b := &WriteAtBuffer{} |  | ||||||
|  |  | ||||||
| 	n, err := b.WriteAt([]byte{1}, 0) |  | ||||||
| 	assert.NoError(t, err) |  | ||||||
| 	assert.Equal(t, 1, n) |  | ||||||
|  |  | ||||||
| 	n, err = b.WriteAt([]byte{1, 1, 1}, 5) |  | ||||||
| 	assert.NoError(t, err) |  | ||||||
| 	assert.Equal(t, 3, n) |  | ||||||
|  |  | ||||||
| 	n, err = b.WriteAt([]byte{2}, 1) |  | ||||||
| 	assert.NoError(t, err) |  | ||||||
| 	assert.Equal(t, 1, n) |  | ||||||
|  |  | ||||||
| 	n, err = b.WriteAt([]byte{3}, 2) |  | ||||||
| 	assert.NoError(t, err) |  | ||||||
| 	assert.Equal(t, 1, n) |  | ||||||
|  |  | ||||||
| 	assert.Equal(t, []byte{1, 2, 3, 0, 0, 1, 1, 1}, b.Bytes()) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func BenchmarkWriteAtBuffer(b *testing.B) { |  | ||||||
| 	buf := &WriteAtBuffer{} |  | ||||||
| 	r := rand.New(rand.NewSource(1)) |  | ||||||
|  |  | ||||||
| 	b.ResetTimer() |  | ||||||
| 	for i := 0; i < b.N; i++ { |  | ||||||
| 		to := r.Intn(10) * 4096 |  | ||||||
| 		bs := make([]byte, to) |  | ||||||
| 		buf.WriteAt(bs, r.Int63n(10)*4096) |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func BenchmarkWriteAtBufferParallel(b *testing.B) { |  | ||||||
| 	buf := &WriteAtBuffer{} |  | ||||||
| 	r := rand.New(rand.NewSource(1)) |  | ||||||
|  |  | ||||||
| 	b.ResetTimer() |  | ||||||
| 	b.RunParallel(func(pb *testing.PB) { |  | ||||||
| 		for pb.Next() { |  | ||||||
| 			to := r.Intn(10) * 4096 |  | ||||||
| 			bs := make([]byte, to) |  | ||||||
| 			buf.WriteAt(bs, r.Int63n(10)*4096) |  | ||||||
| 		} |  | ||||||
| 	}) |  | ||||||
| } |  | ||||||
							
								
								
									
										2
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/version.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/aws/version.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -5,4 +5,4 @@ package aws | |||||||
| const SDKName = "aws-sdk-go" | const SDKName = "aws-sdk-go" | ||||||
|  |  | ||||||
| // SDKVersion is the version of this SDK | // SDKVersion is the version of this SDK | ||||||
| const SDKVersion = "0.9.0rc1" | const SDKVersion = "0.9.9" | ||||||
|   | |||||||
							
								
								
									
										28
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/endpoints/endpoints_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										28
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/endpoints/endpoints_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,28 +0,0 @@ | |||||||
| package endpoints |  | ||||||
|  |  | ||||||
| import ( |  | ||||||
| 	"testing" |  | ||||||
|  |  | ||||||
| 	"github.com/stretchr/testify/assert" |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| func TestGlobalEndpoints(t *testing.T) { |  | ||||||
| 	region := "mock-region-1" |  | ||||||
| 	svcs := []string{"cloudfront", "iam", "importexport", "route53", "sts"} |  | ||||||
|  |  | ||||||
| 	for _, name := range svcs { |  | ||||||
| 		ep, sr := EndpointForRegion(name, region) |  | ||||||
| 		assert.Equal(t, name+".amazonaws.com", ep) |  | ||||||
| 		assert.Equal(t, "us-east-1", sr) |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestServicesInCN(t *testing.T) { |  | ||||||
| 	region := "cn-north-1" |  | ||||||
| 	svcs := []string{"cloudfront", "iam", "importexport", "route53", "sts", "s3"} |  | ||||||
|  |  | ||||||
| 	for _, name := range svcs { |  | ||||||
| 		ep, _ := EndpointForRegion(name, region) |  | ||||||
| 		assert.Equal(t, name+"."+region+".amazonaws.com.cn", ep) |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
							
								
								
									
										4
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/protocol/ec2query/build.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/protocol/ec2query/build.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -7,12 +7,12 @@ import ( | |||||||
| 	"net/url" | 	"net/url" | ||||||
|  |  | ||||||
| 	"github.com/aws/aws-sdk-go/aws/awserr" | 	"github.com/aws/aws-sdk-go/aws/awserr" | ||||||
| 	"github.com/aws/aws-sdk-go/aws/service" | 	"github.com/aws/aws-sdk-go/aws/request" | ||||||
| 	"github.com/aws/aws-sdk-go/internal/protocol/query/queryutil" | 	"github.com/aws/aws-sdk-go/internal/protocol/query/queryutil" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| // Build builds a request for the EC2 protocol. | // Build builds a request for the EC2 protocol. | ||||||
| func Build(r *service.Request) { | func Build(r *request.Request) { | ||||||
| 	body := url.Values{ | 	body := url.Values{ | ||||||
| 		"Action":  {r.Operation.Name}, | 		"Action":  {r.Operation.Name}, | ||||||
| 		"Version": {r.Service.APIVersion}, | 		"Version": {r.Service.APIVersion}, | ||||||
|   | |||||||
							
								
								
									
										862
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/protocol/ec2query/build_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										862
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/protocol/ec2query/build_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,862 +0,0 @@ | |||||||
| package ec2query_test |  | ||||||
|  |  | ||||||
| import ( |  | ||||||
| 	"bytes" |  | ||||||
| 	"encoding/json" |  | ||||||
| 	"encoding/xml" |  | ||||||
| 	"io" |  | ||||||
| 	"io/ioutil" |  | ||||||
| 	"net/http" |  | ||||||
| 	"net/url" |  | ||||||
| 	"testing" |  | ||||||
| 	"time" |  | ||||||
|  |  | ||||||
| 	"github.com/aws/aws-sdk-go/aws" |  | ||||||
| 	"github.com/aws/aws-sdk-go/aws/defaults" |  | ||||||
| 	"github.com/aws/aws-sdk-go/aws/service" |  | ||||||
| 	"github.com/aws/aws-sdk-go/internal/protocol/ec2query" |  | ||||||
| 	"github.com/aws/aws-sdk-go/internal/protocol/xml/xmlutil" |  | ||||||
| 	"github.com/aws/aws-sdk-go/internal/signer/v4" |  | ||||||
| 	"github.com/aws/aws-sdk-go/internal/util" |  | ||||||
| 	"github.com/stretchr/testify/assert" |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| var _ bytes.Buffer // always import bytes |  | ||||||
| var _ http.Request |  | ||||||
| var _ json.Marshaler |  | ||||||
| var _ time.Time |  | ||||||
| var _ xmlutil.XMLNode |  | ||||||
| var _ xml.Attr |  | ||||||
| var _ = ioutil.Discard |  | ||||||
| var _ = util.Trim("") |  | ||||||
| var _ = url.Values{} |  | ||||||
| var _ = io.EOF |  | ||||||
|  |  | ||||||
| type InputService1ProtocolTest struct { |  | ||||||
| 	*service.Service |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // New returns a new InputService1ProtocolTest client. |  | ||||||
| func NewInputService1ProtocolTest(config *aws.Config) *InputService1ProtocolTest { |  | ||||||
| 	service := &service.Service{ |  | ||||||
| 		Config:      defaults.DefaultConfig.Merge(config), |  | ||||||
| 		ServiceName: "inputservice1protocoltest", |  | ||||||
| 		APIVersion:  "2014-01-01", |  | ||||||
| 	} |  | ||||||
| 	service.Initialize() |  | ||||||
|  |  | ||||||
| 	// Handlers |  | ||||||
| 	service.Handlers.Sign.PushBack(v4.Sign) |  | ||||||
| 	service.Handlers.Build.PushBack(ec2query.Build) |  | ||||||
| 	service.Handlers.Unmarshal.PushBack(ec2query.Unmarshal) |  | ||||||
| 	service.Handlers.UnmarshalMeta.PushBack(ec2query.UnmarshalMeta) |  | ||||||
| 	service.Handlers.UnmarshalError.PushBack(ec2query.UnmarshalError) |  | ||||||
|  |  | ||||||
| 	return &InputService1ProtocolTest{service} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // newRequest creates a new request for a InputService1ProtocolTest operation and runs any |  | ||||||
| // custom request initialization. |  | ||||||
| func (c *InputService1ProtocolTest) newRequest(op *service.Operation, params, data interface{}) *service.Request { |  | ||||||
| 	req := service.NewRequest(c.Service, op, params, data) |  | ||||||
|  |  | ||||||
| 	return req |  | ||||||
| } |  | ||||||
|  |  | ||||||
| const opInputService1TestCaseOperation1 = "OperationName" |  | ||||||
|  |  | ||||||
| // InputService1TestCaseOperation1Request generates a request for the InputService1TestCaseOperation1 operation. |  | ||||||
| func (c *InputService1ProtocolTest) InputService1TestCaseOperation1Request(input *InputService1TestShapeInputShape) (req *service.Request, output *InputService1TestShapeInputService1TestCaseOperation1Output) { |  | ||||||
| 	op := &service.Operation{ |  | ||||||
| 		Name: opInputService1TestCaseOperation1, |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	if input == nil { |  | ||||||
| 		input = &InputService1TestShapeInputShape{} |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	req = c.newRequest(op, input, output) |  | ||||||
| 	output = &InputService1TestShapeInputService1TestCaseOperation1Output{} |  | ||||||
| 	req.Data = output |  | ||||||
| 	return |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func (c *InputService1ProtocolTest) InputService1TestCaseOperation1(input *InputService1TestShapeInputShape) (*InputService1TestShapeInputService1TestCaseOperation1Output, error) { |  | ||||||
| 	req, out := c.InputService1TestCaseOperation1Request(input) |  | ||||||
| 	err := req.Send() |  | ||||||
| 	return out, err |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type InputService1TestShapeInputService1TestCaseOperation1Output struct { |  | ||||||
| 	metadataInputService1TestShapeInputService1TestCaseOperation1Output `json:"-" xml:"-"` |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type metadataInputService1TestShapeInputService1TestCaseOperation1Output struct { |  | ||||||
| 	SDKShapeTraits bool `type:"structure"` |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type InputService1TestShapeInputShape struct { |  | ||||||
| 	Bar *string `type:"string"` |  | ||||||
|  |  | ||||||
| 	Foo *string `type:"string"` |  | ||||||
|  |  | ||||||
| 	metadataInputService1TestShapeInputShape `json:"-" xml:"-"` |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type metadataInputService1TestShapeInputShape struct { |  | ||||||
| 	SDKShapeTraits bool `type:"structure"` |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type InputService2ProtocolTest struct { |  | ||||||
| 	*service.Service |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // New returns a new InputService2ProtocolTest client. |  | ||||||
| func NewInputService2ProtocolTest(config *aws.Config) *InputService2ProtocolTest { |  | ||||||
| 	service := &service.Service{ |  | ||||||
| 		Config:      defaults.DefaultConfig.Merge(config), |  | ||||||
| 		ServiceName: "inputservice2protocoltest", |  | ||||||
| 		APIVersion:  "2014-01-01", |  | ||||||
| 	} |  | ||||||
| 	service.Initialize() |  | ||||||
|  |  | ||||||
| 	// Handlers |  | ||||||
| 	service.Handlers.Sign.PushBack(v4.Sign) |  | ||||||
| 	service.Handlers.Build.PushBack(ec2query.Build) |  | ||||||
| 	service.Handlers.Unmarshal.PushBack(ec2query.Unmarshal) |  | ||||||
| 	service.Handlers.UnmarshalMeta.PushBack(ec2query.UnmarshalMeta) |  | ||||||
| 	service.Handlers.UnmarshalError.PushBack(ec2query.UnmarshalError) |  | ||||||
|  |  | ||||||
| 	return &InputService2ProtocolTest{service} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // newRequest creates a new request for a InputService2ProtocolTest operation and runs any |  | ||||||
| // custom request initialization. |  | ||||||
| func (c *InputService2ProtocolTest) newRequest(op *service.Operation, params, data interface{}) *service.Request { |  | ||||||
| 	req := service.NewRequest(c.Service, op, params, data) |  | ||||||
|  |  | ||||||
| 	return req |  | ||||||
| } |  | ||||||
|  |  | ||||||
| const opInputService2TestCaseOperation1 = "OperationName" |  | ||||||
|  |  | ||||||
| // InputService2TestCaseOperation1Request generates a request for the InputService2TestCaseOperation1 operation. |  | ||||||
| func (c *InputService2ProtocolTest) InputService2TestCaseOperation1Request(input *InputService2TestShapeInputShape) (req *service.Request, output *InputService2TestShapeInputService2TestCaseOperation1Output) { |  | ||||||
| 	op := &service.Operation{ |  | ||||||
| 		Name: opInputService2TestCaseOperation1, |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	if input == nil { |  | ||||||
| 		input = &InputService2TestShapeInputShape{} |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	req = c.newRequest(op, input, output) |  | ||||||
| 	output = &InputService2TestShapeInputService2TestCaseOperation1Output{} |  | ||||||
| 	req.Data = output |  | ||||||
| 	return |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func (c *InputService2ProtocolTest) InputService2TestCaseOperation1(input *InputService2TestShapeInputShape) (*InputService2TestShapeInputService2TestCaseOperation1Output, error) { |  | ||||||
| 	req, out := c.InputService2TestCaseOperation1Request(input) |  | ||||||
| 	err := req.Send() |  | ||||||
| 	return out, err |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type InputService2TestShapeInputService2TestCaseOperation1Output struct { |  | ||||||
| 	metadataInputService2TestShapeInputService2TestCaseOperation1Output `json:"-" xml:"-"` |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type metadataInputService2TestShapeInputService2TestCaseOperation1Output struct { |  | ||||||
| 	SDKShapeTraits bool `type:"structure"` |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type InputService2TestShapeInputShape struct { |  | ||||||
| 	Bar *string `locationName:"barLocationName" type:"string"` |  | ||||||
|  |  | ||||||
| 	Foo *string `type:"string"` |  | ||||||
|  |  | ||||||
| 	Yuck *string `locationName:"yuckLocationName" queryName:"yuckQueryName" type:"string"` |  | ||||||
|  |  | ||||||
| 	metadataInputService2TestShapeInputShape `json:"-" xml:"-"` |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type metadataInputService2TestShapeInputShape struct { |  | ||||||
| 	SDKShapeTraits bool `type:"structure"` |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type InputService3ProtocolTest struct { |  | ||||||
| 	*service.Service |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // New returns a new InputService3ProtocolTest client. |  | ||||||
| func NewInputService3ProtocolTest(config *aws.Config) *InputService3ProtocolTest { |  | ||||||
| 	service := &service.Service{ |  | ||||||
| 		Config:      defaults.DefaultConfig.Merge(config), |  | ||||||
| 		ServiceName: "inputservice3protocoltest", |  | ||||||
| 		APIVersion:  "2014-01-01", |  | ||||||
| 	} |  | ||||||
| 	service.Initialize() |  | ||||||
|  |  | ||||||
| 	// Handlers |  | ||||||
| 	service.Handlers.Sign.PushBack(v4.Sign) |  | ||||||
| 	service.Handlers.Build.PushBack(ec2query.Build) |  | ||||||
| 	service.Handlers.Unmarshal.PushBack(ec2query.Unmarshal) |  | ||||||
| 	service.Handlers.UnmarshalMeta.PushBack(ec2query.UnmarshalMeta) |  | ||||||
| 	service.Handlers.UnmarshalError.PushBack(ec2query.UnmarshalError) |  | ||||||
|  |  | ||||||
| 	return &InputService3ProtocolTest{service} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // newRequest creates a new request for a InputService3ProtocolTest operation and runs any |  | ||||||
| // custom request initialization. |  | ||||||
| func (c *InputService3ProtocolTest) newRequest(op *service.Operation, params, data interface{}) *service.Request { |  | ||||||
| 	req := service.NewRequest(c.Service, op, params, data) |  | ||||||
|  |  | ||||||
| 	return req |  | ||||||
| } |  | ||||||
|  |  | ||||||
| const opInputService3TestCaseOperation1 = "OperationName" |  | ||||||
|  |  | ||||||
| // InputService3TestCaseOperation1Request generates a request for the InputService3TestCaseOperation1 operation. |  | ||||||
| func (c *InputService3ProtocolTest) InputService3TestCaseOperation1Request(input *InputService3TestShapeInputShape) (req *service.Request, output *InputService3TestShapeInputService3TestCaseOperation1Output) { |  | ||||||
| 	op := &service.Operation{ |  | ||||||
| 		Name: opInputService3TestCaseOperation1, |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	if input == nil { |  | ||||||
| 		input = &InputService3TestShapeInputShape{} |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	req = c.newRequest(op, input, output) |  | ||||||
| 	output = &InputService3TestShapeInputService3TestCaseOperation1Output{} |  | ||||||
| 	req.Data = output |  | ||||||
| 	return |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func (c *InputService3ProtocolTest) InputService3TestCaseOperation1(input *InputService3TestShapeInputShape) (*InputService3TestShapeInputService3TestCaseOperation1Output, error) { |  | ||||||
| 	req, out := c.InputService3TestCaseOperation1Request(input) |  | ||||||
| 	err := req.Send() |  | ||||||
| 	return out, err |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type InputService3TestShapeInputService3TestCaseOperation1Output struct { |  | ||||||
| 	metadataInputService3TestShapeInputService3TestCaseOperation1Output `json:"-" xml:"-"` |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type metadataInputService3TestShapeInputService3TestCaseOperation1Output struct { |  | ||||||
| 	SDKShapeTraits bool `type:"structure"` |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type InputService3TestShapeInputShape struct { |  | ||||||
| 	StructArg *InputService3TestShapeStructType `locationName:"Struct" type:"structure"` |  | ||||||
|  |  | ||||||
| 	metadataInputService3TestShapeInputShape `json:"-" xml:"-"` |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type metadataInputService3TestShapeInputShape struct { |  | ||||||
| 	SDKShapeTraits bool `type:"structure"` |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type InputService3TestShapeStructType struct { |  | ||||||
| 	ScalarArg *string `locationName:"Scalar" type:"string"` |  | ||||||
|  |  | ||||||
| 	metadataInputService3TestShapeStructType `json:"-" xml:"-"` |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type metadataInputService3TestShapeStructType struct { |  | ||||||
| 	SDKShapeTraits bool `type:"structure"` |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type InputService4ProtocolTest struct { |  | ||||||
| 	*service.Service |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // New returns a new InputService4ProtocolTest client. |  | ||||||
| func NewInputService4ProtocolTest(config *aws.Config) *InputService4ProtocolTest { |  | ||||||
| 	service := &service.Service{ |  | ||||||
| 		Config:      defaults.DefaultConfig.Merge(config), |  | ||||||
| 		ServiceName: "inputservice4protocoltest", |  | ||||||
| 		APIVersion:  "2014-01-01", |  | ||||||
| 	} |  | ||||||
| 	service.Initialize() |  | ||||||
|  |  | ||||||
| 	// Handlers |  | ||||||
| 	service.Handlers.Sign.PushBack(v4.Sign) |  | ||||||
| 	service.Handlers.Build.PushBack(ec2query.Build) |  | ||||||
| 	service.Handlers.Unmarshal.PushBack(ec2query.Unmarshal) |  | ||||||
| 	service.Handlers.UnmarshalMeta.PushBack(ec2query.UnmarshalMeta) |  | ||||||
| 	service.Handlers.UnmarshalError.PushBack(ec2query.UnmarshalError) |  | ||||||
|  |  | ||||||
| 	return &InputService4ProtocolTest{service} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // newRequest creates a new request for a InputService4ProtocolTest operation and runs any |  | ||||||
| // custom request initialization. |  | ||||||
| func (c *InputService4ProtocolTest) newRequest(op *service.Operation, params, data interface{}) *service.Request { |  | ||||||
| 	req := service.NewRequest(c.Service, op, params, data) |  | ||||||
|  |  | ||||||
| 	return req |  | ||||||
| } |  | ||||||
|  |  | ||||||
| const opInputService4TestCaseOperation1 = "OperationName" |  | ||||||
|  |  | ||||||
| // InputService4TestCaseOperation1Request generates a request for the InputService4TestCaseOperation1 operation. |  | ||||||
| func (c *InputService4ProtocolTest) InputService4TestCaseOperation1Request(input *InputService4TestShapeInputShape) (req *service.Request, output *InputService4TestShapeInputService4TestCaseOperation1Output) { |  | ||||||
| 	op := &service.Operation{ |  | ||||||
| 		Name: opInputService4TestCaseOperation1, |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	if input == nil { |  | ||||||
| 		input = &InputService4TestShapeInputShape{} |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	req = c.newRequest(op, input, output) |  | ||||||
| 	output = &InputService4TestShapeInputService4TestCaseOperation1Output{} |  | ||||||
| 	req.Data = output |  | ||||||
| 	return |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func (c *InputService4ProtocolTest) InputService4TestCaseOperation1(input *InputService4TestShapeInputShape) (*InputService4TestShapeInputService4TestCaseOperation1Output, error) { |  | ||||||
| 	req, out := c.InputService4TestCaseOperation1Request(input) |  | ||||||
| 	err := req.Send() |  | ||||||
| 	return out, err |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type InputService4TestShapeInputService4TestCaseOperation1Output struct { |  | ||||||
| 	metadataInputService4TestShapeInputService4TestCaseOperation1Output `json:"-" xml:"-"` |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type metadataInputService4TestShapeInputService4TestCaseOperation1Output struct { |  | ||||||
| 	SDKShapeTraits bool `type:"structure"` |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type InputService4TestShapeInputShape struct { |  | ||||||
| 	ListArg []*string `type:"list"` |  | ||||||
|  |  | ||||||
| 	metadataInputService4TestShapeInputShape `json:"-" xml:"-"` |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type metadataInputService4TestShapeInputShape struct { |  | ||||||
| 	SDKShapeTraits bool `type:"structure"` |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type InputService5ProtocolTest struct { |  | ||||||
| 	*service.Service |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // New returns a new InputService5ProtocolTest client. |  | ||||||
| func NewInputService5ProtocolTest(config *aws.Config) *InputService5ProtocolTest { |  | ||||||
| 	service := &service.Service{ |  | ||||||
| 		Config:      defaults.DefaultConfig.Merge(config), |  | ||||||
| 		ServiceName: "inputservice5protocoltest", |  | ||||||
| 		APIVersion:  "2014-01-01", |  | ||||||
| 	} |  | ||||||
| 	service.Initialize() |  | ||||||
|  |  | ||||||
| 	// Handlers |  | ||||||
| 	service.Handlers.Sign.PushBack(v4.Sign) |  | ||||||
| 	service.Handlers.Build.PushBack(ec2query.Build) |  | ||||||
| 	service.Handlers.Unmarshal.PushBack(ec2query.Unmarshal) |  | ||||||
| 	service.Handlers.UnmarshalMeta.PushBack(ec2query.UnmarshalMeta) |  | ||||||
| 	service.Handlers.UnmarshalError.PushBack(ec2query.UnmarshalError) |  | ||||||
|  |  | ||||||
| 	return &InputService5ProtocolTest{service} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // newRequest creates a new request for a InputService5ProtocolTest operation and runs any |  | ||||||
| // custom request initialization. |  | ||||||
| func (c *InputService5ProtocolTest) newRequest(op *service.Operation, params, data interface{}) *service.Request { |  | ||||||
| 	req := service.NewRequest(c.Service, op, params, data) |  | ||||||
|  |  | ||||||
| 	return req |  | ||||||
| } |  | ||||||
|  |  | ||||||
| const opInputService5TestCaseOperation1 = "OperationName" |  | ||||||
|  |  | ||||||
| // InputService5TestCaseOperation1Request generates a request for the InputService5TestCaseOperation1 operation. |  | ||||||
| func (c *InputService5ProtocolTest) InputService5TestCaseOperation1Request(input *InputService5TestShapeInputShape) (req *service.Request, output *InputService5TestShapeInputService5TestCaseOperation1Output) { |  | ||||||
| 	op := &service.Operation{ |  | ||||||
| 		Name: opInputService5TestCaseOperation1, |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	if input == nil { |  | ||||||
| 		input = &InputService5TestShapeInputShape{} |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	req = c.newRequest(op, input, output) |  | ||||||
| 	output = &InputService5TestShapeInputService5TestCaseOperation1Output{} |  | ||||||
| 	req.Data = output |  | ||||||
| 	return |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func (c *InputService5ProtocolTest) InputService5TestCaseOperation1(input *InputService5TestShapeInputShape) (*InputService5TestShapeInputService5TestCaseOperation1Output, error) { |  | ||||||
| 	req, out := c.InputService5TestCaseOperation1Request(input) |  | ||||||
| 	err := req.Send() |  | ||||||
| 	return out, err |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type InputService5TestShapeInputService5TestCaseOperation1Output struct { |  | ||||||
| 	metadataInputService5TestShapeInputService5TestCaseOperation1Output `json:"-" xml:"-"` |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type metadataInputService5TestShapeInputService5TestCaseOperation1Output struct { |  | ||||||
| 	SDKShapeTraits bool `type:"structure"` |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type InputService5TestShapeInputShape struct { |  | ||||||
| 	ListArg []*string `locationName:"ListMemberName" locationNameList:"item" type:"list"` |  | ||||||
|  |  | ||||||
| 	metadataInputService5TestShapeInputShape `json:"-" xml:"-"` |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type metadataInputService5TestShapeInputShape struct { |  | ||||||
| 	SDKShapeTraits bool `type:"structure"` |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type InputService6ProtocolTest struct { |  | ||||||
| 	*service.Service |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // New returns a new InputService6ProtocolTest client. |  | ||||||
| func NewInputService6ProtocolTest(config *aws.Config) *InputService6ProtocolTest { |  | ||||||
| 	service := &service.Service{ |  | ||||||
| 		Config:      defaults.DefaultConfig.Merge(config), |  | ||||||
| 		ServiceName: "inputservice6protocoltest", |  | ||||||
| 		APIVersion:  "2014-01-01", |  | ||||||
| 	} |  | ||||||
| 	service.Initialize() |  | ||||||
|  |  | ||||||
| 	// Handlers |  | ||||||
| 	service.Handlers.Sign.PushBack(v4.Sign) |  | ||||||
| 	service.Handlers.Build.PushBack(ec2query.Build) |  | ||||||
| 	service.Handlers.Unmarshal.PushBack(ec2query.Unmarshal) |  | ||||||
| 	service.Handlers.UnmarshalMeta.PushBack(ec2query.UnmarshalMeta) |  | ||||||
| 	service.Handlers.UnmarshalError.PushBack(ec2query.UnmarshalError) |  | ||||||
|  |  | ||||||
| 	return &InputService6ProtocolTest{service} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // newRequest creates a new request for a InputService6ProtocolTest operation and runs any |  | ||||||
| // custom request initialization. |  | ||||||
| func (c *InputService6ProtocolTest) newRequest(op *service.Operation, params, data interface{}) *service.Request { |  | ||||||
| 	req := service.NewRequest(c.Service, op, params, data) |  | ||||||
|  |  | ||||||
| 	return req |  | ||||||
| } |  | ||||||
|  |  | ||||||
| const opInputService6TestCaseOperation1 = "OperationName" |  | ||||||
|  |  | ||||||
| // InputService6TestCaseOperation1Request generates a request for the InputService6TestCaseOperation1 operation. |  | ||||||
| func (c *InputService6ProtocolTest) InputService6TestCaseOperation1Request(input *InputService6TestShapeInputShape) (req *service.Request, output *InputService6TestShapeInputService6TestCaseOperation1Output) { |  | ||||||
| 	op := &service.Operation{ |  | ||||||
| 		Name: opInputService6TestCaseOperation1, |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	if input == nil { |  | ||||||
| 		input = &InputService6TestShapeInputShape{} |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	req = c.newRequest(op, input, output) |  | ||||||
| 	output = &InputService6TestShapeInputService6TestCaseOperation1Output{} |  | ||||||
| 	req.Data = output |  | ||||||
| 	return |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func (c *InputService6ProtocolTest) InputService6TestCaseOperation1(input *InputService6TestShapeInputShape) (*InputService6TestShapeInputService6TestCaseOperation1Output, error) { |  | ||||||
| 	req, out := c.InputService6TestCaseOperation1Request(input) |  | ||||||
| 	err := req.Send() |  | ||||||
| 	return out, err |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type InputService6TestShapeInputService6TestCaseOperation1Output struct { |  | ||||||
| 	metadataInputService6TestShapeInputService6TestCaseOperation1Output `json:"-" xml:"-"` |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type metadataInputService6TestShapeInputService6TestCaseOperation1Output struct { |  | ||||||
| 	SDKShapeTraits bool `type:"structure"` |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type InputService6TestShapeInputShape struct { |  | ||||||
| 	ListArg []*string `locationName:"ListMemberName" queryName:"ListQueryName" locationNameList:"item" type:"list"` |  | ||||||
|  |  | ||||||
| 	metadataInputService6TestShapeInputShape `json:"-" xml:"-"` |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type metadataInputService6TestShapeInputShape struct { |  | ||||||
| 	SDKShapeTraits bool `type:"structure"` |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type InputService7ProtocolTest struct { |  | ||||||
| 	*service.Service |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // New returns a new InputService7ProtocolTest client. |  | ||||||
| func NewInputService7ProtocolTest(config *aws.Config) *InputService7ProtocolTest { |  | ||||||
| 	service := &service.Service{ |  | ||||||
| 		Config:      defaults.DefaultConfig.Merge(config), |  | ||||||
| 		ServiceName: "inputservice7protocoltest", |  | ||||||
| 		APIVersion:  "2014-01-01", |  | ||||||
| 	} |  | ||||||
| 	service.Initialize() |  | ||||||
|  |  | ||||||
| 	// Handlers |  | ||||||
| 	service.Handlers.Sign.PushBack(v4.Sign) |  | ||||||
| 	service.Handlers.Build.PushBack(ec2query.Build) |  | ||||||
| 	service.Handlers.Unmarshal.PushBack(ec2query.Unmarshal) |  | ||||||
| 	service.Handlers.UnmarshalMeta.PushBack(ec2query.UnmarshalMeta) |  | ||||||
| 	service.Handlers.UnmarshalError.PushBack(ec2query.UnmarshalError) |  | ||||||
|  |  | ||||||
| 	return &InputService7ProtocolTest{service} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // newRequest creates a new request for a InputService7ProtocolTest operation and runs any |  | ||||||
| // custom request initialization. |  | ||||||
| func (c *InputService7ProtocolTest) newRequest(op *service.Operation, params, data interface{}) *service.Request { |  | ||||||
| 	req := service.NewRequest(c.Service, op, params, data) |  | ||||||
|  |  | ||||||
| 	return req |  | ||||||
| } |  | ||||||
|  |  | ||||||
| const opInputService7TestCaseOperation1 = "OperationName" |  | ||||||
|  |  | ||||||
| // InputService7TestCaseOperation1Request generates a request for the InputService7TestCaseOperation1 operation. |  | ||||||
| func (c *InputService7ProtocolTest) InputService7TestCaseOperation1Request(input *InputService7TestShapeInputShape) (req *service.Request, output *InputService7TestShapeInputService7TestCaseOperation1Output) { |  | ||||||
| 	op := &service.Operation{ |  | ||||||
| 		Name: opInputService7TestCaseOperation1, |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	if input == nil { |  | ||||||
| 		input = &InputService7TestShapeInputShape{} |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	req = c.newRequest(op, input, output) |  | ||||||
| 	output = &InputService7TestShapeInputService7TestCaseOperation1Output{} |  | ||||||
| 	req.Data = output |  | ||||||
| 	return |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func (c *InputService7ProtocolTest) InputService7TestCaseOperation1(input *InputService7TestShapeInputShape) (*InputService7TestShapeInputService7TestCaseOperation1Output, error) { |  | ||||||
| 	req, out := c.InputService7TestCaseOperation1Request(input) |  | ||||||
| 	err := req.Send() |  | ||||||
| 	return out, err |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type InputService7TestShapeInputService7TestCaseOperation1Output struct { |  | ||||||
| 	metadataInputService7TestShapeInputService7TestCaseOperation1Output `json:"-" xml:"-"` |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type metadataInputService7TestShapeInputService7TestCaseOperation1Output struct { |  | ||||||
| 	SDKShapeTraits bool `type:"structure"` |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type InputService7TestShapeInputShape struct { |  | ||||||
| 	BlobArg []byte `type:"blob"` |  | ||||||
|  |  | ||||||
| 	metadataInputService7TestShapeInputShape `json:"-" xml:"-"` |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type metadataInputService7TestShapeInputShape struct { |  | ||||||
| 	SDKShapeTraits bool `type:"structure"` |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type InputService8ProtocolTest struct { |  | ||||||
| 	*service.Service |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // New returns a new InputService8ProtocolTest client. |  | ||||||
| func NewInputService8ProtocolTest(config *aws.Config) *InputService8ProtocolTest { |  | ||||||
| 	service := &service.Service{ |  | ||||||
| 		Config:      defaults.DefaultConfig.Merge(config), |  | ||||||
| 		ServiceName: "inputservice8protocoltest", |  | ||||||
| 		APIVersion:  "2014-01-01", |  | ||||||
| 	} |  | ||||||
| 	service.Initialize() |  | ||||||
|  |  | ||||||
| 	// Handlers |  | ||||||
| 	service.Handlers.Sign.PushBack(v4.Sign) |  | ||||||
| 	service.Handlers.Build.PushBack(ec2query.Build) |  | ||||||
| 	service.Handlers.Unmarshal.PushBack(ec2query.Unmarshal) |  | ||||||
| 	service.Handlers.UnmarshalMeta.PushBack(ec2query.UnmarshalMeta) |  | ||||||
| 	service.Handlers.UnmarshalError.PushBack(ec2query.UnmarshalError) |  | ||||||
|  |  | ||||||
| 	return &InputService8ProtocolTest{service} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // newRequest creates a new request for a InputService8ProtocolTest operation and runs any |  | ||||||
| // custom request initialization. |  | ||||||
| func (c *InputService8ProtocolTest) newRequest(op *service.Operation, params, data interface{}) *service.Request { |  | ||||||
| 	req := service.NewRequest(c.Service, op, params, data) |  | ||||||
|  |  | ||||||
| 	return req |  | ||||||
| } |  | ||||||
|  |  | ||||||
| const opInputService8TestCaseOperation1 = "OperationName" |  | ||||||
|  |  | ||||||
| // InputService8TestCaseOperation1Request generates a request for the InputService8TestCaseOperation1 operation. |  | ||||||
| func (c *InputService8ProtocolTest) InputService8TestCaseOperation1Request(input *InputService8TestShapeInputShape) (req *service.Request, output *InputService8TestShapeInputService8TestCaseOperation1Output) { |  | ||||||
| 	op := &service.Operation{ |  | ||||||
| 		Name: opInputService8TestCaseOperation1, |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	if input == nil { |  | ||||||
| 		input = &InputService8TestShapeInputShape{} |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	req = c.newRequest(op, input, output) |  | ||||||
| 	output = &InputService8TestShapeInputService8TestCaseOperation1Output{} |  | ||||||
| 	req.Data = output |  | ||||||
| 	return |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func (c *InputService8ProtocolTest) InputService8TestCaseOperation1(input *InputService8TestShapeInputShape) (*InputService8TestShapeInputService8TestCaseOperation1Output, error) { |  | ||||||
| 	req, out := c.InputService8TestCaseOperation1Request(input) |  | ||||||
| 	err := req.Send() |  | ||||||
| 	return out, err |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type InputService8TestShapeInputService8TestCaseOperation1Output struct { |  | ||||||
| 	metadataInputService8TestShapeInputService8TestCaseOperation1Output `json:"-" xml:"-"` |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type metadataInputService8TestShapeInputService8TestCaseOperation1Output struct { |  | ||||||
| 	SDKShapeTraits bool `type:"structure"` |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type InputService8TestShapeInputShape struct { |  | ||||||
| 	TimeArg *time.Time `type:"timestamp" timestampFormat:"iso8601"` |  | ||||||
|  |  | ||||||
| 	metadataInputService8TestShapeInputShape `json:"-" xml:"-"` |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type metadataInputService8TestShapeInputShape struct { |  | ||||||
| 	SDKShapeTraits bool `type:"structure"` |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // |  | ||||||
| // Tests begin here |  | ||||||
| // |  | ||||||
|  |  | ||||||
| func TestInputService1ProtocolTestScalarMembersCase1(t *testing.T) { |  | ||||||
| 	svc := NewInputService1ProtocolTest(nil) |  | ||||||
| 	svc.Endpoint = "https://test" |  | ||||||
|  |  | ||||||
| 	input := &InputService1TestShapeInputShape{ |  | ||||||
| 		Bar: aws.String("val2"), |  | ||||||
| 		Foo: aws.String("val1"), |  | ||||||
| 	} |  | ||||||
| 	req, _ := svc.InputService1TestCaseOperation1Request(input) |  | ||||||
| 	r := req.HTTPRequest |  | ||||||
|  |  | ||||||
| 	// build request |  | ||||||
| 	ec2query.Build(req) |  | ||||||
| 	assert.NoError(t, req.Error) |  | ||||||
|  |  | ||||||
| 	// assert body |  | ||||||
| 	assert.NotNil(t, r.Body) |  | ||||||
| 	body, _ := ioutil.ReadAll(r.Body) |  | ||||||
| 	assert.Equal(t, util.Trim(`Action=OperationName&Bar=val2&Foo=val1&Version=2014-01-01`), util.Trim(string(body))) |  | ||||||
|  |  | ||||||
| 	// assert URL |  | ||||||
| 	assert.Equal(t, "https://test/", r.URL.String()) |  | ||||||
|  |  | ||||||
| 	// assert headers |  | ||||||
|  |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestInputService2ProtocolTestStructureWithLocationNameAndQueryNameAppliedToMembersCase1(t *testing.T) { |  | ||||||
| 	svc := NewInputService2ProtocolTest(nil) |  | ||||||
| 	svc.Endpoint = "https://test" |  | ||||||
|  |  | ||||||
| 	input := &InputService2TestShapeInputShape{ |  | ||||||
| 		Bar:  aws.String("val2"), |  | ||||||
| 		Foo:  aws.String("val1"), |  | ||||||
| 		Yuck: aws.String("val3"), |  | ||||||
| 	} |  | ||||||
| 	req, _ := svc.InputService2TestCaseOperation1Request(input) |  | ||||||
| 	r := req.HTTPRequest |  | ||||||
|  |  | ||||||
| 	// build request |  | ||||||
| 	ec2query.Build(req) |  | ||||||
| 	assert.NoError(t, req.Error) |  | ||||||
|  |  | ||||||
| 	// assert body |  | ||||||
| 	assert.NotNil(t, r.Body) |  | ||||||
| 	body, _ := ioutil.ReadAll(r.Body) |  | ||||||
| 	assert.Equal(t, util.Trim(`Action=OperationName&BarLocationName=val2&Foo=val1&Version=2014-01-01&yuckQueryName=val3`), util.Trim(string(body))) |  | ||||||
|  |  | ||||||
| 	// assert URL |  | ||||||
| 	assert.Equal(t, "https://test/", r.URL.String()) |  | ||||||
|  |  | ||||||
| 	// assert headers |  | ||||||
|  |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestInputService3ProtocolTestNestedStructureMembersCase1(t *testing.T) { |  | ||||||
| 	svc := NewInputService3ProtocolTest(nil) |  | ||||||
| 	svc.Endpoint = "https://test" |  | ||||||
|  |  | ||||||
| 	input := &InputService3TestShapeInputShape{ |  | ||||||
| 		StructArg: &InputService3TestShapeStructType{ |  | ||||||
| 			ScalarArg: aws.String("foo"), |  | ||||||
| 		}, |  | ||||||
| 	} |  | ||||||
| 	req, _ := svc.InputService3TestCaseOperation1Request(input) |  | ||||||
| 	r := req.HTTPRequest |  | ||||||
|  |  | ||||||
| 	// build request |  | ||||||
| 	ec2query.Build(req) |  | ||||||
| 	assert.NoError(t, req.Error) |  | ||||||
|  |  | ||||||
| 	// assert body |  | ||||||
| 	assert.NotNil(t, r.Body) |  | ||||||
| 	body, _ := ioutil.ReadAll(r.Body) |  | ||||||
| 	assert.Equal(t, util.Trim(`Action=OperationName&Struct.Scalar=foo&Version=2014-01-01`), util.Trim(string(body))) |  | ||||||
|  |  | ||||||
| 	// assert URL |  | ||||||
| 	assert.Equal(t, "https://test/", r.URL.String()) |  | ||||||
|  |  | ||||||
| 	// assert headers |  | ||||||
|  |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestInputService4ProtocolTestListTypesCase1(t *testing.T) { |  | ||||||
| 	svc := NewInputService4ProtocolTest(nil) |  | ||||||
| 	svc.Endpoint = "https://test" |  | ||||||
|  |  | ||||||
| 	input := &InputService4TestShapeInputShape{ |  | ||||||
| 		ListArg: []*string{ |  | ||||||
| 			aws.String("foo"), |  | ||||||
| 			aws.String("bar"), |  | ||||||
| 			aws.String("baz"), |  | ||||||
| 		}, |  | ||||||
| 	} |  | ||||||
| 	req, _ := svc.InputService4TestCaseOperation1Request(input) |  | ||||||
| 	r := req.HTTPRequest |  | ||||||
|  |  | ||||||
| 	// build request |  | ||||||
| 	ec2query.Build(req) |  | ||||||
| 	assert.NoError(t, req.Error) |  | ||||||
|  |  | ||||||
| 	// assert body |  | ||||||
| 	assert.NotNil(t, r.Body) |  | ||||||
| 	body, _ := ioutil.ReadAll(r.Body) |  | ||||||
| 	assert.Equal(t, util.Trim(`Action=OperationName&ListArg.1=foo&ListArg.2=bar&ListArg.3=baz&Version=2014-01-01`), util.Trim(string(body))) |  | ||||||
|  |  | ||||||
| 	// assert URL |  | ||||||
| 	assert.Equal(t, "https://test/", r.URL.String()) |  | ||||||
|  |  | ||||||
| 	// assert headers |  | ||||||
|  |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestInputService5ProtocolTestListWithLocationNameAppliedToMemberCase1(t *testing.T) { |  | ||||||
| 	svc := NewInputService5ProtocolTest(nil) |  | ||||||
| 	svc.Endpoint = "https://test" |  | ||||||
|  |  | ||||||
| 	input := &InputService5TestShapeInputShape{ |  | ||||||
| 		ListArg: []*string{ |  | ||||||
| 			aws.String("a"), |  | ||||||
| 			aws.String("b"), |  | ||||||
| 			aws.String("c"), |  | ||||||
| 		}, |  | ||||||
| 	} |  | ||||||
| 	req, _ := svc.InputService5TestCaseOperation1Request(input) |  | ||||||
| 	r := req.HTTPRequest |  | ||||||
|  |  | ||||||
| 	// build request |  | ||||||
| 	ec2query.Build(req) |  | ||||||
| 	assert.NoError(t, req.Error) |  | ||||||
|  |  | ||||||
| 	// assert body |  | ||||||
| 	assert.NotNil(t, r.Body) |  | ||||||
| 	body, _ := ioutil.ReadAll(r.Body) |  | ||||||
| 	assert.Equal(t, util.Trim(`Action=OperationName&ListMemberName.1=a&ListMemberName.2=b&ListMemberName.3=c&Version=2014-01-01`), util.Trim(string(body))) |  | ||||||
|  |  | ||||||
| 	// assert URL |  | ||||||
| 	assert.Equal(t, "https://test/", r.URL.String()) |  | ||||||
|  |  | ||||||
| 	// assert headers |  | ||||||
|  |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestInputService6ProtocolTestListWithLocationNameAndQueryNameCase1(t *testing.T) { |  | ||||||
| 	svc := NewInputService6ProtocolTest(nil) |  | ||||||
| 	svc.Endpoint = "https://test" |  | ||||||
|  |  | ||||||
| 	input := &InputService6TestShapeInputShape{ |  | ||||||
| 		ListArg: []*string{ |  | ||||||
| 			aws.String("a"), |  | ||||||
| 			aws.String("b"), |  | ||||||
| 			aws.String("c"), |  | ||||||
| 		}, |  | ||||||
| 	} |  | ||||||
| 	req, _ := svc.InputService6TestCaseOperation1Request(input) |  | ||||||
| 	r := req.HTTPRequest |  | ||||||
|  |  | ||||||
| 	// build request |  | ||||||
| 	ec2query.Build(req) |  | ||||||
| 	assert.NoError(t, req.Error) |  | ||||||
|  |  | ||||||
| 	// assert body |  | ||||||
| 	assert.NotNil(t, r.Body) |  | ||||||
| 	body, _ := ioutil.ReadAll(r.Body) |  | ||||||
| 	assert.Equal(t, util.Trim(`Action=OperationName&ListQueryName.1=a&ListQueryName.2=b&ListQueryName.3=c&Version=2014-01-01`), util.Trim(string(body))) |  | ||||||
|  |  | ||||||
| 	// assert URL |  | ||||||
| 	assert.Equal(t, "https://test/", r.URL.String()) |  | ||||||
|  |  | ||||||
| 	// assert headers |  | ||||||
|  |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestInputService7ProtocolTestBase64EncodedBlobsCase1(t *testing.T) { |  | ||||||
| 	svc := NewInputService7ProtocolTest(nil) |  | ||||||
| 	svc.Endpoint = "https://test" |  | ||||||
|  |  | ||||||
| 	input := &InputService7TestShapeInputShape{ |  | ||||||
| 		BlobArg: []byte("foo"), |  | ||||||
| 	} |  | ||||||
| 	req, _ := svc.InputService7TestCaseOperation1Request(input) |  | ||||||
| 	r := req.HTTPRequest |  | ||||||
|  |  | ||||||
| 	// build request |  | ||||||
| 	ec2query.Build(req) |  | ||||||
| 	assert.NoError(t, req.Error) |  | ||||||
|  |  | ||||||
| 	// assert body |  | ||||||
| 	assert.NotNil(t, r.Body) |  | ||||||
| 	body, _ := ioutil.ReadAll(r.Body) |  | ||||||
| 	assert.Equal(t, util.Trim(`Action=OperationName&BlobArg=Zm9v&Version=2014-01-01`), util.Trim(string(body))) |  | ||||||
|  |  | ||||||
| 	// assert URL |  | ||||||
| 	assert.Equal(t, "https://test/", r.URL.String()) |  | ||||||
|  |  | ||||||
| 	// assert headers |  | ||||||
|  |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestInputService8ProtocolTestTimestampValuesCase1(t *testing.T) { |  | ||||||
| 	svc := NewInputService8ProtocolTest(nil) |  | ||||||
| 	svc.Endpoint = "https://test" |  | ||||||
|  |  | ||||||
| 	input := &InputService8TestShapeInputShape{ |  | ||||||
| 		TimeArg: aws.Time(time.Unix(1422172800, 0)), |  | ||||||
| 	} |  | ||||||
| 	req, _ := svc.InputService8TestCaseOperation1Request(input) |  | ||||||
| 	r := req.HTTPRequest |  | ||||||
|  |  | ||||||
| 	// build request |  | ||||||
| 	ec2query.Build(req) |  | ||||||
| 	assert.NoError(t, req.Error) |  | ||||||
|  |  | ||||||
| 	// assert body |  | ||||||
| 	assert.NotNil(t, r.Body) |  | ||||||
| 	body, _ := ioutil.ReadAll(r.Body) |  | ||||||
| 	assert.Equal(t, util.Trim(`Action=OperationName&TimeArg=2015-01-25T08%3A00%3A00Z&Version=2014-01-01`), util.Trim(string(body))) |  | ||||||
|  |  | ||||||
| 	// assert URL |  | ||||||
| 	assert.Equal(t, "https://test/", r.URL.String()) |  | ||||||
|  |  | ||||||
| 	// assert headers |  | ||||||
|  |  | ||||||
| } |  | ||||||
| @@ -7,12 +7,12 @@ import ( | |||||||
| 	"io" | 	"io" | ||||||
|  |  | ||||||
| 	"github.com/aws/aws-sdk-go/aws/awserr" | 	"github.com/aws/aws-sdk-go/aws/awserr" | ||||||
| 	"github.com/aws/aws-sdk-go/aws/service" | 	"github.com/aws/aws-sdk-go/aws/request" | ||||||
| 	"github.com/aws/aws-sdk-go/internal/protocol/xml/xmlutil" | 	"github.com/aws/aws-sdk-go/internal/protocol/xml/xmlutil" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| // Unmarshal unmarshals a response body for the EC2 protocol. | // Unmarshal unmarshals a response body for the EC2 protocol. | ||||||
| func Unmarshal(r *service.Request) { | func Unmarshal(r *request.Request) { | ||||||
| 	defer r.HTTPResponse.Body.Close() | 	defer r.HTTPResponse.Body.Close() | ||||||
| 	if r.DataFilled() { | 	if r.DataFilled() { | ||||||
| 		decoder := xml.NewDecoder(r.HTTPResponse.Body) | 		decoder := xml.NewDecoder(r.HTTPResponse.Body) | ||||||
| @@ -25,7 +25,7 @@ func Unmarshal(r *service.Request) { | |||||||
| } | } | ||||||
|  |  | ||||||
| // UnmarshalMeta unmarshals response headers for the EC2 protocol. | // UnmarshalMeta unmarshals response headers for the EC2 protocol. | ||||||
| func UnmarshalMeta(r *service.Request) { | func UnmarshalMeta(r *request.Request) { | ||||||
| 	// TODO implement unmarshaling of request IDs | 	// TODO implement unmarshaling of request IDs | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -37,7 +37,7 @@ type xmlErrorResponse struct { | |||||||
| } | } | ||||||
|  |  | ||||||
| // UnmarshalError unmarshals a response error for the EC2 protocol. | // UnmarshalError unmarshals a response error for the EC2 protocol. | ||||||
| func UnmarshalError(r *service.Request) { | func UnmarshalError(r *request.Request) { | ||||||
| 	defer r.HTTPResponse.Body.Close() | 	defer r.HTTPResponse.Body.Close() | ||||||
|  |  | ||||||
| 	resp := &xmlErrorResponse{} | 	resp := &xmlErrorResponse{} | ||||||
|   | |||||||
							
								
								
									
										818
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/protocol/ec2query/unmarshal_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										818
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/protocol/ec2query/unmarshal_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,818 +0,0 @@ | |||||||
| package ec2query_test |  | ||||||
|  |  | ||||||
| import ( |  | ||||||
| 	"bytes" |  | ||||||
| 	"encoding/json" |  | ||||||
| 	"encoding/xml" |  | ||||||
| 	"io" |  | ||||||
| 	"io/ioutil" |  | ||||||
| 	"net/http" |  | ||||||
| 	"net/url" |  | ||||||
| 	"testing" |  | ||||||
| 	"time" |  | ||||||
|  |  | ||||||
| 	"github.com/aws/aws-sdk-go/aws" |  | ||||||
| 	"github.com/aws/aws-sdk-go/aws/defaults" |  | ||||||
| 	"github.com/aws/aws-sdk-go/aws/service" |  | ||||||
| 	"github.com/aws/aws-sdk-go/internal/protocol/ec2query" |  | ||||||
| 	"github.com/aws/aws-sdk-go/internal/protocol/xml/xmlutil" |  | ||||||
| 	"github.com/aws/aws-sdk-go/internal/signer/v4" |  | ||||||
| 	"github.com/aws/aws-sdk-go/internal/util" |  | ||||||
| 	"github.com/stretchr/testify/assert" |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| var _ bytes.Buffer // always import bytes |  | ||||||
| var _ http.Request |  | ||||||
| var _ json.Marshaler |  | ||||||
| var _ time.Time |  | ||||||
| var _ xmlutil.XMLNode |  | ||||||
| var _ xml.Attr |  | ||||||
| var _ = ioutil.Discard |  | ||||||
| var _ = util.Trim("") |  | ||||||
| var _ = url.Values{} |  | ||||||
| var _ = io.EOF |  | ||||||
|  |  | ||||||
| type OutputService1ProtocolTest struct { |  | ||||||
| 	*service.Service |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // New returns a new OutputService1ProtocolTest client. |  | ||||||
| func NewOutputService1ProtocolTest(config *aws.Config) *OutputService1ProtocolTest { |  | ||||||
| 	service := &service.Service{ |  | ||||||
| 		Config:      defaults.DefaultConfig.Merge(config), |  | ||||||
| 		ServiceName: "outputservice1protocoltest", |  | ||||||
| 		APIVersion:  "", |  | ||||||
| 	} |  | ||||||
| 	service.Initialize() |  | ||||||
|  |  | ||||||
| 	// Handlers |  | ||||||
| 	service.Handlers.Sign.PushBack(v4.Sign) |  | ||||||
| 	service.Handlers.Build.PushBack(ec2query.Build) |  | ||||||
| 	service.Handlers.Unmarshal.PushBack(ec2query.Unmarshal) |  | ||||||
| 	service.Handlers.UnmarshalMeta.PushBack(ec2query.UnmarshalMeta) |  | ||||||
| 	service.Handlers.UnmarshalError.PushBack(ec2query.UnmarshalError) |  | ||||||
|  |  | ||||||
| 	return &OutputService1ProtocolTest{service} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // newRequest creates a new request for a OutputService1ProtocolTest operation and runs any |  | ||||||
| // custom request initialization. |  | ||||||
| func (c *OutputService1ProtocolTest) newRequest(op *service.Operation, params, data interface{}) *service.Request { |  | ||||||
| 	req := service.NewRequest(c.Service, op, params, data) |  | ||||||
|  |  | ||||||
| 	return req |  | ||||||
| } |  | ||||||
|  |  | ||||||
| const opOutputService1TestCaseOperation1 = "OperationName" |  | ||||||
|  |  | ||||||
| // OutputService1TestCaseOperation1Request generates a request for the OutputService1TestCaseOperation1 operation. |  | ||||||
| func (c *OutputService1ProtocolTest) OutputService1TestCaseOperation1Request(input *OutputService1TestShapeOutputService1TestCaseOperation1Input) (req *service.Request, output *OutputService1TestShapeOutputShape) { |  | ||||||
| 	op := &service.Operation{ |  | ||||||
| 		Name: opOutputService1TestCaseOperation1, |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	if input == nil { |  | ||||||
| 		input = &OutputService1TestShapeOutputService1TestCaseOperation1Input{} |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	req = c.newRequest(op, input, output) |  | ||||||
| 	output = &OutputService1TestShapeOutputShape{} |  | ||||||
| 	req.Data = output |  | ||||||
| 	return |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func (c *OutputService1ProtocolTest) OutputService1TestCaseOperation1(input *OutputService1TestShapeOutputService1TestCaseOperation1Input) (*OutputService1TestShapeOutputShape, error) { |  | ||||||
| 	req, out := c.OutputService1TestCaseOperation1Request(input) |  | ||||||
| 	err := req.Send() |  | ||||||
| 	return out, err |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type OutputService1TestShapeOutputService1TestCaseOperation1Input struct { |  | ||||||
| 	metadataOutputService1TestShapeOutputService1TestCaseOperation1Input `json:"-" xml:"-"` |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type metadataOutputService1TestShapeOutputService1TestCaseOperation1Input struct { |  | ||||||
| 	SDKShapeTraits bool `type:"structure"` |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type OutputService1TestShapeOutputShape struct { |  | ||||||
| 	Char *string `type:"character"` |  | ||||||
|  |  | ||||||
| 	Double *float64 `type:"double"` |  | ||||||
|  |  | ||||||
| 	FalseBool *bool `type:"boolean"` |  | ||||||
|  |  | ||||||
| 	Float *float64 `type:"float"` |  | ||||||
|  |  | ||||||
| 	Long *int64 `type:"long"` |  | ||||||
|  |  | ||||||
| 	Num *int64 `locationName:"FooNum" type:"integer"` |  | ||||||
|  |  | ||||||
| 	Str *string `type:"string"` |  | ||||||
|  |  | ||||||
| 	TrueBool *bool `type:"boolean"` |  | ||||||
|  |  | ||||||
| 	metadataOutputService1TestShapeOutputShape `json:"-" xml:"-"` |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type metadataOutputService1TestShapeOutputShape struct { |  | ||||||
| 	SDKShapeTraits bool `type:"structure"` |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type OutputService2ProtocolTest struct { |  | ||||||
| 	*service.Service |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // New returns a new OutputService2ProtocolTest client. |  | ||||||
| func NewOutputService2ProtocolTest(config *aws.Config) *OutputService2ProtocolTest { |  | ||||||
| 	service := &service.Service{ |  | ||||||
| 		Config:      defaults.DefaultConfig.Merge(config), |  | ||||||
| 		ServiceName: "outputservice2protocoltest", |  | ||||||
| 		APIVersion:  "", |  | ||||||
| 	} |  | ||||||
| 	service.Initialize() |  | ||||||
|  |  | ||||||
| 	// Handlers |  | ||||||
| 	service.Handlers.Sign.PushBack(v4.Sign) |  | ||||||
| 	service.Handlers.Build.PushBack(ec2query.Build) |  | ||||||
| 	service.Handlers.Unmarshal.PushBack(ec2query.Unmarshal) |  | ||||||
| 	service.Handlers.UnmarshalMeta.PushBack(ec2query.UnmarshalMeta) |  | ||||||
| 	service.Handlers.UnmarshalError.PushBack(ec2query.UnmarshalError) |  | ||||||
|  |  | ||||||
| 	return &OutputService2ProtocolTest{service} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // newRequest creates a new request for a OutputService2ProtocolTest operation and runs any |  | ||||||
| // custom request initialization. |  | ||||||
| func (c *OutputService2ProtocolTest) newRequest(op *service.Operation, params, data interface{}) *service.Request { |  | ||||||
| 	req := service.NewRequest(c.Service, op, params, data) |  | ||||||
|  |  | ||||||
| 	return req |  | ||||||
| } |  | ||||||
|  |  | ||||||
| const opOutputService2TestCaseOperation1 = "OperationName" |  | ||||||
|  |  | ||||||
| // OutputService2TestCaseOperation1Request generates a request for the OutputService2TestCaseOperation1 operation. |  | ||||||
| func (c *OutputService2ProtocolTest) OutputService2TestCaseOperation1Request(input *OutputService2TestShapeOutputService2TestCaseOperation1Input) (req *service.Request, output *OutputService2TestShapeOutputShape) { |  | ||||||
| 	op := &service.Operation{ |  | ||||||
| 		Name: opOutputService2TestCaseOperation1, |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	if input == nil { |  | ||||||
| 		input = &OutputService2TestShapeOutputService2TestCaseOperation1Input{} |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	req = c.newRequest(op, input, output) |  | ||||||
| 	output = &OutputService2TestShapeOutputShape{} |  | ||||||
| 	req.Data = output |  | ||||||
| 	return |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func (c *OutputService2ProtocolTest) OutputService2TestCaseOperation1(input *OutputService2TestShapeOutputService2TestCaseOperation1Input) (*OutputService2TestShapeOutputShape, error) { |  | ||||||
| 	req, out := c.OutputService2TestCaseOperation1Request(input) |  | ||||||
| 	err := req.Send() |  | ||||||
| 	return out, err |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type OutputService2TestShapeOutputService2TestCaseOperation1Input struct { |  | ||||||
| 	metadataOutputService2TestShapeOutputService2TestCaseOperation1Input `json:"-" xml:"-"` |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type metadataOutputService2TestShapeOutputService2TestCaseOperation1Input struct { |  | ||||||
| 	SDKShapeTraits bool `type:"structure"` |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type OutputService2TestShapeOutputShape struct { |  | ||||||
| 	Blob []byte `type:"blob"` |  | ||||||
|  |  | ||||||
| 	metadataOutputService2TestShapeOutputShape `json:"-" xml:"-"` |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type metadataOutputService2TestShapeOutputShape struct { |  | ||||||
| 	SDKShapeTraits bool `type:"structure"` |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type OutputService3ProtocolTest struct { |  | ||||||
| 	*service.Service |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // New returns a new OutputService3ProtocolTest client. |  | ||||||
| func NewOutputService3ProtocolTest(config *aws.Config) *OutputService3ProtocolTest { |  | ||||||
| 	service := &service.Service{ |  | ||||||
| 		Config:      defaults.DefaultConfig.Merge(config), |  | ||||||
| 		ServiceName: "outputservice3protocoltest", |  | ||||||
| 		APIVersion:  "", |  | ||||||
| 	} |  | ||||||
| 	service.Initialize() |  | ||||||
|  |  | ||||||
| 	// Handlers |  | ||||||
| 	service.Handlers.Sign.PushBack(v4.Sign) |  | ||||||
| 	service.Handlers.Build.PushBack(ec2query.Build) |  | ||||||
| 	service.Handlers.Unmarshal.PushBack(ec2query.Unmarshal) |  | ||||||
| 	service.Handlers.UnmarshalMeta.PushBack(ec2query.UnmarshalMeta) |  | ||||||
| 	service.Handlers.UnmarshalError.PushBack(ec2query.UnmarshalError) |  | ||||||
|  |  | ||||||
| 	return &OutputService3ProtocolTest{service} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // newRequest creates a new request for a OutputService3ProtocolTest operation and runs any |  | ||||||
| // custom request initialization. |  | ||||||
| func (c *OutputService3ProtocolTest) newRequest(op *service.Operation, params, data interface{}) *service.Request { |  | ||||||
| 	req := service.NewRequest(c.Service, op, params, data) |  | ||||||
|  |  | ||||||
| 	return req |  | ||||||
| } |  | ||||||
|  |  | ||||||
| const opOutputService3TestCaseOperation1 = "OperationName" |  | ||||||
|  |  | ||||||
| // OutputService3TestCaseOperation1Request generates a request for the OutputService3TestCaseOperation1 operation. |  | ||||||
| func (c *OutputService3ProtocolTest) OutputService3TestCaseOperation1Request(input *OutputService3TestShapeOutputService3TestCaseOperation1Input) (req *service.Request, output *OutputService3TestShapeOutputShape) { |  | ||||||
| 	op := &service.Operation{ |  | ||||||
| 		Name: opOutputService3TestCaseOperation1, |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	if input == nil { |  | ||||||
| 		input = &OutputService3TestShapeOutputService3TestCaseOperation1Input{} |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	req = c.newRequest(op, input, output) |  | ||||||
| 	output = &OutputService3TestShapeOutputShape{} |  | ||||||
| 	req.Data = output |  | ||||||
| 	return |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func (c *OutputService3ProtocolTest) OutputService3TestCaseOperation1(input *OutputService3TestShapeOutputService3TestCaseOperation1Input) (*OutputService3TestShapeOutputShape, error) { |  | ||||||
| 	req, out := c.OutputService3TestCaseOperation1Request(input) |  | ||||||
| 	err := req.Send() |  | ||||||
| 	return out, err |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type OutputService3TestShapeOutputService3TestCaseOperation1Input struct { |  | ||||||
| 	metadataOutputService3TestShapeOutputService3TestCaseOperation1Input `json:"-" xml:"-"` |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type metadataOutputService3TestShapeOutputService3TestCaseOperation1Input struct { |  | ||||||
| 	SDKShapeTraits bool `type:"structure"` |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type OutputService3TestShapeOutputShape struct { |  | ||||||
| 	ListMember []*string `type:"list"` |  | ||||||
|  |  | ||||||
| 	metadataOutputService3TestShapeOutputShape `json:"-" xml:"-"` |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type metadataOutputService3TestShapeOutputShape struct { |  | ||||||
| 	SDKShapeTraits bool `type:"structure"` |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type OutputService4ProtocolTest struct { |  | ||||||
| 	*service.Service |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // New returns a new OutputService4ProtocolTest client. |  | ||||||
| func NewOutputService4ProtocolTest(config *aws.Config) *OutputService4ProtocolTest { |  | ||||||
| 	service := &service.Service{ |  | ||||||
| 		Config:      defaults.DefaultConfig.Merge(config), |  | ||||||
| 		ServiceName: "outputservice4protocoltest", |  | ||||||
| 		APIVersion:  "", |  | ||||||
| 	} |  | ||||||
| 	service.Initialize() |  | ||||||
|  |  | ||||||
| 	// Handlers |  | ||||||
| 	service.Handlers.Sign.PushBack(v4.Sign) |  | ||||||
| 	service.Handlers.Build.PushBack(ec2query.Build) |  | ||||||
| 	service.Handlers.Unmarshal.PushBack(ec2query.Unmarshal) |  | ||||||
| 	service.Handlers.UnmarshalMeta.PushBack(ec2query.UnmarshalMeta) |  | ||||||
| 	service.Handlers.UnmarshalError.PushBack(ec2query.UnmarshalError) |  | ||||||
|  |  | ||||||
| 	return &OutputService4ProtocolTest{service} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // newRequest creates a new request for a OutputService4ProtocolTest operation and runs any |  | ||||||
| // custom request initialization. |  | ||||||
| func (c *OutputService4ProtocolTest) newRequest(op *service.Operation, params, data interface{}) *service.Request { |  | ||||||
| 	req := service.NewRequest(c.Service, op, params, data) |  | ||||||
|  |  | ||||||
| 	return req |  | ||||||
| } |  | ||||||
|  |  | ||||||
| const opOutputService4TestCaseOperation1 = "OperationName" |  | ||||||
|  |  | ||||||
| // OutputService4TestCaseOperation1Request generates a request for the OutputService4TestCaseOperation1 operation. |  | ||||||
| func (c *OutputService4ProtocolTest) OutputService4TestCaseOperation1Request(input *OutputService4TestShapeOutputService4TestCaseOperation1Input) (req *service.Request, output *OutputService4TestShapeOutputShape) { |  | ||||||
| 	op := &service.Operation{ |  | ||||||
| 		Name: opOutputService4TestCaseOperation1, |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	if input == nil { |  | ||||||
| 		input = &OutputService4TestShapeOutputService4TestCaseOperation1Input{} |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	req = c.newRequest(op, input, output) |  | ||||||
| 	output = &OutputService4TestShapeOutputShape{} |  | ||||||
| 	req.Data = output |  | ||||||
| 	return |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func (c *OutputService4ProtocolTest) OutputService4TestCaseOperation1(input *OutputService4TestShapeOutputService4TestCaseOperation1Input) (*OutputService4TestShapeOutputShape, error) { |  | ||||||
| 	req, out := c.OutputService4TestCaseOperation1Request(input) |  | ||||||
| 	err := req.Send() |  | ||||||
| 	return out, err |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type OutputService4TestShapeOutputService4TestCaseOperation1Input struct { |  | ||||||
| 	metadataOutputService4TestShapeOutputService4TestCaseOperation1Input `json:"-" xml:"-"` |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type metadataOutputService4TestShapeOutputService4TestCaseOperation1Input struct { |  | ||||||
| 	SDKShapeTraits bool `type:"structure"` |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type OutputService4TestShapeOutputShape struct { |  | ||||||
| 	ListMember []*string `locationNameList:"item" type:"list"` |  | ||||||
|  |  | ||||||
| 	metadataOutputService4TestShapeOutputShape `json:"-" xml:"-"` |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type metadataOutputService4TestShapeOutputShape struct { |  | ||||||
| 	SDKShapeTraits bool `type:"structure"` |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type OutputService5ProtocolTest struct { |  | ||||||
| 	*service.Service |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // New returns a new OutputService5ProtocolTest client. |  | ||||||
| func NewOutputService5ProtocolTest(config *aws.Config) *OutputService5ProtocolTest { |  | ||||||
| 	service := &service.Service{ |  | ||||||
| 		Config:      defaults.DefaultConfig.Merge(config), |  | ||||||
| 		ServiceName: "outputservice5protocoltest", |  | ||||||
| 		APIVersion:  "", |  | ||||||
| 	} |  | ||||||
| 	service.Initialize() |  | ||||||
|  |  | ||||||
| 	// Handlers |  | ||||||
| 	service.Handlers.Sign.PushBack(v4.Sign) |  | ||||||
| 	service.Handlers.Build.PushBack(ec2query.Build) |  | ||||||
| 	service.Handlers.Unmarshal.PushBack(ec2query.Unmarshal) |  | ||||||
| 	service.Handlers.UnmarshalMeta.PushBack(ec2query.UnmarshalMeta) |  | ||||||
| 	service.Handlers.UnmarshalError.PushBack(ec2query.UnmarshalError) |  | ||||||
|  |  | ||||||
| 	return &OutputService5ProtocolTest{service} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // newRequest creates a new request for a OutputService5ProtocolTest operation and runs any |  | ||||||
| // custom request initialization. |  | ||||||
| func (c *OutputService5ProtocolTest) newRequest(op *service.Operation, params, data interface{}) *service.Request { |  | ||||||
| 	req := service.NewRequest(c.Service, op, params, data) |  | ||||||
|  |  | ||||||
| 	return req |  | ||||||
| } |  | ||||||
|  |  | ||||||
| const opOutputService5TestCaseOperation1 = "OperationName" |  | ||||||
|  |  | ||||||
| // OutputService5TestCaseOperation1Request generates a request for the OutputService5TestCaseOperation1 operation. |  | ||||||
| func (c *OutputService5ProtocolTest) OutputService5TestCaseOperation1Request(input *OutputService5TestShapeOutputService5TestCaseOperation1Input) (req *service.Request, output *OutputService5TestShapeOutputShape) { |  | ||||||
| 	op := &service.Operation{ |  | ||||||
| 		Name: opOutputService5TestCaseOperation1, |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	if input == nil { |  | ||||||
| 		input = &OutputService5TestShapeOutputService5TestCaseOperation1Input{} |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	req = c.newRequest(op, input, output) |  | ||||||
| 	output = &OutputService5TestShapeOutputShape{} |  | ||||||
| 	req.Data = output |  | ||||||
| 	return |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func (c *OutputService5ProtocolTest) OutputService5TestCaseOperation1(input *OutputService5TestShapeOutputService5TestCaseOperation1Input) (*OutputService5TestShapeOutputShape, error) { |  | ||||||
| 	req, out := c.OutputService5TestCaseOperation1Request(input) |  | ||||||
| 	err := req.Send() |  | ||||||
| 	return out, err |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type OutputService5TestShapeOutputService5TestCaseOperation1Input struct { |  | ||||||
| 	metadataOutputService5TestShapeOutputService5TestCaseOperation1Input `json:"-" xml:"-"` |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type metadataOutputService5TestShapeOutputService5TestCaseOperation1Input struct { |  | ||||||
| 	SDKShapeTraits bool `type:"structure"` |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type OutputService5TestShapeOutputShape struct { |  | ||||||
| 	ListMember []*string `type:"list" flattened:"true"` |  | ||||||
|  |  | ||||||
| 	metadataOutputService5TestShapeOutputShape `json:"-" xml:"-"` |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type metadataOutputService5TestShapeOutputShape struct { |  | ||||||
| 	SDKShapeTraits bool `type:"structure"` |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type OutputService6ProtocolTest struct { |  | ||||||
| 	*service.Service |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // New returns a new OutputService6ProtocolTest client. |  | ||||||
| func NewOutputService6ProtocolTest(config *aws.Config) *OutputService6ProtocolTest { |  | ||||||
| 	service := &service.Service{ |  | ||||||
| 		Config:      defaults.DefaultConfig.Merge(config), |  | ||||||
| 		ServiceName: "outputservice6protocoltest", |  | ||||||
| 		APIVersion:  "", |  | ||||||
| 	} |  | ||||||
| 	service.Initialize() |  | ||||||
|  |  | ||||||
| 	// Handlers |  | ||||||
| 	service.Handlers.Sign.PushBack(v4.Sign) |  | ||||||
| 	service.Handlers.Build.PushBack(ec2query.Build) |  | ||||||
| 	service.Handlers.Unmarshal.PushBack(ec2query.Unmarshal) |  | ||||||
| 	service.Handlers.UnmarshalMeta.PushBack(ec2query.UnmarshalMeta) |  | ||||||
| 	service.Handlers.UnmarshalError.PushBack(ec2query.UnmarshalError) |  | ||||||
|  |  | ||||||
| 	return &OutputService6ProtocolTest{service} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // newRequest creates a new request for a OutputService6ProtocolTest operation and runs any |  | ||||||
| // custom request initialization. |  | ||||||
| func (c *OutputService6ProtocolTest) newRequest(op *service.Operation, params, data interface{}) *service.Request { |  | ||||||
| 	req := service.NewRequest(c.Service, op, params, data) |  | ||||||
|  |  | ||||||
| 	return req |  | ||||||
| } |  | ||||||
|  |  | ||||||
| const opOutputService6TestCaseOperation1 = "OperationName" |  | ||||||
|  |  | ||||||
| // OutputService6TestCaseOperation1Request generates a request for the OutputService6TestCaseOperation1 operation. |  | ||||||
| func (c *OutputService6ProtocolTest) OutputService6TestCaseOperation1Request(input *OutputService6TestShapeOutputService6TestCaseOperation1Input) (req *service.Request, output *OutputService6TestShapeOutputShape) { |  | ||||||
| 	op := &service.Operation{ |  | ||||||
| 		Name: opOutputService6TestCaseOperation1, |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	if input == nil { |  | ||||||
| 		input = &OutputService6TestShapeOutputService6TestCaseOperation1Input{} |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	req = c.newRequest(op, input, output) |  | ||||||
| 	output = &OutputService6TestShapeOutputShape{} |  | ||||||
| 	req.Data = output |  | ||||||
| 	return |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func (c *OutputService6ProtocolTest) OutputService6TestCaseOperation1(input *OutputService6TestShapeOutputService6TestCaseOperation1Input) (*OutputService6TestShapeOutputShape, error) { |  | ||||||
| 	req, out := c.OutputService6TestCaseOperation1Request(input) |  | ||||||
| 	err := req.Send() |  | ||||||
| 	return out, err |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type OutputService6TestShapeOutputService6TestCaseOperation1Input struct { |  | ||||||
| 	metadataOutputService6TestShapeOutputService6TestCaseOperation1Input `json:"-" xml:"-"` |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type metadataOutputService6TestShapeOutputService6TestCaseOperation1Input struct { |  | ||||||
| 	SDKShapeTraits bool `type:"structure"` |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type OutputService6TestShapeOutputShape struct { |  | ||||||
| 	Map map[string]*OutputService6TestShapeStructureType `type:"map"` |  | ||||||
|  |  | ||||||
| 	metadataOutputService6TestShapeOutputShape `json:"-" xml:"-"` |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type metadataOutputService6TestShapeOutputShape struct { |  | ||||||
| 	SDKShapeTraits bool `type:"structure"` |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type OutputService6TestShapeStructureType struct { |  | ||||||
| 	Foo *string `locationName:"foo" type:"string"` |  | ||||||
|  |  | ||||||
| 	metadataOutputService6TestShapeStructureType `json:"-" xml:"-"` |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type metadataOutputService6TestShapeStructureType struct { |  | ||||||
| 	SDKShapeTraits bool `type:"structure"` |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type OutputService7ProtocolTest struct { |  | ||||||
| 	*service.Service |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // New returns a new OutputService7ProtocolTest client. |  | ||||||
| func NewOutputService7ProtocolTest(config *aws.Config) *OutputService7ProtocolTest { |  | ||||||
| 	service := &service.Service{ |  | ||||||
| 		Config:      defaults.DefaultConfig.Merge(config), |  | ||||||
| 		ServiceName: "outputservice7protocoltest", |  | ||||||
| 		APIVersion:  "", |  | ||||||
| 	} |  | ||||||
| 	service.Initialize() |  | ||||||
|  |  | ||||||
| 	// Handlers |  | ||||||
| 	service.Handlers.Sign.PushBack(v4.Sign) |  | ||||||
| 	service.Handlers.Build.PushBack(ec2query.Build) |  | ||||||
| 	service.Handlers.Unmarshal.PushBack(ec2query.Unmarshal) |  | ||||||
| 	service.Handlers.UnmarshalMeta.PushBack(ec2query.UnmarshalMeta) |  | ||||||
| 	service.Handlers.UnmarshalError.PushBack(ec2query.UnmarshalError) |  | ||||||
|  |  | ||||||
| 	return &OutputService7ProtocolTest{service} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // newRequest creates a new request for a OutputService7ProtocolTest operation and runs any |  | ||||||
| // custom request initialization. |  | ||||||
| func (c *OutputService7ProtocolTest) newRequest(op *service.Operation, params, data interface{}) *service.Request { |  | ||||||
| 	req := service.NewRequest(c.Service, op, params, data) |  | ||||||
|  |  | ||||||
| 	return req |  | ||||||
| } |  | ||||||
|  |  | ||||||
| const opOutputService7TestCaseOperation1 = "OperationName" |  | ||||||
|  |  | ||||||
| // OutputService7TestCaseOperation1Request generates a request for the OutputService7TestCaseOperation1 operation. |  | ||||||
| func (c *OutputService7ProtocolTest) OutputService7TestCaseOperation1Request(input *OutputService7TestShapeOutputService7TestCaseOperation1Input) (req *service.Request, output *OutputService7TestShapeOutputShape) { |  | ||||||
| 	op := &service.Operation{ |  | ||||||
| 		Name: opOutputService7TestCaseOperation1, |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	if input == nil { |  | ||||||
| 		input = &OutputService7TestShapeOutputService7TestCaseOperation1Input{} |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	req = c.newRequest(op, input, output) |  | ||||||
| 	output = &OutputService7TestShapeOutputShape{} |  | ||||||
| 	req.Data = output |  | ||||||
| 	return |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func (c *OutputService7ProtocolTest) OutputService7TestCaseOperation1(input *OutputService7TestShapeOutputService7TestCaseOperation1Input) (*OutputService7TestShapeOutputShape, error) { |  | ||||||
| 	req, out := c.OutputService7TestCaseOperation1Request(input) |  | ||||||
| 	err := req.Send() |  | ||||||
| 	return out, err |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type OutputService7TestShapeOutputService7TestCaseOperation1Input struct { |  | ||||||
| 	metadataOutputService7TestShapeOutputService7TestCaseOperation1Input `json:"-" xml:"-"` |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type metadataOutputService7TestShapeOutputService7TestCaseOperation1Input struct { |  | ||||||
| 	SDKShapeTraits bool `type:"structure"` |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type OutputService7TestShapeOutputShape struct { |  | ||||||
| 	Map map[string]*string `type:"map" flattened:"true"` |  | ||||||
|  |  | ||||||
| 	metadataOutputService7TestShapeOutputShape `json:"-" xml:"-"` |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type metadataOutputService7TestShapeOutputShape struct { |  | ||||||
| 	SDKShapeTraits bool `type:"structure"` |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type OutputService8ProtocolTest struct { |  | ||||||
| 	*service.Service |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // New returns a new OutputService8ProtocolTest client. |  | ||||||
| func NewOutputService8ProtocolTest(config *aws.Config) *OutputService8ProtocolTest { |  | ||||||
| 	service := &service.Service{ |  | ||||||
| 		Config:      defaults.DefaultConfig.Merge(config), |  | ||||||
| 		ServiceName: "outputservice8protocoltest", |  | ||||||
| 		APIVersion:  "", |  | ||||||
| 	} |  | ||||||
| 	service.Initialize() |  | ||||||
|  |  | ||||||
| 	// Handlers |  | ||||||
| 	service.Handlers.Sign.PushBack(v4.Sign) |  | ||||||
| 	service.Handlers.Build.PushBack(ec2query.Build) |  | ||||||
| 	service.Handlers.Unmarshal.PushBack(ec2query.Unmarshal) |  | ||||||
| 	service.Handlers.UnmarshalMeta.PushBack(ec2query.UnmarshalMeta) |  | ||||||
| 	service.Handlers.UnmarshalError.PushBack(ec2query.UnmarshalError) |  | ||||||
|  |  | ||||||
| 	return &OutputService8ProtocolTest{service} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // newRequest creates a new request for a OutputService8ProtocolTest operation and runs any |  | ||||||
| // custom request initialization. |  | ||||||
| func (c *OutputService8ProtocolTest) newRequest(op *service.Operation, params, data interface{}) *service.Request { |  | ||||||
| 	req := service.NewRequest(c.Service, op, params, data) |  | ||||||
|  |  | ||||||
| 	return req |  | ||||||
| } |  | ||||||
|  |  | ||||||
| const opOutputService8TestCaseOperation1 = "OperationName" |  | ||||||
|  |  | ||||||
| // OutputService8TestCaseOperation1Request generates a request for the OutputService8TestCaseOperation1 operation. |  | ||||||
| func (c *OutputService8ProtocolTest) OutputService8TestCaseOperation1Request(input *OutputService8TestShapeOutputService8TestCaseOperation1Input) (req *service.Request, output *OutputService8TestShapeOutputShape) { |  | ||||||
| 	op := &service.Operation{ |  | ||||||
| 		Name: opOutputService8TestCaseOperation1, |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	if input == nil { |  | ||||||
| 		input = &OutputService8TestShapeOutputService8TestCaseOperation1Input{} |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	req = c.newRequest(op, input, output) |  | ||||||
| 	output = &OutputService8TestShapeOutputShape{} |  | ||||||
| 	req.Data = output |  | ||||||
| 	return |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func (c *OutputService8ProtocolTest) OutputService8TestCaseOperation1(input *OutputService8TestShapeOutputService8TestCaseOperation1Input) (*OutputService8TestShapeOutputShape, error) { |  | ||||||
| 	req, out := c.OutputService8TestCaseOperation1Request(input) |  | ||||||
| 	err := req.Send() |  | ||||||
| 	return out, err |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type OutputService8TestShapeOutputService8TestCaseOperation1Input struct { |  | ||||||
| 	metadataOutputService8TestShapeOutputService8TestCaseOperation1Input `json:"-" xml:"-"` |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type metadataOutputService8TestShapeOutputService8TestCaseOperation1Input struct { |  | ||||||
| 	SDKShapeTraits bool `type:"structure"` |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type OutputService8TestShapeOutputShape struct { |  | ||||||
| 	Map map[string]*string `locationNameKey:"foo" locationNameValue:"bar" type:"map" flattened:"true"` |  | ||||||
|  |  | ||||||
| 	metadataOutputService8TestShapeOutputShape `json:"-" xml:"-"` |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type metadataOutputService8TestShapeOutputShape struct { |  | ||||||
| 	SDKShapeTraits bool `type:"structure"` |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // |  | ||||||
| // Tests begin here |  | ||||||
| // |  | ||||||
|  |  | ||||||
| func TestOutputService1ProtocolTestScalarMembersCase1(t *testing.T) { |  | ||||||
| 	svc := NewOutputService1ProtocolTest(nil) |  | ||||||
|  |  | ||||||
| 	buf := bytes.NewReader([]byte("<OperationNameResponse><Str>myname</Str><FooNum>123</FooNum><FalseBool>false</FalseBool><TrueBool>true</TrueBool><Float>1.2</Float><Double>1.3</Double><Long>200</Long><Char>a</Char><RequestId>request-id</RequestId></OperationNameResponse>")) |  | ||||||
| 	req, out := svc.OutputService1TestCaseOperation1Request(nil) |  | ||||||
| 	req.HTTPResponse = &http.Response{StatusCode: 200, Body: ioutil.NopCloser(buf), Header: http.Header{}} |  | ||||||
|  |  | ||||||
| 	// set headers |  | ||||||
|  |  | ||||||
| 	// unmarshal response |  | ||||||
| 	ec2query.UnmarshalMeta(req) |  | ||||||
| 	ec2query.Unmarshal(req) |  | ||||||
| 	assert.NoError(t, req.Error) |  | ||||||
|  |  | ||||||
| 	// assert response |  | ||||||
| 	assert.NotNil(t, out) // ensure out variable is used |  | ||||||
| 	assert.Equal(t, "a", *out.Char) |  | ||||||
| 	assert.Equal(t, 1.3, *out.Double) |  | ||||||
| 	assert.Equal(t, false, *out.FalseBool) |  | ||||||
| 	assert.Equal(t, 1.2, *out.Float) |  | ||||||
| 	assert.Equal(t, int64(200), *out.Long) |  | ||||||
| 	assert.Equal(t, int64(123), *out.Num) |  | ||||||
| 	assert.Equal(t, "myname", *out.Str) |  | ||||||
| 	assert.Equal(t, true, *out.TrueBool) |  | ||||||
|  |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestOutputService2ProtocolTestBlobCase1(t *testing.T) { |  | ||||||
| 	svc := NewOutputService2ProtocolTest(nil) |  | ||||||
|  |  | ||||||
| 	buf := bytes.NewReader([]byte("<OperationNameResponse><Blob>dmFsdWU=</Blob><RequestId>requestid</RequestId></OperationNameResponse>")) |  | ||||||
| 	req, out := svc.OutputService2TestCaseOperation1Request(nil) |  | ||||||
| 	req.HTTPResponse = &http.Response{StatusCode: 200, Body: ioutil.NopCloser(buf), Header: http.Header{}} |  | ||||||
|  |  | ||||||
| 	// set headers |  | ||||||
|  |  | ||||||
| 	// unmarshal response |  | ||||||
| 	ec2query.UnmarshalMeta(req) |  | ||||||
| 	ec2query.Unmarshal(req) |  | ||||||
| 	assert.NoError(t, req.Error) |  | ||||||
|  |  | ||||||
| 	// assert response |  | ||||||
| 	assert.NotNil(t, out) // ensure out variable is used |  | ||||||
| 	assert.Equal(t, "value", string(out.Blob)) |  | ||||||
|  |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestOutputService3ProtocolTestListsCase1(t *testing.T) { |  | ||||||
| 	svc := NewOutputService3ProtocolTest(nil) |  | ||||||
|  |  | ||||||
| 	buf := bytes.NewReader([]byte("<OperationNameResponse><ListMember><member>abc</member><member>123</member></ListMember><RequestId>requestid</RequestId></OperationNameResponse>")) |  | ||||||
| 	req, out := svc.OutputService3TestCaseOperation1Request(nil) |  | ||||||
| 	req.HTTPResponse = &http.Response{StatusCode: 200, Body: ioutil.NopCloser(buf), Header: http.Header{}} |  | ||||||
|  |  | ||||||
| 	// set headers |  | ||||||
|  |  | ||||||
| 	// unmarshal response |  | ||||||
| 	ec2query.UnmarshalMeta(req) |  | ||||||
| 	ec2query.Unmarshal(req) |  | ||||||
| 	assert.NoError(t, req.Error) |  | ||||||
|  |  | ||||||
| 	// assert response |  | ||||||
| 	assert.NotNil(t, out) // ensure out variable is used |  | ||||||
| 	assert.Equal(t, "abc", *out.ListMember[0]) |  | ||||||
| 	assert.Equal(t, "123", *out.ListMember[1]) |  | ||||||
|  |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestOutputService4ProtocolTestListWithCustomMemberNameCase1(t *testing.T) { |  | ||||||
| 	svc := NewOutputService4ProtocolTest(nil) |  | ||||||
|  |  | ||||||
| 	buf := bytes.NewReader([]byte("<OperationNameResponse><ListMember><item>abc</item><item>123</item></ListMember><RequestId>requestid</RequestId></OperationNameResponse>")) |  | ||||||
| 	req, out := svc.OutputService4TestCaseOperation1Request(nil) |  | ||||||
| 	req.HTTPResponse = &http.Response{StatusCode: 200, Body: ioutil.NopCloser(buf), Header: http.Header{}} |  | ||||||
|  |  | ||||||
| 	// set headers |  | ||||||
|  |  | ||||||
| 	// unmarshal response |  | ||||||
| 	ec2query.UnmarshalMeta(req) |  | ||||||
| 	ec2query.Unmarshal(req) |  | ||||||
| 	assert.NoError(t, req.Error) |  | ||||||
|  |  | ||||||
| 	// assert response |  | ||||||
| 	assert.NotNil(t, out) // ensure out variable is used |  | ||||||
| 	assert.Equal(t, "abc", *out.ListMember[0]) |  | ||||||
| 	assert.Equal(t, "123", *out.ListMember[1]) |  | ||||||
|  |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestOutputService5ProtocolTestFlattenedListCase1(t *testing.T) { |  | ||||||
| 	svc := NewOutputService5ProtocolTest(nil) |  | ||||||
|  |  | ||||||
| 	buf := bytes.NewReader([]byte("<OperationNameResponse><ListMember>abc</ListMember><ListMember>123</ListMember><RequestId>requestid</RequestId></OperationNameResponse>")) |  | ||||||
| 	req, out := svc.OutputService5TestCaseOperation1Request(nil) |  | ||||||
| 	req.HTTPResponse = &http.Response{StatusCode: 200, Body: ioutil.NopCloser(buf), Header: http.Header{}} |  | ||||||
|  |  | ||||||
| 	// set headers |  | ||||||
|  |  | ||||||
| 	// unmarshal response |  | ||||||
| 	ec2query.UnmarshalMeta(req) |  | ||||||
| 	ec2query.Unmarshal(req) |  | ||||||
| 	assert.NoError(t, req.Error) |  | ||||||
|  |  | ||||||
| 	// assert response |  | ||||||
| 	assert.NotNil(t, out) // ensure out variable is used |  | ||||||
| 	assert.Equal(t, "abc", *out.ListMember[0]) |  | ||||||
| 	assert.Equal(t, "123", *out.ListMember[1]) |  | ||||||
|  |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestOutputService6ProtocolTestNormalMapCase1(t *testing.T) { |  | ||||||
| 	svc := NewOutputService6ProtocolTest(nil) |  | ||||||
|  |  | ||||||
| 	buf := bytes.NewReader([]byte("<OperationNameResponse><Map><entry><key>qux</key><value><foo>bar</foo></value></entry><entry><key>baz</key><value><foo>bam</foo></value></entry></Map><RequestId>requestid</RequestId></OperationNameResponse>")) |  | ||||||
| 	req, out := svc.OutputService6TestCaseOperation1Request(nil) |  | ||||||
| 	req.HTTPResponse = &http.Response{StatusCode: 200, Body: ioutil.NopCloser(buf), Header: http.Header{}} |  | ||||||
|  |  | ||||||
| 	// set headers |  | ||||||
|  |  | ||||||
| 	// unmarshal response |  | ||||||
| 	ec2query.UnmarshalMeta(req) |  | ||||||
| 	ec2query.Unmarshal(req) |  | ||||||
| 	assert.NoError(t, req.Error) |  | ||||||
|  |  | ||||||
| 	// assert response |  | ||||||
| 	assert.NotNil(t, out) // ensure out variable is used |  | ||||||
| 	assert.Equal(t, "bam", *out.Map["baz"].Foo) |  | ||||||
| 	assert.Equal(t, "bar", *out.Map["qux"].Foo) |  | ||||||
|  |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestOutputService7ProtocolTestFlattenedMapCase1(t *testing.T) { |  | ||||||
| 	svc := NewOutputService7ProtocolTest(nil) |  | ||||||
|  |  | ||||||
| 	buf := bytes.NewReader([]byte("<OperationNameResponse><Map><key>qux</key><value>bar</value></Map><Map><key>baz</key><value>bam</value></Map><RequestId>requestid</RequestId></OperationNameResponse>")) |  | ||||||
| 	req, out := svc.OutputService7TestCaseOperation1Request(nil) |  | ||||||
| 	req.HTTPResponse = &http.Response{StatusCode: 200, Body: ioutil.NopCloser(buf), Header: http.Header{}} |  | ||||||
|  |  | ||||||
| 	// set headers |  | ||||||
|  |  | ||||||
| 	// unmarshal response |  | ||||||
| 	ec2query.UnmarshalMeta(req) |  | ||||||
| 	ec2query.Unmarshal(req) |  | ||||||
| 	assert.NoError(t, req.Error) |  | ||||||
|  |  | ||||||
| 	// assert response |  | ||||||
| 	assert.NotNil(t, out) // ensure out variable is used |  | ||||||
| 	assert.Equal(t, "bam", *out.Map["baz"]) |  | ||||||
| 	assert.Equal(t, "bar", *out.Map["qux"]) |  | ||||||
|  |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestOutputService8ProtocolTestNamedMapCase1(t *testing.T) { |  | ||||||
| 	svc := NewOutputService8ProtocolTest(nil) |  | ||||||
|  |  | ||||||
| 	buf := bytes.NewReader([]byte("<OperationNameResponse><Map><foo>qux</foo><bar>bar</bar></Map><Map><foo>baz</foo><bar>bam</bar></Map><RequestId>requestid</RequestId></OperationNameResponse>")) |  | ||||||
| 	req, out := svc.OutputService8TestCaseOperation1Request(nil) |  | ||||||
| 	req.HTTPResponse = &http.Response{StatusCode: 200, Body: ioutil.NopCloser(buf), Header: http.Header{}} |  | ||||||
|  |  | ||||||
| 	// set headers |  | ||||||
|  |  | ||||||
| 	// unmarshal response |  | ||||||
| 	ec2query.UnmarshalMeta(req) |  | ||||||
| 	ec2query.Unmarshal(req) |  | ||||||
| 	assert.NoError(t, req.Error) |  | ||||||
|  |  | ||||||
| 	// assert response |  | ||||||
| 	assert.NotNil(t, out) // ensure out variable is used |  | ||||||
| 	assert.Equal(t, "bam", *out.Map["baz"]) |  | ||||||
| 	assert.Equal(t, "bar", *out.Map["qux"]) |  | ||||||
|  |  | ||||||
| } |  | ||||||
							
								
								
									
										4
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/protocol/query/build.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/protocol/query/build.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -7,12 +7,12 @@ import ( | |||||||
| 	"net/url" | 	"net/url" | ||||||
|  |  | ||||||
| 	"github.com/aws/aws-sdk-go/aws/awserr" | 	"github.com/aws/aws-sdk-go/aws/awserr" | ||||||
| 	"github.com/aws/aws-sdk-go/aws/service" | 	"github.com/aws/aws-sdk-go/aws/request" | ||||||
| 	"github.com/aws/aws-sdk-go/internal/protocol/query/queryutil" | 	"github.com/aws/aws-sdk-go/internal/protocol/query/queryutil" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| // Build builds a request for an AWS Query service. | // Build builds a request for an AWS Query service. | ||||||
| func Build(r *service.Request) { | func Build(r *request.Request) { | ||||||
| 	body := url.Values{ | 	body := url.Values{ | ||||||
| 		"Action":  {r.Operation.Name}, | 		"Action":  {r.Operation.Name}, | ||||||
| 		"Version": {r.Service.APIVersion}, | 		"Version": {r.Service.APIVersion}, | ||||||
|   | |||||||
							
								
								
									
										1484
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/protocol/query/build_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1484
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/protocol/query/build_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										6
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/protocol/query/unmarshal.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/protocol/query/unmarshal.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -6,12 +6,12 @@ import ( | |||||||
| 	"encoding/xml" | 	"encoding/xml" | ||||||
|  |  | ||||||
| 	"github.com/aws/aws-sdk-go/aws/awserr" | 	"github.com/aws/aws-sdk-go/aws/awserr" | ||||||
| 	"github.com/aws/aws-sdk-go/aws/service" | 	"github.com/aws/aws-sdk-go/aws/request" | ||||||
| 	"github.com/aws/aws-sdk-go/internal/protocol/xml/xmlutil" | 	"github.com/aws/aws-sdk-go/internal/protocol/xml/xmlutil" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| // Unmarshal unmarshals a response for an AWS Query service. | // Unmarshal unmarshals a response for an AWS Query service. | ||||||
| func Unmarshal(r *service.Request) { | func Unmarshal(r *request.Request) { | ||||||
| 	defer r.HTTPResponse.Body.Close() | 	defer r.HTTPResponse.Body.Close() | ||||||
| 	if r.DataFilled() { | 	if r.DataFilled() { | ||||||
| 		decoder := xml.NewDecoder(r.HTTPResponse.Body) | 		decoder := xml.NewDecoder(r.HTTPResponse.Body) | ||||||
| @@ -24,6 +24,6 @@ func Unmarshal(r *service.Request) { | |||||||
| } | } | ||||||
|  |  | ||||||
| // UnmarshalMeta unmarshals header response values for an AWS Query service. | // UnmarshalMeta unmarshals header response values for an AWS Query service. | ||||||
| func UnmarshalMeta(r *service.Request) { | func UnmarshalMeta(r *request.Request) { | ||||||
| 	// TODO implement unmarshaling of request IDs | 	// TODO implement unmarshaling of request IDs | ||||||
| } | } | ||||||
|   | |||||||
| @@ -5,7 +5,7 @@ import ( | |||||||
| 	"io" | 	"io" | ||||||
|  |  | ||||||
| 	"github.com/aws/aws-sdk-go/aws/awserr" | 	"github.com/aws/aws-sdk-go/aws/awserr" | ||||||
| 	"github.com/aws/aws-sdk-go/aws/service" | 	"github.com/aws/aws-sdk-go/aws/request" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| type xmlErrorResponse struct { | type xmlErrorResponse struct { | ||||||
| @@ -16,7 +16,7 @@ type xmlErrorResponse struct { | |||||||
| } | } | ||||||
|  |  | ||||||
| // UnmarshalError unmarshals an error response for an AWS Query service. | // UnmarshalError unmarshals an error response for an AWS Query service. | ||||||
| func UnmarshalError(r *service.Request) { | func UnmarshalError(r *request.Request) { | ||||||
| 	defer r.HTTPResponse.Body.Close() | 	defer r.HTTPResponse.Body.Close() | ||||||
|  |  | ||||||
| 	resp := &xmlErrorResponse{} | 	resp := &xmlErrorResponse{} | ||||||
|   | |||||||
							
								
								
									
										1420
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/protocol/query/unmarshal_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1420
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/protocol/query/unmarshal_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										16
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/protocol/rest/build.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										16
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/protocol/rest/build.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -14,7 +14,7 @@ import ( | |||||||
| 	"time" | 	"time" | ||||||
|  |  | ||||||
| 	"github.com/aws/aws-sdk-go/aws/awserr" | 	"github.com/aws/aws-sdk-go/aws/awserr" | ||||||
| 	"github.com/aws/aws-sdk-go/aws/service" | 	"github.com/aws/aws-sdk-go/aws/request" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| // RFC822 returns an RFC822 formatted timestamp for AWS protocols | // RFC822 returns an RFC822 formatted timestamp for AWS protocols | ||||||
| @@ -37,7 +37,7 @@ func init() { | |||||||
| } | } | ||||||
|  |  | ||||||
| // Build builds the REST component of a service request. | // Build builds the REST component of a service request. | ||||||
| func Build(r *service.Request) { | func Build(r *request.Request) { | ||||||
| 	if r.ParamsFilled() { | 	if r.ParamsFilled() { | ||||||
| 		v := reflect.ValueOf(r.Params).Elem() | 		v := reflect.ValueOf(r.Params).Elem() | ||||||
| 		buildLocationElements(r, v) | 		buildLocationElements(r, v) | ||||||
| @@ -45,7 +45,7 @@ func Build(r *service.Request) { | |||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
| func buildLocationElements(r *service.Request, v reflect.Value) { | func buildLocationElements(r *request.Request, v reflect.Value) { | ||||||
| 	query := r.HTTPRequest.URL.Query() | 	query := r.HTTPRequest.URL.Query() | ||||||
|  |  | ||||||
| 	for i := 0; i < v.NumField(); i++ { | 	for i := 0; i < v.NumField(); i++ { | ||||||
| @@ -87,7 +87,7 @@ func buildLocationElements(r *service.Request, v reflect.Value) { | |||||||
| 	updatePath(r.HTTPRequest.URL, r.HTTPRequest.URL.Path) | 	updatePath(r.HTTPRequest.URL, r.HTTPRequest.URL.Path) | ||||||
| } | } | ||||||
|  |  | ||||||
| func buildBody(r *service.Request, v reflect.Value) { | func buildBody(r *request.Request, v reflect.Value) { | ||||||
| 	if field, ok := v.Type().FieldByName("SDKShapeTraits"); ok { | 	if field, ok := v.Type().FieldByName("SDKShapeTraits"); ok { | ||||||
| 		if payloadName := field.Tag.Get("payload"); payloadName != "" { | 		if payloadName := field.Tag.Get("payload"); payloadName != "" { | ||||||
| 			pfield, _ := v.Type().FieldByName(payloadName) | 			pfield, _ := v.Type().FieldByName(payloadName) | ||||||
| @@ -112,7 +112,7 @@ func buildBody(r *service.Request, v reflect.Value) { | |||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
| func buildHeader(r *service.Request, v reflect.Value, name string) { | func buildHeader(r *request.Request, v reflect.Value, name string) { | ||||||
| 	str, err := convertType(v) | 	str, err := convertType(v) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		r.Error = awserr.New("SerializationError", "failed to encode REST request", err) | 		r.Error = awserr.New("SerializationError", "failed to encode REST request", err) | ||||||
| @@ -121,7 +121,7 @@ func buildHeader(r *service.Request, v reflect.Value, name string) { | |||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
| func buildHeaderMap(r *service.Request, v reflect.Value, prefix string) { | func buildHeaderMap(r *request.Request, v reflect.Value, prefix string) { | ||||||
| 	for _, key := range v.MapKeys() { | 	for _, key := range v.MapKeys() { | ||||||
| 		str, err := convertType(v.MapIndex(key)) | 		str, err := convertType(v.MapIndex(key)) | ||||||
| 		if err != nil { | 		if err != nil { | ||||||
| @@ -132,7 +132,7 @@ func buildHeaderMap(r *service.Request, v reflect.Value, prefix string) { | |||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
| func buildURI(r *service.Request, v reflect.Value, name string) { | func buildURI(r *request.Request, v reflect.Value, name string) { | ||||||
| 	value, err := convertType(v) | 	value, err := convertType(v) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		r.Error = awserr.New("SerializationError", "failed to encode REST request", err) | 		r.Error = awserr.New("SerializationError", "failed to encode REST request", err) | ||||||
| @@ -144,7 +144,7 @@ func buildURI(r *service.Request, v reflect.Value, name string) { | |||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
| func buildQueryString(r *service.Request, v reflect.Value, name string, query url.Values) { | func buildQueryString(r *request.Request, v reflect.Value, name string, query url.Values) { | ||||||
| 	str, err := convertType(v) | 	str, err := convertType(v) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		r.Error = awserr.New("SerializationError", "failed to encode REST request", err) | 		r.Error = awserr.New("SerializationError", "failed to encode REST request", err) | ||||||
|   | |||||||
							
								
								
									
										16
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/protocol/rest/unmarshal.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										16
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/protocol/rest/unmarshal.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -12,19 +12,27 @@ import ( | |||||||
|  |  | ||||||
| 	"github.com/aws/aws-sdk-go/aws" | 	"github.com/aws/aws-sdk-go/aws" | ||||||
| 	"github.com/aws/aws-sdk-go/aws/awserr" | 	"github.com/aws/aws-sdk-go/aws/awserr" | ||||||
| 	"github.com/aws/aws-sdk-go/aws/service" | 	"github.com/aws/aws-sdk-go/aws/request" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| // Unmarshal unmarshals the REST component of a response in a REST service. | // Unmarshal unmarshals the REST component of a response in a REST service. | ||||||
| func Unmarshal(r *service.Request) { | func Unmarshal(r *request.Request) { | ||||||
| 	if r.DataFilled() { | 	if r.DataFilled() { | ||||||
| 		v := reflect.Indirect(reflect.ValueOf(r.Data)) | 		v := reflect.Indirect(reflect.ValueOf(r.Data)) | ||||||
| 		unmarshalBody(r, v) | 		unmarshalBody(r, v) | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // UnmarshalMeta unmarshals the REST metadata of a response in a REST service | ||||||
|  | func UnmarshalMeta(r *request.Request) { | ||||||
|  | 	r.RequestID = r.HTTPResponse.Header.Get("X-Amzn-Requestid") | ||||||
|  | 	if r.DataFilled() { | ||||||
|  | 		v := reflect.Indirect(reflect.ValueOf(r.Data)) | ||||||
| 		unmarshalLocationElements(r, v) | 		unmarshalLocationElements(r, v) | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
| func unmarshalBody(r *service.Request, v reflect.Value) { | func unmarshalBody(r *request.Request, v reflect.Value) { | ||||||
| 	if field, ok := v.Type().FieldByName("SDKShapeTraits"); ok { | 	if field, ok := v.Type().FieldByName("SDKShapeTraits"); ok { | ||||||
| 		if payloadName := field.Tag.Get("payload"); payloadName != "" { | 		if payloadName := field.Tag.Get("payload"); payloadName != "" { | ||||||
| 			pfield, _ := v.Type().FieldByName(payloadName) | 			pfield, _ := v.Type().FieldByName(payloadName) | ||||||
| @@ -65,7 +73,7 @@ func unmarshalBody(r *service.Request, v reflect.Value) { | |||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
| func unmarshalLocationElements(r *service.Request, v reflect.Value) { | func unmarshalLocationElements(r *request.Request, v reflect.Value) { | ||||||
| 	for i := 0; i < v.NumField(); i++ { | 	for i := 0; i < v.NumField(); i++ { | ||||||
| 		m, field := v.Field(i), v.Type().Field(i) | 		m, field := v.Field(i), v.Type().Field(i) | ||||||
| 		if n := field.Name; n[0:1] == strings.ToLower(n[0:1]) { | 		if n := field.Name; n[0:1] == strings.ToLower(n[0:1]) { | ||||||
|   | |||||||
							
								
								
									
										2719
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/protocol/restxml/build_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2719
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/protocol/restxml/build_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										16
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/protocol/restxml/restxml.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										16
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/protocol/restxml/restxml.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -10,21 +10,21 @@ import ( | |||||||
| 	"encoding/xml" | 	"encoding/xml" | ||||||
|  |  | ||||||
| 	"github.com/aws/aws-sdk-go/aws/awserr" | 	"github.com/aws/aws-sdk-go/aws/awserr" | ||||||
| 	"github.com/aws/aws-sdk-go/aws/service" | 	"github.com/aws/aws-sdk-go/aws/request" | ||||||
| 	"github.com/aws/aws-sdk-go/internal/protocol/query" | 	"github.com/aws/aws-sdk-go/internal/protocol/query" | ||||||
| 	"github.com/aws/aws-sdk-go/internal/protocol/rest" | 	"github.com/aws/aws-sdk-go/internal/protocol/rest" | ||||||
| 	"github.com/aws/aws-sdk-go/internal/protocol/xml/xmlutil" | 	"github.com/aws/aws-sdk-go/internal/protocol/xml/xmlutil" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| // Build builds a request payload for the REST XML protocol. | // Build builds a request payload for the REST XML protocol. | ||||||
| func Build(r *service.Request) { | func Build(r *request.Request) { | ||||||
| 	rest.Build(r) | 	rest.Build(r) | ||||||
|  |  | ||||||
| 	if t := rest.PayloadType(r.Params); t == "structure" || t == "" { | 	if t := rest.PayloadType(r.Params); t == "structure" || t == "" { | ||||||
| 		var buf bytes.Buffer | 		var buf bytes.Buffer | ||||||
| 		err := xmlutil.BuildXML(r.Params, xml.NewEncoder(&buf)) | 		err := xmlutil.BuildXML(r.Params, xml.NewEncoder(&buf)) | ||||||
| 		if err != nil { | 		if err != nil { | ||||||
| 			r.Error = awserr.New("SerializationError", "failed to enode rest XML request", err) | 			r.Error = awserr.New("SerializationError", "failed to encode rest XML request", err) | ||||||
| 			return | 			return | ||||||
| 		} | 		} | ||||||
| 		r.SetBufferBody(buf.Bytes()) | 		r.SetBufferBody(buf.Bytes()) | ||||||
| @@ -32,7 +32,7 @@ func Build(r *service.Request) { | |||||||
| } | } | ||||||
|  |  | ||||||
| // Unmarshal unmarshals a payload response for the REST XML protocol. | // Unmarshal unmarshals a payload response for the REST XML protocol. | ||||||
| func Unmarshal(r *service.Request) { | func Unmarshal(r *request.Request) { | ||||||
| 	if t := rest.PayloadType(r.Data); t == "structure" || t == "" { | 	if t := rest.PayloadType(r.Data); t == "structure" || t == "" { | ||||||
| 		defer r.HTTPResponse.Body.Close() | 		defer r.HTTPResponse.Body.Close() | ||||||
| 		decoder := xml.NewDecoder(r.HTTPResponse.Body) | 		decoder := xml.NewDecoder(r.HTTPResponse.Body) | ||||||
| @@ -41,15 +41,17 @@ func Unmarshal(r *service.Request) { | |||||||
| 			r.Error = awserr.New("SerializationError", "failed to decode REST XML response", err) | 			r.Error = awserr.New("SerializationError", "failed to decode REST XML response", err) | ||||||
| 			return | 			return | ||||||
| 		} | 		} | ||||||
|  | 	} else { | ||||||
|  | 		rest.Unmarshal(r) | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
| // UnmarshalMeta unmarshals response headers for the REST XML protocol. | // UnmarshalMeta unmarshals response headers for the REST XML protocol. | ||||||
| func UnmarshalMeta(r *service.Request) { | func UnmarshalMeta(r *request.Request) { | ||||||
| 	rest.Unmarshal(r) | 	rest.UnmarshalMeta(r) | ||||||
| } | } | ||||||
|  |  | ||||||
| // UnmarshalError unmarshals a response error for the REST XML protocol. | // UnmarshalError unmarshals a response error for the REST XML protocol. | ||||||
| func UnmarshalError(r *service.Request) { | func UnmarshalError(r *request.Request) { | ||||||
| 	query.UnmarshalError(r) | 	query.UnmarshalError(r) | ||||||
| } | } | ||||||
|   | |||||||
							
								
								
									
										1312
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/protocol/restxml/unmarshal_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1312
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/protocol/restxml/unmarshal_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										43
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/signer/v4/functional_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										43
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/signer/v4/functional_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,43 +0,0 @@ | |||||||
| package v4_test |  | ||||||
|  |  | ||||||
| import ( |  | ||||||
| 	"net/url" |  | ||||||
| 	"testing" |  | ||||||
| 	"time" |  | ||||||
|  |  | ||||||
| 	"github.com/aws/aws-sdk-go/aws" |  | ||||||
| 	"github.com/aws/aws-sdk-go/internal/test/unit" |  | ||||||
| 	"github.com/aws/aws-sdk-go/service/s3" |  | ||||||
| 	"github.com/stretchr/testify/assert" |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| var _ = unit.Imported |  | ||||||
|  |  | ||||||
| func TestPresignHandler(t *testing.T) { |  | ||||||
| 	svc := s3.New(nil) |  | ||||||
| 	req, _ := svc.PutObjectRequest(&s3.PutObjectInput{ |  | ||||||
| 		Bucket:             aws.String("bucket"), |  | ||||||
| 		Key:                aws.String("key"), |  | ||||||
| 		ContentDisposition: aws.String("a+b c$d"), |  | ||||||
| 		ACL:                aws.String("public-read"), |  | ||||||
| 	}) |  | ||||||
| 	req.Time = time.Unix(0, 0) |  | ||||||
| 	urlstr, err := req.Presign(5 * time.Minute) |  | ||||||
|  |  | ||||||
| 	assert.NoError(t, err) |  | ||||||
|  |  | ||||||
| 	expectedDate := "19700101T000000Z" |  | ||||||
| 	expectedHeaders := "host;x-amz-acl" |  | ||||||
| 	expectedSig := "7edcb4e3a1bf12f4989018d75acbe3a7f03df24bd6f3112602d59fc551f0e4e2" |  | ||||||
| 	expectedCred := "AKID/19700101/mock-region/s3/aws4_request" |  | ||||||
|  |  | ||||||
| 	u, _ := url.Parse(urlstr) |  | ||||||
| 	urlQ := u.Query() |  | ||||||
| 	assert.Equal(t, expectedSig, urlQ.Get("X-Amz-Signature")) |  | ||||||
| 	assert.Equal(t, expectedCred, urlQ.Get("X-Amz-Credential")) |  | ||||||
| 	assert.Equal(t, expectedHeaders, urlQ.Get("X-Amz-SignedHeaders")) |  | ||||||
| 	assert.Equal(t, expectedDate, urlQ.Get("X-Amz-Date")) |  | ||||||
| 	assert.Equal(t, "300", urlQ.Get("X-Amz-Expires")) |  | ||||||
|  |  | ||||||
| 	assert.NotContains(t, urlstr, "+") // + encoded as %20 |  | ||||||
| } |  | ||||||
							
								
								
									
										4
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/signer/v4/v4.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/signer/v4/v4.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -16,7 +16,7 @@ import ( | |||||||
|  |  | ||||||
| 	"github.com/aws/aws-sdk-go/aws" | 	"github.com/aws/aws-sdk-go/aws" | ||||||
| 	"github.com/aws/aws-sdk-go/aws/credentials" | 	"github.com/aws/aws-sdk-go/aws/credentials" | ||||||
| 	"github.com/aws/aws-sdk-go/aws/service" | 	"github.com/aws/aws-sdk-go/aws/request" | ||||||
| 	"github.com/aws/aws-sdk-go/internal/protocol/rest" | 	"github.com/aws/aws-sdk-go/internal/protocol/rest" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| @@ -64,7 +64,7 @@ type signer struct { | |||||||
| // Will sign the requests with the service config's Credentials object | // Will sign the requests with the service config's Credentials object | ||||||
| // Signing is skipped if the credentials is the credentials.AnonymousCredentials | // Signing is skipped if the credentials is the credentials.AnonymousCredentials | ||||||
| // object. | // object. | ||||||
| func Sign(req *service.Request) { | func Sign(req *request.Request) { | ||||||
| 	// If the request does not need to be signed ignore the signing of the | 	// If the request does not need to be signed ignore the signing of the | ||||||
| 	// request if the AnonymousCredentials object is used. | 	// request if the AnonymousCredentials object is used. | ||||||
| 	if req.Service.Config.Credentials == credentials.AnonymousCredentials { | 	if req.Service.Config.Credentials == credentials.AnonymousCredentials { | ||||||
|   | |||||||
							
								
								
									
										246
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/signer/v4/v4_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										246
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/internal/signer/v4/v4_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,246 +0,0 @@ | |||||||
| package v4 |  | ||||||
|  |  | ||||||
| import ( |  | ||||||
| 	"net/http" |  | ||||||
| 	"strings" |  | ||||||
| 	"testing" |  | ||||||
| 	"time" |  | ||||||
|  |  | ||||||
| 	"github.com/aws/aws-sdk-go/aws" |  | ||||||
| 	"github.com/aws/aws-sdk-go/aws/credentials" |  | ||||||
| 	"github.com/aws/aws-sdk-go/aws/service" |  | ||||||
| 	"github.com/stretchr/testify/assert" |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| func buildSigner(serviceName string, region string, signTime time.Time, expireTime time.Duration, body string) signer { |  | ||||||
| 	endpoint := "https://" + serviceName + "." + region + ".amazonaws.com" |  | ||||||
| 	reader := strings.NewReader(body) |  | ||||||
| 	req, _ := http.NewRequest("POST", endpoint, reader) |  | ||||||
| 	req.URL.Opaque = "//example.org/bucket/key-._~,!@#$%^&*()" |  | ||||||
| 	req.Header.Add("X-Amz-Target", "prefix.Operation") |  | ||||||
| 	req.Header.Add("Content-Type", "application/x-amz-json-1.0") |  | ||||||
| 	req.Header.Add("Content-Length", string(len(body))) |  | ||||||
| 	req.Header.Add("X-Amz-Meta-Other-Header", "some-value=!@#$%^&* (+)") |  | ||||||
|  |  | ||||||
| 	return signer{ |  | ||||||
| 		Request:     req, |  | ||||||
| 		Time:        signTime, |  | ||||||
| 		ExpireTime:  expireTime, |  | ||||||
| 		Query:       req.URL.Query(), |  | ||||||
| 		Body:        reader, |  | ||||||
| 		ServiceName: serviceName, |  | ||||||
| 		Region:      region, |  | ||||||
| 		Credentials: credentials.NewStaticCredentials("AKID", "SECRET", "SESSION"), |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func removeWS(text string) string { |  | ||||||
| 	text = strings.Replace(text, " ", "", -1) |  | ||||||
| 	text = strings.Replace(text, "\n", "", -1) |  | ||||||
| 	text = strings.Replace(text, "\t", "", -1) |  | ||||||
| 	return text |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func assertEqual(t *testing.T, expected, given string) { |  | ||||||
| 	if removeWS(expected) != removeWS(given) { |  | ||||||
| 		t.Errorf("\nExpected: %s\nGiven:    %s", expected, given) |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestPresignRequest(t *testing.T) { |  | ||||||
| 	signer := buildSigner("dynamodb", "us-east-1", time.Unix(0, 0), 300*time.Second, "{}") |  | ||||||
| 	signer.sign() |  | ||||||
|  |  | ||||||
| 	expectedDate := "19700101T000000Z" |  | ||||||
| 	expectedHeaders := "host;x-amz-meta-other-header;x-amz-target" |  | ||||||
| 	expectedSig := "5eeedebf6f995145ce56daa02902d10485246d3defb34f97b973c1f40ab82d36" |  | ||||||
| 	expectedCred := "AKID/19700101/us-east-1/dynamodb/aws4_request" |  | ||||||
|  |  | ||||||
| 	q := signer.Request.URL.Query() |  | ||||||
| 	assert.Equal(t, expectedSig, q.Get("X-Amz-Signature")) |  | ||||||
| 	assert.Equal(t, expectedCred, q.Get("X-Amz-Credential")) |  | ||||||
| 	assert.Equal(t, expectedHeaders, q.Get("X-Amz-SignedHeaders")) |  | ||||||
| 	assert.Equal(t, expectedDate, q.Get("X-Amz-Date")) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestSignRequest(t *testing.T) { |  | ||||||
| 	signer := buildSigner("dynamodb", "us-east-1", time.Unix(0, 0), 0, "{}") |  | ||||||
| 	signer.sign() |  | ||||||
|  |  | ||||||
| 	expectedDate := "19700101T000000Z" |  | ||||||
| 	expectedSig := "AWS4-HMAC-SHA256 Credential=AKID/19700101/us-east-1/dynamodb/aws4_request, SignedHeaders=host;x-amz-date;x-amz-meta-other-header;x-amz-security-token;x-amz-target, Signature=69ada33fec48180dab153576e4dd80c4e04124f80dda3eccfed8a67c2b91ed5e" |  | ||||||
|  |  | ||||||
| 	q := signer.Request.Header |  | ||||||
| 	assert.Equal(t, expectedSig, q.Get("Authorization")) |  | ||||||
| 	assert.Equal(t, expectedDate, q.Get("X-Amz-Date")) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestSignEmptyBody(t *testing.T) { |  | ||||||
| 	signer := buildSigner("dynamodb", "us-east-1", time.Now(), 0, "") |  | ||||||
| 	signer.Body = nil |  | ||||||
| 	signer.sign() |  | ||||||
| 	hash := signer.Request.Header.Get("X-Amz-Content-Sha256") |  | ||||||
| 	assert.Equal(t, "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", hash) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestSignBody(t *testing.T) { |  | ||||||
| 	signer := buildSigner("dynamodb", "us-east-1", time.Now(), 0, "hello") |  | ||||||
| 	signer.sign() |  | ||||||
| 	hash := signer.Request.Header.Get("X-Amz-Content-Sha256") |  | ||||||
| 	assert.Equal(t, "2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824", hash) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestSignSeekedBody(t *testing.T) { |  | ||||||
| 	signer := buildSigner("dynamodb", "us-east-1", time.Now(), 0, "   hello") |  | ||||||
| 	signer.Body.Read(make([]byte, 3)) // consume first 3 bytes so body is now "hello" |  | ||||||
| 	signer.sign() |  | ||||||
| 	hash := signer.Request.Header.Get("X-Amz-Content-Sha256") |  | ||||||
| 	assert.Equal(t, "2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824", hash) |  | ||||||
|  |  | ||||||
| 	start, _ := signer.Body.Seek(0, 1) |  | ||||||
| 	assert.Equal(t, int64(3), start) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestPresignEmptyBodyS3(t *testing.T) { |  | ||||||
| 	signer := buildSigner("s3", "us-east-1", time.Now(), 5*time.Minute, "hello") |  | ||||||
| 	signer.sign() |  | ||||||
| 	hash := signer.Request.Header.Get("X-Amz-Content-Sha256") |  | ||||||
| 	assert.Equal(t, "UNSIGNED-PAYLOAD", hash) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestSignPrecomputedBodyChecksum(t *testing.T) { |  | ||||||
| 	signer := buildSigner("dynamodb", "us-east-1", time.Now(), 0, "hello") |  | ||||||
| 	signer.Request.Header.Set("X-Amz-Content-Sha256", "PRECOMPUTED") |  | ||||||
| 	signer.sign() |  | ||||||
| 	hash := signer.Request.Header.Get("X-Amz-Content-Sha256") |  | ||||||
| 	assert.Equal(t, "PRECOMPUTED", hash) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestAnonymousCredentials(t *testing.T) { |  | ||||||
| 	r := service.NewRequest( |  | ||||||
| 		service.NewService(&aws.Config{Credentials: credentials.AnonymousCredentials}), |  | ||||||
| 		&service.Operation{ |  | ||||||
| 			Name:       "BatchGetItem", |  | ||||||
| 			HTTPMethod: "POST", |  | ||||||
| 			HTTPPath:   "/", |  | ||||||
| 		}, |  | ||||||
| 		nil, |  | ||||||
| 		nil, |  | ||||||
| 	) |  | ||||||
| 	Sign(r) |  | ||||||
|  |  | ||||||
| 	urlQ := r.HTTPRequest.URL.Query() |  | ||||||
| 	assert.Empty(t, urlQ.Get("X-Amz-Signature")) |  | ||||||
| 	assert.Empty(t, urlQ.Get("X-Amz-Credential")) |  | ||||||
| 	assert.Empty(t, urlQ.Get("X-Amz-SignedHeaders")) |  | ||||||
| 	assert.Empty(t, urlQ.Get("X-Amz-Date")) |  | ||||||
|  |  | ||||||
| 	hQ := r.HTTPRequest.Header |  | ||||||
| 	assert.Empty(t, hQ.Get("Authorization")) |  | ||||||
| 	assert.Empty(t, hQ.Get("X-Amz-Date")) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestIgnoreResignRequestWithValidCreds(t *testing.T) { |  | ||||||
| 	r := service.NewRequest( |  | ||||||
| 		service.NewService(&aws.Config{ |  | ||||||
| 			Credentials: credentials.NewStaticCredentials("AKID", "SECRET", "SESSION"), |  | ||||||
| 			Region:      aws.String("us-west-2"), |  | ||||||
| 		}), |  | ||||||
| 		&service.Operation{ |  | ||||||
| 			Name:       "BatchGetItem", |  | ||||||
| 			HTTPMethod: "POST", |  | ||||||
| 			HTTPPath:   "/", |  | ||||||
| 		}, |  | ||||||
| 		nil, |  | ||||||
| 		nil, |  | ||||||
| 	) |  | ||||||
|  |  | ||||||
| 	Sign(r) |  | ||||||
| 	sig := r.HTTPRequest.Header.Get("Authorization") |  | ||||||
|  |  | ||||||
| 	Sign(r) |  | ||||||
| 	assert.Equal(t, sig, r.HTTPRequest.Header.Get("Authorization")) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestIgnorePreResignRequestWithValidCreds(t *testing.T) { |  | ||||||
| 	r := service.NewRequest( |  | ||||||
| 		service.NewService(&aws.Config{ |  | ||||||
| 			Credentials: credentials.NewStaticCredentials("AKID", "SECRET", "SESSION"), |  | ||||||
| 			Region:      aws.String("us-west-2"), |  | ||||||
| 		}), |  | ||||||
| 		&service.Operation{ |  | ||||||
| 			Name:       "BatchGetItem", |  | ||||||
| 			HTTPMethod: "POST", |  | ||||||
| 			HTTPPath:   "/", |  | ||||||
| 		}, |  | ||||||
| 		nil, |  | ||||||
| 		nil, |  | ||||||
| 	) |  | ||||||
| 	r.ExpireTime = time.Minute * 10 |  | ||||||
|  |  | ||||||
| 	Sign(r) |  | ||||||
| 	sig := r.HTTPRequest.Header.Get("X-Amz-Signature") |  | ||||||
|  |  | ||||||
| 	Sign(r) |  | ||||||
| 	assert.Equal(t, sig, r.HTTPRequest.Header.Get("X-Amz-Signature")) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestResignRequestExpiredCreds(t *testing.T) { |  | ||||||
| 	creds := credentials.NewStaticCredentials("AKID", "SECRET", "SESSION") |  | ||||||
| 	r := service.NewRequest( |  | ||||||
| 		service.NewService(&aws.Config{Credentials: creds}), |  | ||||||
| 		&service.Operation{ |  | ||||||
| 			Name:       "BatchGetItem", |  | ||||||
| 			HTTPMethod: "POST", |  | ||||||
| 			HTTPPath:   "/", |  | ||||||
| 		}, |  | ||||||
| 		nil, |  | ||||||
| 		nil, |  | ||||||
| 	) |  | ||||||
| 	Sign(r) |  | ||||||
| 	querySig := r.HTTPRequest.Header.Get("Authorization") |  | ||||||
|  |  | ||||||
| 	creds.Expire() |  | ||||||
|  |  | ||||||
| 	Sign(r) |  | ||||||
| 	assert.NotEqual(t, querySig, r.HTTPRequest.Header.Get("Authorization")) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestPreResignRequestExpiredCreds(t *testing.T) { |  | ||||||
| 	provider := &credentials.StaticProvider{credentials.Value{"AKID", "SECRET", "SESSION"}} |  | ||||||
| 	creds := credentials.NewCredentials(provider) |  | ||||||
| 	r := service.NewRequest( |  | ||||||
| 		service.NewService(&aws.Config{Credentials: creds}), |  | ||||||
| 		&service.Operation{ |  | ||||||
| 			Name:       "BatchGetItem", |  | ||||||
| 			HTTPMethod: "POST", |  | ||||||
| 			HTTPPath:   "/", |  | ||||||
| 		}, |  | ||||||
| 		nil, |  | ||||||
| 		nil, |  | ||||||
| 	) |  | ||||||
| 	r.ExpireTime = time.Minute * 10 |  | ||||||
|  |  | ||||||
| 	Sign(r) |  | ||||||
| 	querySig := r.HTTPRequest.URL.Query().Get("X-Amz-Signature") |  | ||||||
|  |  | ||||||
| 	creds.Expire() |  | ||||||
| 	r.Time = time.Now().Add(time.Hour * 48) |  | ||||||
|  |  | ||||||
| 	Sign(r) |  | ||||||
| 	assert.NotEqual(t, querySig, r.HTTPRequest.URL.Query().Get("X-Amz-Signature")) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func BenchmarkPresignRequest(b *testing.B) { |  | ||||||
| 	signer := buildSigner("dynamodb", "us-east-1", time.Now(), 300*time.Second, "{}") |  | ||||||
| 	for i := 0; i < b.N; i++ { |  | ||||||
| 		signer.sign() |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func BenchmarkSignRequest(b *testing.B) { |  | ||||||
| 	signer := buildSigner("dynamodb", "us-east-1", time.Now(), 0, "{}") |  | ||||||
| 	for i := 0; i < b.N; i++ { |  | ||||||
| 		signer.sign() |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
							
								
								
									
										1072
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/ec2/api.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1072
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/ec2/api.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										6
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/ec2/customizations.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/ec2/customizations.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -4,18 +4,18 @@ import ( | |||||||
| 	"time" | 	"time" | ||||||
|  |  | ||||||
| 	"github.com/aws/aws-sdk-go/aws/awsutil" | 	"github.com/aws/aws-sdk-go/aws/awsutil" | ||||||
| 	"github.com/aws/aws-sdk-go/aws/service" | 	"github.com/aws/aws-sdk-go/aws/request" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| func init() { | func init() { | ||||||
| 	initRequest = func(r *service.Request) { | 	initRequest = func(r *request.Request) { | ||||||
| 		if r.Operation.Name == opCopySnapshot { // fill the PresignedURL parameter | 		if r.Operation.Name == opCopySnapshot { // fill the PresignedURL parameter | ||||||
| 			r.Handlers.Build.PushFront(fillPresignedURL) | 			r.Handlers.Build.PushFront(fillPresignedURL) | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
| func fillPresignedURL(r *service.Request) { | func fillPresignedURL(r *request.Request) { | ||||||
| 	if !r.ParamsFilled() { | 	if !r.ParamsFilled() { | ||||||
| 		return | 		return | ||||||
| 	} | 	} | ||||||
|   | |||||||
							
								
								
									
										36
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/ec2/customizations_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										36
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/ec2/customizations_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,36 +0,0 @@ | |||||||
| package ec2_test |  | ||||||
|  |  | ||||||
| import ( |  | ||||||
| 	"io/ioutil" |  | ||||||
| 	"net/url" |  | ||||||
| 	"testing" |  | ||||||
|  |  | ||||||
| 	"github.com/aws/aws-sdk-go/aws" |  | ||||||
| 	"github.com/aws/aws-sdk-go/internal/test/unit" |  | ||||||
| 	"github.com/aws/aws-sdk-go/service/ec2" |  | ||||||
| 	"github.com/stretchr/testify/assert" |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| var _ = unit.Imported |  | ||||||
|  |  | ||||||
| func TestCopySnapshotPresignedURL(t *testing.T) { |  | ||||||
| 	svc := ec2.New(&aws.Config{Region: aws.String("us-west-2")}) |  | ||||||
|  |  | ||||||
| 	assert.NotPanics(t, func() { |  | ||||||
| 		// Doesn't panic on nil input |  | ||||||
| 		req, _ := svc.CopySnapshotRequest(nil) |  | ||||||
| 		req.Sign() |  | ||||||
| 	}) |  | ||||||
|  |  | ||||||
| 	req, _ := svc.CopySnapshotRequest(&ec2.CopySnapshotInput{ |  | ||||||
| 		SourceRegion:     aws.String("us-west-1"), |  | ||||||
| 		SourceSnapshotId: aws.String("snap-id"), |  | ||||||
| 	}) |  | ||||||
| 	req.Sign() |  | ||||||
|  |  | ||||||
| 	b, _ := ioutil.ReadAll(req.HTTPRequest.Body) |  | ||||||
| 	q, _ := url.ParseQuery(string(b)) |  | ||||||
| 	url, _ := url.QueryUnescape(q.Get("PresignedUrl")) |  | ||||||
| 	assert.Equal(t, "us-west-2", q.Get("DestinationRegion")) |  | ||||||
| 	assert.Regexp(t, `^https://ec2\.us-west-1\.amazon.+&DestinationRegion=us-west-2`, url) |  | ||||||
| } |  | ||||||
							
								
								
									
										366
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/ec2/ec2iface/interface.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										366
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/ec2/ec2iface/interface.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -4,753 +4,753 @@ | |||||||
| package ec2iface | package ec2iface | ||||||
|  |  | ||||||
| import ( | import ( | ||||||
| 	"github.com/aws/aws-sdk-go/aws/service" | 	"github.com/aws/aws-sdk-go/aws/request" | ||||||
| 	"github.com/aws/aws-sdk-go/service/ec2" | 	"github.com/aws/aws-sdk-go/service/ec2" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| // EC2API is the interface type for ec2.EC2. | // EC2API is the interface type for ec2.EC2. | ||||||
| type EC2API interface { | type EC2API interface { | ||||||
| 	AcceptVpcPeeringConnectionRequest(*ec2.AcceptVpcPeeringConnectionInput) (*service.Request, *ec2.AcceptVpcPeeringConnectionOutput) | 	AcceptVpcPeeringConnectionRequest(*ec2.AcceptVpcPeeringConnectionInput) (*request.Request, *ec2.AcceptVpcPeeringConnectionOutput) | ||||||
|  |  | ||||||
| 	AcceptVpcPeeringConnection(*ec2.AcceptVpcPeeringConnectionInput) (*ec2.AcceptVpcPeeringConnectionOutput, error) | 	AcceptVpcPeeringConnection(*ec2.AcceptVpcPeeringConnectionInput) (*ec2.AcceptVpcPeeringConnectionOutput, error) | ||||||
|  |  | ||||||
| 	AllocateAddressRequest(*ec2.AllocateAddressInput) (*service.Request, *ec2.AllocateAddressOutput) | 	AllocateAddressRequest(*ec2.AllocateAddressInput) (*request.Request, *ec2.AllocateAddressOutput) | ||||||
|  |  | ||||||
| 	AllocateAddress(*ec2.AllocateAddressInput) (*ec2.AllocateAddressOutput, error) | 	AllocateAddress(*ec2.AllocateAddressInput) (*ec2.AllocateAddressOutput, error) | ||||||
|  |  | ||||||
| 	AssignPrivateIpAddressesRequest(*ec2.AssignPrivateIpAddressesInput) (*service.Request, *ec2.AssignPrivateIpAddressesOutput) | 	AssignPrivateIpAddressesRequest(*ec2.AssignPrivateIpAddressesInput) (*request.Request, *ec2.AssignPrivateIpAddressesOutput) | ||||||
|  |  | ||||||
| 	AssignPrivateIpAddresses(*ec2.AssignPrivateIpAddressesInput) (*ec2.AssignPrivateIpAddressesOutput, error) | 	AssignPrivateIpAddresses(*ec2.AssignPrivateIpAddressesInput) (*ec2.AssignPrivateIpAddressesOutput, error) | ||||||
|  |  | ||||||
| 	AssociateAddressRequest(*ec2.AssociateAddressInput) (*service.Request, *ec2.AssociateAddressOutput) | 	AssociateAddressRequest(*ec2.AssociateAddressInput) (*request.Request, *ec2.AssociateAddressOutput) | ||||||
|  |  | ||||||
| 	AssociateAddress(*ec2.AssociateAddressInput) (*ec2.AssociateAddressOutput, error) | 	AssociateAddress(*ec2.AssociateAddressInput) (*ec2.AssociateAddressOutput, error) | ||||||
|  |  | ||||||
| 	AssociateDhcpOptionsRequest(*ec2.AssociateDhcpOptionsInput) (*service.Request, *ec2.AssociateDhcpOptionsOutput) | 	AssociateDhcpOptionsRequest(*ec2.AssociateDhcpOptionsInput) (*request.Request, *ec2.AssociateDhcpOptionsOutput) | ||||||
|  |  | ||||||
| 	AssociateDhcpOptions(*ec2.AssociateDhcpOptionsInput) (*ec2.AssociateDhcpOptionsOutput, error) | 	AssociateDhcpOptions(*ec2.AssociateDhcpOptionsInput) (*ec2.AssociateDhcpOptionsOutput, error) | ||||||
|  |  | ||||||
| 	AssociateRouteTableRequest(*ec2.AssociateRouteTableInput) (*service.Request, *ec2.AssociateRouteTableOutput) | 	AssociateRouteTableRequest(*ec2.AssociateRouteTableInput) (*request.Request, *ec2.AssociateRouteTableOutput) | ||||||
|  |  | ||||||
| 	AssociateRouteTable(*ec2.AssociateRouteTableInput) (*ec2.AssociateRouteTableOutput, error) | 	AssociateRouteTable(*ec2.AssociateRouteTableInput) (*ec2.AssociateRouteTableOutput, error) | ||||||
|  |  | ||||||
| 	AttachClassicLinkVpcRequest(*ec2.AttachClassicLinkVpcInput) (*service.Request, *ec2.AttachClassicLinkVpcOutput) | 	AttachClassicLinkVpcRequest(*ec2.AttachClassicLinkVpcInput) (*request.Request, *ec2.AttachClassicLinkVpcOutput) | ||||||
|  |  | ||||||
| 	AttachClassicLinkVpc(*ec2.AttachClassicLinkVpcInput) (*ec2.AttachClassicLinkVpcOutput, error) | 	AttachClassicLinkVpc(*ec2.AttachClassicLinkVpcInput) (*ec2.AttachClassicLinkVpcOutput, error) | ||||||
|  |  | ||||||
| 	AttachInternetGatewayRequest(*ec2.AttachInternetGatewayInput) (*service.Request, *ec2.AttachInternetGatewayOutput) | 	AttachInternetGatewayRequest(*ec2.AttachInternetGatewayInput) (*request.Request, *ec2.AttachInternetGatewayOutput) | ||||||
|  |  | ||||||
| 	AttachInternetGateway(*ec2.AttachInternetGatewayInput) (*ec2.AttachInternetGatewayOutput, error) | 	AttachInternetGateway(*ec2.AttachInternetGatewayInput) (*ec2.AttachInternetGatewayOutput, error) | ||||||
|  |  | ||||||
| 	AttachNetworkInterfaceRequest(*ec2.AttachNetworkInterfaceInput) (*service.Request, *ec2.AttachNetworkInterfaceOutput) | 	AttachNetworkInterfaceRequest(*ec2.AttachNetworkInterfaceInput) (*request.Request, *ec2.AttachNetworkInterfaceOutput) | ||||||
|  |  | ||||||
| 	AttachNetworkInterface(*ec2.AttachNetworkInterfaceInput) (*ec2.AttachNetworkInterfaceOutput, error) | 	AttachNetworkInterface(*ec2.AttachNetworkInterfaceInput) (*ec2.AttachNetworkInterfaceOutput, error) | ||||||
|  |  | ||||||
| 	AttachVolumeRequest(*ec2.AttachVolumeInput) (*service.Request, *ec2.VolumeAttachment) | 	AttachVolumeRequest(*ec2.AttachVolumeInput) (*request.Request, *ec2.VolumeAttachment) | ||||||
|  |  | ||||||
| 	AttachVolume(*ec2.AttachVolumeInput) (*ec2.VolumeAttachment, error) | 	AttachVolume(*ec2.AttachVolumeInput) (*ec2.VolumeAttachment, error) | ||||||
|  |  | ||||||
| 	AttachVpnGatewayRequest(*ec2.AttachVpnGatewayInput) (*service.Request, *ec2.AttachVpnGatewayOutput) | 	AttachVpnGatewayRequest(*ec2.AttachVpnGatewayInput) (*request.Request, *ec2.AttachVpnGatewayOutput) | ||||||
|  |  | ||||||
| 	AttachVpnGateway(*ec2.AttachVpnGatewayInput) (*ec2.AttachVpnGatewayOutput, error) | 	AttachVpnGateway(*ec2.AttachVpnGatewayInput) (*ec2.AttachVpnGatewayOutput, error) | ||||||
|  |  | ||||||
| 	AuthorizeSecurityGroupEgressRequest(*ec2.AuthorizeSecurityGroupEgressInput) (*service.Request, *ec2.AuthorizeSecurityGroupEgressOutput) | 	AuthorizeSecurityGroupEgressRequest(*ec2.AuthorizeSecurityGroupEgressInput) (*request.Request, *ec2.AuthorizeSecurityGroupEgressOutput) | ||||||
|  |  | ||||||
| 	AuthorizeSecurityGroupEgress(*ec2.AuthorizeSecurityGroupEgressInput) (*ec2.AuthorizeSecurityGroupEgressOutput, error) | 	AuthorizeSecurityGroupEgress(*ec2.AuthorizeSecurityGroupEgressInput) (*ec2.AuthorizeSecurityGroupEgressOutput, error) | ||||||
|  |  | ||||||
| 	AuthorizeSecurityGroupIngressRequest(*ec2.AuthorizeSecurityGroupIngressInput) (*service.Request, *ec2.AuthorizeSecurityGroupIngressOutput) | 	AuthorizeSecurityGroupIngressRequest(*ec2.AuthorizeSecurityGroupIngressInput) (*request.Request, *ec2.AuthorizeSecurityGroupIngressOutput) | ||||||
|  |  | ||||||
| 	AuthorizeSecurityGroupIngress(*ec2.AuthorizeSecurityGroupIngressInput) (*ec2.AuthorizeSecurityGroupIngressOutput, error) | 	AuthorizeSecurityGroupIngress(*ec2.AuthorizeSecurityGroupIngressInput) (*ec2.AuthorizeSecurityGroupIngressOutput, error) | ||||||
|  |  | ||||||
| 	BundleInstanceRequest(*ec2.BundleInstanceInput) (*service.Request, *ec2.BundleInstanceOutput) | 	BundleInstanceRequest(*ec2.BundleInstanceInput) (*request.Request, *ec2.BundleInstanceOutput) | ||||||
|  |  | ||||||
| 	BundleInstance(*ec2.BundleInstanceInput) (*ec2.BundleInstanceOutput, error) | 	BundleInstance(*ec2.BundleInstanceInput) (*ec2.BundleInstanceOutput, error) | ||||||
|  |  | ||||||
| 	CancelBundleTaskRequest(*ec2.CancelBundleTaskInput) (*service.Request, *ec2.CancelBundleTaskOutput) | 	CancelBundleTaskRequest(*ec2.CancelBundleTaskInput) (*request.Request, *ec2.CancelBundleTaskOutput) | ||||||
|  |  | ||||||
| 	CancelBundleTask(*ec2.CancelBundleTaskInput) (*ec2.CancelBundleTaskOutput, error) | 	CancelBundleTask(*ec2.CancelBundleTaskInput) (*ec2.CancelBundleTaskOutput, error) | ||||||
|  |  | ||||||
| 	CancelConversionTaskRequest(*ec2.CancelConversionTaskInput) (*service.Request, *ec2.CancelConversionTaskOutput) | 	CancelConversionTaskRequest(*ec2.CancelConversionTaskInput) (*request.Request, *ec2.CancelConversionTaskOutput) | ||||||
|  |  | ||||||
| 	CancelConversionTask(*ec2.CancelConversionTaskInput) (*ec2.CancelConversionTaskOutput, error) | 	CancelConversionTask(*ec2.CancelConversionTaskInput) (*ec2.CancelConversionTaskOutput, error) | ||||||
|  |  | ||||||
| 	CancelExportTaskRequest(*ec2.CancelExportTaskInput) (*service.Request, *ec2.CancelExportTaskOutput) | 	CancelExportTaskRequest(*ec2.CancelExportTaskInput) (*request.Request, *ec2.CancelExportTaskOutput) | ||||||
|  |  | ||||||
| 	CancelExportTask(*ec2.CancelExportTaskInput) (*ec2.CancelExportTaskOutput, error) | 	CancelExportTask(*ec2.CancelExportTaskInput) (*ec2.CancelExportTaskOutput, error) | ||||||
|  |  | ||||||
| 	CancelImportTaskRequest(*ec2.CancelImportTaskInput) (*service.Request, *ec2.CancelImportTaskOutput) | 	CancelImportTaskRequest(*ec2.CancelImportTaskInput) (*request.Request, *ec2.CancelImportTaskOutput) | ||||||
|  |  | ||||||
| 	CancelImportTask(*ec2.CancelImportTaskInput) (*ec2.CancelImportTaskOutput, error) | 	CancelImportTask(*ec2.CancelImportTaskInput) (*ec2.CancelImportTaskOutput, error) | ||||||
|  |  | ||||||
| 	CancelReservedInstancesListingRequest(*ec2.CancelReservedInstancesListingInput) (*service.Request, *ec2.CancelReservedInstancesListingOutput) | 	CancelReservedInstancesListingRequest(*ec2.CancelReservedInstancesListingInput) (*request.Request, *ec2.CancelReservedInstancesListingOutput) | ||||||
|  |  | ||||||
| 	CancelReservedInstancesListing(*ec2.CancelReservedInstancesListingInput) (*ec2.CancelReservedInstancesListingOutput, error) | 	CancelReservedInstancesListing(*ec2.CancelReservedInstancesListingInput) (*ec2.CancelReservedInstancesListingOutput, error) | ||||||
|  |  | ||||||
| 	CancelSpotFleetRequestsRequest(*ec2.CancelSpotFleetRequestsInput) (*service.Request, *ec2.CancelSpotFleetRequestsOutput) | 	CancelSpotFleetRequestsRequest(*ec2.CancelSpotFleetRequestsInput) (*request.Request, *ec2.CancelSpotFleetRequestsOutput) | ||||||
|  |  | ||||||
| 	CancelSpotFleetRequests(*ec2.CancelSpotFleetRequestsInput) (*ec2.CancelSpotFleetRequestsOutput, error) | 	CancelSpotFleetRequests(*ec2.CancelSpotFleetRequestsInput) (*ec2.CancelSpotFleetRequestsOutput, error) | ||||||
|  |  | ||||||
| 	CancelSpotInstanceRequestsRequest(*ec2.CancelSpotInstanceRequestsInput) (*service.Request, *ec2.CancelSpotInstanceRequestsOutput) | 	CancelSpotInstanceRequestsRequest(*ec2.CancelSpotInstanceRequestsInput) (*request.Request, *ec2.CancelSpotInstanceRequestsOutput) | ||||||
|  |  | ||||||
| 	CancelSpotInstanceRequests(*ec2.CancelSpotInstanceRequestsInput) (*ec2.CancelSpotInstanceRequestsOutput, error) | 	CancelSpotInstanceRequests(*ec2.CancelSpotInstanceRequestsInput) (*ec2.CancelSpotInstanceRequestsOutput, error) | ||||||
|  |  | ||||||
| 	ConfirmProductInstanceRequest(*ec2.ConfirmProductInstanceInput) (*service.Request, *ec2.ConfirmProductInstanceOutput) | 	ConfirmProductInstanceRequest(*ec2.ConfirmProductInstanceInput) (*request.Request, *ec2.ConfirmProductInstanceOutput) | ||||||
|  |  | ||||||
| 	ConfirmProductInstance(*ec2.ConfirmProductInstanceInput) (*ec2.ConfirmProductInstanceOutput, error) | 	ConfirmProductInstance(*ec2.ConfirmProductInstanceInput) (*ec2.ConfirmProductInstanceOutput, error) | ||||||
|  |  | ||||||
| 	CopyImageRequest(*ec2.CopyImageInput) (*service.Request, *ec2.CopyImageOutput) | 	CopyImageRequest(*ec2.CopyImageInput) (*request.Request, *ec2.CopyImageOutput) | ||||||
|  |  | ||||||
| 	CopyImage(*ec2.CopyImageInput) (*ec2.CopyImageOutput, error) | 	CopyImage(*ec2.CopyImageInput) (*ec2.CopyImageOutput, error) | ||||||
|  |  | ||||||
| 	CopySnapshotRequest(*ec2.CopySnapshotInput) (*service.Request, *ec2.CopySnapshotOutput) | 	CopySnapshotRequest(*ec2.CopySnapshotInput) (*request.Request, *ec2.CopySnapshotOutput) | ||||||
|  |  | ||||||
| 	CopySnapshot(*ec2.CopySnapshotInput) (*ec2.CopySnapshotOutput, error) | 	CopySnapshot(*ec2.CopySnapshotInput) (*ec2.CopySnapshotOutput, error) | ||||||
|  |  | ||||||
| 	CreateCustomerGatewayRequest(*ec2.CreateCustomerGatewayInput) (*service.Request, *ec2.CreateCustomerGatewayOutput) | 	CreateCustomerGatewayRequest(*ec2.CreateCustomerGatewayInput) (*request.Request, *ec2.CreateCustomerGatewayOutput) | ||||||
|  |  | ||||||
| 	CreateCustomerGateway(*ec2.CreateCustomerGatewayInput) (*ec2.CreateCustomerGatewayOutput, error) | 	CreateCustomerGateway(*ec2.CreateCustomerGatewayInput) (*ec2.CreateCustomerGatewayOutput, error) | ||||||
|  |  | ||||||
| 	CreateDhcpOptionsRequest(*ec2.CreateDhcpOptionsInput) (*service.Request, *ec2.CreateDhcpOptionsOutput) | 	CreateDhcpOptionsRequest(*ec2.CreateDhcpOptionsInput) (*request.Request, *ec2.CreateDhcpOptionsOutput) | ||||||
|  |  | ||||||
| 	CreateDhcpOptions(*ec2.CreateDhcpOptionsInput) (*ec2.CreateDhcpOptionsOutput, error) | 	CreateDhcpOptions(*ec2.CreateDhcpOptionsInput) (*ec2.CreateDhcpOptionsOutput, error) | ||||||
|  |  | ||||||
| 	CreateFlowLogsRequest(*ec2.CreateFlowLogsInput) (*service.Request, *ec2.CreateFlowLogsOutput) | 	CreateFlowLogsRequest(*ec2.CreateFlowLogsInput) (*request.Request, *ec2.CreateFlowLogsOutput) | ||||||
|  |  | ||||||
| 	CreateFlowLogs(*ec2.CreateFlowLogsInput) (*ec2.CreateFlowLogsOutput, error) | 	CreateFlowLogs(*ec2.CreateFlowLogsInput) (*ec2.CreateFlowLogsOutput, error) | ||||||
|  |  | ||||||
| 	CreateImageRequest(*ec2.CreateImageInput) (*service.Request, *ec2.CreateImageOutput) | 	CreateImageRequest(*ec2.CreateImageInput) (*request.Request, *ec2.CreateImageOutput) | ||||||
|  |  | ||||||
| 	CreateImage(*ec2.CreateImageInput) (*ec2.CreateImageOutput, error) | 	CreateImage(*ec2.CreateImageInput) (*ec2.CreateImageOutput, error) | ||||||
|  |  | ||||||
| 	CreateInstanceExportTaskRequest(*ec2.CreateInstanceExportTaskInput) (*service.Request, *ec2.CreateInstanceExportTaskOutput) | 	CreateInstanceExportTaskRequest(*ec2.CreateInstanceExportTaskInput) (*request.Request, *ec2.CreateInstanceExportTaskOutput) | ||||||
|  |  | ||||||
| 	CreateInstanceExportTask(*ec2.CreateInstanceExportTaskInput) (*ec2.CreateInstanceExportTaskOutput, error) | 	CreateInstanceExportTask(*ec2.CreateInstanceExportTaskInput) (*ec2.CreateInstanceExportTaskOutput, error) | ||||||
|  |  | ||||||
| 	CreateInternetGatewayRequest(*ec2.CreateInternetGatewayInput) (*service.Request, *ec2.CreateInternetGatewayOutput) | 	CreateInternetGatewayRequest(*ec2.CreateInternetGatewayInput) (*request.Request, *ec2.CreateInternetGatewayOutput) | ||||||
|  |  | ||||||
| 	CreateInternetGateway(*ec2.CreateInternetGatewayInput) (*ec2.CreateInternetGatewayOutput, error) | 	CreateInternetGateway(*ec2.CreateInternetGatewayInput) (*ec2.CreateInternetGatewayOutput, error) | ||||||
|  |  | ||||||
| 	CreateKeyPairRequest(*ec2.CreateKeyPairInput) (*service.Request, *ec2.CreateKeyPairOutput) | 	CreateKeyPairRequest(*ec2.CreateKeyPairInput) (*request.Request, *ec2.CreateKeyPairOutput) | ||||||
|  |  | ||||||
| 	CreateKeyPair(*ec2.CreateKeyPairInput) (*ec2.CreateKeyPairOutput, error) | 	CreateKeyPair(*ec2.CreateKeyPairInput) (*ec2.CreateKeyPairOutput, error) | ||||||
|  |  | ||||||
| 	CreateNetworkAclRequest(*ec2.CreateNetworkAclInput) (*service.Request, *ec2.CreateNetworkAclOutput) | 	CreateNetworkAclRequest(*ec2.CreateNetworkAclInput) (*request.Request, *ec2.CreateNetworkAclOutput) | ||||||
|  |  | ||||||
| 	CreateNetworkAcl(*ec2.CreateNetworkAclInput) (*ec2.CreateNetworkAclOutput, error) | 	CreateNetworkAcl(*ec2.CreateNetworkAclInput) (*ec2.CreateNetworkAclOutput, error) | ||||||
|  |  | ||||||
| 	CreateNetworkAclEntryRequest(*ec2.CreateNetworkAclEntryInput) (*service.Request, *ec2.CreateNetworkAclEntryOutput) | 	CreateNetworkAclEntryRequest(*ec2.CreateNetworkAclEntryInput) (*request.Request, *ec2.CreateNetworkAclEntryOutput) | ||||||
|  |  | ||||||
| 	CreateNetworkAclEntry(*ec2.CreateNetworkAclEntryInput) (*ec2.CreateNetworkAclEntryOutput, error) | 	CreateNetworkAclEntry(*ec2.CreateNetworkAclEntryInput) (*ec2.CreateNetworkAclEntryOutput, error) | ||||||
|  |  | ||||||
| 	CreateNetworkInterfaceRequest(*ec2.CreateNetworkInterfaceInput) (*service.Request, *ec2.CreateNetworkInterfaceOutput) | 	CreateNetworkInterfaceRequest(*ec2.CreateNetworkInterfaceInput) (*request.Request, *ec2.CreateNetworkInterfaceOutput) | ||||||
|  |  | ||||||
| 	CreateNetworkInterface(*ec2.CreateNetworkInterfaceInput) (*ec2.CreateNetworkInterfaceOutput, error) | 	CreateNetworkInterface(*ec2.CreateNetworkInterfaceInput) (*ec2.CreateNetworkInterfaceOutput, error) | ||||||
|  |  | ||||||
| 	CreatePlacementGroupRequest(*ec2.CreatePlacementGroupInput) (*service.Request, *ec2.CreatePlacementGroupOutput) | 	CreatePlacementGroupRequest(*ec2.CreatePlacementGroupInput) (*request.Request, *ec2.CreatePlacementGroupOutput) | ||||||
|  |  | ||||||
| 	CreatePlacementGroup(*ec2.CreatePlacementGroupInput) (*ec2.CreatePlacementGroupOutput, error) | 	CreatePlacementGroup(*ec2.CreatePlacementGroupInput) (*ec2.CreatePlacementGroupOutput, error) | ||||||
|  |  | ||||||
| 	CreateReservedInstancesListingRequest(*ec2.CreateReservedInstancesListingInput) (*service.Request, *ec2.CreateReservedInstancesListingOutput) | 	CreateReservedInstancesListingRequest(*ec2.CreateReservedInstancesListingInput) (*request.Request, *ec2.CreateReservedInstancesListingOutput) | ||||||
|  |  | ||||||
| 	CreateReservedInstancesListing(*ec2.CreateReservedInstancesListingInput) (*ec2.CreateReservedInstancesListingOutput, error) | 	CreateReservedInstancesListing(*ec2.CreateReservedInstancesListingInput) (*ec2.CreateReservedInstancesListingOutput, error) | ||||||
|  |  | ||||||
| 	CreateRouteRequest(*ec2.CreateRouteInput) (*service.Request, *ec2.CreateRouteOutput) | 	CreateRouteRequest(*ec2.CreateRouteInput) (*request.Request, *ec2.CreateRouteOutput) | ||||||
|  |  | ||||||
| 	CreateRoute(*ec2.CreateRouteInput) (*ec2.CreateRouteOutput, error) | 	CreateRoute(*ec2.CreateRouteInput) (*ec2.CreateRouteOutput, error) | ||||||
|  |  | ||||||
| 	CreateRouteTableRequest(*ec2.CreateRouteTableInput) (*service.Request, *ec2.CreateRouteTableOutput) | 	CreateRouteTableRequest(*ec2.CreateRouteTableInput) (*request.Request, *ec2.CreateRouteTableOutput) | ||||||
|  |  | ||||||
| 	CreateRouteTable(*ec2.CreateRouteTableInput) (*ec2.CreateRouteTableOutput, error) | 	CreateRouteTable(*ec2.CreateRouteTableInput) (*ec2.CreateRouteTableOutput, error) | ||||||
|  |  | ||||||
| 	CreateSecurityGroupRequest(*ec2.CreateSecurityGroupInput) (*service.Request, *ec2.CreateSecurityGroupOutput) | 	CreateSecurityGroupRequest(*ec2.CreateSecurityGroupInput) (*request.Request, *ec2.CreateSecurityGroupOutput) | ||||||
|  |  | ||||||
| 	CreateSecurityGroup(*ec2.CreateSecurityGroupInput) (*ec2.CreateSecurityGroupOutput, error) | 	CreateSecurityGroup(*ec2.CreateSecurityGroupInput) (*ec2.CreateSecurityGroupOutput, error) | ||||||
|  |  | ||||||
| 	CreateSnapshotRequest(*ec2.CreateSnapshotInput) (*service.Request, *ec2.Snapshot) | 	CreateSnapshotRequest(*ec2.CreateSnapshotInput) (*request.Request, *ec2.Snapshot) | ||||||
|  |  | ||||||
| 	CreateSnapshot(*ec2.CreateSnapshotInput) (*ec2.Snapshot, error) | 	CreateSnapshot(*ec2.CreateSnapshotInput) (*ec2.Snapshot, error) | ||||||
|  |  | ||||||
| 	CreateSpotDatafeedSubscriptionRequest(*ec2.CreateSpotDatafeedSubscriptionInput) (*service.Request, *ec2.CreateSpotDatafeedSubscriptionOutput) | 	CreateSpotDatafeedSubscriptionRequest(*ec2.CreateSpotDatafeedSubscriptionInput) (*request.Request, *ec2.CreateSpotDatafeedSubscriptionOutput) | ||||||
|  |  | ||||||
| 	CreateSpotDatafeedSubscription(*ec2.CreateSpotDatafeedSubscriptionInput) (*ec2.CreateSpotDatafeedSubscriptionOutput, error) | 	CreateSpotDatafeedSubscription(*ec2.CreateSpotDatafeedSubscriptionInput) (*ec2.CreateSpotDatafeedSubscriptionOutput, error) | ||||||
|  |  | ||||||
| 	CreateSubnetRequest(*ec2.CreateSubnetInput) (*service.Request, *ec2.CreateSubnetOutput) | 	CreateSubnetRequest(*ec2.CreateSubnetInput) (*request.Request, *ec2.CreateSubnetOutput) | ||||||
|  |  | ||||||
| 	CreateSubnet(*ec2.CreateSubnetInput) (*ec2.CreateSubnetOutput, error) | 	CreateSubnet(*ec2.CreateSubnetInput) (*ec2.CreateSubnetOutput, error) | ||||||
|  |  | ||||||
| 	CreateTagsRequest(*ec2.CreateTagsInput) (*service.Request, *ec2.CreateTagsOutput) | 	CreateTagsRequest(*ec2.CreateTagsInput) (*request.Request, *ec2.CreateTagsOutput) | ||||||
|  |  | ||||||
| 	CreateTags(*ec2.CreateTagsInput) (*ec2.CreateTagsOutput, error) | 	CreateTags(*ec2.CreateTagsInput) (*ec2.CreateTagsOutput, error) | ||||||
|  |  | ||||||
| 	CreateVolumeRequest(*ec2.CreateVolumeInput) (*service.Request, *ec2.Volume) | 	CreateVolumeRequest(*ec2.CreateVolumeInput) (*request.Request, *ec2.Volume) | ||||||
|  |  | ||||||
| 	CreateVolume(*ec2.CreateVolumeInput) (*ec2.Volume, error) | 	CreateVolume(*ec2.CreateVolumeInput) (*ec2.Volume, error) | ||||||
|  |  | ||||||
| 	CreateVpcRequest(*ec2.CreateVpcInput) (*service.Request, *ec2.CreateVpcOutput) | 	CreateVpcRequest(*ec2.CreateVpcInput) (*request.Request, *ec2.CreateVpcOutput) | ||||||
|  |  | ||||||
| 	CreateVpc(*ec2.CreateVpcInput) (*ec2.CreateVpcOutput, error) | 	CreateVpc(*ec2.CreateVpcInput) (*ec2.CreateVpcOutput, error) | ||||||
|  |  | ||||||
| 	CreateVpcEndpointRequest(*ec2.CreateVpcEndpointInput) (*service.Request, *ec2.CreateVpcEndpointOutput) | 	CreateVpcEndpointRequest(*ec2.CreateVpcEndpointInput) (*request.Request, *ec2.CreateVpcEndpointOutput) | ||||||
|  |  | ||||||
| 	CreateVpcEndpoint(*ec2.CreateVpcEndpointInput) (*ec2.CreateVpcEndpointOutput, error) | 	CreateVpcEndpoint(*ec2.CreateVpcEndpointInput) (*ec2.CreateVpcEndpointOutput, error) | ||||||
|  |  | ||||||
| 	CreateVpcPeeringConnectionRequest(*ec2.CreateVpcPeeringConnectionInput) (*service.Request, *ec2.CreateVpcPeeringConnectionOutput) | 	CreateVpcPeeringConnectionRequest(*ec2.CreateVpcPeeringConnectionInput) (*request.Request, *ec2.CreateVpcPeeringConnectionOutput) | ||||||
|  |  | ||||||
| 	CreateVpcPeeringConnection(*ec2.CreateVpcPeeringConnectionInput) (*ec2.CreateVpcPeeringConnectionOutput, error) | 	CreateVpcPeeringConnection(*ec2.CreateVpcPeeringConnectionInput) (*ec2.CreateVpcPeeringConnectionOutput, error) | ||||||
|  |  | ||||||
| 	CreateVpnConnectionRequest(*ec2.CreateVpnConnectionInput) (*service.Request, *ec2.CreateVpnConnectionOutput) | 	CreateVpnConnectionRequest(*ec2.CreateVpnConnectionInput) (*request.Request, *ec2.CreateVpnConnectionOutput) | ||||||
|  |  | ||||||
| 	CreateVpnConnection(*ec2.CreateVpnConnectionInput) (*ec2.CreateVpnConnectionOutput, error) | 	CreateVpnConnection(*ec2.CreateVpnConnectionInput) (*ec2.CreateVpnConnectionOutput, error) | ||||||
|  |  | ||||||
| 	CreateVpnConnectionRouteRequest(*ec2.CreateVpnConnectionRouteInput) (*service.Request, *ec2.CreateVpnConnectionRouteOutput) | 	CreateVpnConnectionRouteRequest(*ec2.CreateVpnConnectionRouteInput) (*request.Request, *ec2.CreateVpnConnectionRouteOutput) | ||||||
|  |  | ||||||
| 	CreateVpnConnectionRoute(*ec2.CreateVpnConnectionRouteInput) (*ec2.CreateVpnConnectionRouteOutput, error) | 	CreateVpnConnectionRoute(*ec2.CreateVpnConnectionRouteInput) (*ec2.CreateVpnConnectionRouteOutput, error) | ||||||
|  |  | ||||||
| 	CreateVpnGatewayRequest(*ec2.CreateVpnGatewayInput) (*service.Request, *ec2.CreateVpnGatewayOutput) | 	CreateVpnGatewayRequest(*ec2.CreateVpnGatewayInput) (*request.Request, *ec2.CreateVpnGatewayOutput) | ||||||
|  |  | ||||||
| 	CreateVpnGateway(*ec2.CreateVpnGatewayInput) (*ec2.CreateVpnGatewayOutput, error) | 	CreateVpnGateway(*ec2.CreateVpnGatewayInput) (*ec2.CreateVpnGatewayOutput, error) | ||||||
|  |  | ||||||
| 	DeleteCustomerGatewayRequest(*ec2.DeleteCustomerGatewayInput) (*service.Request, *ec2.DeleteCustomerGatewayOutput) | 	DeleteCustomerGatewayRequest(*ec2.DeleteCustomerGatewayInput) (*request.Request, *ec2.DeleteCustomerGatewayOutput) | ||||||
|  |  | ||||||
| 	DeleteCustomerGateway(*ec2.DeleteCustomerGatewayInput) (*ec2.DeleteCustomerGatewayOutput, error) | 	DeleteCustomerGateway(*ec2.DeleteCustomerGatewayInput) (*ec2.DeleteCustomerGatewayOutput, error) | ||||||
|  |  | ||||||
| 	DeleteDhcpOptionsRequest(*ec2.DeleteDhcpOptionsInput) (*service.Request, *ec2.DeleteDhcpOptionsOutput) | 	DeleteDhcpOptionsRequest(*ec2.DeleteDhcpOptionsInput) (*request.Request, *ec2.DeleteDhcpOptionsOutput) | ||||||
|  |  | ||||||
| 	DeleteDhcpOptions(*ec2.DeleteDhcpOptionsInput) (*ec2.DeleteDhcpOptionsOutput, error) | 	DeleteDhcpOptions(*ec2.DeleteDhcpOptionsInput) (*ec2.DeleteDhcpOptionsOutput, error) | ||||||
|  |  | ||||||
| 	DeleteFlowLogsRequest(*ec2.DeleteFlowLogsInput) (*service.Request, *ec2.DeleteFlowLogsOutput) | 	DeleteFlowLogsRequest(*ec2.DeleteFlowLogsInput) (*request.Request, *ec2.DeleteFlowLogsOutput) | ||||||
|  |  | ||||||
| 	DeleteFlowLogs(*ec2.DeleteFlowLogsInput) (*ec2.DeleteFlowLogsOutput, error) | 	DeleteFlowLogs(*ec2.DeleteFlowLogsInput) (*ec2.DeleteFlowLogsOutput, error) | ||||||
|  |  | ||||||
| 	DeleteInternetGatewayRequest(*ec2.DeleteInternetGatewayInput) (*service.Request, *ec2.DeleteInternetGatewayOutput) | 	DeleteInternetGatewayRequest(*ec2.DeleteInternetGatewayInput) (*request.Request, *ec2.DeleteInternetGatewayOutput) | ||||||
|  |  | ||||||
| 	DeleteInternetGateway(*ec2.DeleteInternetGatewayInput) (*ec2.DeleteInternetGatewayOutput, error) | 	DeleteInternetGateway(*ec2.DeleteInternetGatewayInput) (*ec2.DeleteInternetGatewayOutput, error) | ||||||
|  |  | ||||||
| 	DeleteKeyPairRequest(*ec2.DeleteKeyPairInput) (*service.Request, *ec2.DeleteKeyPairOutput) | 	DeleteKeyPairRequest(*ec2.DeleteKeyPairInput) (*request.Request, *ec2.DeleteKeyPairOutput) | ||||||
|  |  | ||||||
| 	DeleteKeyPair(*ec2.DeleteKeyPairInput) (*ec2.DeleteKeyPairOutput, error) | 	DeleteKeyPair(*ec2.DeleteKeyPairInput) (*ec2.DeleteKeyPairOutput, error) | ||||||
|  |  | ||||||
| 	DeleteNetworkAclRequest(*ec2.DeleteNetworkAclInput) (*service.Request, *ec2.DeleteNetworkAclOutput) | 	DeleteNetworkAclRequest(*ec2.DeleteNetworkAclInput) (*request.Request, *ec2.DeleteNetworkAclOutput) | ||||||
|  |  | ||||||
| 	DeleteNetworkAcl(*ec2.DeleteNetworkAclInput) (*ec2.DeleteNetworkAclOutput, error) | 	DeleteNetworkAcl(*ec2.DeleteNetworkAclInput) (*ec2.DeleteNetworkAclOutput, error) | ||||||
|  |  | ||||||
| 	DeleteNetworkAclEntryRequest(*ec2.DeleteNetworkAclEntryInput) (*service.Request, *ec2.DeleteNetworkAclEntryOutput) | 	DeleteNetworkAclEntryRequest(*ec2.DeleteNetworkAclEntryInput) (*request.Request, *ec2.DeleteNetworkAclEntryOutput) | ||||||
|  |  | ||||||
| 	DeleteNetworkAclEntry(*ec2.DeleteNetworkAclEntryInput) (*ec2.DeleteNetworkAclEntryOutput, error) | 	DeleteNetworkAclEntry(*ec2.DeleteNetworkAclEntryInput) (*ec2.DeleteNetworkAclEntryOutput, error) | ||||||
|  |  | ||||||
| 	DeleteNetworkInterfaceRequest(*ec2.DeleteNetworkInterfaceInput) (*service.Request, *ec2.DeleteNetworkInterfaceOutput) | 	DeleteNetworkInterfaceRequest(*ec2.DeleteNetworkInterfaceInput) (*request.Request, *ec2.DeleteNetworkInterfaceOutput) | ||||||
|  |  | ||||||
| 	DeleteNetworkInterface(*ec2.DeleteNetworkInterfaceInput) (*ec2.DeleteNetworkInterfaceOutput, error) | 	DeleteNetworkInterface(*ec2.DeleteNetworkInterfaceInput) (*ec2.DeleteNetworkInterfaceOutput, error) | ||||||
|  |  | ||||||
| 	DeletePlacementGroupRequest(*ec2.DeletePlacementGroupInput) (*service.Request, *ec2.DeletePlacementGroupOutput) | 	DeletePlacementGroupRequest(*ec2.DeletePlacementGroupInput) (*request.Request, *ec2.DeletePlacementGroupOutput) | ||||||
|  |  | ||||||
| 	DeletePlacementGroup(*ec2.DeletePlacementGroupInput) (*ec2.DeletePlacementGroupOutput, error) | 	DeletePlacementGroup(*ec2.DeletePlacementGroupInput) (*ec2.DeletePlacementGroupOutput, error) | ||||||
|  |  | ||||||
| 	DeleteRouteRequest(*ec2.DeleteRouteInput) (*service.Request, *ec2.DeleteRouteOutput) | 	DeleteRouteRequest(*ec2.DeleteRouteInput) (*request.Request, *ec2.DeleteRouteOutput) | ||||||
|  |  | ||||||
| 	DeleteRoute(*ec2.DeleteRouteInput) (*ec2.DeleteRouteOutput, error) | 	DeleteRoute(*ec2.DeleteRouteInput) (*ec2.DeleteRouteOutput, error) | ||||||
|  |  | ||||||
| 	DeleteRouteTableRequest(*ec2.DeleteRouteTableInput) (*service.Request, *ec2.DeleteRouteTableOutput) | 	DeleteRouteTableRequest(*ec2.DeleteRouteTableInput) (*request.Request, *ec2.DeleteRouteTableOutput) | ||||||
|  |  | ||||||
| 	DeleteRouteTable(*ec2.DeleteRouteTableInput) (*ec2.DeleteRouteTableOutput, error) | 	DeleteRouteTable(*ec2.DeleteRouteTableInput) (*ec2.DeleteRouteTableOutput, error) | ||||||
|  |  | ||||||
| 	DeleteSecurityGroupRequest(*ec2.DeleteSecurityGroupInput) (*service.Request, *ec2.DeleteSecurityGroupOutput) | 	DeleteSecurityGroupRequest(*ec2.DeleteSecurityGroupInput) (*request.Request, *ec2.DeleteSecurityGroupOutput) | ||||||
|  |  | ||||||
| 	DeleteSecurityGroup(*ec2.DeleteSecurityGroupInput) (*ec2.DeleteSecurityGroupOutput, error) | 	DeleteSecurityGroup(*ec2.DeleteSecurityGroupInput) (*ec2.DeleteSecurityGroupOutput, error) | ||||||
|  |  | ||||||
| 	DeleteSnapshotRequest(*ec2.DeleteSnapshotInput) (*service.Request, *ec2.DeleteSnapshotOutput) | 	DeleteSnapshotRequest(*ec2.DeleteSnapshotInput) (*request.Request, *ec2.DeleteSnapshotOutput) | ||||||
|  |  | ||||||
| 	DeleteSnapshot(*ec2.DeleteSnapshotInput) (*ec2.DeleteSnapshotOutput, error) | 	DeleteSnapshot(*ec2.DeleteSnapshotInput) (*ec2.DeleteSnapshotOutput, error) | ||||||
|  |  | ||||||
| 	DeleteSpotDatafeedSubscriptionRequest(*ec2.DeleteSpotDatafeedSubscriptionInput) (*service.Request, *ec2.DeleteSpotDatafeedSubscriptionOutput) | 	DeleteSpotDatafeedSubscriptionRequest(*ec2.DeleteSpotDatafeedSubscriptionInput) (*request.Request, *ec2.DeleteSpotDatafeedSubscriptionOutput) | ||||||
|  |  | ||||||
| 	DeleteSpotDatafeedSubscription(*ec2.DeleteSpotDatafeedSubscriptionInput) (*ec2.DeleteSpotDatafeedSubscriptionOutput, error) | 	DeleteSpotDatafeedSubscription(*ec2.DeleteSpotDatafeedSubscriptionInput) (*ec2.DeleteSpotDatafeedSubscriptionOutput, error) | ||||||
|  |  | ||||||
| 	DeleteSubnetRequest(*ec2.DeleteSubnetInput) (*service.Request, *ec2.DeleteSubnetOutput) | 	DeleteSubnetRequest(*ec2.DeleteSubnetInput) (*request.Request, *ec2.DeleteSubnetOutput) | ||||||
|  |  | ||||||
| 	DeleteSubnet(*ec2.DeleteSubnetInput) (*ec2.DeleteSubnetOutput, error) | 	DeleteSubnet(*ec2.DeleteSubnetInput) (*ec2.DeleteSubnetOutput, error) | ||||||
|  |  | ||||||
| 	DeleteTagsRequest(*ec2.DeleteTagsInput) (*service.Request, *ec2.DeleteTagsOutput) | 	DeleteTagsRequest(*ec2.DeleteTagsInput) (*request.Request, *ec2.DeleteTagsOutput) | ||||||
|  |  | ||||||
| 	DeleteTags(*ec2.DeleteTagsInput) (*ec2.DeleteTagsOutput, error) | 	DeleteTags(*ec2.DeleteTagsInput) (*ec2.DeleteTagsOutput, error) | ||||||
|  |  | ||||||
| 	DeleteVolumeRequest(*ec2.DeleteVolumeInput) (*service.Request, *ec2.DeleteVolumeOutput) | 	DeleteVolumeRequest(*ec2.DeleteVolumeInput) (*request.Request, *ec2.DeleteVolumeOutput) | ||||||
|  |  | ||||||
| 	DeleteVolume(*ec2.DeleteVolumeInput) (*ec2.DeleteVolumeOutput, error) | 	DeleteVolume(*ec2.DeleteVolumeInput) (*ec2.DeleteVolumeOutput, error) | ||||||
|  |  | ||||||
| 	DeleteVpcRequest(*ec2.DeleteVpcInput) (*service.Request, *ec2.DeleteVpcOutput) | 	DeleteVpcRequest(*ec2.DeleteVpcInput) (*request.Request, *ec2.DeleteVpcOutput) | ||||||
|  |  | ||||||
| 	DeleteVpc(*ec2.DeleteVpcInput) (*ec2.DeleteVpcOutput, error) | 	DeleteVpc(*ec2.DeleteVpcInput) (*ec2.DeleteVpcOutput, error) | ||||||
|  |  | ||||||
| 	DeleteVpcEndpointsRequest(*ec2.DeleteVpcEndpointsInput) (*service.Request, *ec2.DeleteVpcEndpointsOutput) | 	DeleteVpcEndpointsRequest(*ec2.DeleteVpcEndpointsInput) (*request.Request, *ec2.DeleteVpcEndpointsOutput) | ||||||
|  |  | ||||||
| 	DeleteVpcEndpoints(*ec2.DeleteVpcEndpointsInput) (*ec2.DeleteVpcEndpointsOutput, error) | 	DeleteVpcEndpoints(*ec2.DeleteVpcEndpointsInput) (*ec2.DeleteVpcEndpointsOutput, error) | ||||||
|  |  | ||||||
| 	DeleteVpcPeeringConnectionRequest(*ec2.DeleteVpcPeeringConnectionInput) (*service.Request, *ec2.DeleteVpcPeeringConnectionOutput) | 	DeleteVpcPeeringConnectionRequest(*ec2.DeleteVpcPeeringConnectionInput) (*request.Request, *ec2.DeleteVpcPeeringConnectionOutput) | ||||||
|  |  | ||||||
| 	DeleteVpcPeeringConnection(*ec2.DeleteVpcPeeringConnectionInput) (*ec2.DeleteVpcPeeringConnectionOutput, error) | 	DeleteVpcPeeringConnection(*ec2.DeleteVpcPeeringConnectionInput) (*ec2.DeleteVpcPeeringConnectionOutput, error) | ||||||
|  |  | ||||||
| 	DeleteVpnConnectionRequest(*ec2.DeleteVpnConnectionInput) (*service.Request, *ec2.DeleteVpnConnectionOutput) | 	DeleteVpnConnectionRequest(*ec2.DeleteVpnConnectionInput) (*request.Request, *ec2.DeleteVpnConnectionOutput) | ||||||
|  |  | ||||||
| 	DeleteVpnConnection(*ec2.DeleteVpnConnectionInput) (*ec2.DeleteVpnConnectionOutput, error) | 	DeleteVpnConnection(*ec2.DeleteVpnConnectionInput) (*ec2.DeleteVpnConnectionOutput, error) | ||||||
|  |  | ||||||
| 	DeleteVpnConnectionRouteRequest(*ec2.DeleteVpnConnectionRouteInput) (*service.Request, *ec2.DeleteVpnConnectionRouteOutput) | 	DeleteVpnConnectionRouteRequest(*ec2.DeleteVpnConnectionRouteInput) (*request.Request, *ec2.DeleteVpnConnectionRouteOutput) | ||||||
|  |  | ||||||
| 	DeleteVpnConnectionRoute(*ec2.DeleteVpnConnectionRouteInput) (*ec2.DeleteVpnConnectionRouteOutput, error) | 	DeleteVpnConnectionRoute(*ec2.DeleteVpnConnectionRouteInput) (*ec2.DeleteVpnConnectionRouteOutput, error) | ||||||
|  |  | ||||||
| 	DeleteVpnGatewayRequest(*ec2.DeleteVpnGatewayInput) (*service.Request, *ec2.DeleteVpnGatewayOutput) | 	DeleteVpnGatewayRequest(*ec2.DeleteVpnGatewayInput) (*request.Request, *ec2.DeleteVpnGatewayOutput) | ||||||
|  |  | ||||||
| 	DeleteVpnGateway(*ec2.DeleteVpnGatewayInput) (*ec2.DeleteVpnGatewayOutput, error) | 	DeleteVpnGateway(*ec2.DeleteVpnGatewayInput) (*ec2.DeleteVpnGatewayOutput, error) | ||||||
|  |  | ||||||
| 	DeregisterImageRequest(*ec2.DeregisterImageInput) (*service.Request, *ec2.DeregisterImageOutput) | 	DeregisterImageRequest(*ec2.DeregisterImageInput) (*request.Request, *ec2.DeregisterImageOutput) | ||||||
|  |  | ||||||
| 	DeregisterImage(*ec2.DeregisterImageInput) (*ec2.DeregisterImageOutput, error) | 	DeregisterImage(*ec2.DeregisterImageInput) (*ec2.DeregisterImageOutput, error) | ||||||
|  |  | ||||||
| 	DescribeAccountAttributesRequest(*ec2.DescribeAccountAttributesInput) (*service.Request, *ec2.DescribeAccountAttributesOutput) | 	DescribeAccountAttributesRequest(*ec2.DescribeAccountAttributesInput) (*request.Request, *ec2.DescribeAccountAttributesOutput) | ||||||
|  |  | ||||||
| 	DescribeAccountAttributes(*ec2.DescribeAccountAttributesInput) (*ec2.DescribeAccountAttributesOutput, error) | 	DescribeAccountAttributes(*ec2.DescribeAccountAttributesInput) (*ec2.DescribeAccountAttributesOutput, error) | ||||||
|  |  | ||||||
| 	DescribeAddressesRequest(*ec2.DescribeAddressesInput) (*service.Request, *ec2.DescribeAddressesOutput) | 	DescribeAddressesRequest(*ec2.DescribeAddressesInput) (*request.Request, *ec2.DescribeAddressesOutput) | ||||||
|  |  | ||||||
| 	DescribeAddresses(*ec2.DescribeAddressesInput) (*ec2.DescribeAddressesOutput, error) | 	DescribeAddresses(*ec2.DescribeAddressesInput) (*ec2.DescribeAddressesOutput, error) | ||||||
|  |  | ||||||
| 	DescribeAvailabilityZonesRequest(*ec2.DescribeAvailabilityZonesInput) (*service.Request, *ec2.DescribeAvailabilityZonesOutput) | 	DescribeAvailabilityZonesRequest(*ec2.DescribeAvailabilityZonesInput) (*request.Request, *ec2.DescribeAvailabilityZonesOutput) | ||||||
|  |  | ||||||
| 	DescribeAvailabilityZones(*ec2.DescribeAvailabilityZonesInput) (*ec2.DescribeAvailabilityZonesOutput, error) | 	DescribeAvailabilityZones(*ec2.DescribeAvailabilityZonesInput) (*ec2.DescribeAvailabilityZonesOutput, error) | ||||||
|  |  | ||||||
| 	DescribeBundleTasksRequest(*ec2.DescribeBundleTasksInput) (*service.Request, *ec2.DescribeBundleTasksOutput) | 	DescribeBundleTasksRequest(*ec2.DescribeBundleTasksInput) (*request.Request, *ec2.DescribeBundleTasksOutput) | ||||||
|  |  | ||||||
| 	DescribeBundleTasks(*ec2.DescribeBundleTasksInput) (*ec2.DescribeBundleTasksOutput, error) | 	DescribeBundleTasks(*ec2.DescribeBundleTasksInput) (*ec2.DescribeBundleTasksOutput, error) | ||||||
|  |  | ||||||
| 	DescribeClassicLinkInstancesRequest(*ec2.DescribeClassicLinkInstancesInput) (*service.Request, *ec2.DescribeClassicLinkInstancesOutput) | 	DescribeClassicLinkInstancesRequest(*ec2.DescribeClassicLinkInstancesInput) (*request.Request, *ec2.DescribeClassicLinkInstancesOutput) | ||||||
|  |  | ||||||
| 	DescribeClassicLinkInstances(*ec2.DescribeClassicLinkInstancesInput) (*ec2.DescribeClassicLinkInstancesOutput, error) | 	DescribeClassicLinkInstances(*ec2.DescribeClassicLinkInstancesInput) (*ec2.DescribeClassicLinkInstancesOutput, error) | ||||||
|  |  | ||||||
| 	DescribeConversionTasksRequest(*ec2.DescribeConversionTasksInput) (*service.Request, *ec2.DescribeConversionTasksOutput) | 	DescribeConversionTasksRequest(*ec2.DescribeConversionTasksInput) (*request.Request, *ec2.DescribeConversionTasksOutput) | ||||||
|  |  | ||||||
| 	DescribeConversionTasks(*ec2.DescribeConversionTasksInput) (*ec2.DescribeConversionTasksOutput, error) | 	DescribeConversionTasks(*ec2.DescribeConversionTasksInput) (*ec2.DescribeConversionTasksOutput, error) | ||||||
|  |  | ||||||
| 	DescribeCustomerGatewaysRequest(*ec2.DescribeCustomerGatewaysInput) (*service.Request, *ec2.DescribeCustomerGatewaysOutput) | 	DescribeCustomerGatewaysRequest(*ec2.DescribeCustomerGatewaysInput) (*request.Request, *ec2.DescribeCustomerGatewaysOutput) | ||||||
|  |  | ||||||
| 	DescribeCustomerGateways(*ec2.DescribeCustomerGatewaysInput) (*ec2.DescribeCustomerGatewaysOutput, error) | 	DescribeCustomerGateways(*ec2.DescribeCustomerGatewaysInput) (*ec2.DescribeCustomerGatewaysOutput, error) | ||||||
|  |  | ||||||
| 	DescribeDhcpOptionsRequest(*ec2.DescribeDhcpOptionsInput) (*service.Request, *ec2.DescribeDhcpOptionsOutput) | 	DescribeDhcpOptionsRequest(*ec2.DescribeDhcpOptionsInput) (*request.Request, *ec2.DescribeDhcpOptionsOutput) | ||||||
|  |  | ||||||
| 	DescribeDhcpOptions(*ec2.DescribeDhcpOptionsInput) (*ec2.DescribeDhcpOptionsOutput, error) | 	DescribeDhcpOptions(*ec2.DescribeDhcpOptionsInput) (*ec2.DescribeDhcpOptionsOutput, error) | ||||||
|  |  | ||||||
| 	DescribeExportTasksRequest(*ec2.DescribeExportTasksInput) (*service.Request, *ec2.DescribeExportTasksOutput) | 	DescribeExportTasksRequest(*ec2.DescribeExportTasksInput) (*request.Request, *ec2.DescribeExportTasksOutput) | ||||||
|  |  | ||||||
| 	DescribeExportTasks(*ec2.DescribeExportTasksInput) (*ec2.DescribeExportTasksOutput, error) | 	DescribeExportTasks(*ec2.DescribeExportTasksInput) (*ec2.DescribeExportTasksOutput, error) | ||||||
|  |  | ||||||
| 	DescribeFlowLogsRequest(*ec2.DescribeFlowLogsInput) (*service.Request, *ec2.DescribeFlowLogsOutput) | 	DescribeFlowLogsRequest(*ec2.DescribeFlowLogsInput) (*request.Request, *ec2.DescribeFlowLogsOutput) | ||||||
|  |  | ||||||
| 	DescribeFlowLogs(*ec2.DescribeFlowLogsInput) (*ec2.DescribeFlowLogsOutput, error) | 	DescribeFlowLogs(*ec2.DescribeFlowLogsInput) (*ec2.DescribeFlowLogsOutput, error) | ||||||
|  |  | ||||||
| 	DescribeImageAttributeRequest(*ec2.DescribeImageAttributeInput) (*service.Request, *ec2.DescribeImageAttributeOutput) | 	DescribeImageAttributeRequest(*ec2.DescribeImageAttributeInput) (*request.Request, *ec2.DescribeImageAttributeOutput) | ||||||
|  |  | ||||||
| 	DescribeImageAttribute(*ec2.DescribeImageAttributeInput) (*ec2.DescribeImageAttributeOutput, error) | 	DescribeImageAttribute(*ec2.DescribeImageAttributeInput) (*ec2.DescribeImageAttributeOutput, error) | ||||||
|  |  | ||||||
| 	DescribeImagesRequest(*ec2.DescribeImagesInput) (*service.Request, *ec2.DescribeImagesOutput) | 	DescribeImagesRequest(*ec2.DescribeImagesInput) (*request.Request, *ec2.DescribeImagesOutput) | ||||||
|  |  | ||||||
| 	DescribeImages(*ec2.DescribeImagesInput) (*ec2.DescribeImagesOutput, error) | 	DescribeImages(*ec2.DescribeImagesInput) (*ec2.DescribeImagesOutput, error) | ||||||
|  |  | ||||||
| 	DescribeImportImageTasksRequest(*ec2.DescribeImportImageTasksInput) (*service.Request, *ec2.DescribeImportImageTasksOutput) | 	DescribeImportImageTasksRequest(*ec2.DescribeImportImageTasksInput) (*request.Request, *ec2.DescribeImportImageTasksOutput) | ||||||
|  |  | ||||||
| 	DescribeImportImageTasks(*ec2.DescribeImportImageTasksInput) (*ec2.DescribeImportImageTasksOutput, error) | 	DescribeImportImageTasks(*ec2.DescribeImportImageTasksInput) (*ec2.DescribeImportImageTasksOutput, error) | ||||||
|  |  | ||||||
| 	DescribeImportSnapshotTasksRequest(*ec2.DescribeImportSnapshotTasksInput) (*service.Request, *ec2.DescribeImportSnapshotTasksOutput) | 	DescribeImportSnapshotTasksRequest(*ec2.DescribeImportSnapshotTasksInput) (*request.Request, *ec2.DescribeImportSnapshotTasksOutput) | ||||||
|  |  | ||||||
| 	DescribeImportSnapshotTasks(*ec2.DescribeImportSnapshotTasksInput) (*ec2.DescribeImportSnapshotTasksOutput, error) | 	DescribeImportSnapshotTasks(*ec2.DescribeImportSnapshotTasksInput) (*ec2.DescribeImportSnapshotTasksOutput, error) | ||||||
|  |  | ||||||
| 	DescribeInstanceAttributeRequest(*ec2.DescribeInstanceAttributeInput) (*service.Request, *ec2.DescribeInstanceAttributeOutput) | 	DescribeInstanceAttributeRequest(*ec2.DescribeInstanceAttributeInput) (*request.Request, *ec2.DescribeInstanceAttributeOutput) | ||||||
|  |  | ||||||
| 	DescribeInstanceAttribute(*ec2.DescribeInstanceAttributeInput) (*ec2.DescribeInstanceAttributeOutput, error) | 	DescribeInstanceAttribute(*ec2.DescribeInstanceAttributeInput) (*ec2.DescribeInstanceAttributeOutput, error) | ||||||
|  |  | ||||||
| 	DescribeInstanceStatusRequest(*ec2.DescribeInstanceStatusInput) (*service.Request, *ec2.DescribeInstanceStatusOutput) | 	DescribeInstanceStatusRequest(*ec2.DescribeInstanceStatusInput) (*request.Request, *ec2.DescribeInstanceStatusOutput) | ||||||
|  |  | ||||||
| 	DescribeInstanceStatus(*ec2.DescribeInstanceStatusInput) (*ec2.DescribeInstanceStatusOutput, error) | 	DescribeInstanceStatus(*ec2.DescribeInstanceStatusInput) (*ec2.DescribeInstanceStatusOutput, error) | ||||||
|  |  | ||||||
| 	DescribeInstanceStatusPages(*ec2.DescribeInstanceStatusInput, func(*ec2.DescribeInstanceStatusOutput, bool) bool) error | 	DescribeInstanceStatusPages(*ec2.DescribeInstanceStatusInput, func(*ec2.DescribeInstanceStatusOutput, bool) bool) error | ||||||
|  |  | ||||||
| 	DescribeInstancesRequest(*ec2.DescribeInstancesInput) (*service.Request, *ec2.DescribeInstancesOutput) | 	DescribeInstancesRequest(*ec2.DescribeInstancesInput) (*request.Request, *ec2.DescribeInstancesOutput) | ||||||
|  |  | ||||||
| 	DescribeInstances(*ec2.DescribeInstancesInput) (*ec2.DescribeInstancesOutput, error) | 	DescribeInstances(*ec2.DescribeInstancesInput) (*ec2.DescribeInstancesOutput, error) | ||||||
|  |  | ||||||
| 	DescribeInstancesPages(*ec2.DescribeInstancesInput, func(*ec2.DescribeInstancesOutput, bool) bool) error | 	DescribeInstancesPages(*ec2.DescribeInstancesInput, func(*ec2.DescribeInstancesOutput, bool) bool) error | ||||||
|  |  | ||||||
| 	DescribeInternetGatewaysRequest(*ec2.DescribeInternetGatewaysInput) (*service.Request, *ec2.DescribeInternetGatewaysOutput) | 	DescribeInternetGatewaysRequest(*ec2.DescribeInternetGatewaysInput) (*request.Request, *ec2.DescribeInternetGatewaysOutput) | ||||||
|  |  | ||||||
| 	DescribeInternetGateways(*ec2.DescribeInternetGatewaysInput) (*ec2.DescribeInternetGatewaysOutput, error) | 	DescribeInternetGateways(*ec2.DescribeInternetGatewaysInput) (*ec2.DescribeInternetGatewaysOutput, error) | ||||||
|  |  | ||||||
| 	DescribeKeyPairsRequest(*ec2.DescribeKeyPairsInput) (*service.Request, *ec2.DescribeKeyPairsOutput) | 	DescribeKeyPairsRequest(*ec2.DescribeKeyPairsInput) (*request.Request, *ec2.DescribeKeyPairsOutput) | ||||||
|  |  | ||||||
| 	DescribeKeyPairs(*ec2.DescribeKeyPairsInput) (*ec2.DescribeKeyPairsOutput, error) | 	DescribeKeyPairs(*ec2.DescribeKeyPairsInput) (*ec2.DescribeKeyPairsOutput, error) | ||||||
|  |  | ||||||
| 	DescribeMovingAddressesRequest(*ec2.DescribeMovingAddressesInput) (*service.Request, *ec2.DescribeMovingAddressesOutput) | 	DescribeMovingAddressesRequest(*ec2.DescribeMovingAddressesInput) (*request.Request, *ec2.DescribeMovingAddressesOutput) | ||||||
|  |  | ||||||
| 	DescribeMovingAddresses(*ec2.DescribeMovingAddressesInput) (*ec2.DescribeMovingAddressesOutput, error) | 	DescribeMovingAddresses(*ec2.DescribeMovingAddressesInput) (*ec2.DescribeMovingAddressesOutput, error) | ||||||
|  |  | ||||||
| 	DescribeNetworkAclsRequest(*ec2.DescribeNetworkAclsInput) (*service.Request, *ec2.DescribeNetworkAclsOutput) | 	DescribeNetworkAclsRequest(*ec2.DescribeNetworkAclsInput) (*request.Request, *ec2.DescribeNetworkAclsOutput) | ||||||
|  |  | ||||||
| 	DescribeNetworkAcls(*ec2.DescribeNetworkAclsInput) (*ec2.DescribeNetworkAclsOutput, error) | 	DescribeNetworkAcls(*ec2.DescribeNetworkAclsInput) (*ec2.DescribeNetworkAclsOutput, error) | ||||||
|  |  | ||||||
| 	DescribeNetworkInterfaceAttributeRequest(*ec2.DescribeNetworkInterfaceAttributeInput) (*service.Request, *ec2.DescribeNetworkInterfaceAttributeOutput) | 	DescribeNetworkInterfaceAttributeRequest(*ec2.DescribeNetworkInterfaceAttributeInput) (*request.Request, *ec2.DescribeNetworkInterfaceAttributeOutput) | ||||||
|  |  | ||||||
| 	DescribeNetworkInterfaceAttribute(*ec2.DescribeNetworkInterfaceAttributeInput) (*ec2.DescribeNetworkInterfaceAttributeOutput, error) | 	DescribeNetworkInterfaceAttribute(*ec2.DescribeNetworkInterfaceAttributeInput) (*ec2.DescribeNetworkInterfaceAttributeOutput, error) | ||||||
|  |  | ||||||
| 	DescribeNetworkInterfacesRequest(*ec2.DescribeNetworkInterfacesInput) (*service.Request, *ec2.DescribeNetworkInterfacesOutput) | 	DescribeNetworkInterfacesRequest(*ec2.DescribeNetworkInterfacesInput) (*request.Request, *ec2.DescribeNetworkInterfacesOutput) | ||||||
|  |  | ||||||
| 	DescribeNetworkInterfaces(*ec2.DescribeNetworkInterfacesInput) (*ec2.DescribeNetworkInterfacesOutput, error) | 	DescribeNetworkInterfaces(*ec2.DescribeNetworkInterfacesInput) (*ec2.DescribeNetworkInterfacesOutput, error) | ||||||
|  |  | ||||||
| 	DescribePlacementGroupsRequest(*ec2.DescribePlacementGroupsInput) (*service.Request, *ec2.DescribePlacementGroupsOutput) | 	DescribePlacementGroupsRequest(*ec2.DescribePlacementGroupsInput) (*request.Request, *ec2.DescribePlacementGroupsOutput) | ||||||
|  |  | ||||||
| 	DescribePlacementGroups(*ec2.DescribePlacementGroupsInput) (*ec2.DescribePlacementGroupsOutput, error) | 	DescribePlacementGroups(*ec2.DescribePlacementGroupsInput) (*ec2.DescribePlacementGroupsOutput, error) | ||||||
|  |  | ||||||
| 	DescribePrefixListsRequest(*ec2.DescribePrefixListsInput) (*service.Request, *ec2.DescribePrefixListsOutput) | 	DescribePrefixListsRequest(*ec2.DescribePrefixListsInput) (*request.Request, *ec2.DescribePrefixListsOutput) | ||||||
|  |  | ||||||
| 	DescribePrefixLists(*ec2.DescribePrefixListsInput) (*ec2.DescribePrefixListsOutput, error) | 	DescribePrefixLists(*ec2.DescribePrefixListsInput) (*ec2.DescribePrefixListsOutput, error) | ||||||
|  |  | ||||||
| 	DescribeRegionsRequest(*ec2.DescribeRegionsInput) (*service.Request, *ec2.DescribeRegionsOutput) | 	DescribeRegionsRequest(*ec2.DescribeRegionsInput) (*request.Request, *ec2.DescribeRegionsOutput) | ||||||
|  |  | ||||||
| 	DescribeRegions(*ec2.DescribeRegionsInput) (*ec2.DescribeRegionsOutput, error) | 	DescribeRegions(*ec2.DescribeRegionsInput) (*ec2.DescribeRegionsOutput, error) | ||||||
|  |  | ||||||
| 	DescribeReservedInstancesRequest(*ec2.DescribeReservedInstancesInput) (*service.Request, *ec2.DescribeReservedInstancesOutput) | 	DescribeReservedInstancesRequest(*ec2.DescribeReservedInstancesInput) (*request.Request, *ec2.DescribeReservedInstancesOutput) | ||||||
|  |  | ||||||
| 	DescribeReservedInstances(*ec2.DescribeReservedInstancesInput) (*ec2.DescribeReservedInstancesOutput, error) | 	DescribeReservedInstances(*ec2.DescribeReservedInstancesInput) (*ec2.DescribeReservedInstancesOutput, error) | ||||||
|  |  | ||||||
| 	DescribeReservedInstancesListingsRequest(*ec2.DescribeReservedInstancesListingsInput) (*service.Request, *ec2.DescribeReservedInstancesListingsOutput) | 	DescribeReservedInstancesListingsRequest(*ec2.DescribeReservedInstancesListingsInput) (*request.Request, *ec2.DescribeReservedInstancesListingsOutput) | ||||||
|  |  | ||||||
| 	DescribeReservedInstancesListings(*ec2.DescribeReservedInstancesListingsInput) (*ec2.DescribeReservedInstancesListingsOutput, error) | 	DescribeReservedInstancesListings(*ec2.DescribeReservedInstancesListingsInput) (*ec2.DescribeReservedInstancesListingsOutput, error) | ||||||
|  |  | ||||||
| 	DescribeReservedInstancesModificationsRequest(*ec2.DescribeReservedInstancesModificationsInput) (*service.Request, *ec2.DescribeReservedInstancesModificationsOutput) | 	DescribeReservedInstancesModificationsRequest(*ec2.DescribeReservedInstancesModificationsInput) (*request.Request, *ec2.DescribeReservedInstancesModificationsOutput) | ||||||
|  |  | ||||||
| 	DescribeReservedInstancesModifications(*ec2.DescribeReservedInstancesModificationsInput) (*ec2.DescribeReservedInstancesModificationsOutput, error) | 	DescribeReservedInstancesModifications(*ec2.DescribeReservedInstancesModificationsInput) (*ec2.DescribeReservedInstancesModificationsOutput, error) | ||||||
|  |  | ||||||
| 	DescribeReservedInstancesModificationsPages(*ec2.DescribeReservedInstancesModificationsInput, func(*ec2.DescribeReservedInstancesModificationsOutput, bool) bool) error | 	DescribeReservedInstancesModificationsPages(*ec2.DescribeReservedInstancesModificationsInput, func(*ec2.DescribeReservedInstancesModificationsOutput, bool) bool) error | ||||||
|  |  | ||||||
| 	DescribeReservedInstancesOfferingsRequest(*ec2.DescribeReservedInstancesOfferingsInput) (*service.Request, *ec2.DescribeReservedInstancesOfferingsOutput) | 	DescribeReservedInstancesOfferingsRequest(*ec2.DescribeReservedInstancesOfferingsInput) (*request.Request, *ec2.DescribeReservedInstancesOfferingsOutput) | ||||||
|  |  | ||||||
| 	DescribeReservedInstancesOfferings(*ec2.DescribeReservedInstancesOfferingsInput) (*ec2.DescribeReservedInstancesOfferingsOutput, error) | 	DescribeReservedInstancesOfferings(*ec2.DescribeReservedInstancesOfferingsInput) (*ec2.DescribeReservedInstancesOfferingsOutput, error) | ||||||
|  |  | ||||||
| 	DescribeReservedInstancesOfferingsPages(*ec2.DescribeReservedInstancesOfferingsInput, func(*ec2.DescribeReservedInstancesOfferingsOutput, bool) bool) error | 	DescribeReservedInstancesOfferingsPages(*ec2.DescribeReservedInstancesOfferingsInput, func(*ec2.DescribeReservedInstancesOfferingsOutput, bool) bool) error | ||||||
|  |  | ||||||
| 	DescribeRouteTablesRequest(*ec2.DescribeRouteTablesInput) (*service.Request, *ec2.DescribeRouteTablesOutput) | 	DescribeRouteTablesRequest(*ec2.DescribeRouteTablesInput) (*request.Request, *ec2.DescribeRouteTablesOutput) | ||||||
|  |  | ||||||
| 	DescribeRouteTables(*ec2.DescribeRouteTablesInput) (*ec2.DescribeRouteTablesOutput, error) | 	DescribeRouteTables(*ec2.DescribeRouteTablesInput) (*ec2.DescribeRouteTablesOutput, error) | ||||||
|  |  | ||||||
| 	DescribeSecurityGroupsRequest(*ec2.DescribeSecurityGroupsInput) (*service.Request, *ec2.DescribeSecurityGroupsOutput) | 	DescribeSecurityGroupsRequest(*ec2.DescribeSecurityGroupsInput) (*request.Request, *ec2.DescribeSecurityGroupsOutput) | ||||||
|  |  | ||||||
| 	DescribeSecurityGroups(*ec2.DescribeSecurityGroupsInput) (*ec2.DescribeSecurityGroupsOutput, error) | 	DescribeSecurityGroups(*ec2.DescribeSecurityGroupsInput) (*ec2.DescribeSecurityGroupsOutput, error) | ||||||
|  |  | ||||||
| 	DescribeSnapshotAttributeRequest(*ec2.DescribeSnapshotAttributeInput) (*service.Request, *ec2.DescribeSnapshotAttributeOutput) | 	DescribeSnapshotAttributeRequest(*ec2.DescribeSnapshotAttributeInput) (*request.Request, *ec2.DescribeSnapshotAttributeOutput) | ||||||
|  |  | ||||||
| 	DescribeSnapshotAttribute(*ec2.DescribeSnapshotAttributeInput) (*ec2.DescribeSnapshotAttributeOutput, error) | 	DescribeSnapshotAttribute(*ec2.DescribeSnapshotAttributeInput) (*ec2.DescribeSnapshotAttributeOutput, error) | ||||||
|  |  | ||||||
| 	DescribeSnapshotsRequest(*ec2.DescribeSnapshotsInput) (*service.Request, *ec2.DescribeSnapshotsOutput) | 	DescribeSnapshotsRequest(*ec2.DescribeSnapshotsInput) (*request.Request, *ec2.DescribeSnapshotsOutput) | ||||||
|  |  | ||||||
| 	DescribeSnapshots(*ec2.DescribeSnapshotsInput) (*ec2.DescribeSnapshotsOutput, error) | 	DescribeSnapshots(*ec2.DescribeSnapshotsInput) (*ec2.DescribeSnapshotsOutput, error) | ||||||
|  |  | ||||||
| 	DescribeSnapshotsPages(*ec2.DescribeSnapshotsInput, func(*ec2.DescribeSnapshotsOutput, bool) bool) error | 	DescribeSnapshotsPages(*ec2.DescribeSnapshotsInput, func(*ec2.DescribeSnapshotsOutput, bool) bool) error | ||||||
|  |  | ||||||
| 	DescribeSpotDatafeedSubscriptionRequest(*ec2.DescribeSpotDatafeedSubscriptionInput) (*service.Request, *ec2.DescribeSpotDatafeedSubscriptionOutput) | 	DescribeSpotDatafeedSubscriptionRequest(*ec2.DescribeSpotDatafeedSubscriptionInput) (*request.Request, *ec2.DescribeSpotDatafeedSubscriptionOutput) | ||||||
|  |  | ||||||
| 	DescribeSpotDatafeedSubscription(*ec2.DescribeSpotDatafeedSubscriptionInput) (*ec2.DescribeSpotDatafeedSubscriptionOutput, error) | 	DescribeSpotDatafeedSubscription(*ec2.DescribeSpotDatafeedSubscriptionInput) (*ec2.DescribeSpotDatafeedSubscriptionOutput, error) | ||||||
|  |  | ||||||
| 	DescribeSpotFleetInstancesRequest(*ec2.DescribeSpotFleetInstancesInput) (*service.Request, *ec2.DescribeSpotFleetInstancesOutput) | 	DescribeSpotFleetInstancesRequest(*ec2.DescribeSpotFleetInstancesInput) (*request.Request, *ec2.DescribeSpotFleetInstancesOutput) | ||||||
|  |  | ||||||
| 	DescribeSpotFleetInstances(*ec2.DescribeSpotFleetInstancesInput) (*ec2.DescribeSpotFleetInstancesOutput, error) | 	DescribeSpotFleetInstances(*ec2.DescribeSpotFleetInstancesInput) (*ec2.DescribeSpotFleetInstancesOutput, error) | ||||||
|  |  | ||||||
| 	DescribeSpotFleetRequestHistoryRequest(*ec2.DescribeSpotFleetRequestHistoryInput) (*service.Request, *ec2.DescribeSpotFleetRequestHistoryOutput) | 	DescribeSpotFleetRequestHistoryRequest(*ec2.DescribeSpotFleetRequestHistoryInput) (*request.Request, *ec2.DescribeSpotFleetRequestHistoryOutput) | ||||||
|  |  | ||||||
| 	DescribeSpotFleetRequestHistory(*ec2.DescribeSpotFleetRequestHistoryInput) (*ec2.DescribeSpotFleetRequestHistoryOutput, error) | 	DescribeSpotFleetRequestHistory(*ec2.DescribeSpotFleetRequestHistoryInput) (*ec2.DescribeSpotFleetRequestHistoryOutput, error) | ||||||
|  |  | ||||||
| 	DescribeSpotFleetRequestsRequest(*ec2.DescribeSpotFleetRequestsInput) (*service.Request, *ec2.DescribeSpotFleetRequestsOutput) | 	DescribeSpotFleetRequestsRequest(*ec2.DescribeSpotFleetRequestsInput) (*request.Request, *ec2.DescribeSpotFleetRequestsOutput) | ||||||
|  |  | ||||||
| 	DescribeSpotFleetRequests(*ec2.DescribeSpotFleetRequestsInput) (*ec2.DescribeSpotFleetRequestsOutput, error) | 	DescribeSpotFleetRequests(*ec2.DescribeSpotFleetRequestsInput) (*ec2.DescribeSpotFleetRequestsOutput, error) | ||||||
|  |  | ||||||
| 	DescribeSpotInstanceRequestsRequest(*ec2.DescribeSpotInstanceRequestsInput) (*service.Request, *ec2.DescribeSpotInstanceRequestsOutput) | 	DescribeSpotInstanceRequestsRequest(*ec2.DescribeSpotInstanceRequestsInput) (*request.Request, *ec2.DescribeSpotInstanceRequestsOutput) | ||||||
|  |  | ||||||
| 	DescribeSpotInstanceRequests(*ec2.DescribeSpotInstanceRequestsInput) (*ec2.DescribeSpotInstanceRequestsOutput, error) | 	DescribeSpotInstanceRequests(*ec2.DescribeSpotInstanceRequestsInput) (*ec2.DescribeSpotInstanceRequestsOutput, error) | ||||||
|  |  | ||||||
| 	DescribeSpotPriceHistoryRequest(*ec2.DescribeSpotPriceHistoryInput) (*service.Request, *ec2.DescribeSpotPriceHistoryOutput) | 	DescribeSpotPriceHistoryRequest(*ec2.DescribeSpotPriceHistoryInput) (*request.Request, *ec2.DescribeSpotPriceHistoryOutput) | ||||||
|  |  | ||||||
| 	DescribeSpotPriceHistory(*ec2.DescribeSpotPriceHistoryInput) (*ec2.DescribeSpotPriceHistoryOutput, error) | 	DescribeSpotPriceHistory(*ec2.DescribeSpotPriceHistoryInput) (*ec2.DescribeSpotPriceHistoryOutput, error) | ||||||
|  |  | ||||||
| 	DescribeSpotPriceHistoryPages(*ec2.DescribeSpotPriceHistoryInput, func(*ec2.DescribeSpotPriceHistoryOutput, bool) bool) error | 	DescribeSpotPriceHistoryPages(*ec2.DescribeSpotPriceHistoryInput, func(*ec2.DescribeSpotPriceHistoryOutput, bool) bool) error | ||||||
|  |  | ||||||
| 	DescribeSubnetsRequest(*ec2.DescribeSubnetsInput) (*service.Request, *ec2.DescribeSubnetsOutput) | 	DescribeSubnetsRequest(*ec2.DescribeSubnetsInput) (*request.Request, *ec2.DescribeSubnetsOutput) | ||||||
|  |  | ||||||
| 	DescribeSubnets(*ec2.DescribeSubnetsInput) (*ec2.DescribeSubnetsOutput, error) | 	DescribeSubnets(*ec2.DescribeSubnetsInput) (*ec2.DescribeSubnetsOutput, error) | ||||||
|  |  | ||||||
| 	DescribeTagsRequest(*ec2.DescribeTagsInput) (*service.Request, *ec2.DescribeTagsOutput) | 	DescribeTagsRequest(*ec2.DescribeTagsInput) (*request.Request, *ec2.DescribeTagsOutput) | ||||||
|  |  | ||||||
| 	DescribeTags(*ec2.DescribeTagsInput) (*ec2.DescribeTagsOutput, error) | 	DescribeTags(*ec2.DescribeTagsInput) (*ec2.DescribeTagsOutput, error) | ||||||
|  |  | ||||||
| 	DescribeVolumeAttributeRequest(*ec2.DescribeVolumeAttributeInput) (*service.Request, *ec2.DescribeVolumeAttributeOutput) | 	DescribeVolumeAttributeRequest(*ec2.DescribeVolumeAttributeInput) (*request.Request, *ec2.DescribeVolumeAttributeOutput) | ||||||
|  |  | ||||||
| 	DescribeVolumeAttribute(*ec2.DescribeVolumeAttributeInput) (*ec2.DescribeVolumeAttributeOutput, error) | 	DescribeVolumeAttribute(*ec2.DescribeVolumeAttributeInput) (*ec2.DescribeVolumeAttributeOutput, error) | ||||||
|  |  | ||||||
| 	DescribeVolumeStatusRequest(*ec2.DescribeVolumeStatusInput) (*service.Request, *ec2.DescribeVolumeStatusOutput) | 	DescribeVolumeStatusRequest(*ec2.DescribeVolumeStatusInput) (*request.Request, *ec2.DescribeVolumeStatusOutput) | ||||||
|  |  | ||||||
| 	DescribeVolumeStatus(*ec2.DescribeVolumeStatusInput) (*ec2.DescribeVolumeStatusOutput, error) | 	DescribeVolumeStatus(*ec2.DescribeVolumeStatusInput) (*ec2.DescribeVolumeStatusOutput, error) | ||||||
|  |  | ||||||
| 	DescribeVolumeStatusPages(*ec2.DescribeVolumeStatusInput, func(*ec2.DescribeVolumeStatusOutput, bool) bool) error | 	DescribeVolumeStatusPages(*ec2.DescribeVolumeStatusInput, func(*ec2.DescribeVolumeStatusOutput, bool) bool) error | ||||||
|  |  | ||||||
| 	DescribeVolumesRequest(*ec2.DescribeVolumesInput) (*service.Request, *ec2.DescribeVolumesOutput) | 	DescribeVolumesRequest(*ec2.DescribeVolumesInput) (*request.Request, *ec2.DescribeVolumesOutput) | ||||||
|  |  | ||||||
| 	DescribeVolumes(*ec2.DescribeVolumesInput) (*ec2.DescribeVolumesOutput, error) | 	DescribeVolumes(*ec2.DescribeVolumesInput) (*ec2.DescribeVolumesOutput, error) | ||||||
|  |  | ||||||
| 	DescribeVolumesPages(*ec2.DescribeVolumesInput, func(*ec2.DescribeVolumesOutput, bool) bool) error | 	DescribeVolumesPages(*ec2.DescribeVolumesInput, func(*ec2.DescribeVolumesOutput, bool) bool) error | ||||||
|  |  | ||||||
| 	DescribeVpcAttributeRequest(*ec2.DescribeVpcAttributeInput) (*service.Request, *ec2.DescribeVpcAttributeOutput) | 	DescribeVpcAttributeRequest(*ec2.DescribeVpcAttributeInput) (*request.Request, *ec2.DescribeVpcAttributeOutput) | ||||||
|  |  | ||||||
| 	DescribeVpcAttribute(*ec2.DescribeVpcAttributeInput) (*ec2.DescribeVpcAttributeOutput, error) | 	DescribeVpcAttribute(*ec2.DescribeVpcAttributeInput) (*ec2.DescribeVpcAttributeOutput, error) | ||||||
|  |  | ||||||
| 	DescribeVpcClassicLinkRequest(*ec2.DescribeVpcClassicLinkInput) (*service.Request, *ec2.DescribeVpcClassicLinkOutput) | 	DescribeVpcClassicLinkRequest(*ec2.DescribeVpcClassicLinkInput) (*request.Request, *ec2.DescribeVpcClassicLinkOutput) | ||||||
|  |  | ||||||
| 	DescribeVpcClassicLink(*ec2.DescribeVpcClassicLinkInput) (*ec2.DescribeVpcClassicLinkOutput, error) | 	DescribeVpcClassicLink(*ec2.DescribeVpcClassicLinkInput) (*ec2.DescribeVpcClassicLinkOutput, error) | ||||||
|  |  | ||||||
| 	DescribeVpcEndpointServicesRequest(*ec2.DescribeVpcEndpointServicesInput) (*service.Request, *ec2.DescribeVpcEndpointServicesOutput) | 	DescribeVpcEndpointServicesRequest(*ec2.DescribeVpcEndpointServicesInput) (*request.Request, *ec2.DescribeVpcEndpointServicesOutput) | ||||||
|  |  | ||||||
| 	DescribeVpcEndpointServices(*ec2.DescribeVpcEndpointServicesInput) (*ec2.DescribeVpcEndpointServicesOutput, error) | 	DescribeVpcEndpointServices(*ec2.DescribeVpcEndpointServicesInput) (*ec2.DescribeVpcEndpointServicesOutput, error) | ||||||
|  |  | ||||||
| 	DescribeVpcEndpointsRequest(*ec2.DescribeVpcEndpointsInput) (*service.Request, *ec2.DescribeVpcEndpointsOutput) | 	DescribeVpcEndpointsRequest(*ec2.DescribeVpcEndpointsInput) (*request.Request, *ec2.DescribeVpcEndpointsOutput) | ||||||
|  |  | ||||||
| 	DescribeVpcEndpoints(*ec2.DescribeVpcEndpointsInput) (*ec2.DescribeVpcEndpointsOutput, error) | 	DescribeVpcEndpoints(*ec2.DescribeVpcEndpointsInput) (*ec2.DescribeVpcEndpointsOutput, error) | ||||||
|  |  | ||||||
| 	DescribeVpcPeeringConnectionsRequest(*ec2.DescribeVpcPeeringConnectionsInput) (*service.Request, *ec2.DescribeVpcPeeringConnectionsOutput) | 	DescribeVpcPeeringConnectionsRequest(*ec2.DescribeVpcPeeringConnectionsInput) (*request.Request, *ec2.DescribeVpcPeeringConnectionsOutput) | ||||||
|  |  | ||||||
| 	DescribeVpcPeeringConnections(*ec2.DescribeVpcPeeringConnectionsInput) (*ec2.DescribeVpcPeeringConnectionsOutput, error) | 	DescribeVpcPeeringConnections(*ec2.DescribeVpcPeeringConnectionsInput) (*ec2.DescribeVpcPeeringConnectionsOutput, error) | ||||||
|  |  | ||||||
| 	DescribeVpcsRequest(*ec2.DescribeVpcsInput) (*service.Request, *ec2.DescribeVpcsOutput) | 	DescribeVpcsRequest(*ec2.DescribeVpcsInput) (*request.Request, *ec2.DescribeVpcsOutput) | ||||||
|  |  | ||||||
| 	DescribeVpcs(*ec2.DescribeVpcsInput) (*ec2.DescribeVpcsOutput, error) | 	DescribeVpcs(*ec2.DescribeVpcsInput) (*ec2.DescribeVpcsOutput, error) | ||||||
|  |  | ||||||
| 	DescribeVpnConnectionsRequest(*ec2.DescribeVpnConnectionsInput) (*service.Request, *ec2.DescribeVpnConnectionsOutput) | 	DescribeVpnConnectionsRequest(*ec2.DescribeVpnConnectionsInput) (*request.Request, *ec2.DescribeVpnConnectionsOutput) | ||||||
|  |  | ||||||
| 	DescribeVpnConnections(*ec2.DescribeVpnConnectionsInput) (*ec2.DescribeVpnConnectionsOutput, error) | 	DescribeVpnConnections(*ec2.DescribeVpnConnectionsInput) (*ec2.DescribeVpnConnectionsOutput, error) | ||||||
|  |  | ||||||
| 	DescribeVpnGatewaysRequest(*ec2.DescribeVpnGatewaysInput) (*service.Request, *ec2.DescribeVpnGatewaysOutput) | 	DescribeVpnGatewaysRequest(*ec2.DescribeVpnGatewaysInput) (*request.Request, *ec2.DescribeVpnGatewaysOutput) | ||||||
|  |  | ||||||
| 	DescribeVpnGateways(*ec2.DescribeVpnGatewaysInput) (*ec2.DescribeVpnGatewaysOutput, error) | 	DescribeVpnGateways(*ec2.DescribeVpnGatewaysInput) (*ec2.DescribeVpnGatewaysOutput, error) | ||||||
|  |  | ||||||
| 	DetachClassicLinkVpcRequest(*ec2.DetachClassicLinkVpcInput) (*service.Request, *ec2.DetachClassicLinkVpcOutput) | 	DetachClassicLinkVpcRequest(*ec2.DetachClassicLinkVpcInput) (*request.Request, *ec2.DetachClassicLinkVpcOutput) | ||||||
|  |  | ||||||
| 	DetachClassicLinkVpc(*ec2.DetachClassicLinkVpcInput) (*ec2.DetachClassicLinkVpcOutput, error) | 	DetachClassicLinkVpc(*ec2.DetachClassicLinkVpcInput) (*ec2.DetachClassicLinkVpcOutput, error) | ||||||
|  |  | ||||||
| 	DetachInternetGatewayRequest(*ec2.DetachInternetGatewayInput) (*service.Request, *ec2.DetachInternetGatewayOutput) | 	DetachInternetGatewayRequest(*ec2.DetachInternetGatewayInput) (*request.Request, *ec2.DetachInternetGatewayOutput) | ||||||
|  |  | ||||||
| 	DetachInternetGateway(*ec2.DetachInternetGatewayInput) (*ec2.DetachInternetGatewayOutput, error) | 	DetachInternetGateway(*ec2.DetachInternetGatewayInput) (*ec2.DetachInternetGatewayOutput, error) | ||||||
|  |  | ||||||
| 	DetachNetworkInterfaceRequest(*ec2.DetachNetworkInterfaceInput) (*service.Request, *ec2.DetachNetworkInterfaceOutput) | 	DetachNetworkInterfaceRequest(*ec2.DetachNetworkInterfaceInput) (*request.Request, *ec2.DetachNetworkInterfaceOutput) | ||||||
|  |  | ||||||
| 	DetachNetworkInterface(*ec2.DetachNetworkInterfaceInput) (*ec2.DetachNetworkInterfaceOutput, error) | 	DetachNetworkInterface(*ec2.DetachNetworkInterfaceInput) (*ec2.DetachNetworkInterfaceOutput, error) | ||||||
|  |  | ||||||
| 	DetachVolumeRequest(*ec2.DetachVolumeInput) (*service.Request, *ec2.VolumeAttachment) | 	DetachVolumeRequest(*ec2.DetachVolumeInput) (*request.Request, *ec2.VolumeAttachment) | ||||||
|  |  | ||||||
| 	DetachVolume(*ec2.DetachVolumeInput) (*ec2.VolumeAttachment, error) | 	DetachVolume(*ec2.DetachVolumeInput) (*ec2.VolumeAttachment, error) | ||||||
|  |  | ||||||
| 	DetachVpnGatewayRequest(*ec2.DetachVpnGatewayInput) (*service.Request, *ec2.DetachVpnGatewayOutput) | 	DetachVpnGatewayRequest(*ec2.DetachVpnGatewayInput) (*request.Request, *ec2.DetachVpnGatewayOutput) | ||||||
|  |  | ||||||
| 	DetachVpnGateway(*ec2.DetachVpnGatewayInput) (*ec2.DetachVpnGatewayOutput, error) | 	DetachVpnGateway(*ec2.DetachVpnGatewayInput) (*ec2.DetachVpnGatewayOutput, error) | ||||||
|  |  | ||||||
| 	DisableVgwRoutePropagationRequest(*ec2.DisableVgwRoutePropagationInput) (*service.Request, *ec2.DisableVgwRoutePropagationOutput) | 	DisableVgwRoutePropagationRequest(*ec2.DisableVgwRoutePropagationInput) (*request.Request, *ec2.DisableVgwRoutePropagationOutput) | ||||||
|  |  | ||||||
| 	DisableVgwRoutePropagation(*ec2.DisableVgwRoutePropagationInput) (*ec2.DisableVgwRoutePropagationOutput, error) | 	DisableVgwRoutePropagation(*ec2.DisableVgwRoutePropagationInput) (*ec2.DisableVgwRoutePropagationOutput, error) | ||||||
|  |  | ||||||
| 	DisableVpcClassicLinkRequest(*ec2.DisableVpcClassicLinkInput) (*service.Request, *ec2.DisableVpcClassicLinkOutput) | 	DisableVpcClassicLinkRequest(*ec2.DisableVpcClassicLinkInput) (*request.Request, *ec2.DisableVpcClassicLinkOutput) | ||||||
|  |  | ||||||
| 	DisableVpcClassicLink(*ec2.DisableVpcClassicLinkInput) (*ec2.DisableVpcClassicLinkOutput, error) | 	DisableVpcClassicLink(*ec2.DisableVpcClassicLinkInput) (*ec2.DisableVpcClassicLinkOutput, error) | ||||||
|  |  | ||||||
| 	DisassociateAddressRequest(*ec2.DisassociateAddressInput) (*service.Request, *ec2.DisassociateAddressOutput) | 	DisassociateAddressRequest(*ec2.DisassociateAddressInput) (*request.Request, *ec2.DisassociateAddressOutput) | ||||||
|  |  | ||||||
| 	DisassociateAddress(*ec2.DisassociateAddressInput) (*ec2.DisassociateAddressOutput, error) | 	DisassociateAddress(*ec2.DisassociateAddressInput) (*ec2.DisassociateAddressOutput, error) | ||||||
|  |  | ||||||
| 	DisassociateRouteTableRequest(*ec2.DisassociateRouteTableInput) (*service.Request, *ec2.DisassociateRouteTableOutput) | 	DisassociateRouteTableRequest(*ec2.DisassociateRouteTableInput) (*request.Request, *ec2.DisassociateRouteTableOutput) | ||||||
|  |  | ||||||
| 	DisassociateRouteTable(*ec2.DisassociateRouteTableInput) (*ec2.DisassociateRouteTableOutput, error) | 	DisassociateRouteTable(*ec2.DisassociateRouteTableInput) (*ec2.DisassociateRouteTableOutput, error) | ||||||
|  |  | ||||||
| 	EnableVgwRoutePropagationRequest(*ec2.EnableVgwRoutePropagationInput) (*service.Request, *ec2.EnableVgwRoutePropagationOutput) | 	EnableVgwRoutePropagationRequest(*ec2.EnableVgwRoutePropagationInput) (*request.Request, *ec2.EnableVgwRoutePropagationOutput) | ||||||
|  |  | ||||||
| 	EnableVgwRoutePropagation(*ec2.EnableVgwRoutePropagationInput) (*ec2.EnableVgwRoutePropagationOutput, error) | 	EnableVgwRoutePropagation(*ec2.EnableVgwRoutePropagationInput) (*ec2.EnableVgwRoutePropagationOutput, error) | ||||||
|  |  | ||||||
| 	EnableVolumeIORequest(*ec2.EnableVolumeIOInput) (*service.Request, *ec2.EnableVolumeIOOutput) | 	EnableVolumeIORequest(*ec2.EnableVolumeIOInput) (*request.Request, *ec2.EnableVolumeIOOutput) | ||||||
|  |  | ||||||
| 	EnableVolumeIO(*ec2.EnableVolumeIOInput) (*ec2.EnableVolumeIOOutput, error) | 	EnableVolumeIO(*ec2.EnableVolumeIOInput) (*ec2.EnableVolumeIOOutput, error) | ||||||
|  |  | ||||||
| 	EnableVpcClassicLinkRequest(*ec2.EnableVpcClassicLinkInput) (*service.Request, *ec2.EnableVpcClassicLinkOutput) | 	EnableVpcClassicLinkRequest(*ec2.EnableVpcClassicLinkInput) (*request.Request, *ec2.EnableVpcClassicLinkOutput) | ||||||
|  |  | ||||||
| 	EnableVpcClassicLink(*ec2.EnableVpcClassicLinkInput) (*ec2.EnableVpcClassicLinkOutput, error) | 	EnableVpcClassicLink(*ec2.EnableVpcClassicLinkInput) (*ec2.EnableVpcClassicLinkOutput, error) | ||||||
|  |  | ||||||
| 	GetConsoleOutputRequest(*ec2.GetConsoleOutputInput) (*service.Request, *ec2.GetConsoleOutputOutput) | 	GetConsoleOutputRequest(*ec2.GetConsoleOutputInput) (*request.Request, *ec2.GetConsoleOutputOutput) | ||||||
|  |  | ||||||
| 	GetConsoleOutput(*ec2.GetConsoleOutputInput) (*ec2.GetConsoleOutputOutput, error) | 	GetConsoleOutput(*ec2.GetConsoleOutputInput) (*ec2.GetConsoleOutputOutput, error) | ||||||
|  |  | ||||||
| 	GetPasswordDataRequest(*ec2.GetPasswordDataInput) (*service.Request, *ec2.GetPasswordDataOutput) | 	GetPasswordDataRequest(*ec2.GetPasswordDataInput) (*request.Request, *ec2.GetPasswordDataOutput) | ||||||
|  |  | ||||||
| 	GetPasswordData(*ec2.GetPasswordDataInput) (*ec2.GetPasswordDataOutput, error) | 	GetPasswordData(*ec2.GetPasswordDataInput) (*ec2.GetPasswordDataOutput, error) | ||||||
|  |  | ||||||
| 	ImportImageRequest(*ec2.ImportImageInput) (*service.Request, *ec2.ImportImageOutput) | 	ImportImageRequest(*ec2.ImportImageInput) (*request.Request, *ec2.ImportImageOutput) | ||||||
|  |  | ||||||
| 	ImportImage(*ec2.ImportImageInput) (*ec2.ImportImageOutput, error) | 	ImportImage(*ec2.ImportImageInput) (*ec2.ImportImageOutput, error) | ||||||
|  |  | ||||||
| 	ImportInstanceRequest(*ec2.ImportInstanceInput) (*service.Request, *ec2.ImportInstanceOutput) | 	ImportInstanceRequest(*ec2.ImportInstanceInput) (*request.Request, *ec2.ImportInstanceOutput) | ||||||
|  |  | ||||||
| 	ImportInstance(*ec2.ImportInstanceInput) (*ec2.ImportInstanceOutput, error) | 	ImportInstance(*ec2.ImportInstanceInput) (*ec2.ImportInstanceOutput, error) | ||||||
|  |  | ||||||
| 	ImportKeyPairRequest(*ec2.ImportKeyPairInput) (*service.Request, *ec2.ImportKeyPairOutput) | 	ImportKeyPairRequest(*ec2.ImportKeyPairInput) (*request.Request, *ec2.ImportKeyPairOutput) | ||||||
|  |  | ||||||
| 	ImportKeyPair(*ec2.ImportKeyPairInput) (*ec2.ImportKeyPairOutput, error) | 	ImportKeyPair(*ec2.ImportKeyPairInput) (*ec2.ImportKeyPairOutput, error) | ||||||
|  |  | ||||||
| 	ImportSnapshotRequest(*ec2.ImportSnapshotInput) (*service.Request, *ec2.ImportSnapshotOutput) | 	ImportSnapshotRequest(*ec2.ImportSnapshotInput) (*request.Request, *ec2.ImportSnapshotOutput) | ||||||
|  |  | ||||||
| 	ImportSnapshot(*ec2.ImportSnapshotInput) (*ec2.ImportSnapshotOutput, error) | 	ImportSnapshot(*ec2.ImportSnapshotInput) (*ec2.ImportSnapshotOutput, error) | ||||||
|  |  | ||||||
| 	ImportVolumeRequest(*ec2.ImportVolumeInput) (*service.Request, *ec2.ImportVolumeOutput) | 	ImportVolumeRequest(*ec2.ImportVolumeInput) (*request.Request, *ec2.ImportVolumeOutput) | ||||||
|  |  | ||||||
| 	ImportVolume(*ec2.ImportVolumeInput) (*ec2.ImportVolumeOutput, error) | 	ImportVolume(*ec2.ImportVolumeInput) (*ec2.ImportVolumeOutput, error) | ||||||
|  |  | ||||||
| 	ModifyImageAttributeRequest(*ec2.ModifyImageAttributeInput) (*service.Request, *ec2.ModifyImageAttributeOutput) | 	ModifyImageAttributeRequest(*ec2.ModifyImageAttributeInput) (*request.Request, *ec2.ModifyImageAttributeOutput) | ||||||
|  |  | ||||||
| 	ModifyImageAttribute(*ec2.ModifyImageAttributeInput) (*ec2.ModifyImageAttributeOutput, error) | 	ModifyImageAttribute(*ec2.ModifyImageAttributeInput) (*ec2.ModifyImageAttributeOutput, error) | ||||||
|  |  | ||||||
| 	ModifyInstanceAttributeRequest(*ec2.ModifyInstanceAttributeInput) (*service.Request, *ec2.ModifyInstanceAttributeOutput) | 	ModifyInstanceAttributeRequest(*ec2.ModifyInstanceAttributeInput) (*request.Request, *ec2.ModifyInstanceAttributeOutput) | ||||||
|  |  | ||||||
| 	ModifyInstanceAttribute(*ec2.ModifyInstanceAttributeInput) (*ec2.ModifyInstanceAttributeOutput, error) | 	ModifyInstanceAttribute(*ec2.ModifyInstanceAttributeInput) (*ec2.ModifyInstanceAttributeOutput, error) | ||||||
|  |  | ||||||
| 	ModifyNetworkInterfaceAttributeRequest(*ec2.ModifyNetworkInterfaceAttributeInput) (*service.Request, *ec2.ModifyNetworkInterfaceAttributeOutput) | 	ModifyNetworkInterfaceAttributeRequest(*ec2.ModifyNetworkInterfaceAttributeInput) (*request.Request, *ec2.ModifyNetworkInterfaceAttributeOutput) | ||||||
|  |  | ||||||
| 	ModifyNetworkInterfaceAttribute(*ec2.ModifyNetworkInterfaceAttributeInput) (*ec2.ModifyNetworkInterfaceAttributeOutput, error) | 	ModifyNetworkInterfaceAttribute(*ec2.ModifyNetworkInterfaceAttributeInput) (*ec2.ModifyNetworkInterfaceAttributeOutput, error) | ||||||
|  |  | ||||||
| 	ModifyReservedInstancesRequest(*ec2.ModifyReservedInstancesInput) (*service.Request, *ec2.ModifyReservedInstancesOutput) | 	ModifyReservedInstancesRequest(*ec2.ModifyReservedInstancesInput) (*request.Request, *ec2.ModifyReservedInstancesOutput) | ||||||
|  |  | ||||||
| 	ModifyReservedInstances(*ec2.ModifyReservedInstancesInput) (*ec2.ModifyReservedInstancesOutput, error) | 	ModifyReservedInstances(*ec2.ModifyReservedInstancesInput) (*ec2.ModifyReservedInstancesOutput, error) | ||||||
|  |  | ||||||
| 	ModifySnapshotAttributeRequest(*ec2.ModifySnapshotAttributeInput) (*service.Request, *ec2.ModifySnapshotAttributeOutput) | 	ModifySnapshotAttributeRequest(*ec2.ModifySnapshotAttributeInput) (*request.Request, *ec2.ModifySnapshotAttributeOutput) | ||||||
|  |  | ||||||
| 	ModifySnapshotAttribute(*ec2.ModifySnapshotAttributeInput) (*ec2.ModifySnapshotAttributeOutput, error) | 	ModifySnapshotAttribute(*ec2.ModifySnapshotAttributeInput) (*ec2.ModifySnapshotAttributeOutput, error) | ||||||
|  |  | ||||||
| 	ModifySubnetAttributeRequest(*ec2.ModifySubnetAttributeInput) (*service.Request, *ec2.ModifySubnetAttributeOutput) | 	ModifySubnetAttributeRequest(*ec2.ModifySubnetAttributeInput) (*request.Request, *ec2.ModifySubnetAttributeOutput) | ||||||
|  |  | ||||||
| 	ModifySubnetAttribute(*ec2.ModifySubnetAttributeInput) (*ec2.ModifySubnetAttributeOutput, error) | 	ModifySubnetAttribute(*ec2.ModifySubnetAttributeInput) (*ec2.ModifySubnetAttributeOutput, error) | ||||||
|  |  | ||||||
| 	ModifyVolumeAttributeRequest(*ec2.ModifyVolumeAttributeInput) (*service.Request, *ec2.ModifyVolumeAttributeOutput) | 	ModifyVolumeAttributeRequest(*ec2.ModifyVolumeAttributeInput) (*request.Request, *ec2.ModifyVolumeAttributeOutput) | ||||||
|  |  | ||||||
| 	ModifyVolumeAttribute(*ec2.ModifyVolumeAttributeInput) (*ec2.ModifyVolumeAttributeOutput, error) | 	ModifyVolumeAttribute(*ec2.ModifyVolumeAttributeInput) (*ec2.ModifyVolumeAttributeOutput, error) | ||||||
|  |  | ||||||
| 	ModifyVpcAttributeRequest(*ec2.ModifyVpcAttributeInput) (*service.Request, *ec2.ModifyVpcAttributeOutput) | 	ModifyVpcAttributeRequest(*ec2.ModifyVpcAttributeInput) (*request.Request, *ec2.ModifyVpcAttributeOutput) | ||||||
|  |  | ||||||
| 	ModifyVpcAttribute(*ec2.ModifyVpcAttributeInput) (*ec2.ModifyVpcAttributeOutput, error) | 	ModifyVpcAttribute(*ec2.ModifyVpcAttributeInput) (*ec2.ModifyVpcAttributeOutput, error) | ||||||
|  |  | ||||||
| 	ModifyVpcEndpointRequest(*ec2.ModifyVpcEndpointInput) (*service.Request, *ec2.ModifyVpcEndpointOutput) | 	ModifyVpcEndpointRequest(*ec2.ModifyVpcEndpointInput) (*request.Request, *ec2.ModifyVpcEndpointOutput) | ||||||
|  |  | ||||||
| 	ModifyVpcEndpoint(*ec2.ModifyVpcEndpointInput) (*ec2.ModifyVpcEndpointOutput, error) | 	ModifyVpcEndpoint(*ec2.ModifyVpcEndpointInput) (*ec2.ModifyVpcEndpointOutput, error) | ||||||
|  |  | ||||||
| 	MonitorInstancesRequest(*ec2.MonitorInstancesInput) (*service.Request, *ec2.MonitorInstancesOutput) | 	MonitorInstancesRequest(*ec2.MonitorInstancesInput) (*request.Request, *ec2.MonitorInstancesOutput) | ||||||
|  |  | ||||||
| 	MonitorInstances(*ec2.MonitorInstancesInput) (*ec2.MonitorInstancesOutput, error) | 	MonitorInstances(*ec2.MonitorInstancesInput) (*ec2.MonitorInstancesOutput, error) | ||||||
|  |  | ||||||
| 	MoveAddressToVpcRequest(*ec2.MoveAddressToVpcInput) (*service.Request, *ec2.MoveAddressToVpcOutput) | 	MoveAddressToVpcRequest(*ec2.MoveAddressToVpcInput) (*request.Request, *ec2.MoveAddressToVpcOutput) | ||||||
|  |  | ||||||
| 	MoveAddressToVpc(*ec2.MoveAddressToVpcInput) (*ec2.MoveAddressToVpcOutput, error) | 	MoveAddressToVpc(*ec2.MoveAddressToVpcInput) (*ec2.MoveAddressToVpcOutput, error) | ||||||
|  |  | ||||||
| 	PurchaseReservedInstancesOfferingRequest(*ec2.PurchaseReservedInstancesOfferingInput) (*service.Request, *ec2.PurchaseReservedInstancesOfferingOutput) | 	PurchaseReservedInstancesOfferingRequest(*ec2.PurchaseReservedInstancesOfferingInput) (*request.Request, *ec2.PurchaseReservedInstancesOfferingOutput) | ||||||
|  |  | ||||||
| 	PurchaseReservedInstancesOffering(*ec2.PurchaseReservedInstancesOfferingInput) (*ec2.PurchaseReservedInstancesOfferingOutput, error) | 	PurchaseReservedInstancesOffering(*ec2.PurchaseReservedInstancesOfferingInput) (*ec2.PurchaseReservedInstancesOfferingOutput, error) | ||||||
|  |  | ||||||
| 	RebootInstancesRequest(*ec2.RebootInstancesInput) (*service.Request, *ec2.RebootInstancesOutput) | 	RebootInstancesRequest(*ec2.RebootInstancesInput) (*request.Request, *ec2.RebootInstancesOutput) | ||||||
|  |  | ||||||
| 	RebootInstances(*ec2.RebootInstancesInput) (*ec2.RebootInstancesOutput, error) | 	RebootInstances(*ec2.RebootInstancesInput) (*ec2.RebootInstancesOutput, error) | ||||||
|  |  | ||||||
| 	RegisterImageRequest(*ec2.RegisterImageInput) (*service.Request, *ec2.RegisterImageOutput) | 	RegisterImageRequest(*ec2.RegisterImageInput) (*request.Request, *ec2.RegisterImageOutput) | ||||||
|  |  | ||||||
| 	RegisterImage(*ec2.RegisterImageInput) (*ec2.RegisterImageOutput, error) | 	RegisterImage(*ec2.RegisterImageInput) (*ec2.RegisterImageOutput, error) | ||||||
|  |  | ||||||
| 	RejectVpcPeeringConnectionRequest(*ec2.RejectVpcPeeringConnectionInput) (*service.Request, *ec2.RejectVpcPeeringConnectionOutput) | 	RejectVpcPeeringConnectionRequest(*ec2.RejectVpcPeeringConnectionInput) (*request.Request, *ec2.RejectVpcPeeringConnectionOutput) | ||||||
|  |  | ||||||
| 	RejectVpcPeeringConnection(*ec2.RejectVpcPeeringConnectionInput) (*ec2.RejectVpcPeeringConnectionOutput, error) | 	RejectVpcPeeringConnection(*ec2.RejectVpcPeeringConnectionInput) (*ec2.RejectVpcPeeringConnectionOutput, error) | ||||||
|  |  | ||||||
| 	ReleaseAddressRequest(*ec2.ReleaseAddressInput) (*service.Request, *ec2.ReleaseAddressOutput) | 	ReleaseAddressRequest(*ec2.ReleaseAddressInput) (*request.Request, *ec2.ReleaseAddressOutput) | ||||||
|  |  | ||||||
| 	ReleaseAddress(*ec2.ReleaseAddressInput) (*ec2.ReleaseAddressOutput, error) | 	ReleaseAddress(*ec2.ReleaseAddressInput) (*ec2.ReleaseAddressOutput, error) | ||||||
|  |  | ||||||
| 	ReplaceNetworkAclAssociationRequest(*ec2.ReplaceNetworkAclAssociationInput) (*service.Request, *ec2.ReplaceNetworkAclAssociationOutput) | 	ReplaceNetworkAclAssociationRequest(*ec2.ReplaceNetworkAclAssociationInput) (*request.Request, *ec2.ReplaceNetworkAclAssociationOutput) | ||||||
|  |  | ||||||
| 	ReplaceNetworkAclAssociation(*ec2.ReplaceNetworkAclAssociationInput) (*ec2.ReplaceNetworkAclAssociationOutput, error) | 	ReplaceNetworkAclAssociation(*ec2.ReplaceNetworkAclAssociationInput) (*ec2.ReplaceNetworkAclAssociationOutput, error) | ||||||
|  |  | ||||||
| 	ReplaceNetworkAclEntryRequest(*ec2.ReplaceNetworkAclEntryInput) (*service.Request, *ec2.ReplaceNetworkAclEntryOutput) | 	ReplaceNetworkAclEntryRequest(*ec2.ReplaceNetworkAclEntryInput) (*request.Request, *ec2.ReplaceNetworkAclEntryOutput) | ||||||
|  |  | ||||||
| 	ReplaceNetworkAclEntry(*ec2.ReplaceNetworkAclEntryInput) (*ec2.ReplaceNetworkAclEntryOutput, error) | 	ReplaceNetworkAclEntry(*ec2.ReplaceNetworkAclEntryInput) (*ec2.ReplaceNetworkAclEntryOutput, error) | ||||||
|  |  | ||||||
| 	ReplaceRouteRequest(*ec2.ReplaceRouteInput) (*service.Request, *ec2.ReplaceRouteOutput) | 	ReplaceRouteRequest(*ec2.ReplaceRouteInput) (*request.Request, *ec2.ReplaceRouteOutput) | ||||||
|  |  | ||||||
| 	ReplaceRoute(*ec2.ReplaceRouteInput) (*ec2.ReplaceRouteOutput, error) | 	ReplaceRoute(*ec2.ReplaceRouteInput) (*ec2.ReplaceRouteOutput, error) | ||||||
|  |  | ||||||
| 	ReplaceRouteTableAssociationRequest(*ec2.ReplaceRouteTableAssociationInput) (*service.Request, *ec2.ReplaceRouteTableAssociationOutput) | 	ReplaceRouteTableAssociationRequest(*ec2.ReplaceRouteTableAssociationInput) (*request.Request, *ec2.ReplaceRouteTableAssociationOutput) | ||||||
|  |  | ||||||
| 	ReplaceRouteTableAssociation(*ec2.ReplaceRouteTableAssociationInput) (*ec2.ReplaceRouteTableAssociationOutput, error) | 	ReplaceRouteTableAssociation(*ec2.ReplaceRouteTableAssociationInput) (*ec2.ReplaceRouteTableAssociationOutput, error) | ||||||
|  |  | ||||||
| 	ReportInstanceStatusRequest(*ec2.ReportInstanceStatusInput) (*service.Request, *ec2.ReportInstanceStatusOutput) | 	ReportInstanceStatusRequest(*ec2.ReportInstanceStatusInput) (*request.Request, *ec2.ReportInstanceStatusOutput) | ||||||
|  |  | ||||||
| 	ReportInstanceStatus(*ec2.ReportInstanceStatusInput) (*ec2.ReportInstanceStatusOutput, error) | 	ReportInstanceStatus(*ec2.ReportInstanceStatusInput) (*ec2.ReportInstanceStatusOutput, error) | ||||||
|  |  | ||||||
| 	RequestSpotFleetRequest(*ec2.RequestSpotFleetInput) (*service.Request, *ec2.RequestSpotFleetOutput) | 	RequestSpotFleetRequest(*ec2.RequestSpotFleetInput) (*request.Request, *ec2.RequestSpotFleetOutput) | ||||||
|  |  | ||||||
| 	RequestSpotFleet(*ec2.RequestSpotFleetInput) (*ec2.RequestSpotFleetOutput, error) | 	RequestSpotFleet(*ec2.RequestSpotFleetInput) (*ec2.RequestSpotFleetOutput, error) | ||||||
|  |  | ||||||
| 	RequestSpotInstancesRequest(*ec2.RequestSpotInstancesInput) (*service.Request, *ec2.RequestSpotInstancesOutput) | 	RequestSpotInstancesRequest(*ec2.RequestSpotInstancesInput) (*request.Request, *ec2.RequestSpotInstancesOutput) | ||||||
|  |  | ||||||
| 	RequestSpotInstances(*ec2.RequestSpotInstancesInput) (*ec2.RequestSpotInstancesOutput, error) | 	RequestSpotInstances(*ec2.RequestSpotInstancesInput) (*ec2.RequestSpotInstancesOutput, error) | ||||||
|  |  | ||||||
| 	ResetImageAttributeRequest(*ec2.ResetImageAttributeInput) (*service.Request, *ec2.ResetImageAttributeOutput) | 	ResetImageAttributeRequest(*ec2.ResetImageAttributeInput) (*request.Request, *ec2.ResetImageAttributeOutput) | ||||||
|  |  | ||||||
| 	ResetImageAttribute(*ec2.ResetImageAttributeInput) (*ec2.ResetImageAttributeOutput, error) | 	ResetImageAttribute(*ec2.ResetImageAttributeInput) (*ec2.ResetImageAttributeOutput, error) | ||||||
|  |  | ||||||
| 	ResetInstanceAttributeRequest(*ec2.ResetInstanceAttributeInput) (*service.Request, *ec2.ResetInstanceAttributeOutput) | 	ResetInstanceAttributeRequest(*ec2.ResetInstanceAttributeInput) (*request.Request, *ec2.ResetInstanceAttributeOutput) | ||||||
|  |  | ||||||
| 	ResetInstanceAttribute(*ec2.ResetInstanceAttributeInput) (*ec2.ResetInstanceAttributeOutput, error) | 	ResetInstanceAttribute(*ec2.ResetInstanceAttributeInput) (*ec2.ResetInstanceAttributeOutput, error) | ||||||
|  |  | ||||||
| 	ResetNetworkInterfaceAttributeRequest(*ec2.ResetNetworkInterfaceAttributeInput) (*service.Request, *ec2.ResetNetworkInterfaceAttributeOutput) | 	ResetNetworkInterfaceAttributeRequest(*ec2.ResetNetworkInterfaceAttributeInput) (*request.Request, *ec2.ResetNetworkInterfaceAttributeOutput) | ||||||
|  |  | ||||||
| 	ResetNetworkInterfaceAttribute(*ec2.ResetNetworkInterfaceAttributeInput) (*ec2.ResetNetworkInterfaceAttributeOutput, error) | 	ResetNetworkInterfaceAttribute(*ec2.ResetNetworkInterfaceAttributeInput) (*ec2.ResetNetworkInterfaceAttributeOutput, error) | ||||||
|  |  | ||||||
| 	ResetSnapshotAttributeRequest(*ec2.ResetSnapshotAttributeInput) (*service.Request, *ec2.ResetSnapshotAttributeOutput) | 	ResetSnapshotAttributeRequest(*ec2.ResetSnapshotAttributeInput) (*request.Request, *ec2.ResetSnapshotAttributeOutput) | ||||||
|  |  | ||||||
| 	ResetSnapshotAttribute(*ec2.ResetSnapshotAttributeInput) (*ec2.ResetSnapshotAttributeOutput, error) | 	ResetSnapshotAttribute(*ec2.ResetSnapshotAttributeInput) (*ec2.ResetSnapshotAttributeOutput, error) | ||||||
|  |  | ||||||
| 	RestoreAddressToClassicRequest(*ec2.RestoreAddressToClassicInput) (*service.Request, *ec2.RestoreAddressToClassicOutput) | 	RestoreAddressToClassicRequest(*ec2.RestoreAddressToClassicInput) (*request.Request, *ec2.RestoreAddressToClassicOutput) | ||||||
|  |  | ||||||
| 	RestoreAddressToClassic(*ec2.RestoreAddressToClassicInput) (*ec2.RestoreAddressToClassicOutput, error) | 	RestoreAddressToClassic(*ec2.RestoreAddressToClassicInput) (*ec2.RestoreAddressToClassicOutput, error) | ||||||
|  |  | ||||||
| 	RevokeSecurityGroupEgressRequest(*ec2.RevokeSecurityGroupEgressInput) (*service.Request, *ec2.RevokeSecurityGroupEgressOutput) | 	RevokeSecurityGroupEgressRequest(*ec2.RevokeSecurityGroupEgressInput) (*request.Request, *ec2.RevokeSecurityGroupEgressOutput) | ||||||
|  |  | ||||||
| 	RevokeSecurityGroupEgress(*ec2.RevokeSecurityGroupEgressInput) (*ec2.RevokeSecurityGroupEgressOutput, error) | 	RevokeSecurityGroupEgress(*ec2.RevokeSecurityGroupEgressInput) (*ec2.RevokeSecurityGroupEgressOutput, error) | ||||||
|  |  | ||||||
| 	RevokeSecurityGroupIngressRequest(*ec2.RevokeSecurityGroupIngressInput) (*service.Request, *ec2.RevokeSecurityGroupIngressOutput) | 	RevokeSecurityGroupIngressRequest(*ec2.RevokeSecurityGroupIngressInput) (*request.Request, *ec2.RevokeSecurityGroupIngressOutput) | ||||||
|  |  | ||||||
| 	RevokeSecurityGroupIngress(*ec2.RevokeSecurityGroupIngressInput) (*ec2.RevokeSecurityGroupIngressOutput, error) | 	RevokeSecurityGroupIngress(*ec2.RevokeSecurityGroupIngressInput) (*ec2.RevokeSecurityGroupIngressOutput, error) | ||||||
|  |  | ||||||
| 	RunInstancesRequest(*ec2.RunInstancesInput) (*service.Request, *ec2.Reservation) | 	RunInstancesRequest(*ec2.RunInstancesInput) (*request.Request, *ec2.Reservation) | ||||||
|  |  | ||||||
| 	RunInstances(*ec2.RunInstancesInput) (*ec2.Reservation, error) | 	RunInstances(*ec2.RunInstancesInput) (*ec2.Reservation, error) | ||||||
|  |  | ||||||
| 	StartInstancesRequest(*ec2.StartInstancesInput) (*service.Request, *ec2.StartInstancesOutput) | 	StartInstancesRequest(*ec2.StartInstancesInput) (*request.Request, *ec2.StartInstancesOutput) | ||||||
|  |  | ||||||
| 	StartInstances(*ec2.StartInstancesInput) (*ec2.StartInstancesOutput, error) | 	StartInstances(*ec2.StartInstancesInput) (*ec2.StartInstancesOutput, error) | ||||||
|  |  | ||||||
| 	StopInstancesRequest(*ec2.StopInstancesInput) (*service.Request, *ec2.StopInstancesOutput) | 	StopInstancesRequest(*ec2.StopInstancesInput) (*request.Request, *ec2.StopInstancesOutput) | ||||||
|  |  | ||||||
| 	StopInstances(*ec2.StopInstancesInput) (*ec2.StopInstancesOutput, error) | 	StopInstances(*ec2.StopInstancesInput) (*ec2.StopInstancesOutput, error) | ||||||
|  |  | ||||||
| 	TerminateInstancesRequest(*ec2.TerminateInstancesInput) (*service.Request, *ec2.TerminateInstancesOutput) | 	TerminateInstancesRequest(*ec2.TerminateInstancesInput) (*request.Request, *ec2.TerminateInstancesOutput) | ||||||
|  |  | ||||||
| 	TerminateInstances(*ec2.TerminateInstancesInput) (*ec2.TerminateInstancesOutput, error) | 	TerminateInstances(*ec2.TerminateInstancesInput) (*ec2.TerminateInstancesOutput, error) | ||||||
|  |  | ||||||
| 	UnassignPrivateIpAddressesRequest(*ec2.UnassignPrivateIpAddressesInput) (*service.Request, *ec2.UnassignPrivateIpAddressesOutput) | 	UnassignPrivateIpAddressesRequest(*ec2.UnassignPrivateIpAddressesInput) (*request.Request, *ec2.UnassignPrivateIpAddressesOutput) | ||||||
|  |  | ||||||
| 	UnassignPrivateIpAddresses(*ec2.UnassignPrivateIpAddressesInput) (*ec2.UnassignPrivateIpAddressesOutput, error) | 	UnassignPrivateIpAddresses(*ec2.UnassignPrivateIpAddressesInput) (*ec2.UnassignPrivateIpAddressesOutput, error) | ||||||
|  |  | ||||||
| 	UnmonitorInstancesRequest(*ec2.UnmonitorInstancesInput) (*service.Request, *ec2.UnmonitorInstancesOutput) | 	UnmonitorInstancesRequest(*ec2.UnmonitorInstancesInput) (*request.Request, *ec2.UnmonitorInstancesOutput) | ||||||
|  |  | ||||||
| 	UnmonitorInstances(*ec2.UnmonitorInstancesInput) (*ec2.UnmonitorInstancesOutput, error) | 	UnmonitorInstances(*ec2.UnmonitorInstancesInput) (*ec2.UnmonitorInstancesOutput, error) | ||||||
| } | } | ||||||
|   | |||||||
							
								
								
									
										15
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/ec2/ec2iface/interface_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										15
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/ec2/ec2iface/interface_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,15 +0,0 @@ | |||||||
| // THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. |  | ||||||
|  |  | ||||||
| package ec2iface_test |  | ||||||
|  |  | ||||||
| import ( |  | ||||||
| 	"testing" |  | ||||||
|  |  | ||||||
| 	"github.com/aws/aws-sdk-go/service/ec2" |  | ||||||
| 	"github.com/aws/aws-sdk-go/service/ec2/ec2iface" |  | ||||||
| 	"github.com/stretchr/testify/assert" |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| func TestInterface(t *testing.T) { |  | ||||||
| 	assert.Implements(t, (*ec2iface.EC2API)(nil), ec2.New(nil)) |  | ||||||
| } |  | ||||||
							
								
								
									
										6619
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/ec2/examples_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										6619
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/ec2/examples_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										16
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/ec2/service.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										16
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/ec2/service.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -5,7 +5,9 @@ package ec2 | |||||||
| import ( | import ( | ||||||
| 	"github.com/aws/aws-sdk-go/aws" | 	"github.com/aws/aws-sdk-go/aws" | ||||||
| 	"github.com/aws/aws-sdk-go/aws/defaults" | 	"github.com/aws/aws-sdk-go/aws/defaults" | ||||||
|  | 	"github.com/aws/aws-sdk-go/aws/request" | ||||||
| 	"github.com/aws/aws-sdk-go/aws/service" | 	"github.com/aws/aws-sdk-go/aws/service" | ||||||
|  | 	"github.com/aws/aws-sdk-go/aws/service/serviceinfo" | ||||||
| 	"github.com/aws/aws-sdk-go/internal/protocol/ec2query" | 	"github.com/aws/aws-sdk-go/internal/protocol/ec2query" | ||||||
| 	"github.com/aws/aws-sdk-go/internal/signer/v4" | 	"github.com/aws/aws-sdk-go/internal/signer/v4" | ||||||
| ) | ) | ||||||
| @@ -22,14 +24,16 @@ type EC2 struct { | |||||||
| var initService func(*service.Service) | var initService func(*service.Service) | ||||||
|  |  | ||||||
| // Used for custom request initialization logic | // Used for custom request initialization logic | ||||||
| var initRequest func(*service.Request) | var initRequest func(*request.Request) | ||||||
|  |  | ||||||
| // New returns a new EC2 client. | // New returns a new EC2 client. | ||||||
| func New(config *aws.Config) *EC2 { | func New(config *aws.Config) *EC2 { | ||||||
| 	service := &service.Service{ | 	service := &service.Service{ | ||||||
| 		Config:      defaults.DefaultConfig.Merge(config), | 		ServiceInfo: serviceinfo.ServiceInfo{ | ||||||
| 		ServiceName: "ec2", | 			Config:      defaults.DefaultConfig.Merge(config), | ||||||
| 		APIVersion:  "2015-04-15", | 			ServiceName: "ec2", | ||||||
|  | 			APIVersion:  "2015-04-15", | ||||||
|  | 		}, | ||||||
| 	} | 	} | ||||||
| 	service.Initialize() | 	service.Initialize() | ||||||
|  |  | ||||||
| @@ -50,8 +54,8 @@ func New(config *aws.Config) *EC2 { | |||||||
|  |  | ||||||
| // newRequest creates a new request for a EC2 operation and runs any | // newRequest creates a new request for a EC2 operation and runs any | ||||||
| // custom request initialization. | // custom request initialization. | ||||||
| func (c *EC2) newRequest(op *service.Operation, params, data interface{}) *service.Request { | func (c *EC2) newRequest(op *request.Operation, params, data interface{}) *request.Request { | ||||||
| 	req := service.NewRequest(c.Service, op, params, data) | 	req := c.NewRequest(op, params, data) | ||||||
|  |  | ||||||
| 	// Run custom request initialization if present | 	// Run custom request initialization if present | ||||||
| 	if initRequest != nil { | 	if initRequest != nil { | ||||||
|   | |||||||
							
								
								
									
										2256
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/iam/api.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2256
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/iam/api.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										3099
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/iam/examples_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3099
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/iam/examples_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										236
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/iam/iamiface/interface.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										236
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/iam/iamiface/interface.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -4,489 +4,505 @@ | |||||||
| package iamiface | package iamiface | ||||||
|  |  | ||||||
| import ( | import ( | ||||||
| 	"github.com/aws/aws-sdk-go/aws/service" | 	"github.com/aws/aws-sdk-go/aws/request" | ||||||
| 	"github.com/aws/aws-sdk-go/service/iam" | 	"github.com/aws/aws-sdk-go/service/iam" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| // IAMAPI is the interface type for iam.IAM. | // IAMAPI is the interface type for iam.IAM. | ||||||
| type IAMAPI interface { | type IAMAPI interface { | ||||||
| 	AddClientIDToOpenIDConnectProviderRequest(*iam.AddClientIDToOpenIDConnectProviderInput) (*service.Request, *iam.AddClientIDToOpenIDConnectProviderOutput) | 	AddClientIDToOpenIDConnectProviderRequest(*iam.AddClientIDToOpenIDConnectProviderInput) (*request.Request, *iam.AddClientIDToOpenIDConnectProviderOutput) | ||||||
|  |  | ||||||
| 	AddClientIDToOpenIDConnectProvider(*iam.AddClientIDToOpenIDConnectProviderInput) (*iam.AddClientIDToOpenIDConnectProviderOutput, error) | 	AddClientIDToOpenIDConnectProvider(*iam.AddClientIDToOpenIDConnectProviderInput) (*iam.AddClientIDToOpenIDConnectProviderOutput, error) | ||||||
|  |  | ||||||
| 	AddRoleToInstanceProfileRequest(*iam.AddRoleToInstanceProfileInput) (*service.Request, *iam.AddRoleToInstanceProfileOutput) | 	AddRoleToInstanceProfileRequest(*iam.AddRoleToInstanceProfileInput) (*request.Request, *iam.AddRoleToInstanceProfileOutput) | ||||||
|  |  | ||||||
| 	AddRoleToInstanceProfile(*iam.AddRoleToInstanceProfileInput) (*iam.AddRoleToInstanceProfileOutput, error) | 	AddRoleToInstanceProfile(*iam.AddRoleToInstanceProfileInput) (*iam.AddRoleToInstanceProfileOutput, error) | ||||||
|  |  | ||||||
| 	AddUserToGroupRequest(*iam.AddUserToGroupInput) (*service.Request, *iam.AddUserToGroupOutput) | 	AddUserToGroupRequest(*iam.AddUserToGroupInput) (*request.Request, *iam.AddUserToGroupOutput) | ||||||
|  |  | ||||||
| 	AddUserToGroup(*iam.AddUserToGroupInput) (*iam.AddUserToGroupOutput, error) | 	AddUserToGroup(*iam.AddUserToGroupInput) (*iam.AddUserToGroupOutput, error) | ||||||
|  |  | ||||||
| 	AttachGroupPolicyRequest(*iam.AttachGroupPolicyInput) (*service.Request, *iam.AttachGroupPolicyOutput) | 	AttachGroupPolicyRequest(*iam.AttachGroupPolicyInput) (*request.Request, *iam.AttachGroupPolicyOutput) | ||||||
|  |  | ||||||
| 	AttachGroupPolicy(*iam.AttachGroupPolicyInput) (*iam.AttachGroupPolicyOutput, error) | 	AttachGroupPolicy(*iam.AttachGroupPolicyInput) (*iam.AttachGroupPolicyOutput, error) | ||||||
|  |  | ||||||
| 	AttachRolePolicyRequest(*iam.AttachRolePolicyInput) (*service.Request, *iam.AttachRolePolicyOutput) | 	AttachRolePolicyRequest(*iam.AttachRolePolicyInput) (*request.Request, *iam.AttachRolePolicyOutput) | ||||||
|  |  | ||||||
| 	AttachRolePolicy(*iam.AttachRolePolicyInput) (*iam.AttachRolePolicyOutput, error) | 	AttachRolePolicy(*iam.AttachRolePolicyInput) (*iam.AttachRolePolicyOutput, error) | ||||||
|  |  | ||||||
| 	AttachUserPolicyRequest(*iam.AttachUserPolicyInput) (*service.Request, *iam.AttachUserPolicyOutput) | 	AttachUserPolicyRequest(*iam.AttachUserPolicyInput) (*request.Request, *iam.AttachUserPolicyOutput) | ||||||
|  |  | ||||||
| 	AttachUserPolicy(*iam.AttachUserPolicyInput) (*iam.AttachUserPolicyOutput, error) | 	AttachUserPolicy(*iam.AttachUserPolicyInput) (*iam.AttachUserPolicyOutput, error) | ||||||
|  |  | ||||||
| 	ChangePasswordRequest(*iam.ChangePasswordInput) (*service.Request, *iam.ChangePasswordOutput) | 	ChangePasswordRequest(*iam.ChangePasswordInput) (*request.Request, *iam.ChangePasswordOutput) | ||||||
|  |  | ||||||
| 	ChangePassword(*iam.ChangePasswordInput) (*iam.ChangePasswordOutput, error) | 	ChangePassword(*iam.ChangePasswordInput) (*iam.ChangePasswordOutput, error) | ||||||
|  |  | ||||||
| 	CreateAccessKeyRequest(*iam.CreateAccessKeyInput) (*service.Request, *iam.CreateAccessKeyOutput) | 	CreateAccessKeyRequest(*iam.CreateAccessKeyInput) (*request.Request, *iam.CreateAccessKeyOutput) | ||||||
|  |  | ||||||
| 	CreateAccessKey(*iam.CreateAccessKeyInput) (*iam.CreateAccessKeyOutput, error) | 	CreateAccessKey(*iam.CreateAccessKeyInput) (*iam.CreateAccessKeyOutput, error) | ||||||
|  |  | ||||||
| 	CreateAccountAliasRequest(*iam.CreateAccountAliasInput) (*service.Request, *iam.CreateAccountAliasOutput) | 	CreateAccountAliasRequest(*iam.CreateAccountAliasInput) (*request.Request, *iam.CreateAccountAliasOutput) | ||||||
|  |  | ||||||
| 	CreateAccountAlias(*iam.CreateAccountAliasInput) (*iam.CreateAccountAliasOutput, error) | 	CreateAccountAlias(*iam.CreateAccountAliasInput) (*iam.CreateAccountAliasOutput, error) | ||||||
|  |  | ||||||
| 	CreateGroupRequest(*iam.CreateGroupInput) (*service.Request, *iam.CreateGroupOutput) | 	CreateGroupRequest(*iam.CreateGroupInput) (*request.Request, *iam.CreateGroupOutput) | ||||||
|  |  | ||||||
| 	CreateGroup(*iam.CreateGroupInput) (*iam.CreateGroupOutput, error) | 	CreateGroup(*iam.CreateGroupInput) (*iam.CreateGroupOutput, error) | ||||||
|  |  | ||||||
| 	CreateInstanceProfileRequest(*iam.CreateInstanceProfileInput) (*service.Request, *iam.CreateInstanceProfileOutput) | 	CreateInstanceProfileRequest(*iam.CreateInstanceProfileInput) (*request.Request, *iam.CreateInstanceProfileOutput) | ||||||
|  |  | ||||||
| 	CreateInstanceProfile(*iam.CreateInstanceProfileInput) (*iam.CreateInstanceProfileOutput, error) | 	CreateInstanceProfile(*iam.CreateInstanceProfileInput) (*iam.CreateInstanceProfileOutput, error) | ||||||
|  |  | ||||||
| 	CreateLoginProfileRequest(*iam.CreateLoginProfileInput) (*service.Request, *iam.CreateLoginProfileOutput) | 	CreateLoginProfileRequest(*iam.CreateLoginProfileInput) (*request.Request, *iam.CreateLoginProfileOutput) | ||||||
|  |  | ||||||
| 	CreateLoginProfile(*iam.CreateLoginProfileInput) (*iam.CreateLoginProfileOutput, error) | 	CreateLoginProfile(*iam.CreateLoginProfileInput) (*iam.CreateLoginProfileOutput, error) | ||||||
|  |  | ||||||
| 	CreateOpenIDConnectProviderRequest(*iam.CreateOpenIDConnectProviderInput) (*service.Request, *iam.CreateOpenIDConnectProviderOutput) | 	CreateOpenIDConnectProviderRequest(*iam.CreateOpenIDConnectProviderInput) (*request.Request, *iam.CreateOpenIDConnectProviderOutput) | ||||||
|  |  | ||||||
| 	CreateOpenIDConnectProvider(*iam.CreateOpenIDConnectProviderInput) (*iam.CreateOpenIDConnectProviderOutput, error) | 	CreateOpenIDConnectProvider(*iam.CreateOpenIDConnectProviderInput) (*iam.CreateOpenIDConnectProviderOutput, error) | ||||||
|  |  | ||||||
| 	CreatePolicyRequest(*iam.CreatePolicyInput) (*service.Request, *iam.CreatePolicyOutput) | 	CreatePolicyRequest(*iam.CreatePolicyInput) (*request.Request, *iam.CreatePolicyOutput) | ||||||
|  |  | ||||||
| 	CreatePolicy(*iam.CreatePolicyInput) (*iam.CreatePolicyOutput, error) | 	CreatePolicy(*iam.CreatePolicyInput) (*iam.CreatePolicyOutput, error) | ||||||
|  |  | ||||||
| 	CreatePolicyVersionRequest(*iam.CreatePolicyVersionInput) (*service.Request, *iam.CreatePolicyVersionOutput) | 	CreatePolicyVersionRequest(*iam.CreatePolicyVersionInput) (*request.Request, *iam.CreatePolicyVersionOutput) | ||||||
|  |  | ||||||
| 	CreatePolicyVersion(*iam.CreatePolicyVersionInput) (*iam.CreatePolicyVersionOutput, error) | 	CreatePolicyVersion(*iam.CreatePolicyVersionInput) (*iam.CreatePolicyVersionOutput, error) | ||||||
|  |  | ||||||
| 	CreateRoleRequest(*iam.CreateRoleInput) (*service.Request, *iam.CreateRoleOutput) | 	CreateRoleRequest(*iam.CreateRoleInput) (*request.Request, *iam.CreateRoleOutput) | ||||||
|  |  | ||||||
| 	CreateRole(*iam.CreateRoleInput) (*iam.CreateRoleOutput, error) | 	CreateRole(*iam.CreateRoleInput) (*iam.CreateRoleOutput, error) | ||||||
|  |  | ||||||
| 	CreateSAMLProviderRequest(*iam.CreateSAMLProviderInput) (*service.Request, *iam.CreateSAMLProviderOutput) | 	CreateSAMLProviderRequest(*iam.CreateSAMLProviderInput) (*request.Request, *iam.CreateSAMLProviderOutput) | ||||||
|  |  | ||||||
| 	CreateSAMLProvider(*iam.CreateSAMLProviderInput) (*iam.CreateSAMLProviderOutput, error) | 	CreateSAMLProvider(*iam.CreateSAMLProviderInput) (*iam.CreateSAMLProviderOutput, error) | ||||||
|  |  | ||||||
| 	CreateUserRequest(*iam.CreateUserInput) (*service.Request, *iam.CreateUserOutput) | 	CreateUserRequest(*iam.CreateUserInput) (*request.Request, *iam.CreateUserOutput) | ||||||
|  |  | ||||||
| 	CreateUser(*iam.CreateUserInput) (*iam.CreateUserOutput, error) | 	CreateUser(*iam.CreateUserInput) (*iam.CreateUserOutput, error) | ||||||
|  |  | ||||||
| 	CreateVirtualMFADeviceRequest(*iam.CreateVirtualMFADeviceInput) (*service.Request, *iam.CreateVirtualMFADeviceOutput) | 	CreateVirtualMFADeviceRequest(*iam.CreateVirtualMFADeviceInput) (*request.Request, *iam.CreateVirtualMFADeviceOutput) | ||||||
|  |  | ||||||
| 	CreateVirtualMFADevice(*iam.CreateVirtualMFADeviceInput) (*iam.CreateVirtualMFADeviceOutput, error) | 	CreateVirtualMFADevice(*iam.CreateVirtualMFADeviceInput) (*iam.CreateVirtualMFADeviceOutput, error) | ||||||
|  |  | ||||||
| 	DeactivateMFADeviceRequest(*iam.DeactivateMFADeviceInput) (*service.Request, *iam.DeactivateMFADeviceOutput) | 	DeactivateMFADeviceRequest(*iam.DeactivateMFADeviceInput) (*request.Request, *iam.DeactivateMFADeviceOutput) | ||||||
|  |  | ||||||
| 	DeactivateMFADevice(*iam.DeactivateMFADeviceInput) (*iam.DeactivateMFADeviceOutput, error) | 	DeactivateMFADevice(*iam.DeactivateMFADeviceInput) (*iam.DeactivateMFADeviceOutput, error) | ||||||
|  |  | ||||||
| 	DeleteAccessKeyRequest(*iam.DeleteAccessKeyInput) (*service.Request, *iam.DeleteAccessKeyOutput) | 	DeleteAccessKeyRequest(*iam.DeleteAccessKeyInput) (*request.Request, *iam.DeleteAccessKeyOutput) | ||||||
|  |  | ||||||
| 	DeleteAccessKey(*iam.DeleteAccessKeyInput) (*iam.DeleteAccessKeyOutput, error) | 	DeleteAccessKey(*iam.DeleteAccessKeyInput) (*iam.DeleteAccessKeyOutput, error) | ||||||
|  |  | ||||||
| 	DeleteAccountAliasRequest(*iam.DeleteAccountAliasInput) (*service.Request, *iam.DeleteAccountAliasOutput) | 	DeleteAccountAliasRequest(*iam.DeleteAccountAliasInput) (*request.Request, *iam.DeleteAccountAliasOutput) | ||||||
|  |  | ||||||
| 	DeleteAccountAlias(*iam.DeleteAccountAliasInput) (*iam.DeleteAccountAliasOutput, error) | 	DeleteAccountAlias(*iam.DeleteAccountAliasInput) (*iam.DeleteAccountAliasOutput, error) | ||||||
|  |  | ||||||
| 	DeleteAccountPasswordPolicyRequest(*iam.DeleteAccountPasswordPolicyInput) (*service.Request, *iam.DeleteAccountPasswordPolicyOutput) | 	DeleteAccountPasswordPolicyRequest(*iam.DeleteAccountPasswordPolicyInput) (*request.Request, *iam.DeleteAccountPasswordPolicyOutput) | ||||||
|  |  | ||||||
| 	DeleteAccountPasswordPolicy(*iam.DeleteAccountPasswordPolicyInput) (*iam.DeleteAccountPasswordPolicyOutput, error) | 	DeleteAccountPasswordPolicy(*iam.DeleteAccountPasswordPolicyInput) (*iam.DeleteAccountPasswordPolicyOutput, error) | ||||||
|  |  | ||||||
| 	DeleteGroupRequest(*iam.DeleteGroupInput) (*service.Request, *iam.DeleteGroupOutput) | 	DeleteGroupRequest(*iam.DeleteGroupInput) (*request.Request, *iam.DeleteGroupOutput) | ||||||
|  |  | ||||||
| 	DeleteGroup(*iam.DeleteGroupInput) (*iam.DeleteGroupOutput, error) | 	DeleteGroup(*iam.DeleteGroupInput) (*iam.DeleteGroupOutput, error) | ||||||
|  |  | ||||||
| 	DeleteGroupPolicyRequest(*iam.DeleteGroupPolicyInput) (*service.Request, *iam.DeleteGroupPolicyOutput) | 	DeleteGroupPolicyRequest(*iam.DeleteGroupPolicyInput) (*request.Request, *iam.DeleteGroupPolicyOutput) | ||||||
|  |  | ||||||
| 	DeleteGroupPolicy(*iam.DeleteGroupPolicyInput) (*iam.DeleteGroupPolicyOutput, error) | 	DeleteGroupPolicy(*iam.DeleteGroupPolicyInput) (*iam.DeleteGroupPolicyOutput, error) | ||||||
|  |  | ||||||
| 	DeleteInstanceProfileRequest(*iam.DeleteInstanceProfileInput) (*service.Request, *iam.DeleteInstanceProfileOutput) | 	DeleteInstanceProfileRequest(*iam.DeleteInstanceProfileInput) (*request.Request, *iam.DeleteInstanceProfileOutput) | ||||||
|  |  | ||||||
| 	DeleteInstanceProfile(*iam.DeleteInstanceProfileInput) (*iam.DeleteInstanceProfileOutput, error) | 	DeleteInstanceProfile(*iam.DeleteInstanceProfileInput) (*iam.DeleteInstanceProfileOutput, error) | ||||||
|  |  | ||||||
| 	DeleteLoginProfileRequest(*iam.DeleteLoginProfileInput) (*service.Request, *iam.DeleteLoginProfileOutput) | 	DeleteLoginProfileRequest(*iam.DeleteLoginProfileInput) (*request.Request, *iam.DeleteLoginProfileOutput) | ||||||
|  |  | ||||||
| 	DeleteLoginProfile(*iam.DeleteLoginProfileInput) (*iam.DeleteLoginProfileOutput, error) | 	DeleteLoginProfile(*iam.DeleteLoginProfileInput) (*iam.DeleteLoginProfileOutput, error) | ||||||
|  |  | ||||||
| 	DeleteOpenIDConnectProviderRequest(*iam.DeleteOpenIDConnectProviderInput) (*service.Request, *iam.DeleteOpenIDConnectProviderOutput) | 	DeleteOpenIDConnectProviderRequest(*iam.DeleteOpenIDConnectProviderInput) (*request.Request, *iam.DeleteOpenIDConnectProviderOutput) | ||||||
|  |  | ||||||
| 	DeleteOpenIDConnectProvider(*iam.DeleteOpenIDConnectProviderInput) (*iam.DeleteOpenIDConnectProviderOutput, error) | 	DeleteOpenIDConnectProvider(*iam.DeleteOpenIDConnectProviderInput) (*iam.DeleteOpenIDConnectProviderOutput, error) | ||||||
|  |  | ||||||
| 	DeletePolicyRequest(*iam.DeletePolicyInput) (*service.Request, *iam.DeletePolicyOutput) | 	DeletePolicyRequest(*iam.DeletePolicyInput) (*request.Request, *iam.DeletePolicyOutput) | ||||||
|  |  | ||||||
| 	DeletePolicy(*iam.DeletePolicyInput) (*iam.DeletePolicyOutput, error) | 	DeletePolicy(*iam.DeletePolicyInput) (*iam.DeletePolicyOutput, error) | ||||||
|  |  | ||||||
| 	DeletePolicyVersionRequest(*iam.DeletePolicyVersionInput) (*service.Request, *iam.DeletePolicyVersionOutput) | 	DeletePolicyVersionRequest(*iam.DeletePolicyVersionInput) (*request.Request, *iam.DeletePolicyVersionOutput) | ||||||
|  |  | ||||||
| 	DeletePolicyVersion(*iam.DeletePolicyVersionInput) (*iam.DeletePolicyVersionOutput, error) | 	DeletePolicyVersion(*iam.DeletePolicyVersionInput) (*iam.DeletePolicyVersionOutput, error) | ||||||
|  |  | ||||||
| 	DeleteRoleRequest(*iam.DeleteRoleInput) (*service.Request, *iam.DeleteRoleOutput) | 	DeleteRoleRequest(*iam.DeleteRoleInput) (*request.Request, *iam.DeleteRoleOutput) | ||||||
|  |  | ||||||
| 	DeleteRole(*iam.DeleteRoleInput) (*iam.DeleteRoleOutput, error) | 	DeleteRole(*iam.DeleteRoleInput) (*iam.DeleteRoleOutput, error) | ||||||
|  |  | ||||||
| 	DeleteRolePolicyRequest(*iam.DeleteRolePolicyInput) (*service.Request, *iam.DeleteRolePolicyOutput) | 	DeleteRolePolicyRequest(*iam.DeleteRolePolicyInput) (*request.Request, *iam.DeleteRolePolicyOutput) | ||||||
|  |  | ||||||
| 	DeleteRolePolicy(*iam.DeleteRolePolicyInput) (*iam.DeleteRolePolicyOutput, error) | 	DeleteRolePolicy(*iam.DeleteRolePolicyInput) (*iam.DeleteRolePolicyOutput, error) | ||||||
|  |  | ||||||
| 	DeleteSAMLProviderRequest(*iam.DeleteSAMLProviderInput) (*service.Request, *iam.DeleteSAMLProviderOutput) | 	DeleteSAMLProviderRequest(*iam.DeleteSAMLProviderInput) (*request.Request, *iam.DeleteSAMLProviderOutput) | ||||||
|  |  | ||||||
| 	DeleteSAMLProvider(*iam.DeleteSAMLProviderInput) (*iam.DeleteSAMLProviderOutput, error) | 	DeleteSAMLProvider(*iam.DeleteSAMLProviderInput) (*iam.DeleteSAMLProviderOutput, error) | ||||||
|  |  | ||||||
| 	DeleteSSHPublicKeyRequest(*iam.DeleteSSHPublicKeyInput) (*service.Request, *iam.DeleteSSHPublicKeyOutput) | 	DeleteSSHPublicKeyRequest(*iam.DeleteSSHPublicKeyInput) (*request.Request, *iam.DeleteSSHPublicKeyOutput) | ||||||
|  |  | ||||||
| 	DeleteSSHPublicKey(*iam.DeleteSSHPublicKeyInput) (*iam.DeleteSSHPublicKeyOutput, error) | 	DeleteSSHPublicKey(*iam.DeleteSSHPublicKeyInput) (*iam.DeleteSSHPublicKeyOutput, error) | ||||||
|  |  | ||||||
| 	DeleteServerCertificateRequest(*iam.DeleteServerCertificateInput) (*service.Request, *iam.DeleteServerCertificateOutput) | 	DeleteServerCertificateRequest(*iam.DeleteServerCertificateInput) (*request.Request, *iam.DeleteServerCertificateOutput) | ||||||
|  |  | ||||||
| 	DeleteServerCertificate(*iam.DeleteServerCertificateInput) (*iam.DeleteServerCertificateOutput, error) | 	DeleteServerCertificate(*iam.DeleteServerCertificateInput) (*iam.DeleteServerCertificateOutput, error) | ||||||
|  |  | ||||||
| 	DeleteSigningCertificateRequest(*iam.DeleteSigningCertificateInput) (*service.Request, *iam.DeleteSigningCertificateOutput) | 	DeleteSigningCertificateRequest(*iam.DeleteSigningCertificateInput) (*request.Request, *iam.DeleteSigningCertificateOutput) | ||||||
|  |  | ||||||
| 	DeleteSigningCertificate(*iam.DeleteSigningCertificateInput) (*iam.DeleteSigningCertificateOutput, error) | 	DeleteSigningCertificate(*iam.DeleteSigningCertificateInput) (*iam.DeleteSigningCertificateOutput, error) | ||||||
|  |  | ||||||
| 	DeleteUserRequest(*iam.DeleteUserInput) (*service.Request, *iam.DeleteUserOutput) | 	DeleteUserRequest(*iam.DeleteUserInput) (*request.Request, *iam.DeleteUserOutput) | ||||||
|  |  | ||||||
| 	DeleteUser(*iam.DeleteUserInput) (*iam.DeleteUserOutput, error) | 	DeleteUser(*iam.DeleteUserInput) (*iam.DeleteUserOutput, error) | ||||||
|  |  | ||||||
| 	DeleteUserPolicyRequest(*iam.DeleteUserPolicyInput) (*service.Request, *iam.DeleteUserPolicyOutput) | 	DeleteUserPolicyRequest(*iam.DeleteUserPolicyInput) (*request.Request, *iam.DeleteUserPolicyOutput) | ||||||
|  |  | ||||||
| 	DeleteUserPolicy(*iam.DeleteUserPolicyInput) (*iam.DeleteUserPolicyOutput, error) | 	DeleteUserPolicy(*iam.DeleteUserPolicyInput) (*iam.DeleteUserPolicyOutput, error) | ||||||
|  |  | ||||||
| 	DeleteVirtualMFADeviceRequest(*iam.DeleteVirtualMFADeviceInput) (*service.Request, *iam.DeleteVirtualMFADeviceOutput) | 	DeleteVirtualMFADeviceRequest(*iam.DeleteVirtualMFADeviceInput) (*request.Request, *iam.DeleteVirtualMFADeviceOutput) | ||||||
|  |  | ||||||
| 	DeleteVirtualMFADevice(*iam.DeleteVirtualMFADeviceInput) (*iam.DeleteVirtualMFADeviceOutput, error) | 	DeleteVirtualMFADevice(*iam.DeleteVirtualMFADeviceInput) (*iam.DeleteVirtualMFADeviceOutput, error) | ||||||
|  |  | ||||||
| 	DetachGroupPolicyRequest(*iam.DetachGroupPolicyInput) (*service.Request, *iam.DetachGroupPolicyOutput) | 	DetachGroupPolicyRequest(*iam.DetachGroupPolicyInput) (*request.Request, *iam.DetachGroupPolicyOutput) | ||||||
|  |  | ||||||
| 	DetachGroupPolicy(*iam.DetachGroupPolicyInput) (*iam.DetachGroupPolicyOutput, error) | 	DetachGroupPolicy(*iam.DetachGroupPolicyInput) (*iam.DetachGroupPolicyOutput, error) | ||||||
|  |  | ||||||
| 	DetachRolePolicyRequest(*iam.DetachRolePolicyInput) (*service.Request, *iam.DetachRolePolicyOutput) | 	DetachRolePolicyRequest(*iam.DetachRolePolicyInput) (*request.Request, *iam.DetachRolePolicyOutput) | ||||||
|  |  | ||||||
| 	DetachRolePolicy(*iam.DetachRolePolicyInput) (*iam.DetachRolePolicyOutput, error) | 	DetachRolePolicy(*iam.DetachRolePolicyInput) (*iam.DetachRolePolicyOutput, error) | ||||||
|  |  | ||||||
| 	DetachUserPolicyRequest(*iam.DetachUserPolicyInput) (*service.Request, *iam.DetachUserPolicyOutput) | 	DetachUserPolicyRequest(*iam.DetachUserPolicyInput) (*request.Request, *iam.DetachUserPolicyOutput) | ||||||
|  |  | ||||||
| 	DetachUserPolicy(*iam.DetachUserPolicyInput) (*iam.DetachUserPolicyOutput, error) | 	DetachUserPolicy(*iam.DetachUserPolicyInput) (*iam.DetachUserPolicyOutput, error) | ||||||
|  |  | ||||||
| 	EnableMFADeviceRequest(*iam.EnableMFADeviceInput) (*service.Request, *iam.EnableMFADeviceOutput) | 	EnableMFADeviceRequest(*iam.EnableMFADeviceInput) (*request.Request, *iam.EnableMFADeviceOutput) | ||||||
|  |  | ||||||
| 	EnableMFADevice(*iam.EnableMFADeviceInput) (*iam.EnableMFADeviceOutput, error) | 	EnableMFADevice(*iam.EnableMFADeviceInput) (*iam.EnableMFADeviceOutput, error) | ||||||
|  |  | ||||||
| 	GenerateCredentialReportRequest(*iam.GenerateCredentialReportInput) (*service.Request, *iam.GenerateCredentialReportOutput) | 	GenerateCredentialReportRequest(*iam.GenerateCredentialReportInput) (*request.Request, *iam.GenerateCredentialReportOutput) | ||||||
|  |  | ||||||
| 	GenerateCredentialReport(*iam.GenerateCredentialReportInput) (*iam.GenerateCredentialReportOutput, error) | 	GenerateCredentialReport(*iam.GenerateCredentialReportInput) (*iam.GenerateCredentialReportOutput, error) | ||||||
|  |  | ||||||
| 	GetAccessKeyLastUsedRequest(*iam.GetAccessKeyLastUsedInput) (*service.Request, *iam.GetAccessKeyLastUsedOutput) | 	GetAccessKeyLastUsedRequest(*iam.GetAccessKeyLastUsedInput) (*request.Request, *iam.GetAccessKeyLastUsedOutput) | ||||||
|  |  | ||||||
| 	GetAccessKeyLastUsed(*iam.GetAccessKeyLastUsedInput) (*iam.GetAccessKeyLastUsedOutput, error) | 	GetAccessKeyLastUsed(*iam.GetAccessKeyLastUsedInput) (*iam.GetAccessKeyLastUsedOutput, error) | ||||||
|  |  | ||||||
| 	GetAccountAuthorizationDetailsRequest(*iam.GetAccountAuthorizationDetailsInput) (*service.Request, *iam.GetAccountAuthorizationDetailsOutput) | 	GetAccountAuthorizationDetailsRequest(*iam.GetAccountAuthorizationDetailsInput) (*request.Request, *iam.GetAccountAuthorizationDetailsOutput) | ||||||
|  |  | ||||||
| 	GetAccountAuthorizationDetails(*iam.GetAccountAuthorizationDetailsInput) (*iam.GetAccountAuthorizationDetailsOutput, error) | 	GetAccountAuthorizationDetails(*iam.GetAccountAuthorizationDetailsInput) (*iam.GetAccountAuthorizationDetailsOutput, error) | ||||||
|  |  | ||||||
| 	GetAccountAuthorizationDetailsPages(*iam.GetAccountAuthorizationDetailsInput, func(*iam.GetAccountAuthorizationDetailsOutput, bool) bool) error | 	GetAccountAuthorizationDetailsPages(*iam.GetAccountAuthorizationDetailsInput, func(*iam.GetAccountAuthorizationDetailsOutput, bool) bool) error | ||||||
|  |  | ||||||
| 	GetAccountPasswordPolicyRequest(*iam.GetAccountPasswordPolicyInput) (*service.Request, *iam.GetAccountPasswordPolicyOutput) | 	GetAccountPasswordPolicyRequest(*iam.GetAccountPasswordPolicyInput) (*request.Request, *iam.GetAccountPasswordPolicyOutput) | ||||||
|  |  | ||||||
| 	GetAccountPasswordPolicy(*iam.GetAccountPasswordPolicyInput) (*iam.GetAccountPasswordPolicyOutput, error) | 	GetAccountPasswordPolicy(*iam.GetAccountPasswordPolicyInput) (*iam.GetAccountPasswordPolicyOutput, error) | ||||||
|  |  | ||||||
| 	GetAccountSummaryRequest(*iam.GetAccountSummaryInput) (*service.Request, *iam.GetAccountSummaryOutput) | 	GetAccountSummaryRequest(*iam.GetAccountSummaryInput) (*request.Request, *iam.GetAccountSummaryOutput) | ||||||
|  |  | ||||||
| 	GetAccountSummary(*iam.GetAccountSummaryInput) (*iam.GetAccountSummaryOutput, error) | 	GetAccountSummary(*iam.GetAccountSummaryInput) (*iam.GetAccountSummaryOutput, error) | ||||||
|  |  | ||||||
| 	GetCredentialReportRequest(*iam.GetCredentialReportInput) (*service.Request, *iam.GetCredentialReportOutput) | 	GetContextKeysForCustomPolicyRequest(*iam.GetContextKeysForCustomPolicyInput) (*request.Request, *iam.GetContextKeysForPolicyResponse) | ||||||
|  |  | ||||||
|  | 	GetContextKeysForCustomPolicy(*iam.GetContextKeysForCustomPolicyInput) (*iam.GetContextKeysForPolicyResponse, error) | ||||||
|  |  | ||||||
|  | 	GetContextKeysForPrincipalPolicyRequest(*iam.GetContextKeysForPrincipalPolicyInput) (*request.Request, *iam.GetContextKeysForPolicyResponse) | ||||||
|  |  | ||||||
|  | 	GetContextKeysForPrincipalPolicy(*iam.GetContextKeysForPrincipalPolicyInput) (*iam.GetContextKeysForPolicyResponse, error) | ||||||
|  |  | ||||||
|  | 	GetCredentialReportRequest(*iam.GetCredentialReportInput) (*request.Request, *iam.GetCredentialReportOutput) | ||||||
|  |  | ||||||
| 	GetCredentialReport(*iam.GetCredentialReportInput) (*iam.GetCredentialReportOutput, error) | 	GetCredentialReport(*iam.GetCredentialReportInput) (*iam.GetCredentialReportOutput, error) | ||||||
|  |  | ||||||
| 	GetGroupRequest(*iam.GetGroupInput) (*service.Request, *iam.GetGroupOutput) | 	GetGroupRequest(*iam.GetGroupInput) (*request.Request, *iam.GetGroupOutput) | ||||||
|  |  | ||||||
| 	GetGroup(*iam.GetGroupInput) (*iam.GetGroupOutput, error) | 	GetGroup(*iam.GetGroupInput) (*iam.GetGroupOutput, error) | ||||||
|  |  | ||||||
| 	GetGroupPages(*iam.GetGroupInput, func(*iam.GetGroupOutput, bool) bool) error | 	GetGroupPages(*iam.GetGroupInput, func(*iam.GetGroupOutput, bool) bool) error | ||||||
|  |  | ||||||
| 	GetGroupPolicyRequest(*iam.GetGroupPolicyInput) (*service.Request, *iam.GetGroupPolicyOutput) | 	GetGroupPolicyRequest(*iam.GetGroupPolicyInput) (*request.Request, *iam.GetGroupPolicyOutput) | ||||||
|  |  | ||||||
| 	GetGroupPolicy(*iam.GetGroupPolicyInput) (*iam.GetGroupPolicyOutput, error) | 	GetGroupPolicy(*iam.GetGroupPolicyInput) (*iam.GetGroupPolicyOutput, error) | ||||||
|  |  | ||||||
| 	GetInstanceProfileRequest(*iam.GetInstanceProfileInput) (*service.Request, *iam.GetInstanceProfileOutput) | 	GetInstanceProfileRequest(*iam.GetInstanceProfileInput) (*request.Request, *iam.GetInstanceProfileOutput) | ||||||
|  |  | ||||||
| 	GetInstanceProfile(*iam.GetInstanceProfileInput) (*iam.GetInstanceProfileOutput, error) | 	GetInstanceProfile(*iam.GetInstanceProfileInput) (*iam.GetInstanceProfileOutput, error) | ||||||
|  |  | ||||||
| 	GetLoginProfileRequest(*iam.GetLoginProfileInput) (*service.Request, *iam.GetLoginProfileOutput) | 	GetLoginProfileRequest(*iam.GetLoginProfileInput) (*request.Request, *iam.GetLoginProfileOutput) | ||||||
|  |  | ||||||
| 	GetLoginProfile(*iam.GetLoginProfileInput) (*iam.GetLoginProfileOutput, error) | 	GetLoginProfile(*iam.GetLoginProfileInput) (*iam.GetLoginProfileOutput, error) | ||||||
|  |  | ||||||
| 	GetOpenIDConnectProviderRequest(*iam.GetOpenIDConnectProviderInput) (*service.Request, *iam.GetOpenIDConnectProviderOutput) | 	GetOpenIDConnectProviderRequest(*iam.GetOpenIDConnectProviderInput) (*request.Request, *iam.GetOpenIDConnectProviderOutput) | ||||||
|  |  | ||||||
| 	GetOpenIDConnectProvider(*iam.GetOpenIDConnectProviderInput) (*iam.GetOpenIDConnectProviderOutput, error) | 	GetOpenIDConnectProvider(*iam.GetOpenIDConnectProviderInput) (*iam.GetOpenIDConnectProviderOutput, error) | ||||||
|  |  | ||||||
| 	GetPolicyRequest(*iam.GetPolicyInput) (*service.Request, *iam.GetPolicyOutput) | 	GetPolicyRequest(*iam.GetPolicyInput) (*request.Request, *iam.GetPolicyOutput) | ||||||
|  |  | ||||||
| 	GetPolicy(*iam.GetPolicyInput) (*iam.GetPolicyOutput, error) | 	GetPolicy(*iam.GetPolicyInput) (*iam.GetPolicyOutput, error) | ||||||
|  |  | ||||||
| 	GetPolicyVersionRequest(*iam.GetPolicyVersionInput) (*service.Request, *iam.GetPolicyVersionOutput) | 	GetPolicyVersionRequest(*iam.GetPolicyVersionInput) (*request.Request, *iam.GetPolicyVersionOutput) | ||||||
|  |  | ||||||
| 	GetPolicyVersion(*iam.GetPolicyVersionInput) (*iam.GetPolicyVersionOutput, error) | 	GetPolicyVersion(*iam.GetPolicyVersionInput) (*iam.GetPolicyVersionOutput, error) | ||||||
|  |  | ||||||
| 	GetRoleRequest(*iam.GetRoleInput) (*service.Request, *iam.GetRoleOutput) | 	GetRoleRequest(*iam.GetRoleInput) (*request.Request, *iam.GetRoleOutput) | ||||||
|  |  | ||||||
| 	GetRole(*iam.GetRoleInput) (*iam.GetRoleOutput, error) | 	GetRole(*iam.GetRoleInput) (*iam.GetRoleOutput, error) | ||||||
|  |  | ||||||
| 	GetRolePolicyRequest(*iam.GetRolePolicyInput) (*service.Request, *iam.GetRolePolicyOutput) | 	GetRolePolicyRequest(*iam.GetRolePolicyInput) (*request.Request, *iam.GetRolePolicyOutput) | ||||||
|  |  | ||||||
| 	GetRolePolicy(*iam.GetRolePolicyInput) (*iam.GetRolePolicyOutput, error) | 	GetRolePolicy(*iam.GetRolePolicyInput) (*iam.GetRolePolicyOutput, error) | ||||||
|  |  | ||||||
| 	GetSAMLProviderRequest(*iam.GetSAMLProviderInput) (*service.Request, *iam.GetSAMLProviderOutput) | 	GetSAMLProviderRequest(*iam.GetSAMLProviderInput) (*request.Request, *iam.GetSAMLProviderOutput) | ||||||
|  |  | ||||||
| 	GetSAMLProvider(*iam.GetSAMLProviderInput) (*iam.GetSAMLProviderOutput, error) | 	GetSAMLProvider(*iam.GetSAMLProviderInput) (*iam.GetSAMLProviderOutput, error) | ||||||
|  |  | ||||||
| 	GetSSHPublicKeyRequest(*iam.GetSSHPublicKeyInput) (*service.Request, *iam.GetSSHPublicKeyOutput) | 	GetSSHPublicKeyRequest(*iam.GetSSHPublicKeyInput) (*request.Request, *iam.GetSSHPublicKeyOutput) | ||||||
|  |  | ||||||
| 	GetSSHPublicKey(*iam.GetSSHPublicKeyInput) (*iam.GetSSHPublicKeyOutput, error) | 	GetSSHPublicKey(*iam.GetSSHPublicKeyInput) (*iam.GetSSHPublicKeyOutput, error) | ||||||
|  |  | ||||||
| 	GetServerCertificateRequest(*iam.GetServerCertificateInput) (*service.Request, *iam.GetServerCertificateOutput) | 	GetServerCertificateRequest(*iam.GetServerCertificateInput) (*request.Request, *iam.GetServerCertificateOutput) | ||||||
|  |  | ||||||
| 	GetServerCertificate(*iam.GetServerCertificateInput) (*iam.GetServerCertificateOutput, error) | 	GetServerCertificate(*iam.GetServerCertificateInput) (*iam.GetServerCertificateOutput, error) | ||||||
|  |  | ||||||
| 	GetUserRequest(*iam.GetUserInput) (*service.Request, *iam.GetUserOutput) | 	GetUserRequest(*iam.GetUserInput) (*request.Request, *iam.GetUserOutput) | ||||||
|  |  | ||||||
| 	GetUser(*iam.GetUserInput) (*iam.GetUserOutput, error) | 	GetUser(*iam.GetUserInput) (*iam.GetUserOutput, error) | ||||||
|  |  | ||||||
| 	GetUserPolicyRequest(*iam.GetUserPolicyInput) (*service.Request, *iam.GetUserPolicyOutput) | 	GetUserPolicyRequest(*iam.GetUserPolicyInput) (*request.Request, *iam.GetUserPolicyOutput) | ||||||
|  |  | ||||||
| 	GetUserPolicy(*iam.GetUserPolicyInput) (*iam.GetUserPolicyOutput, error) | 	GetUserPolicy(*iam.GetUserPolicyInput) (*iam.GetUserPolicyOutput, error) | ||||||
|  |  | ||||||
| 	ListAccessKeysRequest(*iam.ListAccessKeysInput) (*service.Request, *iam.ListAccessKeysOutput) | 	ListAccessKeysRequest(*iam.ListAccessKeysInput) (*request.Request, *iam.ListAccessKeysOutput) | ||||||
|  |  | ||||||
| 	ListAccessKeys(*iam.ListAccessKeysInput) (*iam.ListAccessKeysOutput, error) | 	ListAccessKeys(*iam.ListAccessKeysInput) (*iam.ListAccessKeysOutput, error) | ||||||
|  |  | ||||||
| 	ListAccessKeysPages(*iam.ListAccessKeysInput, func(*iam.ListAccessKeysOutput, bool) bool) error | 	ListAccessKeysPages(*iam.ListAccessKeysInput, func(*iam.ListAccessKeysOutput, bool) bool) error | ||||||
|  |  | ||||||
| 	ListAccountAliasesRequest(*iam.ListAccountAliasesInput) (*service.Request, *iam.ListAccountAliasesOutput) | 	ListAccountAliasesRequest(*iam.ListAccountAliasesInput) (*request.Request, *iam.ListAccountAliasesOutput) | ||||||
|  |  | ||||||
| 	ListAccountAliases(*iam.ListAccountAliasesInput) (*iam.ListAccountAliasesOutput, error) | 	ListAccountAliases(*iam.ListAccountAliasesInput) (*iam.ListAccountAliasesOutput, error) | ||||||
|  |  | ||||||
| 	ListAccountAliasesPages(*iam.ListAccountAliasesInput, func(*iam.ListAccountAliasesOutput, bool) bool) error | 	ListAccountAliasesPages(*iam.ListAccountAliasesInput, func(*iam.ListAccountAliasesOutput, bool) bool) error | ||||||
|  |  | ||||||
| 	ListAttachedGroupPoliciesRequest(*iam.ListAttachedGroupPoliciesInput) (*service.Request, *iam.ListAttachedGroupPoliciesOutput) | 	ListAttachedGroupPoliciesRequest(*iam.ListAttachedGroupPoliciesInput) (*request.Request, *iam.ListAttachedGroupPoliciesOutput) | ||||||
|  |  | ||||||
| 	ListAttachedGroupPolicies(*iam.ListAttachedGroupPoliciesInput) (*iam.ListAttachedGroupPoliciesOutput, error) | 	ListAttachedGroupPolicies(*iam.ListAttachedGroupPoliciesInput) (*iam.ListAttachedGroupPoliciesOutput, error) | ||||||
|  |  | ||||||
| 	ListAttachedGroupPoliciesPages(*iam.ListAttachedGroupPoliciesInput, func(*iam.ListAttachedGroupPoliciesOutput, bool) bool) error | 	ListAttachedGroupPoliciesPages(*iam.ListAttachedGroupPoliciesInput, func(*iam.ListAttachedGroupPoliciesOutput, bool) bool) error | ||||||
|  |  | ||||||
| 	ListAttachedRolePoliciesRequest(*iam.ListAttachedRolePoliciesInput) (*service.Request, *iam.ListAttachedRolePoliciesOutput) | 	ListAttachedRolePoliciesRequest(*iam.ListAttachedRolePoliciesInput) (*request.Request, *iam.ListAttachedRolePoliciesOutput) | ||||||
|  |  | ||||||
| 	ListAttachedRolePolicies(*iam.ListAttachedRolePoliciesInput) (*iam.ListAttachedRolePoliciesOutput, error) | 	ListAttachedRolePolicies(*iam.ListAttachedRolePoliciesInput) (*iam.ListAttachedRolePoliciesOutput, error) | ||||||
|  |  | ||||||
| 	ListAttachedRolePoliciesPages(*iam.ListAttachedRolePoliciesInput, func(*iam.ListAttachedRolePoliciesOutput, bool) bool) error | 	ListAttachedRolePoliciesPages(*iam.ListAttachedRolePoliciesInput, func(*iam.ListAttachedRolePoliciesOutput, bool) bool) error | ||||||
|  |  | ||||||
| 	ListAttachedUserPoliciesRequest(*iam.ListAttachedUserPoliciesInput) (*service.Request, *iam.ListAttachedUserPoliciesOutput) | 	ListAttachedUserPoliciesRequest(*iam.ListAttachedUserPoliciesInput) (*request.Request, *iam.ListAttachedUserPoliciesOutput) | ||||||
|  |  | ||||||
| 	ListAttachedUserPolicies(*iam.ListAttachedUserPoliciesInput) (*iam.ListAttachedUserPoliciesOutput, error) | 	ListAttachedUserPolicies(*iam.ListAttachedUserPoliciesInput) (*iam.ListAttachedUserPoliciesOutput, error) | ||||||
|  |  | ||||||
| 	ListAttachedUserPoliciesPages(*iam.ListAttachedUserPoliciesInput, func(*iam.ListAttachedUserPoliciesOutput, bool) bool) error | 	ListAttachedUserPoliciesPages(*iam.ListAttachedUserPoliciesInput, func(*iam.ListAttachedUserPoliciesOutput, bool) bool) error | ||||||
|  |  | ||||||
| 	ListEntitiesForPolicyRequest(*iam.ListEntitiesForPolicyInput) (*service.Request, *iam.ListEntitiesForPolicyOutput) | 	ListEntitiesForPolicyRequest(*iam.ListEntitiesForPolicyInput) (*request.Request, *iam.ListEntitiesForPolicyOutput) | ||||||
|  |  | ||||||
| 	ListEntitiesForPolicy(*iam.ListEntitiesForPolicyInput) (*iam.ListEntitiesForPolicyOutput, error) | 	ListEntitiesForPolicy(*iam.ListEntitiesForPolicyInput) (*iam.ListEntitiesForPolicyOutput, error) | ||||||
|  |  | ||||||
| 	ListEntitiesForPolicyPages(*iam.ListEntitiesForPolicyInput, func(*iam.ListEntitiesForPolicyOutput, bool) bool) error | 	ListEntitiesForPolicyPages(*iam.ListEntitiesForPolicyInput, func(*iam.ListEntitiesForPolicyOutput, bool) bool) error | ||||||
|  |  | ||||||
| 	ListGroupPoliciesRequest(*iam.ListGroupPoliciesInput) (*service.Request, *iam.ListGroupPoliciesOutput) | 	ListGroupPoliciesRequest(*iam.ListGroupPoliciesInput) (*request.Request, *iam.ListGroupPoliciesOutput) | ||||||
|  |  | ||||||
| 	ListGroupPolicies(*iam.ListGroupPoliciesInput) (*iam.ListGroupPoliciesOutput, error) | 	ListGroupPolicies(*iam.ListGroupPoliciesInput) (*iam.ListGroupPoliciesOutput, error) | ||||||
|  |  | ||||||
| 	ListGroupPoliciesPages(*iam.ListGroupPoliciesInput, func(*iam.ListGroupPoliciesOutput, bool) bool) error | 	ListGroupPoliciesPages(*iam.ListGroupPoliciesInput, func(*iam.ListGroupPoliciesOutput, bool) bool) error | ||||||
|  |  | ||||||
| 	ListGroupsRequest(*iam.ListGroupsInput) (*service.Request, *iam.ListGroupsOutput) | 	ListGroupsRequest(*iam.ListGroupsInput) (*request.Request, *iam.ListGroupsOutput) | ||||||
|  |  | ||||||
| 	ListGroups(*iam.ListGroupsInput) (*iam.ListGroupsOutput, error) | 	ListGroups(*iam.ListGroupsInput) (*iam.ListGroupsOutput, error) | ||||||
|  |  | ||||||
| 	ListGroupsPages(*iam.ListGroupsInput, func(*iam.ListGroupsOutput, bool) bool) error | 	ListGroupsPages(*iam.ListGroupsInput, func(*iam.ListGroupsOutput, bool) bool) error | ||||||
|  |  | ||||||
| 	ListGroupsForUserRequest(*iam.ListGroupsForUserInput) (*service.Request, *iam.ListGroupsForUserOutput) | 	ListGroupsForUserRequest(*iam.ListGroupsForUserInput) (*request.Request, *iam.ListGroupsForUserOutput) | ||||||
|  |  | ||||||
| 	ListGroupsForUser(*iam.ListGroupsForUserInput) (*iam.ListGroupsForUserOutput, error) | 	ListGroupsForUser(*iam.ListGroupsForUserInput) (*iam.ListGroupsForUserOutput, error) | ||||||
|  |  | ||||||
| 	ListGroupsForUserPages(*iam.ListGroupsForUserInput, func(*iam.ListGroupsForUserOutput, bool) bool) error | 	ListGroupsForUserPages(*iam.ListGroupsForUserInput, func(*iam.ListGroupsForUserOutput, bool) bool) error | ||||||
|  |  | ||||||
| 	ListInstanceProfilesRequest(*iam.ListInstanceProfilesInput) (*service.Request, *iam.ListInstanceProfilesOutput) | 	ListInstanceProfilesRequest(*iam.ListInstanceProfilesInput) (*request.Request, *iam.ListInstanceProfilesOutput) | ||||||
|  |  | ||||||
| 	ListInstanceProfiles(*iam.ListInstanceProfilesInput) (*iam.ListInstanceProfilesOutput, error) | 	ListInstanceProfiles(*iam.ListInstanceProfilesInput) (*iam.ListInstanceProfilesOutput, error) | ||||||
|  |  | ||||||
| 	ListInstanceProfilesPages(*iam.ListInstanceProfilesInput, func(*iam.ListInstanceProfilesOutput, bool) bool) error | 	ListInstanceProfilesPages(*iam.ListInstanceProfilesInput, func(*iam.ListInstanceProfilesOutput, bool) bool) error | ||||||
|  |  | ||||||
| 	ListInstanceProfilesForRoleRequest(*iam.ListInstanceProfilesForRoleInput) (*service.Request, *iam.ListInstanceProfilesForRoleOutput) | 	ListInstanceProfilesForRoleRequest(*iam.ListInstanceProfilesForRoleInput) (*request.Request, *iam.ListInstanceProfilesForRoleOutput) | ||||||
|  |  | ||||||
| 	ListInstanceProfilesForRole(*iam.ListInstanceProfilesForRoleInput) (*iam.ListInstanceProfilesForRoleOutput, error) | 	ListInstanceProfilesForRole(*iam.ListInstanceProfilesForRoleInput) (*iam.ListInstanceProfilesForRoleOutput, error) | ||||||
|  |  | ||||||
| 	ListInstanceProfilesForRolePages(*iam.ListInstanceProfilesForRoleInput, func(*iam.ListInstanceProfilesForRoleOutput, bool) bool) error | 	ListInstanceProfilesForRolePages(*iam.ListInstanceProfilesForRoleInput, func(*iam.ListInstanceProfilesForRoleOutput, bool) bool) error | ||||||
|  |  | ||||||
| 	ListMFADevicesRequest(*iam.ListMFADevicesInput) (*service.Request, *iam.ListMFADevicesOutput) | 	ListMFADevicesRequest(*iam.ListMFADevicesInput) (*request.Request, *iam.ListMFADevicesOutput) | ||||||
|  |  | ||||||
| 	ListMFADevices(*iam.ListMFADevicesInput) (*iam.ListMFADevicesOutput, error) | 	ListMFADevices(*iam.ListMFADevicesInput) (*iam.ListMFADevicesOutput, error) | ||||||
|  |  | ||||||
| 	ListMFADevicesPages(*iam.ListMFADevicesInput, func(*iam.ListMFADevicesOutput, bool) bool) error | 	ListMFADevicesPages(*iam.ListMFADevicesInput, func(*iam.ListMFADevicesOutput, bool) bool) error | ||||||
|  |  | ||||||
| 	ListOpenIDConnectProvidersRequest(*iam.ListOpenIDConnectProvidersInput) (*service.Request, *iam.ListOpenIDConnectProvidersOutput) | 	ListOpenIDConnectProvidersRequest(*iam.ListOpenIDConnectProvidersInput) (*request.Request, *iam.ListOpenIDConnectProvidersOutput) | ||||||
|  |  | ||||||
| 	ListOpenIDConnectProviders(*iam.ListOpenIDConnectProvidersInput) (*iam.ListOpenIDConnectProvidersOutput, error) | 	ListOpenIDConnectProviders(*iam.ListOpenIDConnectProvidersInput) (*iam.ListOpenIDConnectProvidersOutput, error) | ||||||
|  |  | ||||||
| 	ListPoliciesRequest(*iam.ListPoliciesInput) (*service.Request, *iam.ListPoliciesOutput) | 	ListPoliciesRequest(*iam.ListPoliciesInput) (*request.Request, *iam.ListPoliciesOutput) | ||||||
|  |  | ||||||
| 	ListPolicies(*iam.ListPoliciesInput) (*iam.ListPoliciesOutput, error) | 	ListPolicies(*iam.ListPoliciesInput) (*iam.ListPoliciesOutput, error) | ||||||
|  |  | ||||||
| 	ListPoliciesPages(*iam.ListPoliciesInput, func(*iam.ListPoliciesOutput, bool) bool) error | 	ListPoliciesPages(*iam.ListPoliciesInput, func(*iam.ListPoliciesOutput, bool) bool) error | ||||||
|  |  | ||||||
| 	ListPolicyVersionsRequest(*iam.ListPolicyVersionsInput) (*service.Request, *iam.ListPolicyVersionsOutput) | 	ListPolicyVersionsRequest(*iam.ListPolicyVersionsInput) (*request.Request, *iam.ListPolicyVersionsOutput) | ||||||
|  |  | ||||||
| 	ListPolicyVersions(*iam.ListPolicyVersionsInput) (*iam.ListPolicyVersionsOutput, error) | 	ListPolicyVersions(*iam.ListPolicyVersionsInput) (*iam.ListPolicyVersionsOutput, error) | ||||||
|  |  | ||||||
| 	ListRolePoliciesRequest(*iam.ListRolePoliciesInput) (*service.Request, *iam.ListRolePoliciesOutput) | 	ListRolePoliciesRequest(*iam.ListRolePoliciesInput) (*request.Request, *iam.ListRolePoliciesOutput) | ||||||
|  |  | ||||||
| 	ListRolePolicies(*iam.ListRolePoliciesInput) (*iam.ListRolePoliciesOutput, error) | 	ListRolePolicies(*iam.ListRolePoliciesInput) (*iam.ListRolePoliciesOutput, error) | ||||||
|  |  | ||||||
| 	ListRolePoliciesPages(*iam.ListRolePoliciesInput, func(*iam.ListRolePoliciesOutput, bool) bool) error | 	ListRolePoliciesPages(*iam.ListRolePoliciesInput, func(*iam.ListRolePoliciesOutput, bool) bool) error | ||||||
|  |  | ||||||
| 	ListRolesRequest(*iam.ListRolesInput) (*service.Request, *iam.ListRolesOutput) | 	ListRolesRequest(*iam.ListRolesInput) (*request.Request, *iam.ListRolesOutput) | ||||||
|  |  | ||||||
| 	ListRoles(*iam.ListRolesInput) (*iam.ListRolesOutput, error) | 	ListRoles(*iam.ListRolesInput) (*iam.ListRolesOutput, error) | ||||||
|  |  | ||||||
| 	ListRolesPages(*iam.ListRolesInput, func(*iam.ListRolesOutput, bool) bool) error | 	ListRolesPages(*iam.ListRolesInput, func(*iam.ListRolesOutput, bool) bool) error | ||||||
|  |  | ||||||
| 	ListSAMLProvidersRequest(*iam.ListSAMLProvidersInput) (*service.Request, *iam.ListSAMLProvidersOutput) | 	ListSAMLProvidersRequest(*iam.ListSAMLProvidersInput) (*request.Request, *iam.ListSAMLProvidersOutput) | ||||||
|  |  | ||||||
| 	ListSAMLProviders(*iam.ListSAMLProvidersInput) (*iam.ListSAMLProvidersOutput, error) | 	ListSAMLProviders(*iam.ListSAMLProvidersInput) (*iam.ListSAMLProvidersOutput, error) | ||||||
|  |  | ||||||
| 	ListSSHPublicKeysRequest(*iam.ListSSHPublicKeysInput) (*service.Request, *iam.ListSSHPublicKeysOutput) | 	ListSSHPublicKeysRequest(*iam.ListSSHPublicKeysInput) (*request.Request, *iam.ListSSHPublicKeysOutput) | ||||||
|  |  | ||||||
| 	ListSSHPublicKeys(*iam.ListSSHPublicKeysInput) (*iam.ListSSHPublicKeysOutput, error) | 	ListSSHPublicKeys(*iam.ListSSHPublicKeysInput) (*iam.ListSSHPublicKeysOutput, error) | ||||||
|  |  | ||||||
| 	ListServerCertificatesRequest(*iam.ListServerCertificatesInput) (*service.Request, *iam.ListServerCertificatesOutput) | 	ListServerCertificatesRequest(*iam.ListServerCertificatesInput) (*request.Request, *iam.ListServerCertificatesOutput) | ||||||
|  |  | ||||||
| 	ListServerCertificates(*iam.ListServerCertificatesInput) (*iam.ListServerCertificatesOutput, error) | 	ListServerCertificates(*iam.ListServerCertificatesInput) (*iam.ListServerCertificatesOutput, error) | ||||||
|  |  | ||||||
| 	ListServerCertificatesPages(*iam.ListServerCertificatesInput, func(*iam.ListServerCertificatesOutput, bool) bool) error | 	ListServerCertificatesPages(*iam.ListServerCertificatesInput, func(*iam.ListServerCertificatesOutput, bool) bool) error | ||||||
|  |  | ||||||
| 	ListSigningCertificatesRequest(*iam.ListSigningCertificatesInput) (*service.Request, *iam.ListSigningCertificatesOutput) | 	ListSigningCertificatesRequest(*iam.ListSigningCertificatesInput) (*request.Request, *iam.ListSigningCertificatesOutput) | ||||||
|  |  | ||||||
| 	ListSigningCertificates(*iam.ListSigningCertificatesInput) (*iam.ListSigningCertificatesOutput, error) | 	ListSigningCertificates(*iam.ListSigningCertificatesInput) (*iam.ListSigningCertificatesOutput, error) | ||||||
|  |  | ||||||
| 	ListSigningCertificatesPages(*iam.ListSigningCertificatesInput, func(*iam.ListSigningCertificatesOutput, bool) bool) error | 	ListSigningCertificatesPages(*iam.ListSigningCertificatesInput, func(*iam.ListSigningCertificatesOutput, bool) bool) error | ||||||
|  |  | ||||||
| 	ListUserPoliciesRequest(*iam.ListUserPoliciesInput) (*service.Request, *iam.ListUserPoliciesOutput) | 	ListUserPoliciesRequest(*iam.ListUserPoliciesInput) (*request.Request, *iam.ListUserPoliciesOutput) | ||||||
|  |  | ||||||
| 	ListUserPolicies(*iam.ListUserPoliciesInput) (*iam.ListUserPoliciesOutput, error) | 	ListUserPolicies(*iam.ListUserPoliciesInput) (*iam.ListUserPoliciesOutput, error) | ||||||
|  |  | ||||||
| 	ListUserPoliciesPages(*iam.ListUserPoliciesInput, func(*iam.ListUserPoliciesOutput, bool) bool) error | 	ListUserPoliciesPages(*iam.ListUserPoliciesInput, func(*iam.ListUserPoliciesOutput, bool) bool) error | ||||||
|  |  | ||||||
| 	ListUsersRequest(*iam.ListUsersInput) (*service.Request, *iam.ListUsersOutput) | 	ListUsersRequest(*iam.ListUsersInput) (*request.Request, *iam.ListUsersOutput) | ||||||
|  |  | ||||||
| 	ListUsers(*iam.ListUsersInput) (*iam.ListUsersOutput, error) | 	ListUsers(*iam.ListUsersInput) (*iam.ListUsersOutput, error) | ||||||
|  |  | ||||||
| 	ListUsersPages(*iam.ListUsersInput, func(*iam.ListUsersOutput, bool) bool) error | 	ListUsersPages(*iam.ListUsersInput, func(*iam.ListUsersOutput, bool) bool) error | ||||||
|  |  | ||||||
| 	ListVirtualMFADevicesRequest(*iam.ListVirtualMFADevicesInput) (*service.Request, *iam.ListVirtualMFADevicesOutput) | 	ListVirtualMFADevicesRequest(*iam.ListVirtualMFADevicesInput) (*request.Request, *iam.ListVirtualMFADevicesOutput) | ||||||
|  |  | ||||||
| 	ListVirtualMFADevices(*iam.ListVirtualMFADevicesInput) (*iam.ListVirtualMFADevicesOutput, error) | 	ListVirtualMFADevices(*iam.ListVirtualMFADevicesInput) (*iam.ListVirtualMFADevicesOutput, error) | ||||||
|  |  | ||||||
| 	ListVirtualMFADevicesPages(*iam.ListVirtualMFADevicesInput, func(*iam.ListVirtualMFADevicesOutput, bool) bool) error | 	ListVirtualMFADevicesPages(*iam.ListVirtualMFADevicesInput, func(*iam.ListVirtualMFADevicesOutput, bool) bool) error | ||||||
|  |  | ||||||
| 	PutGroupPolicyRequest(*iam.PutGroupPolicyInput) (*service.Request, *iam.PutGroupPolicyOutput) | 	PutGroupPolicyRequest(*iam.PutGroupPolicyInput) (*request.Request, *iam.PutGroupPolicyOutput) | ||||||
|  |  | ||||||
| 	PutGroupPolicy(*iam.PutGroupPolicyInput) (*iam.PutGroupPolicyOutput, error) | 	PutGroupPolicy(*iam.PutGroupPolicyInput) (*iam.PutGroupPolicyOutput, error) | ||||||
|  |  | ||||||
| 	PutRolePolicyRequest(*iam.PutRolePolicyInput) (*service.Request, *iam.PutRolePolicyOutput) | 	PutRolePolicyRequest(*iam.PutRolePolicyInput) (*request.Request, *iam.PutRolePolicyOutput) | ||||||
|  |  | ||||||
| 	PutRolePolicy(*iam.PutRolePolicyInput) (*iam.PutRolePolicyOutput, error) | 	PutRolePolicy(*iam.PutRolePolicyInput) (*iam.PutRolePolicyOutput, error) | ||||||
|  |  | ||||||
| 	PutUserPolicyRequest(*iam.PutUserPolicyInput) (*service.Request, *iam.PutUserPolicyOutput) | 	PutUserPolicyRequest(*iam.PutUserPolicyInput) (*request.Request, *iam.PutUserPolicyOutput) | ||||||
|  |  | ||||||
| 	PutUserPolicy(*iam.PutUserPolicyInput) (*iam.PutUserPolicyOutput, error) | 	PutUserPolicy(*iam.PutUserPolicyInput) (*iam.PutUserPolicyOutput, error) | ||||||
|  |  | ||||||
| 	RemoveClientIDFromOpenIDConnectProviderRequest(*iam.RemoveClientIDFromOpenIDConnectProviderInput) (*service.Request, *iam.RemoveClientIDFromOpenIDConnectProviderOutput) | 	RemoveClientIDFromOpenIDConnectProviderRequest(*iam.RemoveClientIDFromOpenIDConnectProviderInput) (*request.Request, *iam.RemoveClientIDFromOpenIDConnectProviderOutput) | ||||||
|  |  | ||||||
| 	RemoveClientIDFromOpenIDConnectProvider(*iam.RemoveClientIDFromOpenIDConnectProviderInput) (*iam.RemoveClientIDFromOpenIDConnectProviderOutput, error) | 	RemoveClientIDFromOpenIDConnectProvider(*iam.RemoveClientIDFromOpenIDConnectProviderInput) (*iam.RemoveClientIDFromOpenIDConnectProviderOutput, error) | ||||||
|  |  | ||||||
| 	RemoveRoleFromInstanceProfileRequest(*iam.RemoveRoleFromInstanceProfileInput) (*service.Request, *iam.RemoveRoleFromInstanceProfileOutput) | 	RemoveRoleFromInstanceProfileRequest(*iam.RemoveRoleFromInstanceProfileInput) (*request.Request, *iam.RemoveRoleFromInstanceProfileOutput) | ||||||
|  |  | ||||||
| 	RemoveRoleFromInstanceProfile(*iam.RemoveRoleFromInstanceProfileInput) (*iam.RemoveRoleFromInstanceProfileOutput, error) | 	RemoveRoleFromInstanceProfile(*iam.RemoveRoleFromInstanceProfileInput) (*iam.RemoveRoleFromInstanceProfileOutput, error) | ||||||
|  |  | ||||||
| 	RemoveUserFromGroupRequest(*iam.RemoveUserFromGroupInput) (*service.Request, *iam.RemoveUserFromGroupOutput) | 	RemoveUserFromGroupRequest(*iam.RemoveUserFromGroupInput) (*request.Request, *iam.RemoveUserFromGroupOutput) | ||||||
|  |  | ||||||
| 	RemoveUserFromGroup(*iam.RemoveUserFromGroupInput) (*iam.RemoveUserFromGroupOutput, error) | 	RemoveUserFromGroup(*iam.RemoveUserFromGroupInput) (*iam.RemoveUserFromGroupOutput, error) | ||||||
|  |  | ||||||
| 	ResyncMFADeviceRequest(*iam.ResyncMFADeviceInput) (*service.Request, *iam.ResyncMFADeviceOutput) | 	ResyncMFADeviceRequest(*iam.ResyncMFADeviceInput) (*request.Request, *iam.ResyncMFADeviceOutput) | ||||||
|  |  | ||||||
| 	ResyncMFADevice(*iam.ResyncMFADeviceInput) (*iam.ResyncMFADeviceOutput, error) | 	ResyncMFADevice(*iam.ResyncMFADeviceInput) (*iam.ResyncMFADeviceOutput, error) | ||||||
|  |  | ||||||
| 	SetDefaultPolicyVersionRequest(*iam.SetDefaultPolicyVersionInput) (*service.Request, *iam.SetDefaultPolicyVersionOutput) | 	SetDefaultPolicyVersionRequest(*iam.SetDefaultPolicyVersionInput) (*request.Request, *iam.SetDefaultPolicyVersionOutput) | ||||||
|  |  | ||||||
| 	SetDefaultPolicyVersion(*iam.SetDefaultPolicyVersionInput) (*iam.SetDefaultPolicyVersionOutput, error) | 	SetDefaultPolicyVersion(*iam.SetDefaultPolicyVersionInput) (*iam.SetDefaultPolicyVersionOutput, error) | ||||||
|  |  | ||||||
| 	UpdateAccessKeyRequest(*iam.UpdateAccessKeyInput) (*service.Request, *iam.UpdateAccessKeyOutput) | 	SimulateCustomPolicyRequest(*iam.SimulateCustomPolicyInput) (*request.Request, *iam.SimulatePolicyResponse) | ||||||
|  |  | ||||||
|  | 	SimulateCustomPolicy(*iam.SimulateCustomPolicyInput) (*iam.SimulatePolicyResponse, error) | ||||||
|  |  | ||||||
|  | 	SimulatePrincipalPolicyRequest(*iam.SimulatePrincipalPolicyInput) (*request.Request, *iam.SimulatePolicyResponse) | ||||||
|  |  | ||||||
|  | 	SimulatePrincipalPolicy(*iam.SimulatePrincipalPolicyInput) (*iam.SimulatePolicyResponse, error) | ||||||
|  |  | ||||||
|  | 	UpdateAccessKeyRequest(*iam.UpdateAccessKeyInput) (*request.Request, *iam.UpdateAccessKeyOutput) | ||||||
|  |  | ||||||
| 	UpdateAccessKey(*iam.UpdateAccessKeyInput) (*iam.UpdateAccessKeyOutput, error) | 	UpdateAccessKey(*iam.UpdateAccessKeyInput) (*iam.UpdateAccessKeyOutput, error) | ||||||
|  |  | ||||||
| 	UpdateAccountPasswordPolicyRequest(*iam.UpdateAccountPasswordPolicyInput) (*service.Request, *iam.UpdateAccountPasswordPolicyOutput) | 	UpdateAccountPasswordPolicyRequest(*iam.UpdateAccountPasswordPolicyInput) (*request.Request, *iam.UpdateAccountPasswordPolicyOutput) | ||||||
|  |  | ||||||
| 	UpdateAccountPasswordPolicy(*iam.UpdateAccountPasswordPolicyInput) (*iam.UpdateAccountPasswordPolicyOutput, error) | 	UpdateAccountPasswordPolicy(*iam.UpdateAccountPasswordPolicyInput) (*iam.UpdateAccountPasswordPolicyOutput, error) | ||||||
|  |  | ||||||
| 	UpdateAssumeRolePolicyRequest(*iam.UpdateAssumeRolePolicyInput) (*service.Request, *iam.UpdateAssumeRolePolicyOutput) | 	UpdateAssumeRolePolicyRequest(*iam.UpdateAssumeRolePolicyInput) (*request.Request, *iam.UpdateAssumeRolePolicyOutput) | ||||||
|  |  | ||||||
| 	UpdateAssumeRolePolicy(*iam.UpdateAssumeRolePolicyInput) (*iam.UpdateAssumeRolePolicyOutput, error) | 	UpdateAssumeRolePolicy(*iam.UpdateAssumeRolePolicyInput) (*iam.UpdateAssumeRolePolicyOutput, error) | ||||||
|  |  | ||||||
| 	UpdateGroupRequest(*iam.UpdateGroupInput) (*service.Request, *iam.UpdateGroupOutput) | 	UpdateGroupRequest(*iam.UpdateGroupInput) (*request.Request, *iam.UpdateGroupOutput) | ||||||
|  |  | ||||||
| 	UpdateGroup(*iam.UpdateGroupInput) (*iam.UpdateGroupOutput, error) | 	UpdateGroup(*iam.UpdateGroupInput) (*iam.UpdateGroupOutput, error) | ||||||
|  |  | ||||||
| 	UpdateLoginProfileRequest(*iam.UpdateLoginProfileInput) (*service.Request, *iam.UpdateLoginProfileOutput) | 	UpdateLoginProfileRequest(*iam.UpdateLoginProfileInput) (*request.Request, *iam.UpdateLoginProfileOutput) | ||||||
|  |  | ||||||
| 	UpdateLoginProfile(*iam.UpdateLoginProfileInput) (*iam.UpdateLoginProfileOutput, error) | 	UpdateLoginProfile(*iam.UpdateLoginProfileInput) (*iam.UpdateLoginProfileOutput, error) | ||||||
|  |  | ||||||
| 	UpdateOpenIDConnectProviderThumbprintRequest(*iam.UpdateOpenIDConnectProviderThumbprintInput) (*service.Request, *iam.UpdateOpenIDConnectProviderThumbprintOutput) | 	UpdateOpenIDConnectProviderThumbprintRequest(*iam.UpdateOpenIDConnectProviderThumbprintInput) (*request.Request, *iam.UpdateOpenIDConnectProviderThumbprintOutput) | ||||||
|  |  | ||||||
| 	UpdateOpenIDConnectProviderThumbprint(*iam.UpdateOpenIDConnectProviderThumbprintInput) (*iam.UpdateOpenIDConnectProviderThumbprintOutput, error) | 	UpdateOpenIDConnectProviderThumbprint(*iam.UpdateOpenIDConnectProviderThumbprintInput) (*iam.UpdateOpenIDConnectProviderThumbprintOutput, error) | ||||||
|  |  | ||||||
| 	UpdateSAMLProviderRequest(*iam.UpdateSAMLProviderInput) (*service.Request, *iam.UpdateSAMLProviderOutput) | 	UpdateSAMLProviderRequest(*iam.UpdateSAMLProviderInput) (*request.Request, *iam.UpdateSAMLProviderOutput) | ||||||
|  |  | ||||||
| 	UpdateSAMLProvider(*iam.UpdateSAMLProviderInput) (*iam.UpdateSAMLProviderOutput, error) | 	UpdateSAMLProvider(*iam.UpdateSAMLProviderInput) (*iam.UpdateSAMLProviderOutput, error) | ||||||
|  |  | ||||||
| 	UpdateSSHPublicKeyRequest(*iam.UpdateSSHPublicKeyInput) (*service.Request, *iam.UpdateSSHPublicKeyOutput) | 	UpdateSSHPublicKeyRequest(*iam.UpdateSSHPublicKeyInput) (*request.Request, *iam.UpdateSSHPublicKeyOutput) | ||||||
|  |  | ||||||
| 	UpdateSSHPublicKey(*iam.UpdateSSHPublicKeyInput) (*iam.UpdateSSHPublicKeyOutput, error) | 	UpdateSSHPublicKey(*iam.UpdateSSHPublicKeyInput) (*iam.UpdateSSHPublicKeyOutput, error) | ||||||
|  |  | ||||||
| 	UpdateServerCertificateRequest(*iam.UpdateServerCertificateInput) (*service.Request, *iam.UpdateServerCertificateOutput) | 	UpdateServerCertificateRequest(*iam.UpdateServerCertificateInput) (*request.Request, *iam.UpdateServerCertificateOutput) | ||||||
|  |  | ||||||
| 	UpdateServerCertificate(*iam.UpdateServerCertificateInput) (*iam.UpdateServerCertificateOutput, error) | 	UpdateServerCertificate(*iam.UpdateServerCertificateInput) (*iam.UpdateServerCertificateOutput, error) | ||||||
|  |  | ||||||
| 	UpdateSigningCertificateRequest(*iam.UpdateSigningCertificateInput) (*service.Request, *iam.UpdateSigningCertificateOutput) | 	UpdateSigningCertificateRequest(*iam.UpdateSigningCertificateInput) (*request.Request, *iam.UpdateSigningCertificateOutput) | ||||||
|  |  | ||||||
| 	UpdateSigningCertificate(*iam.UpdateSigningCertificateInput) (*iam.UpdateSigningCertificateOutput, error) | 	UpdateSigningCertificate(*iam.UpdateSigningCertificateInput) (*iam.UpdateSigningCertificateOutput, error) | ||||||
|  |  | ||||||
| 	UpdateUserRequest(*iam.UpdateUserInput) (*service.Request, *iam.UpdateUserOutput) | 	UpdateUserRequest(*iam.UpdateUserInput) (*request.Request, *iam.UpdateUserOutput) | ||||||
|  |  | ||||||
| 	UpdateUser(*iam.UpdateUserInput) (*iam.UpdateUserOutput, error) | 	UpdateUser(*iam.UpdateUserInput) (*iam.UpdateUserOutput, error) | ||||||
|  |  | ||||||
| 	UploadSSHPublicKeyRequest(*iam.UploadSSHPublicKeyInput) (*service.Request, *iam.UploadSSHPublicKeyOutput) | 	UploadSSHPublicKeyRequest(*iam.UploadSSHPublicKeyInput) (*request.Request, *iam.UploadSSHPublicKeyOutput) | ||||||
|  |  | ||||||
| 	UploadSSHPublicKey(*iam.UploadSSHPublicKeyInput) (*iam.UploadSSHPublicKeyOutput, error) | 	UploadSSHPublicKey(*iam.UploadSSHPublicKeyInput) (*iam.UploadSSHPublicKeyOutput, error) | ||||||
|  |  | ||||||
| 	UploadServerCertificateRequest(*iam.UploadServerCertificateInput) (*service.Request, *iam.UploadServerCertificateOutput) | 	UploadServerCertificateRequest(*iam.UploadServerCertificateInput) (*request.Request, *iam.UploadServerCertificateOutput) | ||||||
|  |  | ||||||
| 	UploadServerCertificate(*iam.UploadServerCertificateInput) (*iam.UploadServerCertificateOutput, error) | 	UploadServerCertificate(*iam.UploadServerCertificateInput) (*iam.UploadServerCertificateOutput, error) | ||||||
|  |  | ||||||
| 	UploadSigningCertificateRequest(*iam.UploadSigningCertificateInput) (*service.Request, *iam.UploadSigningCertificateOutput) | 	UploadSigningCertificateRequest(*iam.UploadSigningCertificateInput) (*request.Request, *iam.UploadSigningCertificateOutput) | ||||||
|  |  | ||||||
| 	UploadSigningCertificate(*iam.UploadSigningCertificateInput) (*iam.UploadSigningCertificateOutput, error) | 	UploadSigningCertificate(*iam.UploadSigningCertificateInput) (*iam.UploadSigningCertificateOutput, error) | ||||||
| } | } | ||||||
|   | |||||||
							
								
								
									
										15
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/iam/iamiface/interface_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										15
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/iam/iamiface/interface_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,15 +0,0 @@ | |||||||
| // THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. |  | ||||||
|  |  | ||||||
| package iamiface_test |  | ||||||
|  |  | ||||||
| import ( |  | ||||||
| 	"testing" |  | ||||||
|  |  | ||||||
| 	"github.com/aws/aws-sdk-go/service/iam" |  | ||||||
| 	"github.com/aws/aws-sdk-go/service/iam/iamiface" |  | ||||||
| 	"github.com/stretchr/testify/assert" |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| func TestInterface(t *testing.T) { |  | ||||||
| 	assert.Implements(t, (*iamiface.IAMAPI)(nil), iam.New(nil)) |  | ||||||
| } |  | ||||||
							
								
								
									
										20
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/iam/service.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										20
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/iam/service.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -5,7 +5,9 @@ package iam | |||||||
| import ( | import ( | ||||||
| 	"github.com/aws/aws-sdk-go/aws" | 	"github.com/aws/aws-sdk-go/aws" | ||||||
| 	"github.com/aws/aws-sdk-go/aws/defaults" | 	"github.com/aws/aws-sdk-go/aws/defaults" | ||||||
|  | 	"github.com/aws/aws-sdk-go/aws/request" | ||||||
| 	"github.com/aws/aws-sdk-go/aws/service" | 	"github.com/aws/aws-sdk-go/aws/service" | ||||||
|  | 	"github.com/aws/aws-sdk-go/aws/service/serviceinfo" | ||||||
| 	"github.com/aws/aws-sdk-go/internal/protocol/query" | 	"github.com/aws/aws-sdk-go/internal/protocol/query" | ||||||
| 	"github.com/aws/aws-sdk-go/internal/signer/v4" | 	"github.com/aws/aws-sdk-go/internal/signer/v4" | ||||||
| ) | ) | ||||||
| @@ -55,9 +57,7 @@ import ( | |||||||
| // This topic provides general information about the types of credentials used | // This topic provides general information about the types of credentials used | ||||||
| // for accessing AWS.   IAM Best Practices (http://docs.aws.amazon.com/IAM/latest/UserGuide/IAMBestPractices.html). | // for accessing AWS.   IAM Best Practices (http://docs.aws.amazon.com/IAM/latest/UserGuide/IAMBestPractices.html). | ||||||
| // This topic presents a list of suggestions for using the IAM service to help | // This topic presents a list of suggestions for using the IAM service to help | ||||||
| // secure your AWS resources.   AWS Security Token Service (http://docs.aws.amazon.com/STS/latest/UsingSTS/). | // secure your AWS resources.   Signing AWS API Requests (http://docs.aws.amazon.com/general/latest/gr/signing_aws_api_requests.html). | ||||||
| // This guide describes how to create and use temporary security credentials. |  | ||||||
| //   Signing AWS API Requests (http://docs.aws.amazon.com/general/latest/gr/signing_aws_api_requests.html). |  | ||||||
| // This set of topics walk you through the process of signing a request using | // This set of topics walk you through the process of signing a request using | ||||||
| // an access key ID and secret access key. | // an access key ID and secret access key. | ||||||
| type IAM struct { | type IAM struct { | ||||||
| @@ -68,14 +68,16 @@ type IAM struct { | |||||||
| var initService func(*service.Service) | var initService func(*service.Service) | ||||||
|  |  | ||||||
| // Used for custom request initialization logic | // Used for custom request initialization logic | ||||||
| var initRequest func(*service.Request) | var initRequest func(*request.Request) | ||||||
|  |  | ||||||
| // New returns a new IAM client. | // New returns a new IAM client. | ||||||
| func New(config *aws.Config) *IAM { | func New(config *aws.Config) *IAM { | ||||||
| 	service := &service.Service{ | 	service := &service.Service{ | ||||||
| 		Config:      defaults.DefaultConfig.Merge(config), | 		ServiceInfo: serviceinfo.ServiceInfo{ | ||||||
| 		ServiceName: "iam", | 			Config:      defaults.DefaultConfig.Merge(config), | ||||||
| 		APIVersion:  "2010-05-08", | 			ServiceName: "iam", | ||||||
|  | 			APIVersion:  "2010-05-08", | ||||||
|  | 		}, | ||||||
| 	} | 	} | ||||||
| 	service.Initialize() | 	service.Initialize() | ||||||
|  |  | ||||||
| @@ -96,8 +98,8 @@ func New(config *aws.Config) *IAM { | |||||||
|  |  | ||||||
| // newRequest creates a new request for a IAM operation and runs any | // newRequest creates a new request for a IAM operation and runs any | ||||||
| // custom request initialization. | // custom request initialization. | ||||||
| func (c *IAM) newRequest(op *service.Operation, params, data interface{}) *service.Request { | func (c *IAM) newRequest(op *request.Operation, params, data interface{}) *request.Request { | ||||||
| 	req := service.NewRequest(c.Service, op, params, data) | 	req := c.NewRequest(op, params, data) | ||||||
|  |  | ||||||
| 	// Run custom request initialization if present | 	// Run custom request initialization if present | ||||||
| 	if initRequest != nil { | 	if initRequest != nil { | ||||||
|   | |||||||
							
								
								
									
										619
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/s3/api.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										619
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/s3/api.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										10
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/s3/bucket_location.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										10
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/s3/bucket_location.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -7,12 +7,12 @@ import ( | |||||||
| 	"github.com/aws/aws-sdk-go/aws" | 	"github.com/aws/aws-sdk-go/aws" | ||||||
| 	"github.com/aws/aws-sdk-go/aws/awserr" | 	"github.com/aws/aws-sdk-go/aws/awserr" | ||||||
| 	"github.com/aws/aws-sdk-go/aws/awsutil" | 	"github.com/aws/aws-sdk-go/aws/awsutil" | ||||||
| 	"github.com/aws/aws-sdk-go/aws/service" | 	"github.com/aws/aws-sdk-go/aws/request" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| var reBucketLocation = regexp.MustCompile(`>([^<>]+)<\/Location`) | var reBucketLocation = regexp.MustCompile(`>([^<>]+)<\/Location`) | ||||||
|  |  | ||||||
| func buildGetBucketLocation(r *service.Request) { | func buildGetBucketLocation(r *request.Request) { | ||||||
| 	if r.DataFilled() { | 	if r.DataFilled() { | ||||||
| 		out := r.Data.(*GetBucketLocationOutput) | 		out := r.Data.(*GetBucketLocationOutput) | ||||||
| 		b, err := ioutil.ReadAll(r.HTTPResponse.Body) | 		b, err := ioutil.ReadAll(r.HTTPResponse.Body) | ||||||
| @@ -29,14 +29,14 @@ func buildGetBucketLocation(r *service.Request) { | |||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
| func populateLocationConstraint(r *service.Request) { | func populateLocationConstraint(r *request.Request) { | ||||||
| 	if r.ParamsFilled() && aws.StringValue(r.Config.Region) != "us-east-1" { | 	if r.ParamsFilled() && aws.StringValue(r.Service.Config.Region) != "us-east-1" { | ||||||
| 		in := r.Params.(*CreateBucketInput) | 		in := r.Params.(*CreateBucketInput) | ||||||
| 		if in.CreateBucketConfiguration == nil { | 		if in.CreateBucketConfiguration == nil { | ||||||
| 			r.Params = awsutil.CopyOf(r.Params) | 			r.Params = awsutil.CopyOf(r.Params) | ||||||
| 			in = r.Params.(*CreateBucketInput) | 			in = r.Params.(*CreateBucketInput) | ||||||
| 			in.CreateBucketConfiguration = &CreateBucketConfiguration{ | 			in.CreateBucketConfiguration = &CreateBucketConfiguration{ | ||||||
| 				LocationConstraint: r.Config.Region, | 				LocationConstraint: r.Service.Config.Region, | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|   | |||||||
							
								
								
									
										76
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/s3/bucket_location_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										76
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/s3/bucket_location_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,76 +0,0 @@ | |||||||
| package s3_test |  | ||||||
|  |  | ||||||
| import ( |  | ||||||
| 	"bytes" |  | ||||||
| 	"io/ioutil" |  | ||||||
| 	"net/http" |  | ||||||
| 	"testing" |  | ||||||
|  |  | ||||||
| 	"github.com/aws/aws-sdk-go/aws" |  | ||||||
| 	"github.com/aws/aws-sdk-go/aws/awsutil" |  | ||||||
| 	"github.com/aws/aws-sdk-go/aws/service" |  | ||||||
| 	"github.com/aws/aws-sdk-go/internal/test/unit" |  | ||||||
| 	"github.com/aws/aws-sdk-go/service/s3" |  | ||||||
| 	"github.com/stretchr/testify/assert" |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| var _ = unit.Imported |  | ||||||
| var s3LocationTests = []struct { |  | ||||||
| 	body string |  | ||||||
| 	loc  string |  | ||||||
| }{ |  | ||||||
| 	{`<?xml version="1.0" encoding="UTF-8"?><LocationConstraint xmlns="http://s3.amazonaws.com/doc/2006-03-01/"/>`, ``}, |  | ||||||
| 	{`<?xml version="1.0" encoding="UTF-8"?><LocationConstraint xmlns="http://s3.amazonaws.com/doc/2006-03-01/">EU</LocationConstraint>`, `EU`}, |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestGetBucketLocation(t *testing.T) { |  | ||||||
| 	for _, test := range s3LocationTests { |  | ||||||
| 		s := s3.New(nil) |  | ||||||
| 		s.Handlers.Send.Clear() |  | ||||||
| 		s.Handlers.Send.PushBack(func(r *service.Request) { |  | ||||||
| 			reader := ioutil.NopCloser(bytes.NewReader([]byte(test.body))) |  | ||||||
| 			r.HTTPResponse = &http.Response{StatusCode: 200, Body: reader} |  | ||||||
| 		}) |  | ||||||
|  |  | ||||||
| 		resp, err := s.GetBucketLocation(&s3.GetBucketLocationInput{Bucket: aws.String("bucket")}) |  | ||||||
| 		assert.NoError(t, err) |  | ||||||
| 		if test.loc == "" { |  | ||||||
| 			assert.Nil(t, resp.LocationConstraint) |  | ||||||
| 		} else { |  | ||||||
| 			assert.Equal(t, test.loc, *resp.LocationConstraint) |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestPopulateLocationConstraint(t *testing.T) { |  | ||||||
| 	s := s3.New(nil) |  | ||||||
| 	in := &s3.CreateBucketInput{ |  | ||||||
| 		Bucket: aws.String("bucket"), |  | ||||||
| 	} |  | ||||||
| 	req, _ := s.CreateBucketRequest(in) |  | ||||||
| 	err := req.Build() |  | ||||||
| 	assert.NoError(t, err) |  | ||||||
| 	assert.Equal(t, "mock-region", awsutil.ValuesAtPath(req.Params, "CreateBucketConfiguration.LocationConstraint")[0]) |  | ||||||
| 	assert.Nil(t, in.CreateBucketConfiguration) // don't modify original params |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestNoPopulateLocationConstraintIfProvided(t *testing.T) { |  | ||||||
| 	s := s3.New(nil) |  | ||||||
| 	req, _ := s.CreateBucketRequest(&s3.CreateBucketInput{ |  | ||||||
| 		Bucket: aws.String("bucket"), |  | ||||||
| 		CreateBucketConfiguration: &s3.CreateBucketConfiguration{}, |  | ||||||
| 	}) |  | ||||||
| 	err := req.Build() |  | ||||||
| 	assert.NoError(t, err) |  | ||||||
| 	assert.Equal(t, 0, len(awsutil.ValuesAtPath(req.Params, "CreateBucketConfiguration.LocationConstraint"))) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestNoPopulateLocationConstraintIfClassic(t *testing.T) { |  | ||||||
| 	s := s3.New(&aws.Config{Region: aws.String("us-east-1")}) |  | ||||||
| 	req, _ := s.CreateBucketRequest(&s3.CreateBucketInput{ |  | ||||||
| 		Bucket: aws.String("bucket"), |  | ||||||
| 	}) |  | ||||||
| 	err := req.Build() |  | ||||||
| 	assert.NoError(t, err) |  | ||||||
| 	assert.Equal(t, 0, len(awsutil.ValuesAtPath(req.Params, "CreateBucketConfiguration.LocationConstraint"))) |  | ||||||
| } |  | ||||||
							
								
								
									
										4
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/s3/content_md5.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/s3/content_md5.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -6,12 +6,12 @@ import ( | |||||||
| 	"io" | 	"io" | ||||||
|  |  | ||||||
| 	"github.com/aws/aws-sdk-go/aws/awserr" | 	"github.com/aws/aws-sdk-go/aws/awserr" | ||||||
| 	"github.com/aws/aws-sdk-go/aws/service" | 	"github.com/aws/aws-sdk-go/aws/request" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| // contentMD5 computes and sets the HTTP Content-MD5 header for requests that | // contentMD5 computes and sets the HTTP Content-MD5 header for requests that | ||||||
| // require it. | // require it. | ||||||
| func contentMD5(r *service.Request) { | func contentMD5(r *request.Request) { | ||||||
| 	h := md5.New() | 	h := md5.New() | ||||||
|  |  | ||||||
| 	// hash the body.  seek back to the first position after reading to reset | 	// hash the body.  seek back to the first position after reading to reset | ||||||
|   | |||||||
							
								
								
									
										9
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/s3/customizations.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										9
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/s3/customizations.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,6 +1,9 @@ | |||||||
| package s3 | package s3 | ||||||
|  |  | ||||||
| import "github.com/aws/aws-sdk-go/aws/service" | import ( | ||||||
|  | 	"github.com/aws/aws-sdk-go/aws/request" | ||||||
|  | 	"github.com/aws/aws-sdk-go/aws/service" | ||||||
|  | ) | ||||||
|  |  | ||||||
| func init() { | func init() { | ||||||
| 	initService = func(s *service.Service) { | 	initService = func(s *service.Service) { | ||||||
| @@ -16,7 +19,7 @@ func init() { | |||||||
| 		s.Handlers.UnmarshalError.PushBack(unmarshalError) | 		s.Handlers.UnmarshalError.PushBack(unmarshalError) | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	initRequest = func(r *service.Request) { | 	initRequest = func(r *request.Request) { | ||||||
| 		switch r.Operation.Name { | 		switch r.Operation.Name { | ||||||
| 		case opPutBucketCors, opPutBucketLifecycle, opPutBucketPolicy, opPutBucketTagging, opDeleteObjects: | 		case opPutBucketCors, opPutBucketLifecycle, opPutBucketPolicy, opPutBucketTagging, opDeleteObjects: | ||||||
| 			// These S3 operations require Content-MD5 to be set | 			// These S3 operations require Content-MD5 to be set | ||||||
| @@ -27,6 +30,8 @@ func init() { | |||||||
| 		case opCreateBucket: | 		case opCreateBucket: | ||||||
| 			// Auto-populate LocationConstraint with current region | 			// Auto-populate LocationConstraint with current region | ||||||
| 			r.Handlers.Validate.PushFront(populateLocationConstraint) | 			r.Handlers.Validate.PushFront(populateLocationConstraint) | ||||||
|  | 		case opCopyObject, opUploadPartCopy, opCompleteMultipartUpload: | ||||||
|  | 			r.Handlers.Unmarshal.PushFront(copyMultipartStatusOKUnmarhsalError) | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|   | |||||||
							
								
								
									
										91
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/s3/customizations_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										91
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/s3/customizations_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,91 +0,0 @@ | |||||||
| package s3_test |  | ||||||
|  |  | ||||||
| import ( |  | ||||||
| 	"crypto/md5" |  | ||||||
| 	"encoding/base64" |  | ||||||
| 	"io/ioutil" |  | ||||||
| 	"testing" |  | ||||||
|  |  | ||||||
| 	"github.com/aws/aws-sdk-go/aws" |  | ||||||
| 	"github.com/aws/aws-sdk-go/aws/service" |  | ||||||
| 	"github.com/aws/aws-sdk-go/internal/test/unit" |  | ||||||
| 	"github.com/aws/aws-sdk-go/service/s3" |  | ||||||
| 	"github.com/stretchr/testify/assert" |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| var _ = unit.Imported |  | ||||||
|  |  | ||||||
| func assertMD5(t *testing.T, req *service.Request) { |  | ||||||
| 	err := req.Build() |  | ||||||
| 	assert.NoError(t, err) |  | ||||||
|  |  | ||||||
| 	b, _ := ioutil.ReadAll(req.HTTPRequest.Body) |  | ||||||
| 	out := md5.Sum(b) |  | ||||||
| 	assert.NotEmpty(t, b) |  | ||||||
| 	assert.Equal(t, base64.StdEncoding.EncodeToString(out[:]), req.HTTPRequest.Header.Get("Content-MD5")) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestMD5InPutBucketCors(t *testing.T) { |  | ||||||
| 	svc := s3.New(nil) |  | ||||||
| 	req, _ := svc.PutBucketCorsRequest(&s3.PutBucketCorsInput{ |  | ||||||
| 		Bucket: aws.String("bucketname"), |  | ||||||
| 		CORSConfiguration: &s3.CORSConfiguration{ |  | ||||||
| 			CORSRules: []*s3.CORSRule{ |  | ||||||
| 				{AllowedMethods: []*string{aws.String("GET")}}, |  | ||||||
| 			}, |  | ||||||
| 		}, |  | ||||||
| 	}) |  | ||||||
| 	assertMD5(t, req) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestMD5InPutBucketLifecycle(t *testing.T) { |  | ||||||
| 	svc := s3.New(nil) |  | ||||||
| 	req, _ := svc.PutBucketLifecycleRequest(&s3.PutBucketLifecycleInput{ |  | ||||||
| 		Bucket: aws.String("bucketname"), |  | ||||||
| 		LifecycleConfiguration: &s3.LifecycleConfiguration{ |  | ||||||
| 			Rules: []*s3.LifecycleRule{ |  | ||||||
| 				{ |  | ||||||
| 					ID:     aws.String("ID"), |  | ||||||
| 					Prefix: aws.String("Prefix"), |  | ||||||
| 					Status: aws.String("Enabled"), |  | ||||||
| 				}, |  | ||||||
| 			}, |  | ||||||
| 		}, |  | ||||||
| 	}) |  | ||||||
| 	assertMD5(t, req) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestMD5InPutBucketPolicy(t *testing.T) { |  | ||||||
| 	svc := s3.New(nil) |  | ||||||
| 	req, _ := svc.PutBucketPolicyRequest(&s3.PutBucketPolicyInput{ |  | ||||||
| 		Bucket: aws.String("bucketname"), |  | ||||||
| 		Policy: aws.String("{}"), |  | ||||||
| 	}) |  | ||||||
| 	assertMD5(t, req) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestMD5InPutBucketTagging(t *testing.T) { |  | ||||||
| 	svc := s3.New(nil) |  | ||||||
| 	req, _ := svc.PutBucketTaggingRequest(&s3.PutBucketTaggingInput{ |  | ||||||
| 		Bucket: aws.String("bucketname"), |  | ||||||
| 		Tagging: &s3.Tagging{ |  | ||||||
| 			TagSet: []*s3.Tag{ |  | ||||||
| 				{Key: aws.String("KEY"), Value: aws.String("VALUE")}, |  | ||||||
| 			}, |  | ||||||
| 		}, |  | ||||||
| 	}) |  | ||||||
| 	assertMD5(t, req) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestMD5InDeleteObjects(t *testing.T) { |  | ||||||
| 	svc := s3.New(nil) |  | ||||||
| 	req, _ := svc.DeleteObjectsRequest(&s3.DeleteObjectsInput{ |  | ||||||
| 		Bucket: aws.String("bucketname"), |  | ||||||
| 		Delete: &s3.Delete{ |  | ||||||
| 			Objects: []*s3.ObjectIdentifier{ |  | ||||||
| 				{Key: aws.String("key")}, |  | ||||||
| 			}, |  | ||||||
| 		}, |  | ||||||
| 	}) |  | ||||||
| 	assertMD5(t, req) |  | ||||||
| } |  | ||||||
							
								
								
									
										1928
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/s3/examples_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1928
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/s3/examples_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										14
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/s3/host_style_bucket.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										14
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/s3/host_style_bucket.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -6,7 +6,7 @@ import ( | |||||||
|  |  | ||||||
| 	"github.com/aws/aws-sdk-go/aws" | 	"github.com/aws/aws-sdk-go/aws" | ||||||
| 	"github.com/aws/aws-sdk-go/aws/awsutil" | 	"github.com/aws/aws-sdk-go/aws/awsutil" | ||||||
| 	"github.com/aws/aws-sdk-go/aws/service" | 	"github.com/aws/aws-sdk-go/aws/request" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| var reDomain = regexp.MustCompile(`^[a-z0-9][a-z0-9\.\-]{1,61}[a-z0-9]$`) | var reDomain = regexp.MustCompile(`^[a-z0-9][a-z0-9\.\-]{1,61}[a-z0-9]$`) | ||||||
| @@ -23,8 +23,8 @@ func dnsCompatibleBucketName(bucket string) bool { | |||||||
| // hostStyleBucketName returns true if the request should put the bucket in | // hostStyleBucketName returns true if the request should put the bucket in | ||||||
| // the host. This is false if S3ForcePathStyle is explicitly set or if the | // the host. This is false if S3ForcePathStyle is explicitly set or if the | ||||||
| // bucket is not DNS compatible. | // bucket is not DNS compatible. | ||||||
| func hostStyleBucketName(r *service.Request, bucket string) bool { | func hostStyleBucketName(r *request.Request, bucket string) bool { | ||||||
| 	if aws.BoolValue(r.Config.S3ForcePathStyle) { | 	if aws.BoolValue(r.Service.Config.S3ForcePathStyle) { | ||||||
| 		return false | 		return false | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| @@ -34,11 +34,17 @@ func hostStyleBucketName(r *service.Request, bucket string) bool { | |||||||
| 		return false | 		return false | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | 	// GetBucketLocation should be able to be called from any region within | ||||||
|  | 	// a partition, and return the associated region of the bucket. | ||||||
|  | 	if r.Operation.Name == opGetBucketLocation { | ||||||
|  | 		return false | ||||||
|  | 	} | ||||||
|  |  | ||||||
| 	// Use host-style if the bucket is DNS compatible | 	// Use host-style if the bucket is DNS compatible | ||||||
| 	return dnsCompatibleBucketName(bucket) | 	return dnsCompatibleBucketName(bucket) | ||||||
| } | } | ||||||
|  |  | ||||||
| func updateHostWithBucket(r *service.Request) { | func updateHostWithBucket(r *request.Request) { | ||||||
| 	b := awsutil.ValuesAtPath(r.Params, "Bucket") | 	b := awsutil.ValuesAtPath(r.Params, "Bucket") | ||||||
| 	if len(b) == 0 { | 	if len(b) == 0 { | ||||||
| 		return | 		return | ||||||
|   | |||||||
							
								
								
									
										61
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/s3/host_style_bucket_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										61
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/s3/host_style_bucket_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,61 +0,0 @@ | |||||||
| package s3_test |  | ||||||
|  |  | ||||||
| import ( |  | ||||||
| 	"testing" |  | ||||||
|  |  | ||||||
| 	"github.com/aws/aws-sdk-go/aws" |  | ||||||
| 	"github.com/aws/aws-sdk-go/internal/test/unit" |  | ||||||
| 	"github.com/aws/aws-sdk-go/service/s3" |  | ||||||
| 	"github.com/stretchr/testify/assert" |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| type s3BucketTest struct { |  | ||||||
| 	bucket string |  | ||||||
| 	url    string |  | ||||||
| } |  | ||||||
|  |  | ||||||
| var ( |  | ||||||
| 	_ = unit.Imported |  | ||||||
|  |  | ||||||
| 	sslTests = []s3BucketTest{ |  | ||||||
| 		{"abc", "https://abc.s3.mock-region.amazonaws.com/"}, |  | ||||||
| 		{"a$b$c", "https://s3.mock-region.amazonaws.com/a%24b%24c"}, |  | ||||||
| 		{"a.b.c", "https://s3.mock-region.amazonaws.com/a.b.c"}, |  | ||||||
| 		{"a..bc", "https://s3.mock-region.amazonaws.com/a..bc"}, |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	nosslTests = []s3BucketTest{ |  | ||||||
| 		{"a.b.c", "http://a.b.c.s3.mock-region.amazonaws.com/"}, |  | ||||||
| 		{"a..bc", "http://s3.mock-region.amazonaws.com/a..bc"}, |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	forcepathTests = []s3BucketTest{ |  | ||||||
| 		{"abc", "https://s3.mock-region.amazonaws.com/abc"}, |  | ||||||
| 		{"a$b$c", "https://s3.mock-region.amazonaws.com/a%24b%24c"}, |  | ||||||
| 		{"a.b.c", "https://s3.mock-region.amazonaws.com/a.b.c"}, |  | ||||||
| 		{"a..bc", "https://s3.mock-region.amazonaws.com/a..bc"}, |  | ||||||
| 	} |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| func runTests(t *testing.T, svc *s3.S3, tests []s3BucketTest) { |  | ||||||
| 	for _, test := range tests { |  | ||||||
| 		req, _ := svc.ListObjectsRequest(&s3.ListObjectsInput{Bucket: &test.bucket}) |  | ||||||
| 		req.Build() |  | ||||||
| 		assert.Equal(t, test.url, req.HTTPRequest.URL.String()) |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestHostStyleBucketBuild(t *testing.T) { |  | ||||||
| 	s := s3.New(nil) |  | ||||||
| 	runTests(t, s, sslTests) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestHostStyleBucketBuildNoSSL(t *testing.T) { |  | ||||||
| 	s := s3.New(&aws.Config{DisableSSL: aws.Bool(true)}) |  | ||||||
| 	runTests(t, s, nosslTests) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestPathStyleBucketBuild(t *testing.T) { |  | ||||||
| 	s := s3.New(&aws.Config{S3ForcePathStyle: aws.Bool(true)}) |  | ||||||
| 	runTests(t, s, forcepathTests) |  | ||||||
| } |  | ||||||
							
								
								
									
										118
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/s3/s3iface/interface.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										118
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/s3/s3iface/interface.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -4,233 +4,241 @@ | |||||||
| package s3iface | package s3iface | ||||||
|  |  | ||||||
| import ( | import ( | ||||||
| 	"github.com/aws/aws-sdk-go/aws/service" | 	"github.com/aws/aws-sdk-go/aws/request" | ||||||
| 	"github.com/aws/aws-sdk-go/service/s3" | 	"github.com/aws/aws-sdk-go/service/s3" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| // S3API is the interface type for s3.S3. | // S3API is the interface type for s3.S3. | ||||||
| type S3API interface { | type S3API interface { | ||||||
| 	AbortMultipartUploadRequest(*s3.AbortMultipartUploadInput) (*service.Request, *s3.AbortMultipartUploadOutput) | 	AbortMultipartUploadRequest(*s3.AbortMultipartUploadInput) (*request.Request, *s3.AbortMultipartUploadOutput) | ||||||
|  |  | ||||||
| 	AbortMultipartUpload(*s3.AbortMultipartUploadInput) (*s3.AbortMultipartUploadOutput, error) | 	AbortMultipartUpload(*s3.AbortMultipartUploadInput) (*s3.AbortMultipartUploadOutput, error) | ||||||
|  |  | ||||||
| 	CompleteMultipartUploadRequest(*s3.CompleteMultipartUploadInput) (*service.Request, *s3.CompleteMultipartUploadOutput) | 	CompleteMultipartUploadRequest(*s3.CompleteMultipartUploadInput) (*request.Request, *s3.CompleteMultipartUploadOutput) | ||||||
|  |  | ||||||
| 	CompleteMultipartUpload(*s3.CompleteMultipartUploadInput) (*s3.CompleteMultipartUploadOutput, error) | 	CompleteMultipartUpload(*s3.CompleteMultipartUploadInput) (*s3.CompleteMultipartUploadOutput, error) | ||||||
|  |  | ||||||
| 	CopyObjectRequest(*s3.CopyObjectInput) (*service.Request, *s3.CopyObjectOutput) | 	CopyObjectRequest(*s3.CopyObjectInput) (*request.Request, *s3.CopyObjectOutput) | ||||||
|  |  | ||||||
| 	CopyObject(*s3.CopyObjectInput) (*s3.CopyObjectOutput, error) | 	CopyObject(*s3.CopyObjectInput) (*s3.CopyObjectOutput, error) | ||||||
|  |  | ||||||
| 	CreateBucketRequest(*s3.CreateBucketInput) (*service.Request, *s3.CreateBucketOutput) | 	CreateBucketRequest(*s3.CreateBucketInput) (*request.Request, *s3.CreateBucketOutput) | ||||||
|  |  | ||||||
| 	CreateBucket(*s3.CreateBucketInput) (*s3.CreateBucketOutput, error) | 	CreateBucket(*s3.CreateBucketInput) (*s3.CreateBucketOutput, error) | ||||||
|  |  | ||||||
| 	CreateMultipartUploadRequest(*s3.CreateMultipartUploadInput) (*service.Request, *s3.CreateMultipartUploadOutput) | 	CreateMultipartUploadRequest(*s3.CreateMultipartUploadInput) (*request.Request, *s3.CreateMultipartUploadOutput) | ||||||
|  |  | ||||||
| 	CreateMultipartUpload(*s3.CreateMultipartUploadInput) (*s3.CreateMultipartUploadOutput, error) | 	CreateMultipartUpload(*s3.CreateMultipartUploadInput) (*s3.CreateMultipartUploadOutput, error) | ||||||
|  |  | ||||||
| 	DeleteBucketRequest(*s3.DeleteBucketInput) (*service.Request, *s3.DeleteBucketOutput) | 	DeleteBucketRequest(*s3.DeleteBucketInput) (*request.Request, *s3.DeleteBucketOutput) | ||||||
|  |  | ||||||
| 	DeleteBucket(*s3.DeleteBucketInput) (*s3.DeleteBucketOutput, error) | 	DeleteBucket(*s3.DeleteBucketInput) (*s3.DeleteBucketOutput, error) | ||||||
|  |  | ||||||
| 	DeleteBucketCorsRequest(*s3.DeleteBucketCorsInput) (*service.Request, *s3.DeleteBucketCorsOutput) | 	DeleteBucketCorsRequest(*s3.DeleteBucketCorsInput) (*request.Request, *s3.DeleteBucketCorsOutput) | ||||||
|  |  | ||||||
| 	DeleteBucketCors(*s3.DeleteBucketCorsInput) (*s3.DeleteBucketCorsOutput, error) | 	DeleteBucketCors(*s3.DeleteBucketCorsInput) (*s3.DeleteBucketCorsOutput, error) | ||||||
|  |  | ||||||
| 	DeleteBucketLifecycleRequest(*s3.DeleteBucketLifecycleInput) (*service.Request, *s3.DeleteBucketLifecycleOutput) | 	DeleteBucketLifecycleRequest(*s3.DeleteBucketLifecycleInput) (*request.Request, *s3.DeleteBucketLifecycleOutput) | ||||||
|  |  | ||||||
| 	DeleteBucketLifecycle(*s3.DeleteBucketLifecycleInput) (*s3.DeleteBucketLifecycleOutput, error) | 	DeleteBucketLifecycle(*s3.DeleteBucketLifecycleInput) (*s3.DeleteBucketLifecycleOutput, error) | ||||||
|  |  | ||||||
| 	DeleteBucketPolicyRequest(*s3.DeleteBucketPolicyInput) (*service.Request, *s3.DeleteBucketPolicyOutput) | 	DeleteBucketPolicyRequest(*s3.DeleteBucketPolicyInput) (*request.Request, *s3.DeleteBucketPolicyOutput) | ||||||
|  |  | ||||||
| 	DeleteBucketPolicy(*s3.DeleteBucketPolicyInput) (*s3.DeleteBucketPolicyOutput, error) | 	DeleteBucketPolicy(*s3.DeleteBucketPolicyInput) (*s3.DeleteBucketPolicyOutput, error) | ||||||
|  |  | ||||||
| 	DeleteBucketReplicationRequest(*s3.DeleteBucketReplicationInput) (*service.Request, *s3.DeleteBucketReplicationOutput) | 	DeleteBucketReplicationRequest(*s3.DeleteBucketReplicationInput) (*request.Request, *s3.DeleteBucketReplicationOutput) | ||||||
|  |  | ||||||
| 	DeleteBucketReplication(*s3.DeleteBucketReplicationInput) (*s3.DeleteBucketReplicationOutput, error) | 	DeleteBucketReplication(*s3.DeleteBucketReplicationInput) (*s3.DeleteBucketReplicationOutput, error) | ||||||
|  |  | ||||||
| 	DeleteBucketTaggingRequest(*s3.DeleteBucketTaggingInput) (*service.Request, *s3.DeleteBucketTaggingOutput) | 	DeleteBucketTaggingRequest(*s3.DeleteBucketTaggingInput) (*request.Request, *s3.DeleteBucketTaggingOutput) | ||||||
|  |  | ||||||
| 	DeleteBucketTagging(*s3.DeleteBucketTaggingInput) (*s3.DeleteBucketTaggingOutput, error) | 	DeleteBucketTagging(*s3.DeleteBucketTaggingInput) (*s3.DeleteBucketTaggingOutput, error) | ||||||
|  |  | ||||||
| 	DeleteBucketWebsiteRequest(*s3.DeleteBucketWebsiteInput) (*service.Request, *s3.DeleteBucketWebsiteOutput) | 	DeleteBucketWebsiteRequest(*s3.DeleteBucketWebsiteInput) (*request.Request, *s3.DeleteBucketWebsiteOutput) | ||||||
|  |  | ||||||
| 	DeleteBucketWebsite(*s3.DeleteBucketWebsiteInput) (*s3.DeleteBucketWebsiteOutput, error) | 	DeleteBucketWebsite(*s3.DeleteBucketWebsiteInput) (*s3.DeleteBucketWebsiteOutput, error) | ||||||
|  |  | ||||||
| 	DeleteObjectRequest(*s3.DeleteObjectInput) (*service.Request, *s3.DeleteObjectOutput) | 	DeleteObjectRequest(*s3.DeleteObjectInput) (*request.Request, *s3.DeleteObjectOutput) | ||||||
|  |  | ||||||
| 	DeleteObject(*s3.DeleteObjectInput) (*s3.DeleteObjectOutput, error) | 	DeleteObject(*s3.DeleteObjectInput) (*s3.DeleteObjectOutput, error) | ||||||
|  |  | ||||||
| 	DeleteObjectsRequest(*s3.DeleteObjectsInput) (*service.Request, *s3.DeleteObjectsOutput) | 	DeleteObjectsRequest(*s3.DeleteObjectsInput) (*request.Request, *s3.DeleteObjectsOutput) | ||||||
|  |  | ||||||
| 	DeleteObjects(*s3.DeleteObjectsInput) (*s3.DeleteObjectsOutput, error) | 	DeleteObjects(*s3.DeleteObjectsInput) (*s3.DeleteObjectsOutput, error) | ||||||
|  |  | ||||||
| 	GetBucketAclRequest(*s3.GetBucketAclInput) (*service.Request, *s3.GetBucketAclOutput) | 	GetBucketAclRequest(*s3.GetBucketAclInput) (*request.Request, *s3.GetBucketAclOutput) | ||||||
|  |  | ||||||
| 	GetBucketAcl(*s3.GetBucketAclInput) (*s3.GetBucketAclOutput, error) | 	GetBucketAcl(*s3.GetBucketAclInput) (*s3.GetBucketAclOutput, error) | ||||||
|  |  | ||||||
| 	GetBucketCorsRequest(*s3.GetBucketCorsInput) (*service.Request, *s3.GetBucketCorsOutput) | 	GetBucketCorsRequest(*s3.GetBucketCorsInput) (*request.Request, *s3.GetBucketCorsOutput) | ||||||
|  |  | ||||||
| 	GetBucketCors(*s3.GetBucketCorsInput) (*s3.GetBucketCorsOutput, error) | 	GetBucketCors(*s3.GetBucketCorsInput) (*s3.GetBucketCorsOutput, error) | ||||||
|  |  | ||||||
| 	GetBucketLifecycleRequest(*s3.GetBucketLifecycleInput) (*service.Request, *s3.GetBucketLifecycleOutput) | 	GetBucketLifecycleRequest(*s3.GetBucketLifecycleInput) (*request.Request, *s3.GetBucketLifecycleOutput) | ||||||
|  |  | ||||||
| 	GetBucketLifecycle(*s3.GetBucketLifecycleInput) (*s3.GetBucketLifecycleOutput, error) | 	GetBucketLifecycle(*s3.GetBucketLifecycleInput) (*s3.GetBucketLifecycleOutput, error) | ||||||
|  |  | ||||||
| 	GetBucketLocationRequest(*s3.GetBucketLocationInput) (*service.Request, *s3.GetBucketLocationOutput) | 	GetBucketLifecycleConfigurationRequest(*s3.GetBucketLifecycleConfigurationInput) (*request.Request, *s3.GetBucketLifecycleConfigurationOutput) | ||||||
|  |  | ||||||
|  | 	GetBucketLifecycleConfiguration(*s3.GetBucketLifecycleConfigurationInput) (*s3.GetBucketLifecycleConfigurationOutput, error) | ||||||
|  |  | ||||||
|  | 	GetBucketLocationRequest(*s3.GetBucketLocationInput) (*request.Request, *s3.GetBucketLocationOutput) | ||||||
|  |  | ||||||
| 	GetBucketLocation(*s3.GetBucketLocationInput) (*s3.GetBucketLocationOutput, error) | 	GetBucketLocation(*s3.GetBucketLocationInput) (*s3.GetBucketLocationOutput, error) | ||||||
|  |  | ||||||
| 	GetBucketLoggingRequest(*s3.GetBucketLoggingInput) (*service.Request, *s3.GetBucketLoggingOutput) | 	GetBucketLoggingRequest(*s3.GetBucketLoggingInput) (*request.Request, *s3.GetBucketLoggingOutput) | ||||||
|  |  | ||||||
| 	GetBucketLogging(*s3.GetBucketLoggingInput) (*s3.GetBucketLoggingOutput, error) | 	GetBucketLogging(*s3.GetBucketLoggingInput) (*s3.GetBucketLoggingOutput, error) | ||||||
|  |  | ||||||
| 	GetBucketNotificationRequest(*s3.GetBucketNotificationConfigurationRequest) (*service.Request, *s3.NotificationConfigurationDeprecated) | 	GetBucketNotificationRequest(*s3.GetBucketNotificationConfigurationRequest) (*request.Request, *s3.NotificationConfigurationDeprecated) | ||||||
|  |  | ||||||
| 	GetBucketNotification(*s3.GetBucketNotificationConfigurationRequest) (*s3.NotificationConfigurationDeprecated, error) | 	GetBucketNotification(*s3.GetBucketNotificationConfigurationRequest) (*s3.NotificationConfigurationDeprecated, error) | ||||||
|  |  | ||||||
| 	GetBucketNotificationConfigurationRequest(*s3.GetBucketNotificationConfigurationRequest) (*service.Request, *s3.NotificationConfiguration) | 	GetBucketNotificationConfigurationRequest(*s3.GetBucketNotificationConfigurationRequest) (*request.Request, *s3.NotificationConfiguration) | ||||||
|  |  | ||||||
| 	GetBucketNotificationConfiguration(*s3.GetBucketNotificationConfigurationRequest) (*s3.NotificationConfiguration, error) | 	GetBucketNotificationConfiguration(*s3.GetBucketNotificationConfigurationRequest) (*s3.NotificationConfiguration, error) | ||||||
|  |  | ||||||
| 	GetBucketPolicyRequest(*s3.GetBucketPolicyInput) (*service.Request, *s3.GetBucketPolicyOutput) | 	GetBucketPolicyRequest(*s3.GetBucketPolicyInput) (*request.Request, *s3.GetBucketPolicyOutput) | ||||||
|  |  | ||||||
| 	GetBucketPolicy(*s3.GetBucketPolicyInput) (*s3.GetBucketPolicyOutput, error) | 	GetBucketPolicy(*s3.GetBucketPolicyInput) (*s3.GetBucketPolicyOutput, error) | ||||||
|  |  | ||||||
| 	GetBucketReplicationRequest(*s3.GetBucketReplicationInput) (*service.Request, *s3.GetBucketReplicationOutput) | 	GetBucketReplicationRequest(*s3.GetBucketReplicationInput) (*request.Request, *s3.GetBucketReplicationOutput) | ||||||
|  |  | ||||||
| 	GetBucketReplication(*s3.GetBucketReplicationInput) (*s3.GetBucketReplicationOutput, error) | 	GetBucketReplication(*s3.GetBucketReplicationInput) (*s3.GetBucketReplicationOutput, error) | ||||||
|  |  | ||||||
| 	GetBucketRequestPaymentRequest(*s3.GetBucketRequestPaymentInput) (*service.Request, *s3.GetBucketRequestPaymentOutput) | 	GetBucketRequestPaymentRequest(*s3.GetBucketRequestPaymentInput) (*request.Request, *s3.GetBucketRequestPaymentOutput) | ||||||
|  |  | ||||||
| 	GetBucketRequestPayment(*s3.GetBucketRequestPaymentInput) (*s3.GetBucketRequestPaymentOutput, error) | 	GetBucketRequestPayment(*s3.GetBucketRequestPaymentInput) (*s3.GetBucketRequestPaymentOutput, error) | ||||||
|  |  | ||||||
| 	GetBucketTaggingRequest(*s3.GetBucketTaggingInput) (*service.Request, *s3.GetBucketTaggingOutput) | 	GetBucketTaggingRequest(*s3.GetBucketTaggingInput) (*request.Request, *s3.GetBucketTaggingOutput) | ||||||
|  |  | ||||||
| 	GetBucketTagging(*s3.GetBucketTaggingInput) (*s3.GetBucketTaggingOutput, error) | 	GetBucketTagging(*s3.GetBucketTaggingInput) (*s3.GetBucketTaggingOutput, error) | ||||||
|  |  | ||||||
| 	GetBucketVersioningRequest(*s3.GetBucketVersioningInput) (*service.Request, *s3.GetBucketVersioningOutput) | 	GetBucketVersioningRequest(*s3.GetBucketVersioningInput) (*request.Request, *s3.GetBucketVersioningOutput) | ||||||
|  |  | ||||||
| 	GetBucketVersioning(*s3.GetBucketVersioningInput) (*s3.GetBucketVersioningOutput, error) | 	GetBucketVersioning(*s3.GetBucketVersioningInput) (*s3.GetBucketVersioningOutput, error) | ||||||
|  |  | ||||||
| 	GetBucketWebsiteRequest(*s3.GetBucketWebsiteInput) (*service.Request, *s3.GetBucketWebsiteOutput) | 	GetBucketWebsiteRequest(*s3.GetBucketWebsiteInput) (*request.Request, *s3.GetBucketWebsiteOutput) | ||||||
|  |  | ||||||
| 	GetBucketWebsite(*s3.GetBucketWebsiteInput) (*s3.GetBucketWebsiteOutput, error) | 	GetBucketWebsite(*s3.GetBucketWebsiteInput) (*s3.GetBucketWebsiteOutput, error) | ||||||
|  |  | ||||||
| 	GetObjectRequest(*s3.GetObjectInput) (*service.Request, *s3.GetObjectOutput) | 	GetObjectRequest(*s3.GetObjectInput) (*request.Request, *s3.GetObjectOutput) | ||||||
|  |  | ||||||
| 	GetObject(*s3.GetObjectInput) (*s3.GetObjectOutput, error) | 	GetObject(*s3.GetObjectInput) (*s3.GetObjectOutput, error) | ||||||
|  |  | ||||||
| 	GetObjectAclRequest(*s3.GetObjectAclInput) (*service.Request, *s3.GetObjectAclOutput) | 	GetObjectAclRequest(*s3.GetObjectAclInput) (*request.Request, *s3.GetObjectAclOutput) | ||||||
|  |  | ||||||
| 	GetObjectAcl(*s3.GetObjectAclInput) (*s3.GetObjectAclOutput, error) | 	GetObjectAcl(*s3.GetObjectAclInput) (*s3.GetObjectAclOutput, error) | ||||||
|  |  | ||||||
| 	GetObjectTorrentRequest(*s3.GetObjectTorrentInput) (*service.Request, *s3.GetObjectTorrentOutput) | 	GetObjectTorrentRequest(*s3.GetObjectTorrentInput) (*request.Request, *s3.GetObjectTorrentOutput) | ||||||
|  |  | ||||||
| 	GetObjectTorrent(*s3.GetObjectTorrentInput) (*s3.GetObjectTorrentOutput, error) | 	GetObjectTorrent(*s3.GetObjectTorrentInput) (*s3.GetObjectTorrentOutput, error) | ||||||
|  |  | ||||||
| 	HeadBucketRequest(*s3.HeadBucketInput) (*service.Request, *s3.HeadBucketOutput) | 	HeadBucketRequest(*s3.HeadBucketInput) (*request.Request, *s3.HeadBucketOutput) | ||||||
|  |  | ||||||
| 	HeadBucket(*s3.HeadBucketInput) (*s3.HeadBucketOutput, error) | 	HeadBucket(*s3.HeadBucketInput) (*s3.HeadBucketOutput, error) | ||||||
|  |  | ||||||
| 	HeadObjectRequest(*s3.HeadObjectInput) (*service.Request, *s3.HeadObjectOutput) | 	HeadObjectRequest(*s3.HeadObjectInput) (*request.Request, *s3.HeadObjectOutput) | ||||||
|  |  | ||||||
| 	HeadObject(*s3.HeadObjectInput) (*s3.HeadObjectOutput, error) | 	HeadObject(*s3.HeadObjectInput) (*s3.HeadObjectOutput, error) | ||||||
|  |  | ||||||
| 	ListBucketsRequest(*s3.ListBucketsInput) (*service.Request, *s3.ListBucketsOutput) | 	ListBucketsRequest(*s3.ListBucketsInput) (*request.Request, *s3.ListBucketsOutput) | ||||||
|  |  | ||||||
| 	ListBuckets(*s3.ListBucketsInput) (*s3.ListBucketsOutput, error) | 	ListBuckets(*s3.ListBucketsInput) (*s3.ListBucketsOutput, error) | ||||||
|  |  | ||||||
| 	ListMultipartUploadsRequest(*s3.ListMultipartUploadsInput) (*service.Request, *s3.ListMultipartUploadsOutput) | 	ListMultipartUploadsRequest(*s3.ListMultipartUploadsInput) (*request.Request, *s3.ListMultipartUploadsOutput) | ||||||
|  |  | ||||||
| 	ListMultipartUploads(*s3.ListMultipartUploadsInput) (*s3.ListMultipartUploadsOutput, error) | 	ListMultipartUploads(*s3.ListMultipartUploadsInput) (*s3.ListMultipartUploadsOutput, error) | ||||||
|  |  | ||||||
| 	ListMultipartUploadsPages(*s3.ListMultipartUploadsInput, func(*s3.ListMultipartUploadsOutput, bool) bool) error | 	ListMultipartUploadsPages(*s3.ListMultipartUploadsInput, func(*s3.ListMultipartUploadsOutput, bool) bool) error | ||||||
|  |  | ||||||
| 	ListObjectVersionsRequest(*s3.ListObjectVersionsInput) (*service.Request, *s3.ListObjectVersionsOutput) | 	ListObjectVersionsRequest(*s3.ListObjectVersionsInput) (*request.Request, *s3.ListObjectVersionsOutput) | ||||||
|  |  | ||||||
| 	ListObjectVersions(*s3.ListObjectVersionsInput) (*s3.ListObjectVersionsOutput, error) | 	ListObjectVersions(*s3.ListObjectVersionsInput) (*s3.ListObjectVersionsOutput, error) | ||||||
|  |  | ||||||
| 	ListObjectVersionsPages(*s3.ListObjectVersionsInput, func(*s3.ListObjectVersionsOutput, bool) bool) error | 	ListObjectVersionsPages(*s3.ListObjectVersionsInput, func(*s3.ListObjectVersionsOutput, bool) bool) error | ||||||
|  |  | ||||||
| 	ListObjectsRequest(*s3.ListObjectsInput) (*service.Request, *s3.ListObjectsOutput) | 	ListObjectsRequest(*s3.ListObjectsInput) (*request.Request, *s3.ListObjectsOutput) | ||||||
|  |  | ||||||
| 	ListObjects(*s3.ListObjectsInput) (*s3.ListObjectsOutput, error) | 	ListObjects(*s3.ListObjectsInput) (*s3.ListObjectsOutput, error) | ||||||
|  |  | ||||||
| 	ListObjectsPages(*s3.ListObjectsInput, func(*s3.ListObjectsOutput, bool) bool) error | 	ListObjectsPages(*s3.ListObjectsInput, func(*s3.ListObjectsOutput, bool) bool) error | ||||||
|  |  | ||||||
| 	ListPartsRequest(*s3.ListPartsInput) (*service.Request, *s3.ListPartsOutput) | 	ListPartsRequest(*s3.ListPartsInput) (*request.Request, *s3.ListPartsOutput) | ||||||
|  |  | ||||||
| 	ListParts(*s3.ListPartsInput) (*s3.ListPartsOutput, error) | 	ListParts(*s3.ListPartsInput) (*s3.ListPartsOutput, error) | ||||||
|  |  | ||||||
| 	ListPartsPages(*s3.ListPartsInput, func(*s3.ListPartsOutput, bool) bool) error | 	ListPartsPages(*s3.ListPartsInput, func(*s3.ListPartsOutput, bool) bool) error | ||||||
|  |  | ||||||
| 	PutBucketAclRequest(*s3.PutBucketAclInput) (*service.Request, *s3.PutBucketAclOutput) | 	PutBucketAclRequest(*s3.PutBucketAclInput) (*request.Request, *s3.PutBucketAclOutput) | ||||||
|  |  | ||||||
| 	PutBucketAcl(*s3.PutBucketAclInput) (*s3.PutBucketAclOutput, error) | 	PutBucketAcl(*s3.PutBucketAclInput) (*s3.PutBucketAclOutput, error) | ||||||
|  |  | ||||||
| 	PutBucketCorsRequest(*s3.PutBucketCorsInput) (*service.Request, *s3.PutBucketCorsOutput) | 	PutBucketCorsRequest(*s3.PutBucketCorsInput) (*request.Request, *s3.PutBucketCorsOutput) | ||||||
|  |  | ||||||
| 	PutBucketCors(*s3.PutBucketCorsInput) (*s3.PutBucketCorsOutput, error) | 	PutBucketCors(*s3.PutBucketCorsInput) (*s3.PutBucketCorsOutput, error) | ||||||
|  |  | ||||||
| 	PutBucketLifecycleRequest(*s3.PutBucketLifecycleInput) (*service.Request, *s3.PutBucketLifecycleOutput) | 	PutBucketLifecycleRequest(*s3.PutBucketLifecycleInput) (*request.Request, *s3.PutBucketLifecycleOutput) | ||||||
|  |  | ||||||
| 	PutBucketLifecycle(*s3.PutBucketLifecycleInput) (*s3.PutBucketLifecycleOutput, error) | 	PutBucketLifecycle(*s3.PutBucketLifecycleInput) (*s3.PutBucketLifecycleOutput, error) | ||||||
|  |  | ||||||
| 	PutBucketLoggingRequest(*s3.PutBucketLoggingInput) (*service.Request, *s3.PutBucketLoggingOutput) | 	PutBucketLifecycleConfigurationRequest(*s3.PutBucketLifecycleConfigurationInput) (*request.Request, *s3.PutBucketLifecycleConfigurationOutput) | ||||||
|  |  | ||||||
|  | 	PutBucketLifecycleConfiguration(*s3.PutBucketLifecycleConfigurationInput) (*s3.PutBucketLifecycleConfigurationOutput, error) | ||||||
|  |  | ||||||
|  | 	PutBucketLoggingRequest(*s3.PutBucketLoggingInput) (*request.Request, *s3.PutBucketLoggingOutput) | ||||||
|  |  | ||||||
| 	PutBucketLogging(*s3.PutBucketLoggingInput) (*s3.PutBucketLoggingOutput, error) | 	PutBucketLogging(*s3.PutBucketLoggingInput) (*s3.PutBucketLoggingOutput, error) | ||||||
|  |  | ||||||
| 	PutBucketNotificationRequest(*s3.PutBucketNotificationInput) (*service.Request, *s3.PutBucketNotificationOutput) | 	PutBucketNotificationRequest(*s3.PutBucketNotificationInput) (*request.Request, *s3.PutBucketNotificationOutput) | ||||||
|  |  | ||||||
| 	PutBucketNotification(*s3.PutBucketNotificationInput) (*s3.PutBucketNotificationOutput, error) | 	PutBucketNotification(*s3.PutBucketNotificationInput) (*s3.PutBucketNotificationOutput, error) | ||||||
|  |  | ||||||
| 	PutBucketNotificationConfigurationRequest(*s3.PutBucketNotificationConfigurationInput) (*service.Request, *s3.PutBucketNotificationConfigurationOutput) | 	PutBucketNotificationConfigurationRequest(*s3.PutBucketNotificationConfigurationInput) (*request.Request, *s3.PutBucketNotificationConfigurationOutput) | ||||||
|  |  | ||||||
| 	PutBucketNotificationConfiguration(*s3.PutBucketNotificationConfigurationInput) (*s3.PutBucketNotificationConfigurationOutput, error) | 	PutBucketNotificationConfiguration(*s3.PutBucketNotificationConfigurationInput) (*s3.PutBucketNotificationConfigurationOutput, error) | ||||||
|  |  | ||||||
| 	PutBucketPolicyRequest(*s3.PutBucketPolicyInput) (*service.Request, *s3.PutBucketPolicyOutput) | 	PutBucketPolicyRequest(*s3.PutBucketPolicyInput) (*request.Request, *s3.PutBucketPolicyOutput) | ||||||
|  |  | ||||||
| 	PutBucketPolicy(*s3.PutBucketPolicyInput) (*s3.PutBucketPolicyOutput, error) | 	PutBucketPolicy(*s3.PutBucketPolicyInput) (*s3.PutBucketPolicyOutput, error) | ||||||
|  |  | ||||||
| 	PutBucketReplicationRequest(*s3.PutBucketReplicationInput) (*service.Request, *s3.PutBucketReplicationOutput) | 	PutBucketReplicationRequest(*s3.PutBucketReplicationInput) (*request.Request, *s3.PutBucketReplicationOutput) | ||||||
|  |  | ||||||
| 	PutBucketReplication(*s3.PutBucketReplicationInput) (*s3.PutBucketReplicationOutput, error) | 	PutBucketReplication(*s3.PutBucketReplicationInput) (*s3.PutBucketReplicationOutput, error) | ||||||
|  |  | ||||||
| 	PutBucketRequestPaymentRequest(*s3.PutBucketRequestPaymentInput) (*service.Request, *s3.PutBucketRequestPaymentOutput) | 	PutBucketRequestPaymentRequest(*s3.PutBucketRequestPaymentInput) (*request.Request, *s3.PutBucketRequestPaymentOutput) | ||||||
|  |  | ||||||
| 	PutBucketRequestPayment(*s3.PutBucketRequestPaymentInput) (*s3.PutBucketRequestPaymentOutput, error) | 	PutBucketRequestPayment(*s3.PutBucketRequestPaymentInput) (*s3.PutBucketRequestPaymentOutput, error) | ||||||
|  |  | ||||||
| 	PutBucketTaggingRequest(*s3.PutBucketTaggingInput) (*service.Request, *s3.PutBucketTaggingOutput) | 	PutBucketTaggingRequest(*s3.PutBucketTaggingInput) (*request.Request, *s3.PutBucketTaggingOutput) | ||||||
|  |  | ||||||
| 	PutBucketTagging(*s3.PutBucketTaggingInput) (*s3.PutBucketTaggingOutput, error) | 	PutBucketTagging(*s3.PutBucketTaggingInput) (*s3.PutBucketTaggingOutput, error) | ||||||
|  |  | ||||||
| 	PutBucketVersioningRequest(*s3.PutBucketVersioningInput) (*service.Request, *s3.PutBucketVersioningOutput) | 	PutBucketVersioningRequest(*s3.PutBucketVersioningInput) (*request.Request, *s3.PutBucketVersioningOutput) | ||||||
|  |  | ||||||
| 	PutBucketVersioning(*s3.PutBucketVersioningInput) (*s3.PutBucketVersioningOutput, error) | 	PutBucketVersioning(*s3.PutBucketVersioningInput) (*s3.PutBucketVersioningOutput, error) | ||||||
|  |  | ||||||
| 	PutBucketWebsiteRequest(*s3.PutBucketWebsiteInput) (*service.Request, *s3.PutBucketWebsiteOutput) | 	PutBucketWebsiteRequest(*s3.PutBucketWebsiteInput) (*request.Request, *s3.PutBucketWebsiteOutput) | ||||||
|  |  | ||||||
| 	PutBucketWebsite(*s3.PutBucketWebsiteInput) (*s3.PutBucketWebsiteOutput, error) | 	PutBucketWebsite(*s3.PutBucketWebsiteInput) (*s3.PutBucketWebsiteOutput, error) | ||||||
|  |  | ||||||
| 	PutObjectRequest(*s3.PutObjectInput) (*service.Request, *s3.PutObjectOutput) | 	PutObjectRequest(*s3.PutObjectInput) (*request.Request, *s3.PutObjectOutput) | ||||||
|  |  | ||||||
| 	PutObject(*s3.PutObjectInput) (*s3.PutObjectOutput, error) | 	PutObject(*s3.PutObjectInput) (*s3.PutObjectOutput, error) | ||||||
|  |  | ||||||
| 	PutObjectAclRequest(*s3.PutObjectAclInput) (*service.Request, *s3.PutObjectAclOutput) | 	PutObjectAclRequest(*s3.PutObjectAclInput) (*request.Request, *s3.PutObjectAclOutput) | ||||||
|  |  | ||||||
| 	PutObjectAcl(*s3.PutObjectAclInput) (*s3.PutObjectAclOutput, error) | 	PutObjectAcl(*s3.PutObjectAclInput) (*s3.PutObjectAclOutput, error) | ||||||
|  |  | ||||||
| 	RestoreObjectRequest(*s3.RestoreObjectInput) (*service.Request, *s3.RestoreObjectOutput) | 	RestoreObjectRequest(*s3.RestoreObjectInput) (*request.Request, *s3.RestoreObjectOutput) | ||||||
|  |  | ||||||
| 	RestoreObject(*s3.RestoreObjectInput) (*s3.RestoreObjectOutput, error) | 	RestoreObject(*s3.RestoreObjectInput) (*s3.RestoreObjectOutput, error) | ||||||
|  |  | ||||||
| 	UploadPartRequest(*s3.UploadPartInput) (*service.Request, *s3.UploadPartOutput) | 	UploadPartRequest(*s3.UploadPartInput) (*request.Request, *s3.UploadPartOutput) | ||||||
|  |  | ||||||
| 	UploadPart(*s3.UploadPartInput) (*s3.UploadPartOutput, error) | 	UploadPart(*s3.UploadPartInput) (*s3.UploadPartOutput, error) | ||||||
|  |  | ||||||
| 	UploadPartCopyRequest(*s3.UploadPartCopyInput) (*service.Request, *s3.UploadPartCopyOutput) | 	UploadPartCopyRequest(*s3.UploadPartCopyInput) (*request.Request, *s3.UploadPartCopyOutput) | ||||||
|  |  | ||||||
| 	UploadPartCopy(*s3.UploadPartCopyInput) (*s3.UploadPartCopyOutput, error) | 	UploadPartCopy(*s3.UploadPartCopyInput) (*s3.UploadPartCopyOutput, error) | ||||||
| } | } | ||||||
|   | |||||||
							
								
								
									
										15
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/s3/s3iface/interface_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										15
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/s3/s3iface/interface_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,15 +0,0 @@ | |||||||
| // THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. |  | ||||||
|  |  | ||||||
| package s3iface_test |  | ||||||
|  |  | ||||||
| import ( |  | ||||||
| 	"testing" |  | ||||||
|  |  | ||||||
| 	"github.com/aws/aws-sdk-go/service/s3" |  | ||||||
| 	"github.com/aws/aws-sdk-go/service/s3/s3iface" |  | ||||||
| 	"github.com/stretchr/testify/assert" |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| func TestInterface(t *testing.T) { |  | ||||||
| 	assert.Implements(t, (*s3iface.S3API)(nil), s3.New(nil)) |  | ||||||
| } |  | ||||||
							
								
								
									
										3
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/s3/s3manager/download.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/s3/s3manager/download.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -10,6 +10,7 @@ import ( | |||||||
|  |  | ||||||
| 	"github.com/aws/aws-sdk-go/aws/awsutil" | 	"github.com/aws/aws-sdk-go/aws/awsutil" | ||||||
| 	"github.com/aws/aws-sdk-go/service/s3" | 	"github.com/aws/aws-sdk-go/service/s3" | ||||||
|  | 	"github.com/aws/aws-sdk-go/service/s3/s3iface" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| // The default range of bytes to get at a time when using Download(). | // The default range of bytes to get at a time when using Download(). | ||||||
| @@ -37,7 +38,7 @@ type DownloadOptions struct { | |||||||
|  |  | ||||||
| 	// An S3 client to use when performing downloads. Leave this as nil to use | 	// An S3 client to use when performing downloads. Leave this as nil to use | ||||||
| 	// a default client. | 	// a default client. | ||||||
| 	S3 *s3.S3 | 	S3 s3iface.S3API | ||||||
| } | } | ||||||
|  |  | ||||||
| // NewDownloader creates a new Downloader structure that downloads an object | // NewDownloader creates a new Downloader structure that downloads an object | ||||||
|   | |||||||
							
								
								
									
										141
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/s3/s3manager/download_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										141
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/s3/s3manager/download_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,141 +0,0 @@ | |||||||
| package s3manager_test |  | ||||||
|  |  | ||||||
| import ( |  | ||||||
| 	"bytes" |  | ||||||
| 	"fmt" |  | ||||||
| 	"io/ioutil" |  | ||||||
| 	"net/http" |  | ||||||
| 	"regexp" |  | ||||||
| 	"strconv" |  | ||||||
| 	"sync" |  | ||||||
| 	"testing" |  | ||||||
|  |  | ||||||
| 	"github.com/aws/aws-sdk-go/aws" |  | ||||||
| 	"github.com/aws/aws-sdk-go/aws/service" |  | ||||||
| 	"github.com/aws/aws-sdk-go/internal/test/unit" |  | ||||||
| 	"github.com/aws/aws-sdk-go/service/s3" |  | ||||||
| 	"github.com/aws/aws-sdk-go/service/s3/s3manager" |  | ||||||
| 	"github.com/stretchr/testify/assert" |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| var _ = unit.Imported |  | ||||||
|  |  | ||||||
| func dlLoggingSvc(data []byte) (*s3.S3, *[]string, *[]string) { |  | ||||||
| 	var m sync.Mutex |  | ||||||
| 	names := []string{} |  | ||||||
| 	ranges := []string{} |  | ||||||
|  |  | ||||||
| 	svc := s3.New(nil) |  | ||||||
| 	svc.Handlers.Send.Clear() |  | ||||||
| 	svc.Handlers.Send.PushBack(func(r *service.Request) { |  | ||||||
| 		m.Lock() |  | ||||||
| 		defer m.Unlock() |  | ||||||
|  |  | ||||||
| 		names = append(names, r.Operation.Name) |  | ||||||
| 		ranges = append(ranges, *r.Params.(*s3.GetObjectInput).Range) |  | ||||||
|  |  | ||||||
| 		rerng := regexp.MustCompile(`bytes=(\d+)-(\d+)`) |  | ||||||
| 		rng := rerng.FindStringSubmatch(r.HTTPRequest.Header.Get("Range")) |  | ||||||
| 		start, _ := strconv.ParseInt(rng[1], 10, 64) |  | ||||||
| 		fin, _ := strconv.ParseInt(rng[2], 10, 64) |  | ||||||
| 		fin++ |  | ||||||
|  |  | ||||||
| 		if fin > int64(len(data)) { |  | ||||||
| 			fin = int64(len(data)) |  | ||||||
| 		} |  | ||||||
|  |  | ||||||
| 		r.HTTPResponse = &http.Response{ |  | ||||||
| 			StatusCode: 200, |  | ||||||
| 			Body:       ioutil.NopCloser(bytes.NewReader(data[start:fin])), |  | ||||||
| 			Header:     http.Header{}, |  | ||||||
| 		} |  | ||||||
| 		r.HTTPResponse.Header.Set("Content-Range", fmt.Sprintf("bytes %d-%d/%d", |  | ||||||
| 			start, fin, len(data))) |  | ||||||
| 	}) |  | ||||||
|  |  | ||||||
| 	return svc, &names, &ranges |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestDownloadOrder(t *testing.T) { |  | ||||||
| 	s, names, ranges := dlLoggingSvc(buf12MB) |  | ||||||
|  |  | ||||||
| 	opts := &s3manager.DownloadOptions{S3: s, Concurrency: 1} |  | ||||||
| 	d := s3manager.NewDownloader(opts) |  | ||||||
| 	w := &aws.WriteAtBuffer{} |  | ||||||
| 	n, err := d.Download(w, &s3.GetObjectInput{ |  | ||||||
| 		Bucket: aws.String("bucket"), |  | ||||||
| 		Key:    aws.String("key"), |  | ||||||
| 	}) |  | ||||||
|  |  | ||||||
| 	assert.Nil(t, err) |  | ||||||
| 	assert.Equal(t, int64(len(buf12MB)), n) |  | ||||||
| 	assert.Equal(t, []string{"GetObject", "GetObject", "GetObject"}, *names) |  | ||||||
| 	assert.Equal(t, []string{"bytes=0-5242879", "bytes=5242880-10485759", "bytes=10485760-15728639"}, *ranges) |  | ||||||
|  |  | ||||||
| 	count := 0 |  | ||||||
| 	for _, b := range w.Bytes() { |  | ||||||
| 		count += int(b) |  | ||||||
| 	} |  | ||||||
| 	assert.Equal(t, 0, count) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestDownloadZero(t *testing.T) { |  | ||||||
| 	s, names, ranges := dlLoggingSvc([]byte{}) |  | ||||||
|  |  | ||||||
| 	opts := &s3manager.DownloadOptions{S3: s} |  | ||||||
| 	d := s3manager.NewDownloader(opts) |  | ||||||
| 	w := &aws.WriteAtBuffer{} |  | ||||||
| 	n, err := d.Download(w, &s3.GetObjectInput{ |  | ||||||
| 		Bucket: aws.String("bucket"), |  | ||||||
| 		Key:    aws.String("key"), |  | ||||||
| 	}) |  | ||||||
|  |  | ||||||
| 	assert.Nil(t, err) |  | ||||||
| 	assert.Equal(t, int64(0), n) |  | ||||||
| 	assert.Equal(t, []string{"GetObject"}, *names) |  | ||||||
| 	assert.Equal(t, []string{"bytes=0-5242879"}, *ranges) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestDownloadSetPartSize(t *testing.T) { |  | ||||||
| 	s, names, ranges := dlLoggingSvc([]byte{1, 2, 3}) |  | ||||||
|  |  | ||||||
| 	opts := &s3manager.DownloadOptions{S3: s, PartSize: 1, Concurrency: 1} |  | ||||||
| 	d := s3manager.NewDownloader(opts) |  | ||||||
| 	w := &aws.WriteAtBuffer{} |  | ||||||
| 	n, err := d.Download(w, &s3.GetObjectInput{ |  | ||||||
| 		Bucket: aws.String("bucket"), |  | ||||||
| 		Key:    aws.String("key"), |  | ||||||
| 	}) |  | ||||||
|  |  | ||||||
| 	assert.Nil(t, err) |  | ||||||
| 	assert.Equal(t, int64(3), n) |  | ||||||
| 	assert.Equal(t, []string{"GetObject", "GetObject", "GetObject"}, *names) |  | ||||||
| 	assert.Equal(t, []string{"bytes=0-0", "bytes=1-1", "bytes=2-2"}, *ranges) |  | ||||||
| 	assert.Equal(t, []byte{1, 2, 3}, w.Bytes()) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestDownloadError(t *testing.T) { |  | ||||||
| 	s, names, _ := dlLoggingSvc([]byte{1, 2, 3}) |  | ||||||
| 	opts := &s3manager.DownloadOptions{S3: s, PartSize: 1, Concurrency: 1} |  | ||||||
|  |  | ||||||
| 	num := 0 |  | ||||||
| 	s.Handlers.Send.PushBack(func(r *service.Request) { |  | ||||||
| 		num++ |  | ||||||
| 		if num > 1 { |  | ||||||
| 			r.HTTPResponse.StatusCode = 400 |  | ||||||
| 			r.HTTPResponse.Body = ioutil.NopCloser(bytes.NewReader([]byte{})) |  | ||||||
| 		} |  | ||||||
| 	}) |  | ||||||
|  |  | ||||||
| 	d := s3manager.NewDownloader(opts) |  | ||||||
| 	w := &aws.WriteAtBuffer{} |  | ||||||
| 	n, err := d.Download(w, &s3.GetObjectInput{ |  | ||||||
| 		Bucket: aws.String("bucket"), |  | ||||||
| 		Key:    aws.String("key"), |  | ||||||
| 	}) |  | ||||||
|  |  | ||||||
| 	assert.NotNil(t, err) |  | ||||||
| 	assert.Equal(t, int64(1), n) |  | ||||||
| 	assert.Equal(t, []string{"GetObject", "GetObject"}, *names) |  | ||||||
| 	assert.Equal(t, []byte{1}, w.Bytes()) |  | ||||||
| } |  | ||||||
							
								
								
									
										3
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/s3/s3manager/upload.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/s3/s3manager/upload.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -11,6 +11,7 @@ import ( | |||||||
| 	"github.com/aws/aws-sdk-go/aws/awserr" | 	"github.com/aws/aws-sdk-go/aws/awserr" | ||||||
| 	"github.com/aws/aws-sdk-go/aws/awsutil" | 	"github.com/aws/aws-sdk-go/aws/awsutil" | ||||||
| 	"github.com/aws/aws-sdk-go/service/s3" | 	"github.com/aws/aws-sdk-go/service/s3" | ||||||
|  | 	"github.com/aws/aws-sdk-go/service/s3/s3iface" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| // The maximum allowed number of parts in a multi-part upload on Amazon S3. | // The maximum allowed number of parts in a multi-part upload on Amazon S3. | ||||||
| @@ -215,7 +216,7 @@ type UploadOptions struct { | |||||||
|  |  | ||||||
| 	// The client to use when uploading to S3. Leave this as nil to use the | 	// The client to use when uploading to S3. Leave this as nil to use the | ||||||
| 	// default S3 client. | 	// default S3 client. | ||||||
| 	S3 *s3.S3 | 	S3 s3iface.S3API | ||||||
| } | } | ||||||
|  |  | ||||||
| // NewUploader creates a new Uploader object to upload data to S3. Pass in | // NewUploader creates a new Uploader object to upload data to S3. Pass in | ||||||
|   | |||||||
							
								
								
									
										463
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/s3/s3manager/upload_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										463
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/s3/s3manager/upload_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,463 +0,0 @@ | |||||||
| package s3manager_test |  | ||||||
|  |  | ||||||
| import ( |  | ||||||
| 	"bytes" |  | ||||||
| 	"fmt" |  | ||||||
| 	"io" |  | ||||||
| 	"io/ioutil" |  | ||||||
| 	"net/http" |  | ||||||
| 	"sort" |  | ||||||
| 	"sync" |  | ||||||
| 	"testing" |  | ||||||
| 	"strings" |  | ||||||
| 	"net/http/httptest" |  | ||||||
|  |  | ||||||
| 	"github.com/aws/aws-sdk-go/aws" |  | ||||||
| 	"github.com/aws/aws-sdk-go/aws/awserr" |  | ||||||
| 	"github.com/aws/aws-sdk-go/aws/awsutil" |  | ||||||
| 	"github.com/aws/aws-sdk-go/aws/service" |  | ||||||
| 	"github.com/aws/aws-sdk-go/internal/test/unit" |  | ||||||
| 	"github.com/aws/aws-sdk-go/service/s3" |  | ||||||
| 	"github.com/aws/aws-sdk-go/service/s3/s3manager" |  | ||||||
| 	"github.com/stretchr/testify/assert" |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| var _ = unit.Imported |  | ||||||
| var buf12MB = make([]byte, 1024*1024*12) |  | ||||||
| var buf2MB = make([]byte, 1024*1024*2) |  | ||||||
|  |  | ||||||
| var emptyList = []string{} |  | ||||||
|  |  | ||||||
| func val(i interface{}, s string) interface{} { |  | ||||||
| 	return awsutil.ValuesAtPath(i, s)[0] |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func contains(src []string, s string) bool { |  | ||||||
| 	for _, v := range src { |  | ||||||
| 		if s == v { |  | ||||||
| 			return true |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
| 	return false |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func loggingSvc(ignoreOps []string) (*s3.S3, *[]string, *[]interface{}) { |  | ||||||
| 	var m sync.Mutex |  | ||||||
| 	partNum := 0 |  | ||||||
| 	names := []string{} |  | ||||||
| 	params := []interface{}{} |  | ||||||
| 	svc := s3.New(nil) |  | ||||||
| 	svc.Handlers.Unmarshal.Clear() |  | ||||||
| 	svc.Handlers.UnmarshalMeta.Clear() |  | ||||||
| 	svc.Handlers.UnmarshalError.Clear() |  | ||||||
| 	svc.Handlers.Send.Clear() |  | ||||||
| 	svc.Handlers.Send.PushBack(func(r *service.Request) { |  | ||||||
| 		m.Lock() |  | ||||||
| 		defer m.Unlock() |  | ||||||
|  |  | ||||||
| 		if !contains(ignoreOps, r.Operation.Name) { |  | ||||||
| 			names = append(names, r.Operation.Name) |  | ||||||
| 			params = append(params, r.Params) |  | ||||||
| 		} |  | ||||||
|  |  | ||||||
| 		r.HTTPResponse = &http.Response{ |  | ||||||
| 			StatusCode: 200, |  | ||||||
| 			Body:       ioutil.NopCloser(bytes.NewReader([]byte{})), |  | ||||||
| 		} |  | ||||||
|  |  | ||||||
| 		switch data := r.Data.(type) { |  | ||||||
| 		case *s3.CreateMultipartUploadOutput: |  | ||||||
| 			data.UploadId = aws.String("UPLOAD-ID") |  | ||||||
| 		case *s3.UploadPartOutput: |  | ||||||
| 			partNum++ |  | ||||||
| 			data.ETag = aws.String(fmt.Sprintf("ETAG%d", partNum)) |  | ||||||
| 		case *s3.CompleteMultipartUploadOutput: |  | ||||||
| 			data.Location = aws.String("https://location") |  | ||||||
| 		} |  | ||||||
| 	}) |  | ||||||
|  |  | ||||||
| 	return svc, &names, ¶ms |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func buflen(i interface{}) int { |  | ||||||
| 	r := i.(io.Reader) |  | ||||||
| 	b, _ := ioutil.ReadAll(r) |  | ||||||
| 	return len(b) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestUploadOrderMulti(t *testing.T) { |  | ||||||
| 	s, ops, args := loggingSvc(emptyList) |  | ||||||
| 	mgr := s3manager.NewUploader(&s3manager.UploadOptions{S3: s}) |  | ||||||
| 	resp, err := mgr.Upload(&s3manager.UploadInput{ |  | ||||||
| 		Bucket:               aws.String("Bucket"), |  | ||||||
| 		Key:                  aws.String("Key"), |  | ||||||
| 		Body:                 bytes.NewReader(buf12MB), |  | ||||||
| 		ServerSideEncryption: aws.String("AES256"), |  | ||||||
| 		ContentType:          aws.String("content/type"), |  | ||||||
| 	}) |  | ||||||
|  |  | ||||||
| 	assert.NoError(t, err) |  | ||||||
| 	assert.Equal(t, []string{"CreateMultipartUpload", "UploadPart", "UploadPart", "UploadPart", "CompleteMultipartUpload"}, *ops) |  | ||||||
| 	assert.Equal(t, "https://location", resp.Location) |  | ||||||
| 	assert.Equal(t, "UPLOAD-ID", resp.UploadID) |  | ||||||
|  |  | ||||||
| 	// Validate input values |  | ||||||
|  |  | ||||||
| 	// UploadPart |  | ||||||
| 	assert.Equal(t, "UPLOAD-ID", val((*args)[1], "UploadId")) |  | ||||||
| 	assert.Equal(t, "UPLOAD-ID", val((*args)[2], "UploadId")) |  | ||||||
| 	assert.Equal(t, "UPLOAD-ID", val((*args)[3], "UploadId")) |  | ||||||
|  |  | ||||||
| 	// CompleteMultipartUpload |  | ||||||
| 	assert.Equal(t, "UPLOAD-ID", val((*args)[4], "UploadId")) |  | ||||||
| 	assert.Equal(t, int64(1), val((*args)[4], "MultipartUpload.Parts[0].PartNumber")) |  | ||||||
| 	assert.Equal(t, int64(2), val((*args)[4], "MultipartUpload.Parts[1].PartNumber")) |  | ||||||
| 	assert.Equal(t, int64(3), val((*args)[4], "MultipartUpload.Parts[2].PartNumber")) |  | ||||||
| 	assert.Regexp(t, `^ETAG\d+$`, val((*args)[4], "MultipartUpload.Parts[0].ETag")) |  | ||||||
| 	assert.Regexp(t, `^ETAG\d+$`, val((*args)[4], "MultipartUpload.Parts[1].ETag")) |  | ||||||
| 	assert.Regexp(t, `^ETAG\d+$`, val((*args)[4], "MultipartUpload.Parts[2].ETag")) |  | ||||||
|  |  | ||||||
| 	// Custom headers |  | ||||||
| 	assert.Equal(t, "AES256", val((*args)[0], "ServerSideEncryption")) |  | ||||||
| 	assert.Equal(t, "content/type", val((*args)[0], "ContentType")) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestUploadOrderMultiDifferentPartSize(t *testing.T) { |  | ||||||
| 	s, ops, args := loggingSvc(emptyList) |  | ||||||
| 	mgr := s3manager.NewUploader(&s3manager.UploadOptions{ |  | ||||||
| 		S3:          s, |  | ||||||
| 		PartSize:    1024 * 1024 * 7, |  | ||||||
| 		Concurrency: 1, |  | ||||||
| 	}) |  | ||||||
| 	_, err := mgr.Upload(&s3manager.UploadInput{ |  | ||||||
| 		Bucket: aws.String("Bucket"), |  | ||||||
| 		Key:    aws.String("Key"), |  | ||||||
| 		Body:   bytes.NewReader(buf12MB), |  | ||||||
| 	}) |  | ||||||
|  |  | ||||||
| 	assert.NoError(t, err) |  | ||||||
| 	assert.Equal(t, []string{"CreateMultipartUpload", "UploadPart", "UploadPart", "CompleteMultipartUpload"}, *ops) |  | ||||||
|  |  | ||||||
| 	// Part lengths |  | ||||||
| 	assert.Equal(t, 1024*1024*7, buflen(val((*args)[1], "Body"))) |  | ||||||
| 	assert.Equal(t, 1024*1024*5, buflen(val((*args)[2], "Body"))) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestUploadIncreasePartSize(t *testing.T) { |  | ||||||
| 	s3manager.MaxUploadParts = 2 |  | ||||||
| 	defer func() { s3manager.MaxUploadParts = 10000 }() |  | ||||||
|  |  | ||||||
| 	s, ops, args := loggingSvc(emptyList) |  | ||||||
| 	opts := &s3manager.UploadOptions{S3: s, Concurrency: 1} |  | ||||||
| 	mgr := s3manager.NewUploader(opts) |  | ||||||
| 	_, err := mgr.Upload(&s3manager.UploadInput{ |  | ||||||
| 		Bucket: aws.String("Bucket"), |  | ||||||
| 		Key:    aws.String("Key"), |  | ||||||
| 		Body:   bytes.NewReader(buf12MB), |  | ||||||
| 	}) |  | ||||||
|  |  | ||||||
| 	assert.NoError(t, err) |  | ||||||
| 	assert.Equal(t, int64(0), opts.PartSize) // don't modify orig options |  | ||||||
| 	assert.Equal(t, []string{"CreateMultipartUpload", "UploadPart", "UploadPart", "CompleteMultipartUpload"}, *ops) |  | ||||||
|  |  | ||||||
| 	// Part lengths |  | ||||||
| 	assert.Equal(t, 1024*1024*6, buflen(val((*args)[1], "Body"))) |  | ||||||
| 	assert.Equal(t, 1024*1024*6, buflen(val((*args)[2], "Body"))) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestUploadFailIfPartSizeTooSmall(t *testing.T) { |  | ||||||
| 	opts := &s3manager.UploadOptions{PartSize: 5} |  | ||||||
| 	mgr := s3manager.NewUploader(opts) |  | ||||||
| 	resp, err := mgr.Upload(&s3manager.UploadInput{ |  | ||||||
| 		Bucket: aws.String("Bucket"), |  | ||||||
| 		Key:    aws.String("Key"), |  | ||||||
| 		Body:   bytes.NewReader(buf12MB), |  | ||||||
| 	}) |  | ||||||
|  |  | ||||||
| 	assert.Nil(t, resp) |  | ||||||
| 	assert.NotNil(t, err) |  | ||||||
|  |  | ||||||
| 	aerr := err.(awserr.Error) |  | ||||||
| 	assert.Equal(t, "ConfigError", aerr.Code()) |  | ||||||
| 	assert.Contains(t, aerr.Message(), "part size must be at least") |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestUploadOrderSingle(t *testing.T) { |  | ||||||
| 	s, ops, args := loggingSvc(emptyList) |  | ||||||
| 	mgr := s3manager.NewUploader(&s3manager.UploadOptions{S3: s}) |  | ||||||
| 	resp, err := mgr.Upload(&s3manager.UploadInput{ |  | ||||||
| 		Bucket:               aws.String("Bucket"), |  | ||||||
| 		Key:                  aws.String("Key"), |  | ||||||
| 		Body:                 bytes.NewReader(buf2MB), |  | ||||||
| 		ServerSideEncryption: aws.String("AES256"), |  | ||||||
| 		ContentType:          aws.String("content/type"), |  | ||||||
| 	}) |  | ||||||
|  |  | ||||||
| 	assert.NoError(t, err) |  | ||||||
| 	assert.Equal(t, []string{"PutObject"}, *ops) |  | ||||||
| 	assert.NotEqual(t, "", resp.Location) |  | ||||||
| 	assert.Equal(t, "", resp.UploadID) |  | ||||||
| 	assert.Equal(t, "AES256", val((*args)[0], "ServerSideEncryption")) |  | ||||||
| 	assert.Equal(t, "content/type", val((*args)[0], "ContentType")) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestUploadOrderSingleFailure(t *testing.T) { |  | ||||||
| 	s, ops, _ := loggingSvc(emptyList) |  | ||||||
| 	s.Handlers.Send.PushBack(func(r *service.Request) { |  | ||||||
| 		r.HTTPResponse.StatusCode = 400 |  | ||||||
| 	}) |  | ||||||
| 	mgr := s3manager.NewUploader(&s3manager.UploadOptions{S3: s}) |  | ||||||
| 	resp, err := mgr.Upload(&s3manager.UploadInput{ |  | ||||||
| 		Bucket: aws.String("Bucket"), |  | ||||||
| 		Key:    aws.String("Key"), |  | ||||||
| 		Body:   bytes.NewReader(buf2MB), |  | ||||||
| 	}) |  | ||||||
|  |  | ||||||
| 	assert.Error(t, err) |  | ||||||
| 	assert.Equal(t, []string{"PutObject"}, *ops) |  | ||||||
| 	assert.Nil(t, resp) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestUploadOrderZero(t *testing.T) { |  | ||||||
| 	s, ops, args := loggingSvc(emptyList) |  | ||||||
| 	mgr := s3manager.NewUploader(&s3manager.UploadOptions{S3: s}) |  | ||||||
| 	resp, err := mgr.Upload(&s3manager.UploadInput{ |  | ||||||
| 		Bucket: aws.String("Bucket"), |  | ||||||
| 		Key:    aws.String("Key"), |  | ||||||
| 		Body:   bytes.NewReader(make([]byte, 0)), |  | ||||||
| 	}) |  | ||||||
|  |  | ||||||
| 	assert.NoError(t, err) |  | ||||||
| 	assert.Equal(t, []string{"PutObject"}, *ops) |  | ||||||
| 	assert.NotEqual(t, "", resp.Location) |  | ||||||
| 	assert.Equal(t, "", resp.UploadID) |  | ||||||
| 	assert.Equal(t, 0, buflen(val((*args)[0], "Body"))) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestUploadOrderMultiFailure(t *testing.T) { |  | ||||||
| 	s, ops, _ := loggingSvc(emptyList) |  | ||||||
| 	s.Handlers.Send.PushBack(func(r *service.Request) { |  | ||||||
| 		switch t := r.Data.(type) { |  | ||||||
| 		case *s3.UploadPartOutput: |  | ||||||
| 			if *t.ETag == "ETAG2" { |  | ||||||
| 				r.HTTPResponse.StatusCode = 400 |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
| 	}) |  | ||||||
|  |  | ||||||
| 	mgr := s3manager.NewUploader(&s3manager.UploadOptions{S3: s, Concurrency: 1}) |  | ||||||
| 	_, err := mgr.Upload(&s3manager.UploadInput{ |  | ||||||
| 		Bucket: aws.String("Bucket"), |  | ||||||
| 		Key:    aws.String("Key"), |  | ||||||
| 		Body:   bytes.NewReader(buf12MB), |  | ||||||
| 	}) |  | ||||||
|  |  | ||||||
| 	assert.Error(t, err) |  | ||||||
| 	assert.Equal(t, []string{"CreateMultipartUpload", "UploadPart", "UploadPart", "AbortMultipartUpload"}, *ops) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestUploadOrderMultiFailureOnComplete(t *testing.T) { |  | ||||||
| 	s, ops, _ := loggingSvc(emptyList) |  | ||||||
| 	s.Handlers.Send.PushBack(func(r *service.Request) { |  | ||||||
| 		switch r.Data.(type) { |  | ||||||
| 		case *s3.CompleteMultipartUploadOutput: |  | ||||||
| 			r.HTTPResponse.StatusCode = 400 |  | ||||||
| 		} |  | ||||||
| 	}) |  | ||||||
|  |  | ||||||
| 	mgr := s3manager.NewUploader(&s3manager.UploadOptions{S3: s, Concurrency: 1}) |  | ||||||
| 	_, err := mgr.Upload(&s3manager.UploadInput{ |  | ||||||
| 		Bucket: aws.String("Bucket"), |  | ||||||
| 		Key:    aws.String("Key"), |  | ||||||
| 		Body:   bytes.NewReader(buf12MB), |  | ||||||
| 	}) |  | ||||||
|  |  | ||||||
| 	assert.Error(t, err) |  | ||||||
| 	assert.Equal(t, []string{"CreateMultipartUpload", "UploadPart", "UploadPart", |  | ||||||
| 		"UploadPart", "CompleteMultipartUpload", "AbortMultipartUpload"}, *ops) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestUploadOrderMultiFailureOnCreate(t *testing.T) { |  | ||||||
| 	s, ops, _ := loggingSvc(emptyList) |  | ||||||
| 	s.Handlers.Send.PushBack(func(r *service.Request) { |  | ||||||
| 		switch r.Data.(type) { |  | ||||||
| 		case *s3.CreateMultipartUploadOutput: |  | ||||||
| 			r.HTTPResponse.StatusCode = 400 |  | ||||||
| 		} |  | ||||||
| 	}) |  | ||||||
|  |  | ||||||
| 	mgr := s3manager.NewUploader(&s3manager.UploadOptions{S3: s}) |  | ||||||
| 	_, err := mgr.Upload(&s3manager.UploadInput{ |  | ||||||
| 		Bucket: aws.String("Bucket"), |  | ||||||
| 		Key:    aws.String("Key"), |  | ||||||
| 		Body:   bytes.NewReader(make([]byte, 1024*1024*12)), |  | ||||||
| 	}) |  | ||||||
|  |  | ||||||
| 	assert.Error(t, err) |  | ||||||
| 	assert.Equal(t, []string{"CreateMultipartUpload"}, *ops) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestUploadOrderMultiFailureLeaveParts(t *testing.T) { |  | ||||||
| 	s, ops, _ := loggingSvc(emptyList) |  | ||||||
| 	s.Handlers.Send.PushBack(func(r *service.Request) { |  | ||||||
| 		switch data := r.Data.(type) { |  | ||||||
| 		case *s3.UploadPartOutput: |  | ||||||
| 			if *data.ETag == "ETAG2" { |  | ||||||
| 				r.HTTPResponse.StatusCode = 400 |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
| 	}) |  | ||||||
|  |  | ||||||
| 	mgr := s3manager.NewUploader(&s3manager.UploadOptions{ |  | ||||||
| 		S3:                s, |  | ||||||
| 		Concurrency:       1, |  | ||||||
| 		LeavePartsOnError: true, |  | ||||||
| 	}) |  | ||||||
| 	_, err := mgr.Upload(&s3manager.UploadInput{ |  | ||||||
| 		Bucket: aws.String("Bucket"), |  | ||||||
| 		Key:    aws.String("Key"), |  | ||||||
| 		Body:   bytes.NewReader(make([]byte, 1024*1024*12)), |  | ||||||
| 	}) |  | ||||||
|  |  | ||||||
| 	assert.Error(t, err) |  | ||||||
| 	assert.Equal(t, []string{"CreateMultipartUpload", "UploadPart", "UploadPart"}, *ops) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type failreader struct { |  | ||||||
| 	times     int |  | ||||||
| 	failCount int |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func (f *failreader) Read(b []byte) (int, error) { |  | ||||||
| 	f.failCount++ |  | ||||||
| 	if f.failCount >= f.times { |  | ||||||
| 		return 0, fmt.Errorf("random failure") |  | ||||||
| 	} |  | ||||||
| 	return len(b), nil |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestUploadOrderReadFail1(t *testing.T) { |  | ||||||
| 	s, ops, _ := loggingSvc(emptyList) |  | ||||||
| 	mgr := s3manager.NewUploader(&s3manager.UploadOptions{S3: s}) |  | ||||||
| 	_, err := mgr.Upload(&s3manager.UploadInput{ |  | ||||||
| 		Bucket: aws.String("Bucket"), |  | ||||||
| 		Key:    aws.String("Key"), |  | ||||||
| 		Body:   &failreader{times: 1}, |  | ||||||
| 	}) |  | ||||||
|  |  | ||||||
| 	assert.Equal(t, "ReadRequestBody", err.(awserr.Error).Code()) |  | ||||||
| 	assert.EqualError(t, err.(awserr.Error).OrigErr(), "random failure") |  | ||||||
| 	assert.Equal(t, []string{}, *ops) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestUploadOrderReadFail2(t *testing.T) { |  | ||||||
| 	s, ops, _ := loggingSvc([]string{"UploadPart"}) |  | ||||||
| 	mgr := s3manager.NewUploader(&s3manager.UploadOptions{S3: s, Concurrency: 1}) |  | ||||||
| 	_, err := mgr.Upload(&s3manager.UploadInput{ |  | ||||||
| 		Bucket: aws.String("Bucket"), |  | ||||||
| 		Key:    aws.String("Key"), |  | ||||||
| 		Body:   &failreader{times: 2}, |  | ||||||
| 	}) |  | ||||||
|  |  | ||||||
| 	assert.Equal(t, "ReadRequestBody", err.(awserr.Error).Code()) |  | ||||||
| 	assert.EqualError(t, err.(awserr.Error).OrigErr(), "random failure") |  | ||||||
| 	assert.Equal(t, []string{"CreateMultipartUpload", "AbortMultipartUpload"}, *ops) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type sizedReader struct { |  | ||||||
| 	size int |  | ||||||
| 	cur  int |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func (s *sizedReader) Read(p []byte) (n int, err error) { |  | ||||||
| 	if s.cur >= s.size { |  | ||||||
| 		return 0, io.EOF |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	n = len(p) |  | ||||||
| 	s.cur += len(p) |  | ||||||
| 	if s.cur > s.size { |  | ||||||
| 		n -= s.cur - s.size |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	return |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestUploadOrderMultiBufferedReader(t *testing.T) { |  | ||||||
| 	s, ops, args := loggingSvc(emptyList) |  | ||||||
| 	mgr := s3manager.NewUploader(&s3manager.UploadOptions{S3: s}) |  | ||||||
| 	_, err := mgr.Upload(&s3manager.UploadInput{ |  | ||||||
| 		Bucket: aws.String("Bucket"), |  | ||||||
| 		Key:    aws.String("Key"), |  | ||||||
| 		Body:   &sizedReader{size: 1024 * 1024 * 12}, |  | ||||||
| 	}) |  | ||||||
|  |  | ||||||
| 	assert.NoError(t, err) |  | ||||||
| 	assert.Equal(t, []string{"CreateMultipartUpload", "UploadPart", "UploadPart", "UploadPart", "CompleteMultipartUpload"}, *ops) |  | ||||||
|  |  | ||||||
| 	// Part lengths |  | ||||||
| 	parts := []int{ |  | ||||||
| 		buflen(val((*args)[1], "Body")), |  | ||||||
| 		buflen(val((*args)[2], "Body")), |  | ||||||
| 		buflen(val((*args)[3], "Body")), |  | ||||||
| 	} |  | ||||||
| 	sort.Ints(parts) |  | ||||||
| 	assert.Equal(t, []int{1024 * 1024 * 2, 1024 * 1024 * 5, 1024 * 1024 * 5}, parts) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestUploadOrderMultiBufferedReaderExceedTotalParts(t *testing.T) { |  | ||||||
| 	s3manager.MaxUploadParts = 2 |  | ||||||
| 	defer func() { s3manager.MaxUploadParts = 10000 }() |  | ||||||
| 	s, ops, _ := loggingSvc([]string{"UploadPart"}) |  | ||||||
| 	mgr := s3manager.NewUploader(&s3manager.UploadOptions{S3: s, Concurrency: 1}) |  | ||||||
| 	resp, err := mgr.Upload(&s3manager.UploadInput{ |  | ||||||
| 		Bucket: aws.String("Bucket"), |  | ||||||
| 		Key:    aws.String("Key"), |  | ||||||
| 		Body:   &sizedReader{size: 1024 * 1024 * 12}, |  | ||||||
| 	}) |  | ||||||
|  |  | ||||||
| 	assert.Error(t, err) |  | ||||||
| 	assert.Nil(t, resp) |  | ||||||
| 	assert.Equal(t, []string{"CreateMultipartUpload", "AbortMultipartUpload"}, *ops) |  | ||||||
|  |  | ||||||
| 	aerr := err.(awserr.Error) |  | ||||||
| 	assert.Equal(t, "TotalPartsExceeded", aerr.Code()) |  | ||||||
| 	assert.Contains(t, aerr.Message(), "exceeded total allowed parts (2)") |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestUploadOrderSingleBufferedReader(t *testing.T) { |  | ||||||
| 	s, ops, _ := loggingSvc(emptyList) |  | ||||||
| 	mgr := s3manager.NewUploader(&s3manager.UploadOptions{S3: s}) |  | ||||||
| 	resp, err := mgr.Upload(&s3manager.UploadInput{ |  | ||||||
| 		Bucket: aws.String("Bucket"), |  | ||||||
| 		Key:    aws.String("Key"), |  | ||||||
| 		Body:   &sizedReader{size: 1024 * 1024 * 2}, |  | ||||||
| 	}) |  | ||||||
|  |  | ||||||
| 	assert.NoError(t, err) |  | ||||||
| 	assert.Equal(t, []string{"PutObject"}, *ops) |  | ||||||
| 	assert.NotEqual(t, "", resp.Location) |  | ||||||
| 	assert.Equal(t, "", resp.UploadID) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestUploadZeroLenObject(t *testing.T) { |  | ||||||
| 	requestMade := false |  | ||||||
| 	server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request){ |  | ||||||
| 		requestMade = true |  | ||||||
| 		w.WriteHeader(http.StatusOK) |  | ||||||
| 	})) |  | ||||||
| 	svc := s3.New(&aws.Config{ |  | ||||||
| 		Endpoint: aws.String(server.URL), |  | ||||||
| 	}) |  | ||||||
| 	mgr := s3manager.NewUploader(&s3manager.UploadOptions{S3: svc}) |  | ||||||
| 	resp, err := mgr.Upload(&s3manager.UploadInput{ |  | ||||||
| 		Bucket: aws.String("Bucket"), |  | ||||||
| 		Key:    aws.String("Key"), |  | ||||||
| 		Body:   strings.NewReader(""), |  | ||||||
| 	}) |  | ||||||
|  |  | ||||||
| 	assert.NoError(t, err) |  | ||||||
| 	assert.True(t, requestMade) |  | ||||||
| 	assert.NotEqual(t, "", resp.Location) |  | ||||||
| 	assert.Equal(t, "", resp.UploadID) |  | ||||||
| } |  | ||||||
							
								
								
									
										16
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/s3/service.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										16
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/s3/service.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -5,7 +5,9 @@ package s3 | |||||||
| import ( | import ( | ||||||
| 	"github.com/aws/aws-sdk-go/aws" | 	"github.com/aws/aws-sdk-go/aws" | ||||||
| 	"github.com/aws/aws-sdk-go/aws/defaults" | 	"github.com/aws/aws-sdk-go/aws/defaults" | ||||||
|  | 	"github.com/aws/aws-sdk-go/aws/request" | ||||||
| 	"github.com/aws/aws-sdk-go/aws/service" | 	"github.com/aws/aws-sdk-go/aws/service" | ||||||
|  | 	"github.com/aws/aws-sdk-go/aws/service/serviceinfo" | ||||||
| 	"github.com/aws/aws-sdk-go/internal/protocol/restxml" | 	"github.com/aws/aws-sdk-go/internal/protocol/restxml" | ||||||
| 	"github.com/aws/aws-sdk-go/internal/signer/v4" | 	"github.com/aws/aws-sdk-go/internal/signer/v4" | ||||||
| ) | ) | ||||||
| @@ -19,14 +21,16 @@ type S3 struct { | |||||||
| var initService func(*service.Service) | var initService func(*service.Service) | ||||||
|  |  | ||||||
| // Used for custom request initialization logic | // Used for custom request initialization logic | ||||||
| var initRequest func(*service.Request) | var initRequest func(*request.Request) | ||||||
|  |  | ||||||
| // New returns a new S3 client. | // New returns a new S3 client. | ||||||
| func New(config *aws.Config) *S3 { | func New(config *aws.Config) *S3 { | ||||||
| 	service := &service.Service{ | 	service := &service.Service{ | ||||||
| 		Config:      defaults.DefaultConfig.Merge(config), | 		ServiceInfo: serviceinfo.ServiceInfo{ | ||||||
| 		ServiceName: "s3", | 			Config:      defaults.DefaultConfig.Merge(config), | ||||||
| 		APIVersion:  "2006-03-01", | 			ServiceName: "s3", | ||||||
|  | 			APIVersion:  "2006-03-01", | ||||||
|  | 		}, | ||||||
| 	} | 	} | ||||||
| 	service.Initialize() | 	service.Initialize() | ||||||
|  |  | ||||||
| @@ -47,8 +51,8 @@ func New(config *aws.Config) *S3 { | |||||||
|  |  | ||||||
| // newRequest creates a new request for a S3 operation and runs any | // newRequest creates a new request for a S3 operation and runs any | ||||||
| // custom request initialization. | // custom request initialization. | ||||||
| func (c *S3) newRequest(op *service.Operation, params, data interface{}) *service.Request { | func (c *S3) newRequest(op *request.Operation, params, data interface{}) *request.Request { | ||||||
| 	req := service.NewRequest(c.Service, op, params, data) | 	req := c.NewRequest(op, params, data) | ||||||
|  |  | ||||||
| 	// Run custom request initialization if present | 	// Run custom request initialization if present | ||||||
| 	if initRequest != nil { | 	if initRequest != nil { | ||||||
|   | |||||||
							
								
								
									
										6
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/s3/sse.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/s3/sse.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -6,12 +6,12 @@ import ( | |||||||
|  |  | ||||||
| 	"github.com/aws/aws-sdk-go/aws/awserr" | 	"github.com/aws/aws-sdk-go/aws/awserr" | ||||||
| 	"github.com/aws/aws-sdk-go/aws/awsutil" | 	"github.com/aws/aws-sdk-go/aws/awsutil" | ||||||
| 	"github.com/aws/aws-sdk-go/aws/service" | 	"github.com/aws/aws-sdk-go/aws/request" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| var errSSERequiresSSL = awserr.New("ConfigError", "cannot send SSE keys over HTTP.", nil) | var errSSERequiresSSL = awserr.New("ConfigError", "cannot send SSE keys over HTTP.", nil) | ||||||
|  |  | ||||||
| func validateSSERequiresSSL(r *service.Request) { | func validateSSERequiresSSL(r *request.Request) { | ||||||
| 	if r.HTTPRequest.URL.Scheme != "https" { | 	if r.HTTPRequest.URL.Scheme != "https" { | ||||||
| 		p := awsutil.ValuesAtPath(r.Params, "SSECustomerKey||CopySourceSSECustomerKey") | 		p := awsutil.ValuesAtPath(r.Params, "SSECustomerKey||CopySourceSSECustomerKey") | ||||||
| 		if len(p) > 0 { | 		if len(p) > 0 { | ||||||
| @@ -20,7 +20,7 @@ func validateSSERequiresSSL(r *service.Request) { | |||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
| func computeSSEKeys(r *service.Request) { | func computeSSEKeys(r *request.Request) { | ||||||
| 	headers := []string{ | 	headers := []string{ | ||||||
| 		"x-amz-server-side-encryption-customer-key", | 		"x-amz-server-side-encryption-customer-key", | ||||||
| 		"x-amz-copy-source-server-side-encryption-customer-key", | 		"x-amz-copy-source-server-side-encryption-customer-key", | ||||||
|   | |||||||
							
								
								
									
										81
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/s3/sse_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										81
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/s3/sse_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,81 +0,0 @@ | |||||||
| package s3_test |  | ||||||
|  |  | ||||||
| import ( |  | ||||||
| 	"testing" |  | ||||||
|  |  | ||||||
| 	"github.com/aws/aws-sdk-go/aws" |  | ||||||
| 	"github.com/aws/aws-sdk-go/aws/awserr" |  | ||||||
| 	"github.com/aws/aws-sdk-go/internal/test/unit" |  | ||||||
| 	"github.com/aws/aws-sdk-go/service/s3" |  | ||||||
| 	"github.com/stretchr/testify/assert" |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| var _ = unit.Imported |  | ||||||
|  |  | ||||||
| func TestSSECustomerKeyOverHTTPError(t *testing.T) { |  | ||||||
| 	s := s3.New(&aws.Config{DisableSSL: aws.Bool(true)}) |  | ||||||
| 	req, _ := s.CopyObjectRequest(&s3.CopyObjectInput{ |  | ||||||
| 		Bucket:         aws.String("bucket"), |  | ||||||
| 		CopySource:     aws.String("bucket/source"), |  | ||||||
| 		Key:            aws.String("dest"), |  | ||||||
| 		SSECustomerKey: aws.String("key"), |  | ||||||
| 	}) |  | ||||||
| 	err := req.Build() |  | ||||||
|  |  | ||||||
| 	assert.Error(t, err) |  | ||||||
| 	assert.Equal(t, "ConfigError", err.(awserr.Error).Code()) |  | ||||||
| 	assert.Contains(t, err.(awserr.Error).Message(), "cannot send SSE keys over HTTP") |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestCopySourceSSECustomerKeyOverHTTPError(t *testing.T) { |  | ||||||
| 	s := s3.New(&aws.Config{DisableSSL: aws.Bool(true)}) |  | ||||||
| 	req, _ := s.CopyObjectRequest(&s3.CopyObjectInput{ |  | ||||||
| 		Bucket:     aws.String("bucket"), |  | ||||||
| 		CopySource: aws.String("bucket/source"), |  | ||||||
| 		Key:        aws.String("dest"), |  | ||||||
| 		CopySourceSSECustomerKey: aws.String("key"), |  | ||||||
| 	}) |  | ||||||
| 	err := req.Build() |  | ||||||
|  |  | ||||||
| 	assert.Error(t, err) |  | ||||||
| 	assert.Equal(t, "ConfigError", err.(awserr.Error).Code()) |  | ||||||
| 	assert.Contains(t, err.(awserr.Error).Message(), "cannot send SSE keys over HTTP") |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestComputeSSEKeys(t *testing.T) { |  | ||||||
| 	s := s3.New(nil) |  | ||||||
| 	req, _ := s.CopyObjectRequest(&s3.CopyObjectInput{ |  | ||||||
| 		Bucket:                   aws.String("bucket"), |  | ||||||
| 		CopySource:               aws.String("bucket/source"), |  | ||||||
| 		Key:                      aws.String("dest"), |  | ||||||
| 		SSECustomerKey:           aws.String("key"), |  | ||||||
| 		CopySourceSSECustomerKey: aws.String("key"), |  | ||||||
| 	}) |  | ||||||
| 	err := req.Build() |  | ||||||
|  |  | ||||||
| 	assert.NoError(t, err) |  | ||||||
| 	assert.Equal(t, "a2V5", req.HTTPRequest.Header.Get("x-amz-server-side-encryption-customer-key")) |  | ||||||
| 	assert.Equal(t, "a2V5", req.HTTPRequest.Header.Get("x-amz-copy-source-server-side-encryption-customer-key")) |  | ||||||
| 	assert.Equal(t, "PG4LipwVIkqCKLmpjKFTHQ==", req.HTTPRequest.Header.Get("x-amz-server-side-encryption-customer-key-md5")) |  | ||||||
| 	assert.Equal(t, "PG4LipwVIkqCKLmpjKFTHQ==", req.HTTPRequest.Header.Get("x-amz-copy-source-server-side-encryption-customer-key-md5")) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestComputeSSEKeysShortcircuit(t *testing.T) { |  | ||||||
| 	s := s3.New(nil) |  | ||||||
| 	req, _ := s.CopyObjectRequest(&s3.CopyObjectInput{ |  | ||||||
| 		Bucket:                      aws.String("bucket"), |  | ||||||
| 		CopySource:                  aws.String("bucket/source"), |  | ||||||
| 		Key:                         aws.String("dest"), |  | ||||||
| 		SSECustomerKey:              aws.String("key"), |  | ||||||
| 		CopySourceSSECustomerKey:    aws.String("key"), |  | ||||||
| 		SSECustomerKeyMD5:           aws.String("MD5"), |  | ||||||
| 		CopySourceSSECustomerKeyMD5: aws.String("MD5"), |  | ||||||
| 	}) |  | ||||||
| 	err := req.Build() |  | ||||||
|  |  | ||||||
| 	assert.NoError(t, err) |  | ||||||
| 	assert.Equal(t, "a2V5", req.HTTPRequest.Header.Get("x-amz-server-side-encryption-customer-key")) |  | ||||||
| 	assert.Equal(t, "a2V5", req.HTTPRequest.Header.Get("x-amz-copy-source-server-side-encryption-customer-key")) |  | ||||||
| 	assert.Equal(t, "MD5", req.HTTPRequest.Header.Get("x-amz-server-side-encryption-customer-key-md5")) |  | ||||||
| 	assert.Equal(t, "MD5", req.HTTPRequest.Header.Get("x-amz-copy-source-server-side-encryption-customer-key-md5")) |  | ||||||
| } |  | ||||||
							
								
								
									
										36
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/s3/statusok_error.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/s3/statusok_error.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,36 @@ | |||||||
|  | package s3 | ||||||
|  |  | ||||||
|  | import ( | ||||||
|  | 	"bytes" | ||||||
|  | 	"io/ioutil" | ||||||
|  | 	"net/http" | ||||||
|  |  | ||||||
|  | 	"github.com/aws/aws-sdk-go/aws" | ||||||
|  | 	"github.com/aws/aws-sdk-go/aws/awserr" | ||||||
|  | 	"github.com/aws/aws-sdk-go/aws/request" | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | func copyMultipartStatusOKUnmarhsalError(r *request.Request) { | ||||||
|  | 	b, err := ioutil.ReadAll(r.HTTPResponse.Body) | ||||||
|  | 	if err != nil { | ||||||
|  | 		r.Error = awserr.New("SerializationError", "unable to read response body", err) | ||||||
|  | 		return | ||||||
|  | 	} | ||||||
|  | 	body := bytes.NewReader(b) | ||||||
|  | 	r.HTTPResponse.Body = aws.ReadSeekCloser(body) | ||||||
|  | 	defer r.HTTPResponse.Body.(aws.ReaderSeekerCloser).Seek(0, 0) | ||||||
|  |  | ||||||
|  | 	if body.Len() == 0 { | ||||||
|  | 		// If there is no body don't attempt to parse the body. | ||||||
|  | 		return | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	unmarshalError(r) | ||||||
|  | 	if err, ok := r.Error.(awserr.Error); ok && err != nil { | ||||||
|  | 		if err.Code() == "SerializationError" { | ||||||
|  | 			r.Error = nil | ||||||
|  | 			return | ||||||
|  | 		} | ||||||
|  | 		r.HTTPResponse.StatusCode = http.StatusServiceUnavailable | ||||||
|  | 	} | ||||||
|  | } | ||||||
							
								
								
									
										13
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/s3/unmarshal_error.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										13
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/s3/unmarshal_error.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -2,11 +2,14 @@ package s3 | |||||||
|  |  | ||||||
| import ( | import ( | ||||||
| 	"encoding/xml" | 	"encoding/xml" | ||||||
|  | 	"fmt" | ||||||
| 	"io" | 	"io" | ||||||
|  | 	"net/http" | ||||||
| 	"strings" | 	"strings" | ||||||
|  |  | ||||||
|  | 	"github.com/aws/aws-sdk-go/aws" | ||||||
| 	"github.com/aws/aws-sdk-go/aws/awserr" | 	"github.com/aws/aws-sdk-go/aws/awserr" | ||||||
| 	"github.com/aws/aws-sdk-go/aws/service" | 	"github.com/aws/aws-sdk-go/aws/request" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| type xmlErrorResponse struct { | type xmlErrorResponse struct { | ||||||
| @@ -15,9 +18,15 @@ type xmlErrorResponse struct { | |||||||
| 	Message string   `xml:"Message"` | 	Message string   `xml:"Message"` | ||||||
| } | } | ||||||
|  |  | ||||||
| func unmarshalError(r *service.Request) { | func unmarshalError(r *request.Request) { | ||||||
| 	defer r.HTTPResponse.Body.Close() | 	defer r.HTTPResponse.Body.Close() | ||||||
|  |  | ||||||
|  | 	if r.HTTPResponse.StatusCode == http.StatusMovedPermanently { | ||||||
|  | 		r.Error = awserr.New("BucketRegionError", | ||||||
|  | 			fmt.Sprintf("incorrect region, the bucket is not in '%s' region", aws.StringValue(r.Service.Config.Region)), nil) | ||||||
|  | 		return | ||||||
|  | 	} | ||||||
|  |  | ||||||
| 	if r.HTTPResponse.ContentLength == int64(0) { | 	if r.HTTPResponse.ContentLength == int64(0) { | ||||||
| 		// No body, use status code to generate an awserr.Error | 		// No body, use status code to generate an awserr.Error | ||||||
| 		r.Error = awserr.NewRequestFailure( | 		r.Error = awserr.NewRequestFailure( | ||||||
|   | |||||||
							
								
								
									
										54
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/s3/unmarshal_error_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										54
									
								
								Godeps/_workspace/src/github.com/aws/aws-sdk-go/service/s3/unmarshal_error_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,54 +0,0 @@ | |||||||
| package s3_test |  | ||||||
|  |  | ||||||
| import ( |  | ||||||
| 	"bytes" |  | ||||||
| 	"io/ioutil" |  | ||||||
| 	"net/http" |  | ||||||
| 	"testing" |  | ||||||
|  |  | ||||||
| 	"github.com/aws/aws-sdk-go/aws" |  | ||||||
| 	"github.com/aws/aws-sdk-go/aws/awserr" |  | ||||||
| 	"github.com/aws/aws-sdk-go/aws/service" |  | ||||||
| 	"github.com/aws/aws-sdk-go/internal/test/unit" |  | ||||||
| 	"github.com/aws/aws-sdk-go/service/s3" |  | ||||||
| 	"github.com/stretchr/testify/assert" |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| var _ = unit.Imported |  | ||||||
|  |  | ||||||
| var s3StatusCodeErrorTests = []struct { |  | ||||||
| 	scode   int |  | ||||||
| 	status  string |  | ||||||
| 	body    string |  | ||||||
| 	code    string |  | ||||||
| 	message string |  | ||||||
| }{ |  | ||||||
| 	{301, "Moved Permanently", "", "MovedPermanently", "Moved Permanently"}, |  | ||||||
| 	{403, "Forbidden", "", "Forbidden", "Forbidden"}, |  | ||||||
| 	{400, "Bad Request", "", "BadRequest", "Bad Request"}, |  | ||||||
| 	{404, "Not Found", "", "NotFound", "Not Found"}, |  | ||||||
| 	{500, "Internal Error", "", "InternalError", "Internal Error"}, |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestStatusCodeError(t *testing.T) { |  | ||||||
| 	for _, test := range s3StatusCodeErrorTests { |  | ||||||
| 		s := s3.New(nil) |  | ||||||
| 		s.Handlers.Send.Clear() |  | ||||||
| 		s.Handlers.Send.PushBack(func(r *service.Request) { |  | ||||||
| 			body := ioutil.NopCloser(bytes.NewReader([]byte(test.body))) |  | ||||||
| 			r.HTTPResponse = &http.Response{ |  | ||||||
| 				ContentLength: int64(len(test.body)), |  | ||||||
| 				StatusCode:    test.scode, |  | ||||||
| 				Status:        test.status, |  | ||||||
| 				Body:          body, |  | ||||||
| 			} |  | ||||||
| 		}) |  | ||||||
| 		_, err := s.PutBucketAcl(&s3.PutBucketAclInput{ |  | ||||||
| 			Bucket: aws.String("bucket"), ACL: aws.String("public-read"), |  | ||||||
| 		}) |  | ||||||
|  |  | ||||||
| 		assert.Error(t, err) |  | ||||||
| 		assert.Equal(t, test.code, err.(awserr.Error).Code()) |  | ||||||
| 		assert.Equal(t, test.message, err.(awserr.Error).Message()) |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
							
								
								
									
										73
									
								
								Godeps/_workspace/src/github.com/coreos/go-etcd/etcd/add_child_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										73
									
								
								Godeps/_workspace/src/github.com/coreos/go-etcd/etcd/add_child_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,73 +0,0 @@ | |||||||
| package etcd |  | ||||||
|  |  | ||||||
| import "testing" |  | ||||||
|  |  | ||||||
| func TestAddChild(t *testing.T) { |  | ||||||
| 	c := NewClient(nil) |  | ||||||
| 	defer func() { |  | ||||||
| 		c.Delete("fooDir", true) |  | ||||||
| 		c.Delete("nonexistentDir", true) |  | ||||||
| 	}() |  | ||||||
|  |  | ||||||
| 	c.CreateDir("fooDir", 5) |  | ||||||
|  |  | ||||||
| 	_, err := c.AddChild("fooDir", "v0", 5) |  | ||||||
| 	if err != nil { |  | ||||||
| 		t.Fatal(err) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	_, err = c.AddChild("fooDir", "v1", 5) |  | ||||||
| 	if err != nil { |  | ||||||
| 		t.Fatal(err) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	resp, err := c.Get("fooDir", true, false) |  | ||||||
| 	// The child with v0 should proceed the child with v1 because it's added |  | ||||||
| 	// earlier, so it should have a lower key. |  | ||||||
| 	if !(len(resp.Node.Nodes) == 2 && (resp.Node.Nodes[0].Value == "v0" && resp.Node.Nodes[1].Value == "v1")) { |  | ||||||
| 		t.Fatalf("AddChild 1 failed.  There should be two chlidren whose values are v0 and v1, respectively."+ |  | ||||||
| 			"  The response was: %#v", resp) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	// Creating a child under a nonexistent directory should succeed. |  | ||||||
| 	// The directory should be created. |  | ||||||
| 	resp, err = c.AddChild("nonexistentDir", "foo", 5) |  | ||||||
| 	if err != nil { |  | ||||||
| 		t.Fatal(err) |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestAddChildDir(t *testing.T) { |  | ||||||
| 	c := NewClient(nil) |  | ||||||
| 	defer func() { |  | ||||||
| 		c.Delete("fooDir", true) |  | ||||||
| 		c.Delete("nonexistentDir", true) |  | ||||||
| 	}() |  | ||||||
|  |  | ||||||
| 	c.CreateDir("fooDir", 5) |  | ||||||
|  |  | ||||||
| 	_, err := c.AddChildDir("fooDir", 5) |  | ||||||
| 	if err != nil { |  | ||||||
| 		t.Fatal(err) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	_, err = c.AddChildDir("fooDir", 5) |  | ||||||
| 	if err != nil { |  | ||||||
| 		t.Fatal(err) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	resp, err := c.Get("fooDir", true, false) |  | ||||||
| 	// The child with v0 should proceed the child with v1 because it's added |  | ||||||
| 	// earlier, so it should have a lower key. |  | ||||||
| 	if !(len(resp.Node.Nodes) == 2 && (len(resp.Node.Nodes[0].Nodes) == 0 && len(resp.Node.Nodes[1].Nodes) == 0)) { |  | ||||||
| 		t.Fatalf("AddChildDir 1 failed.  There should be two chlidren whose values are v0 and v1, respectively."+ |  | ||||||
| 			"  The response was: %#v", resp) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	// Creating a child under a nonexistent directory should succeed. |  | ||||||
| 	// The directory should be created. |  | ||||||
| 	resp, err = c.AddChildDir("nonexistentDir", 5) |  | ||||||
| 	if err != nil { |  | ||||||
| 		t.Fatal(err) |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
							
								
								
									
										108
									
								
								Godeps/_workspace/src/github.com/coreos/go-etcd/etcd/client_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										108
									
								
								Godeps/_workspace/src/github.com/coreos/go-etcd/etcd/client_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,108 +0,0 @@ | |||||||
| package etcd |  | ||||||
|  |  | ||||||
| import ( |  | ||||||
| 	"encoding/json" |  | ||||||
| 	"fmt" |  | ||||||
| 	"net" |  | ||||||
| 	"net/url" |  | ||||||
| 	"os" |  | ||||||
| 	"testing" |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| // To pass this test, we need to create a cluster of 3 machines |  | ||||||
| // The server should be listening on localhost:4001, 4002, 4003 |  | ||||||
| func TestSync(t *testing.T) { |  | ||||||
| 	fmt.Println("Make sure there are three nodes at 0.0.0.0:4001-4003") |  | ||||||
|  |  | ||||||
| 	// Explicit trailing slash to ensure this doesn't reproduce: |  | ||||||
| 	// https://github.com/coreos/go-etcd/issues/82 |  | ||||||
| 	c := NewClient([]string{"http://127.0.0.1:4001/"}) |  | ||||||
|  |  | ||||||
| 	success := c.SyncCluster() |  | ||||||
| 	if !success { |  | ||||||
| 		t.Fatal("cannot sync machines") |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	for _, m := range c.GetCluster() { |  | ||||||
| 		u, err := url.Parse(m) |  | ||||||
| 		if err != nil { |  | ||||||
| 			t.Fatal(err) |  | ||||||
| 		} |  | ||||||
| 		if u.Scheme != "http" { |  | ||||||
| 			t.Fatal("scheme must be http") |  | ||||||
| 		} |  | ||||||
|  |  | ||||||
| 		host, _, err := net.SplitHostPort(u.Host) |  | ||||||
| 		if err != nil { |  | ||||||
| 			t.Fatal(err) |  | ||||||
| 		} |  | ||||||
| 		if host != "localhost" { |  | ||||||
| 			t.Fatal("Host must be localhost") |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	badMachines := []string{"abc", "edef"} |  | ||||||
|  |  | ||||||
| 	success = c.SetCluster(badMachines) |  | ||||||
|  |  | ||||||
| 	if success { |  | ||||||
| 		t.Fatal("should not sync on bad machines") |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	goodMachines := []string{"127.0.0.1:4002"} |  | ||||||
|  |  | ||||||
| 	success = c.SetCluster(goodMachines) |  | ||||||
|  |  | ||||||
| 	if !success { |  | ||||||
| 		t.Fatal("cannot sync machines") |  | ||||||
| 	} else { |  | ||||||
| 		fmt.Println(c.cluster.Machines) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestPersistence(t *testing.T) { |  | ||||||
| 	c := NewClient(nil) |  | ||||||
| 	c.SyncCluster() |  | ||||||
|  |  | ||||||
| 	fo, err := os.Create("config.json") |  | ||||||
| 	if err != nil { |  | ||||||
| 		t.Fatal(err) |  | ||||||
| 	} |  | ||||||
| 	defer func() { |  | ||||||
| 		if err := fo.Close(); err != nil { |  | ||||||
| 			panic(err) |  | ||||||
| 		} |  | ||||||
| 	}() |  | ||||||
|  |  | ||||||
| 	c.SetPersistence(fo) |  | ||||||
| 	err = c.saveConfig() |  | ||||||
| 	if err != nil { |  | ||||||
| 		t.Fatal(err) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	c2, err := NewClientFromFile("config.json") |  | ||||||
| 	if err != nil { |  | ||||||
| 		t.Fatal(err) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	// Verify that the two clients have the same config |  | ||||||
| 	b1, _ := json.Marshal(c) |  | ||||||
| 	b2, _ := json.Marshal(c2) |  | ||||||
|  |  | ||||||
| 	if string(b1) != string(b2) { |  | ||||||
| 		t.Fatalf("The two configs should be equal!") |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestClientRetry(t *testing.T) { |  | ||||||
| 	c := NewClient([]string{"http://strange", "http://127.0.0.1:4001"}) |  | ||||||
| 	// use first endpoint as the picked url |  | ||||||
| 	c.cluster.picked = 0 |  | ||||||
| 	if _, err := c.Set("foo", "bar", 5); err != nil { |  | ||||||
| 		t.Fatal(err) |  | ||||||
| 	} |  | ||||||
| 	if _, err := c.Delete("foo", true); err != nil { |  | ||||||
| 		t.Fatal(err) |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
							
								
								
									
										46
									
								
								Godeps/_workspace/src/github.com/coreos/go-etcd/etcd/compare_and_delete_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										46
									
								
								Godeps/_workspace/src/github.com/coreos/go-etcd/etcd/compare_and_delete_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,46 +0,0 @@ | |||||||
| package etcd |  | ||||||
|  |  | ||||||
| import ( |  | ||||||
| 	"testing" |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| func TestCompareAndDelete(t *testing.T) { |  | ||||||
| 	c := NewClient(nil) |  | ||||||
| 	defer func() { |  | ||||||
| 		c.Delete("foo", true) |  | ||||||
| 	}() |  | ||||||
|  |  | ||||||
| 	c.Set("foo", "bar", 5) |  | ||||||
|  |  | ||||||
| 	// This should succeed an correct prevValue |  | ||||||
| 	resp, err := c.CompareAndDelete("foo", "bar", 0) |  | ||||||
| 	if err != nil { |  | ||||||
| 		t.Fatal(err) |  | ||||||
| 	} |  | ||||||
| 	if !(resp.PrevNode.Value == "bar" && resp.PrevNode.Key == "/foo" && resp.PrevNode.TTL == 5) { |  | ||||||
| 		t.Fatalf("CompareAndDelete 1 prevNode failed: %#v", resp) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	resp, _ = c.Set("foo", "bar", 5) |  | ||||||
| 	// This should fail because it gives an incorrect prevValue |  | ||||||
| 	_, err = c.CompareAndDelete("foo", "xxx", 0) |  | ||||||
| 	if err == nil { |  | ||||||
| 		t.Fatalf("CompareAndDelete 2 should have failed.  The response is: %#v", resp) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	// This should succeed because it gives an correct prevIndex |  | ||||||
| 	resp, err = c.CompareAndDelete("foo", "", resp.Node.ModifiedIndex) |  | ||||||
| 	if err != nil { |  | ||||||
| 		t.Fatal(err) |  | ||||||
| 	} |  | ||||||
| 	if !(resp.PrevNode.Value == "bar" && resp.PrevNode.Key == "/foo" && resp.PrevNode.TTL == 5) { |  | ||||||
| 		t.Fatalf("CompareAndSwap 3 prevNode failed: %#v", resp) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	c.Set("foo", "bar", 5) |  | ||||||
| 	// This should fail because it gives an incorrect prevIndex |  | ||||||
| 	resp, err = c.CompareAndDelete("foo", "", 29817514) |  | ||||||
| 	if err == nil { |  | ||||||
| 		t.Fatalf("CompareAndDelete 4 should have failed.  The response is: %#v", resp) |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
							
								
								
									
										57
									
								
								Godeps/_workspace/src/github.com/coreos/go-etcd/etcd/compare_and_swap_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										57
									
								
								Godeps/_workspace/src/github.com/coreos/go-etcd/etcd/compare_and_swap_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,57 +0,0 @@ | |||||||
| package etcd |  | ||||||
|  |  | ||||||
| import ( |  | ||||||
| 	"testing" |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| func TestCompareAndSwap(t *testing.T) { |  | ||||||
| 	c := NewClient(nil) |  | ||||||
| 	defer func() { |  | ||||||
| 		c.Delete("foo", true) |  | ||||||
| 	}() |  | ||||||
|  |  | ||||||
| 	c.Set("foo", "bar", 5) |  | ||||||
|  |  | ||||||
| 	// This should succeed |  | ||||||
| 	resp, err := c.CompareAndSwap("foo", "bar2", 5, "bar", 0) |  | ||||||
| 	if err != nil { |  | ||||||
| 		t.Fatal(err) |  | ||||||
| 	} |  | ||||||
| 	if !(resp.Node.Value == "bar2" && resp.Node.Key == "/foo" && resp.Node.TTL == 5) { |  | ||||||
| 		t.Fatalf("CompareAndSwap 1 failed: %#v", resp) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	if !(resp.PrevNode.Value == "bar" && resp.PrevNode.Key == "/foo" && resp.PrevNode.TTL == 5) { |  | ||||||
| 		t.Fatalf("CompareAndSwap 1 prevNode failed: %#v", resp) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	// This should fail because it gives an incorrect prevValue |  | ||||||
| 	resp, err = c.CompareAndSwap("foo", "bar3", 5, "xxx", 0) |  | ||||||
| 	if err == nil { |  | ||||||
| 		t.Fatalf("CompareAndSwap 2 should have failed.  The response is: %#v", resp) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	resp, err = c.Set("foo", "bar", 5) |  | ||||||
| 	if err != nil { |  | ||||||
| 		t.Fatal(err) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	// This should succeed |  | ||||||
| 	resp, err = c.CompareAndSwap("foo", "bar2", 5, "", resp.Node.ModifiedIndex) |  | ||||||
| 	if err != nil { |  | ||||||
| 		t.Fatal(err) |  | ||||||
| 	} |  | ||||||
| 	if !(resp.Node.Value == "bar2" && resp.Node.Key == "/foo" && resp.Node.TTL == 5) { |  | ||||||
| 		t.Fatalf("CompareAndSwap 3 failed: %#v", resp) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	if !(resp.PrevNode.Value == "bar" && resp.PrevNode.Key == "/foo" && resp.PrevNode.TTL == 5) { |  | ||||||
| 		t.Fatalf("CompareAndSwap 3 prevNode failed: %#v", resp) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	// This should fail because it gives an incorrect prevIndex |  | ||||||
| 	resp, err = c.CompareAndSwap("foo", "bar3", 5, "", 29817514) |  | ||||||
| 	if err == nil { |  | ||||||
| 		t.Fatalf("CompareAndSwap 4 should have failed.  The response is: %#v", resp) |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user
	 Jeff Mitchell
					Jeff Mitchell