diff options
Diffstat (limited to 'vendor/github.com/goamz/goamz/sqs')
-rw-r--r-- | vendor/github.com/goamz/goamz/sqs/Makefile | 20 | ||||
-rw-r--r-- | vendor/github.com/goamz/goamz/sqs/README.md | 38 | ||||
-rw-r--r-- | vendor/github.com/goamz/goamz/sqs/responses_test.go | 196 | ||||
-rw-r--r-- | vendor/github.com/goamz/goamz/sqs/sqs.go | 585 | ||||
-rw-r--r-- | vendor/github.com/goamz/goamz/sqs/sqs_test.go | 414 | ||||
-rw-r--r-- | vendor/github.com/goamz/goamz/sqs/suite_test.go | 145 |
6 files changed, 0 insertions, 1398 deletions
diff --git a/vendor/github.com/goamz/goamz/sqs/Makefile b/vendor/github.com/goamz/goamz/sqs/Makefile deleted file mode 100644 index 1219acfb9..000000000 --- a/vendor/github.com/goamz/goamz/sqs/Makefile +++ /dev/null @@ -1,20 +0,0 @@ -include $(GOROOT)/src/Make.inc - -TARG=launchpad.net/goamz/sqs - -GOFILES=\ - sqs.go\ - -include $(GOROOT)/src/Make.pkg - -GOFMT=gofmt -BADFMT=$(shell $(GOFMT) -l $(GOFILES) 2> /dev/null) - -gofmt: $(BADFMT) - @for F in $(BADFMT); do $(GOFMT) -w $$F && echo $$F; done - -ifneq ($(BADFMT),) -ifneq ($(MAKECMDGOALS), gofmt) -#$(warning WARNING: make gofmt: $(BADFMT)) -endif -endif diff --git a/vendor/github.com/goamz/goamz/sqs/README.md b/vendor/github.com/goamz/goamz/sqs/README.md deleted file mode 100644 index a283a4eec..000000000 --- a/vendor/github.com/goamz/goamz/sqs/README.md +++ /dev/null @@ -1,38 +0,0 @@ -Amazon Simple Queue Service API Client Written in Golang. -========================================================= - -Merged from https://github.com/Mistobaan/sqs - -Installation ------------- - - go get github.com/goamz/goamz/sqs - -Documentation -------------- - -http://godoc.org/github.com/goamz/goamz/sqs - - -Sample Usage ------------- - - var auth = aws.Auth{ - AccessKey: os.Getenv("AWS_ACCESS_KEY_ID"), - SecretKey: os.Getenv("AWS_SECRET_ACCESS_KEY"), - } - - conn := sqs.New(auth, aws.USEast) - - q, err := conn.CreateQueue(queueName) - if err != nil { - log.Fatalf(err.Error()) - } - - q.SendMessage(batch) - - -Testing -------- - - go test . diff --git a/vendor/github.com/goamz/goamz/sqs/responses_test.go b/vendor/github.com/goamz/goamz/sqs/responses_test.go deleted file mode 100644 index 857fb9104..000000000 --- a/vendor/github.com/goamz/goamz/sqs/responses_test.go +++ /dev/null @@ -1,196 +0,0 @@ -package sqs - -var TestCreateQueueXmlOK = ` -<CreateQueueResponse> - <CreateQueueResult> - <QueueUrl>http://sqs.us-east-1.amazonaws.com/123456789012/testQueue</QueueUrl> - </CreateQueueResult> - <ResponseMetadata> - <RequestId>7a62c49f-347e-4fc4-9331-6e8e7a96aa73</RequestId> - </ResponseMetadata> -</CreateQueueResponse> -` - -var TestListQueuesXmlOK = ` -<ListQueuesResponse> - <ListQueuesResult> - <QueueUrl>http://sqs.us-east-1.amazonaws.com/123456789012/testQueue</QueueUrl> - </ListQueuesResult> - <ResponseMetadata> - <RequestId>725275ae-0b9b-4762-b238-436d7c65a1ac</RequestId> - </ResponseMetadata> -</ListQueuesResponse> -` - -var TestDeleteQueueXmlOK = ` -<DeleteQueueResponse> - <ResponseMetadata> - <RequestId>6fde8d1e-52cd-4581-8cd9-c512f4c64223</RequestId> - </ResponseMetadata> -</DeleteQueueResponse> -` - -var TestPurgeQueueXmlOK = ` -<PurgeQueueResponse> - <ResponseMetadata> - <RequestId>6fde8d1e-52cd-4581-8cd9-c512f4c64223</RequestId> - </ResponseMetadata> -</PurgeQueueResponse> -` - -var TestSendMessageXmlOK = ` -<SendMessageResponse> - <SendMessageResult> - <MD5OfMessageBody>fafb00f5732ab283681e124bf8747ed1</MD5OfMessageBody> - <MessageId>5fea7756-0ea4-451a-a703-a558b933e274</MessageId> - <MD5OfMessageAttributes>ba056227cfd9533dba1f72ad9816d233</MD5OfMessageAttributes> - </SendMessageResult> - <ResponseMetadata> - <RequestId>27daac76-34dd-47df-bd01-1f6e873584a0</RequestId> - </ResponseMetadata> -</SendMessageResponse> -` - -var TestSendMessageBatchXmlOk = ` -<SendMessageBatchResponse> -<SendMessageBatchResult> - <SendMessageBatchResultEntry> - <Id>test_msg_001</Id> - <MessageId>0a5231c7-8bff-4955-be2e-8dc7c50a25fa</MessageId> - <MD5OfMessageBody>0e024d309850c78cba5eabbeff7cae71</MD5OfMessageBody> - </SendMessageBatchResultEntry> - <SendMessageBatchResultEntry> - <Id>test_msg_002</Id> - <MessageId>15ee1ed3-87e7-40c1-bdaa-2e49968ea7e9</MessageId> - <MD5OfMessageBody>7fb8146a82f95e0af155278f406862c2</MD5OfMessageBody> - </SendMessageBatchResultEntry> -</SendMessageBatchResult> -<ResponseMetadata> - <RequestId>ca1ad5d0-8271-408b-8d0f-1351bf547e74</RequestId> -</ResponseMetadata> -</SendMessageBatchResponse> -` - -var TestReceiveMessageXmlOK = ` -<ReceiveMessageResponse> - <ReceiveMessageResult> - <Message> - <MessageId>5fea7756-0ea4-451a-a703-a558b933e274</MessageId> - <ReceiptHandle>MbZj6wDWli+JvwwJaBV+3dcjk2YW2vA3+STFFljTM8tJJg6HRG6PYSasuWXPJB+CwLj1FjgXUv1uSj1gUPAWV66FU/WeR4mq2OKpEGYWbnLmpRCJVAyeMjeU5ZBdtcQ+QEauMZc8ZRv37sIW2iJKq3M9MFx1YvV11A2x/KSbkJ0=</ReceiptHandle> - <MD5OfBody>fafb00f5732ab283681e124bf8747ed1</MD5OfBody> - <Body>This is a test message</Body> - <Attribute> - <Name>SenderId</Name> - <Value>195004372649</Value> - </Attribute> - <Attribute> - <Name>SentTimestamp</Name> - <Value>1238099229000</Value> - </Attribute> - <Attribute> - <Name>ApproximateReceiveCount</Name> - <Value>5</Value> - </Attribute> - <Attribute> - <Name>ApproximateFirstReceiveTimestamp</Name> - <Value>1250700979248</Value> - </Attribute> - <MessageAttribute> - <Name>CustomAttribute</Name> - <Value> - <DataType>String</DataType> - <StringValue>Testing, testing, 1, 2, 3</StringValue> - </Value> - </MessageAttribute> - <MessageAttribute> - <Name>BinaryCustomAttribute</Name> - <Value> - <DataType>Binary</DataType> - <BinaryValue>iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAABA0lEQVQ4T72UrQ4CMRCEewhyiiBPopBgcfAUSIICB88CDhRB8hTgsCBRyJMEdUFwZJpMs/3LHQlhVdPufJ1ut03UjyKJcR5zVc4umbW87eeqvVFBjTdJwP54D+4xGXVUCGiBxoOsJOCd9IKgRnnV8wAezrnRmwGcpKtCJ8UgJBNWLFNzVAOimyqIhElXGkQ3LmQ6fKrdqaW1cixhdKVBcEOBLEwViBugVv8B1elVuLYcoTea624drcl5LW4KTRsFhQpLtVzzQKGCh2DuHI8FvdVH7vGQKEPerHRjgegKMESsXgAgWBtu5D1a9BQWCXSrzx9BvjPPkRQR6IJcQNTRV/cvkj93DqUTWzVDIQAAAABJRU5ErkJggg==</BinaryValue> - </Value> - </MessageAttribute> - </Message> - </ReceiveMessageResult> -<ResponseMetadata> - <RequestId>b6633655-283d-45b4-aee4-4e84e0ae6afa</RequestId> -</ResponseMetadata> -</ReceiveMessageResponse> -` - -var TestChangeMessageVisibilityXmlOK = ` -<ChangeMessageVisibilityResponse> - <ResponseMetadata> - <RequestId>6a7a282a-d013-4a59-aba9-335b0fa48bed</RequestId> - </ResponseMetadata> -</ChangeMessageVisibilityResponse> -` - -var TestDeleteMessageBatchXmlOK = ` -<DeleteMessageBatchResponse> - <DeleteMessageBatchResult> - <DeleteMessageBatchResultEntry> - <Id>msg1</Id> - </DeleteMessageBatchResultEntry> - <DeleteMessageBatchResultEntry> - <Id>msg2</Id> - </DeleteMessageBatchResultEntry> - </DeleteMessageBatchResult> - <ResponseMetadata> - <RequestId>d6f86b7a-74d1-4439-b43f-196a1e29cd85</RequestId> - </ResponseMetadata> -</DeleteMessageBatchResponse> -` - -var TestDeleteMessageUsingReceiptXmlOK = ` -<DeleteMessageResponse> - <ResponseMetadata> - <RequestId>d6d86b7a-74d1-4439-b43f-196a1e29cd85</RequestId> - </ResponseMetadata> -</DeleteMessageResponse> -` - -var TestGetQueueAttributesXmlOK = ` -<GetQueueAttributesResponse> - <GetQueueAttributesResult> - <Attribute> - <Name>ReceiveMessageWaitTimeSeconds</Name> - <Value>2</Value> - </Attribute> - <Attribute> - <Name>VisibilityTimeout</Name> - <Value>30</Value> - </Attribute> - <Attribute> - <Name>ApproximateNumberOfMessages</Name> - <Value>0</Value> - </Attribute> - <Attribute> - <Name>ApproximateNumberOfMessagesNotVisible</Name> - <Value>0</Value> - </Attribute> - <Attribute> - <Name>CreatedTimestamp</Name> - <Value>1286771522</Value> - </Attribute> - <Attribute> - <Name>LastModifiedTimestamp</Name> - <Value>1286771522</Value> - </Attribute> - <Attribute> - <Name>QueueArn</Name> - <Value>arn:aws:sqs:us-east-1:123456789012:qfoo</Value> - </Attribute> - <Attribute> - <Name>MaximumMessageSize</Name> - <Value>8192</Value> - </Attribute> - <Attribute> - <Name>MessageRetentionPeriod</Name> - <Value>345600</Value> - </Attribute> - </GetQueueAttributesResult> - <ResponseMetadata> - <RequestId>1ea71be5-b5a2-4f9d-b85a-945d8d08cd0b</RequestId> - </ResponseMetadata> -</GetQueueAttributesResponse> -` diff --git a/vendor/github.com/goamz/goamz/sqs/sqs.go b/vendor/github.com/goamz/goamz/sqs/sqs.go deleted file mode 100644 index b54b698a8..000000000 --- a/vendor/github.com/goamz/goamz/sqs/sqs.go +++ /dev/null @@ -1,585 +0,0 @@ -// -// gosqs - Go packages to interact with the Amazon SQS Web Services. -// -// depends on https://wiki.ubuntu.com/goamz -// -// -// Written by Prudhvi Krishna Surapaneni <me@prudhvi.net> -// Extended by Fabrizio Milo <mistobaan@gmail.com> -// -package sqs - -import ( - "encoding/xml" - "errors" - "fmt" - "io" - "io/ioutil" - "log" - "net/http" - "net/http/httputil" - "net/url" - "strconv" - "strings" - "time" - - "github.com/goamz/goamz/aws" -) - -const API_VERSION = "2012-11-05" - -const debug = false - -// The SQS type encapsulates operation with an SQS region. -type SQS struct { - aws.Auth - aws.Region - private byte // Reserve the right of using private data. - transport *http.Transport -} - -// NewFrom Create A new SQS Client given an access and secret Key -// region must be one of "us.east, us.west, eu.west" -func NewFrom(accessKey, secretKey, region string) (*SQS, error) { - - auth := aws.Auth{AccessKey: accessKey, SecretKey: secretKey} - aws_region := aws.USEast - - switch region { - case "us.east", "us.east.1": - aws_region = aws.USEast - case "us.east.2": - aws_region = aws.USEast2 - case "us.west", "us.west.1": - aws_region = aws.USWest - case "us.west.2": - aws_region = aws.USWest2 - case "eu.west": - aws_region = aws.EUWest - case "ap.southeast", "ap.southeast.1": - aws_region = aws.APSoutheast - case "ap.southeast.2": - aws_region = aws.APSoutheast2 - case "ap.northeast", "ap.northeast.1": - aws_region = aws.APNortheast - case "ap.northeast.2": - aws_region = aws.APNortheast2 - case "sa.east", "sa.east.1": - aws_region = aws.SAEast - case "cn.north", "cn.north.1": - aws_region = aws.CNNorth - default: - return nil, errors.New(fmt.Sprintf("Unknown/Unsupported region %s", region)) - } - - aws_sqs := New(auth, aws_region) - return aws_sqs, nil -} - -// NewFrom Create A new SQS Client from an exisisting aws.Auth -func New(auth aws.Auth, region aws.Region) *SQS { - return &SQS{auth, region, 0, nil} -} - -// NewFromTransport Create A new SQS Client that uses a given &http.Transport -func NewFromTransport(auth aws.Auth, region aws.Region, transport *http.Transport) *SQS { - return &SQS{auth, region, 0, transport} -} - -// Queue Reference to a Queue -type Queue struct { - *SQS - Url string -} - -type CreateQueueResponse struct { - QueueUrl string `xml:"CreateQueueResult>QueueUrl"` - ResponseMetadata ResponseMetadata -} - -type GetQueueUrlResponse struct { - QueueUrl string `xml:"GetQueueUrlResult>QueueUrl"` - ResponseMetadata ResponseMetadata -} - -type ListQueuesResponse struct { - QueueUrl []string `xml:"ListQueuesResult>QueueUrl"` - ResponseMetadata ResponseMetadata -} - -type DeleteMessageResponse struct { - ResponseMetadata ResponseMetadata -} - -type DeleteQueueResponse struct { - ResponseMetadata ResponseMetadata -} - -type PurgeQueueResponse struct { - ResponseMetadata ResponseMetadata -} - -type SendMessageResponse struct { - MD5 string `xml:"SendMessageResult>MD5OfMessageBody"` - MD5OfMessageAttributes string `xml:"SendMessageResult>MD5OfMessageAttributes"` - Id string `xml:"SendMessageResult>MessageId"` - ResponseMetadata ResponseMetadata -} - -type ReceiveMessageResponse struct { - Messages []Message `xml:"ReceiveMessageResult>Message"` - ResponseMetadata ResponseMetadata -} - -type Message struct { - MessageId string `xml:"MessageId"` - Body string `xml:"Body"` - MD5OfBody string `xml:"MD5OfBody"` - ReceiptHandle string `xml:"ReceiptHandle"` - Attribute []Attribute `xml:"Attribute"` - MessageAttribute []MessageAttribute `xml:"MessageAttribute"` - MD5OfMessageAttributes string `xml:"MD5OfMessageAttributes"` -} - -type Attribute struct { - Name string `xml:"Name"` - Value string `xml:"Value"` -} - -type MessageAttribute struct { - Name string `xml:"Name"` - Value MessageAttributeValue `xml:"Value"` -} - -type MessageAttributeValue struct { - DataType string `xml:"DataType"` - BinaryValue []byte `xml:"BinaryValue"` - StringValue string `xml:"StringValue"` - - // Not yet implemented (Reserved for future use) - BinaryListValues [][]byte `xml:"BinaryListValues"` - StringListValues []string `xml:"StringListValues"` -} - -type ChangeMessageVisibilityResponse struct { - ResponseMetadata ResponseMetadata -} - -type GetQueueAttributesResponse struct { - Attributes []Attribute `xml:"GetQueueAttributesResult>Attribute"` - ResponseMetadata ResponseMetadata -} - -type ResponseMetadata struct { - RequestId string - BoxUsage float64 -} - -type Error struct { - StatusCode int - Code string - Message string - RequestId string -} - -func (err *Error) Error() string { - if err.Code == "" { - return err.Message - } - return fmt.Sprintf("%s (%s)", err.Message, err.Code) -} - -func (err *Error) String() string { - return err.Message -} - -type xmlErrors struct { - RequestId string - Errors []Error `xml:"Errors>Error"` - Error Error -} - -// CreateQueue create a queue with a specific name -func (s *SQS) CreateQueue(queueName string) (*Queue, error) { - return s.CreateQueueWithTimeout(queueName, 30) -} - -// CreateQueue create a queue with a specific name and a timeout -func (s *SQS) CreateQueueWithTimeout(queueName string, timeout int) (*Queue, error) { - params := map[string]string{ - "VisibilityTimeout": strconv.Itoa(timeout), - } - return s.CreateQueueWithAttributes(queueName, params) -} - -func (s *SQS) CreateQueueWithAttributes(queueName string, attrs map[string]string) (q *Queue, err error) { - resp, err := s.newQueue(queueName, attrs) - if err != nil { - return nil, err - } - q = &Queue{s, resp.QueueUrl} - return -} - -// GetQueue get a reference to the given quename -func (s *SQS) GetQueue(queueName string) (*Queue, error) { - var q *Queue - resp, err := s.getQueueUrl(queueName) - if err != nil { - return q, err - } - q = &Queue{s, resp.QueueUrl} - return q, nil -} - -func (s *SQS) QueueFromArn(queueUrl string) (q *Queue) { - q = &Queue{s, queueUrl} - return -} - -func (s *SQS) getQueueUrl(queueName string) (resp *GetQueueUrlResponse, err error) { - resp = &GetQueueUrlResponse{} - params := makeParams("GetQueueUrl") - params["QueueName"] = queueName - err = s.query("", params, resp) - return resp, err -} - -func (s *SQS) newQueue(queueName string, attrs map[string]string) (resp *CreateQueueResponse, err error) { - resp = &CreateQueueResponse{} - params := makeParams("CreateQueue") - params["QueueName"] = queueName - - i := 1 - for k, v := range attrs { - nameParam := fmt.Sprintf("Attribute.%d.Name", i) - valParam := fmt.Sprintf("Attribute.%d.Value", i) - params[nameParam] = k - params[valParam] = v - i++ - } - - err = s.query("", params, resp) - return -} - -func (s *SQS) ListQueues(QueueNamePrefix string) (resp *ListQueuesResponse, err error) { - resp = &ListQueuesResponse{} - params := makeParams("ListQueues") - - if QueueNamePrefix != "" { - params["QueueNamePrefix"] = QueueNamePrefix - } - - err = s.query("", params, resp) - return -} - -func (q *Queue) Delete() (resp *DeleteQueueResponse, err error) { - resp = &DeleteQueueResponse{} - params := makeParams("DeleteQueue") - - err = q.SQS.query(q.Url, params, resp) - return -} - -func (q *Queue) Purge() (resp *PurgeQueueResponse, err error) { - resp = &PurgeQueueResponse{} - params := makeParams("PurgeQueue") - - err = q.SQS.query(q.Url, params, resp) - return -} - -func (q *Queue) SendMessageWithDelay(MessageBody string, DelaySeconds int64) (resp *SendMessageResponse, err error) { - resp = &SendMessageResponse{} - params := makeParams("SendMessage") - - params["MessageBody"] = MessageBody - params["DelaySeconds"] = strconv.Itoa(int(DelaySeconds)) - - err = q.SQS.query(q.Url, params, resp) - return -} - -func (q *Queue) SendMessage(MessageBody string) (resp *SendMessageResponse, err error) { - resp = &SendMessageResponse{} - params := makeParams("SendMessage") - - params["MessageBody"] = MessageBody - - err = q.SQS.query(q.Url, params, resp) - return -} - -func (q *Queue) SendMessageWithAttributes(MessageBody string, attrs map[string]string) (resp *SendMessageResponse, err error) { - resp = &SendMessageResponse{} - params := makeParams("SendMessage") - - params["MessageBody"] = MessageBody - - i := 1 - for k, v := range attrs { - nameParam := fmt.Sprintf("MessageAttribute.%d.Name", i) - valParam := fmt.Sprintf("MessageAttribute.%d.Value.StringValue", i) - typeParam := fmt.Sprintf("MessageAttribute.%d.Value.DataType", i) - params[nameParam] = k - params[valParam] = v - params[typeParam] = "String" - i++ - } - - err = q.SQS.query(q.Url, params, resp) - return -} - -// ReceiveMessageWithVisibilityTimeout -func (q *Queue) ReceiveMessageWithVisibilityTimeout(MaxNumberOfMessages, VisibilityTimeoutSec int) (*ReceiveMessageResponse, error) { - params := map[string]string{ - "MaxNumberOfMessages": strconv.Itoa(MaxNumberOfMessages), - "VisibilityTimeout": strconv.Itoa(VisibilityTimeoutSec), - } - return q.ReceiveMessageWithParameters(params) -} - -// ReceiveMessage -func (q *Queue) ReceiveMessage(MaxNumberOfMessages int) (*ReceiveMessageResponse, error) { - params := map[string]string{ - "MaxNumberOfMessages": strconv.Itoa(MaxNumberOfMessages), - } - return q.ReceiveMessageWithParameters(params) -} - -func (q *Queue) ReceiveMessageWithParameters(p map[string]string) (resp *ReceiveMessageResponse, err error) { - resp = &ReceiveMessageResponse{} - params := makeParams("ReceiveMessage") - params["AttributeName"] = "All" - params["MessageAttributeNames"] = "All" - - for k, v := range p { - params[k] = v - } - - err = q.SQS.query(q.Url, params, resp) - return -} - -func (q *Queue) ChangeMessageVisibility(M *Message, VisibilityTimeout int) (resp *ChangeMessageVisibilityResponse, err error) { - resp = &ChangeMessageVisibilityResponse{} - params := makeParams("ChangeMessageVisibility") - params["VisibilityTimeout"] = strconv.Itoa(VisibilityTimeout) - params["ReceiptHandle"] = M.ReceiptHandle - - err = q.SQS.query(q.Url, params, resp) - return -} - -func (q *Queue) GetQueueAttributes(A string) (resp *GetQueueAttributesResponse, err error) { - resp = &GetQueueAttributesResponse{} - params := makeParams("GetQueueAttributes") - params["AttributeName"] = A - - err = q.SQS.query(q.Url, params, resp) - return -} - -func (q *Queue) DeleteMessage(M *Message) (resp *DeleteMessageResponse, err error) { - return q.DeleteMessageUsingReceiptHandle(M.ReceiptHandle) -} - -func (q *Queue) DeleteMessageUsingReceiptHandle(receiptHandle string) (resp *DeleteMessageResponse, err error) { - resp = &DeleteMessageResponse{} - params := makeParams("DeleteMessage") - params["ReceiptHandle"] = receiptHandle - - err = q.SQS.query(q.Url, params, resp) - return -} - -type SendMessageBatchResultEntry struct { - Id string `xml:"Id"` - MessageId string `xml:"MessageId"` - MD5OfMessageBody string `xml:"MD5OfMessageBody"` -} - -type SendMessageBatchResponse struct { - SendMessageBatchResult []SendMessageBatchResultEntry `xml:"SendMessageBatchResult>SendMessageBatchResultEntry"` - ResponseMetadata ResponseMetadata -} - -/* SendMessageBatch - */ -func (q *Queue) SendMessageBatch(msgList []Message) (resp *SendMessageBatchResponse, err error) { - resp = &SendMessageBatchResponse{} - params := makeParams("SendMessageBatch") - - for idx, msg := range msgList { - count := idx + 1 - params[fmt.Sprintf("SendMessageBatchRequestEntry.%d.Id", count)] = fmt.Sprintf("msg-%d", count) - params[fmt.Sprintf("SendMessageBatchRequestEntry.%d.MessageBody", count)] = msg.Body - } - - err = q.SQS.query(q.Url, params, resp) - return -} - -/* SendMessageBatchString - */ -func (q *Queue) SendMessageBatchString(msgList []string) (resp *SendMessageBatchResponse, err error) { - resp = &SendMessageBatchResponse{} - params := makeParams("SendMessageBatch") - - for idx, msg := range msgList { - count := idx + 1 - params[fmt.Sprintf("SendMessageBatchRequestEntry.%d.Id", count)] = fmt.Sprintf("msg-%d", count) - params[fmt.Sprintf("SendMessageBatchRequestEntry.%d.MessageBody", count)] = msg - } - - err = q.SQS.query(q.Url, params, resp) - return -} - -type DeleteMessageBatchResponse struct { - DeleteMessageBatchResult []struct { - Id string - SenderFault bool - Code string - Message string - } `xml:"DeleteMessageBatchResult>DeleteMessageBatchResultEntry"` - ResponseMetadata ResponseMetadata -} - -/* DeleteMessageBatch */ -func (q *Queue) DeleteMessageBatch(msgList []Message) (resp *DeleteMessageBatchResponse, err error) { - resp = &DeleteMessageBatchResponse{} - params := makeParams("DeleteMessageBatch") - - lutMsg := make(map[string]Message) - - for idx := range msgList { - params[fmt.Sprintf("DeleteMessageBatchRequestEntry.%d.Id", idx+1)] = msgList[idx].MessageId - params[fmt.Sprintf("DeleteMessageBatchRequestEntry.%d.ReceiptHandle", idx+1)] = msgList[idx].ReceiptHandle - - lutMsg[string(msgList[idx].MessageId)] = msgList[idx] - } - - err = q.SQS.query(q.Url, params, resp) - - messageWithErrors := make([]Message, 0, len(msgList)) - - for idx := range resp.DeleteMessageBatchResult { - if resp.DeleteMessageBatchResult[idx].SenderFault { - msg, ok := lutMsg[resp.DeleteMessageBatchResult[idx].Id] - if ok { - messageWithErrors = append(messageWithErrors, msg) - } - } - } - - if len(messageWithErrors) > 0 { - log.Printf("%d Message have not been sent", len(messageWithErrors)) - } - - return -} - -func (s *SQS) query(queueUrl string, params map[string]string, resp interface{}) (err error) { - params["Version"] = API_VERSION - params["Timestamp"] = time.Now().In(time.UTC).Format(time.RFC3339) - var url_ *url.URL - - switch { - // fully qualified queueUrl - case strings.HasPrefix(queueUrl, "http"): - url_, err = url.Parse(queueUrl) - // relative queueUrl - case strings.HasPrefix(queueUrl, "/"): - url_, err = url.Parse(s.Region.SQSEndpoint + queueUrl) - // zero-value for queueUrl - default: - url_, err = url.Parse(s.Region.SQSEndpoint) - } - - if err != nil { - return err - } - - if s.Auth.Token() != "" { - params["SecurityToken"] = s.Auth.Token() - } - - var r *http.Response - - var sarray []string - for k, v := range params { - sarray = append(sarray, aws.Encode(k)+"="+aws.Encode(v)) - } - - req, err := http.NewRequest("GET", fmt.Sprintf("%s?%s", url_, strings.Join(sarray, "&")), nil) - if err != nil { - return err - } - signer := aws.NewV4Signer(s.Auth, "sqs", s.Region) - signer.Sign(req) - var client http.Client - if s.transport == nil { - client = http.Client{} - } else { - client = http.Client{Transport: s.transport} - } - r, err = client.Do(req) - - if debug { - log.Printf("GET %s\n", url_.String()) - } - - if err != nil { - return err - } - - defer r.Body.Close() - - if debug { - dump, _ := httputil.DumpResponse(r, true) - log.Printf("DUMP:%s\n", string(dump)) - } - - if r.StatusCode != 200 { - return buildError(r) - } - err = xml.NewDecoder(r.Body).Decode(resp) - io.Copy(ioutil.Discard, r.Body) - - return err -} - -func buildError(r *http.Response) error { - errors := xmlErrors{} - xml.NewDecoder(r.Body).Decode(&errors) - var err Error - if len(errors.Errors) > 0 { - err = errors.Errors[0] - } else { - err = errors.Error - } - err.RequestId = errors.RequestId - err.StatusCode = r.StatusCode - if err.Message == "" { - err.Message = r.Status - } - return &err -} - -func makeParams(action string) map[string]string { - params := make(map[string]string) - params["Action"] = action - return params -} - -func multimap(p map[string]string) url.Values { - q := make(url.Values, len(p)) - for k, v := range p { - q[k] = []string{v} - } - return q -} diff --git a/vendor/github.com/goamz/goamz/sqs/sqs_test.go b/vendor/github.com/goamz/goamz/sqs/sqs_test.go deleted file mode 100644 index a06433535..000000000 --- a/vendor/github.com/goamz/goamz/sqs/sqs_test.go +++ /dev/null @@ -1,414 +0,0 @@ -package sqs - -import ( - "crypto/md5" - "encoding/binary" - "fmt" - "hash" - - "github.com/goamz/goamz/aws" - . "gopkg.in/check.v1" -) - -var _ = Suite(&S{}) - -type S struct { - HTTPSuite - sqs *SQS -} - -func (s *S) SetUpSuite(c *C) { - s.HTTPSuite.SetUpSuite(c) - auth := aws.Auth{AccessKey: "abc", SecretKey: "123"} - s.sqs = New(auth, aws.Region{SQSEndpoint: testServer.URL}) -} - -func (s *S) TestCreateQueue(c *C) { - testServer.PrepareResponse(200, nil, TestCreateQueueXmlOK) - - resp, err := s.sqs.CreateQueue("testQueue") - req := testServer.WaitRequest() - - c.Assert(req.Method, Equals, "GET") - c.Assert(req.URL.Path, Equals, "/") - c.Assert(req.Header["Date"], Not(Equals), "") - fmt.Printf("%+v\n", req) - c.Assert(req.Form["Action"], DeepEquals, []string{"CreateQueue"}) - c.Assert(req.Form["Attribute.1.Name"], DeepEquals, []string{"VisibilityTimeout"}) - c.Assert(req.Form["Attribute.1.Value"], DeepEquals, []string{"30"}) - - c.Assert(resp.Url, Equals, "http://sqs.us-east-1.amazonaws.com/123456789012/testQueue") - c.Assert(err, IsNil) -} - -func (s *S) TestCreateQueueWithTimeout(c *C) { - testServer.PrepareResponse(200, nil, TestCreateQueueXmlOK) - - s.sqs.CreateQueueWithTimeout("testQueue", 180) - req := testServer.WaitRequest() - - // TestCreateQueue() tests the core functionality, just check the timeout in this test - c.Assert(req.Form["Attribute.1.Name"], DeepEquals, []string{"VisibilityTimeout"}) - c.Assert(req.Form["Attribute.1.Value"], DeepEquals, []string{"180"}) -} - -func (s *S) TestCreateQueueWithAttributes(c *C) { - testServer.PrepareResponse(200, nil, TestCreateQueueXmlOK) - - s.sqs.CreateQueueWithAttributes("testQueue", map[string]string{ - "ReceiveMessageWaitTimeSeconds": "20", - "VisibilityTimeout": "240", - }) - req := testServer.WaitRequest() - - // TestCreateQueue() tests the core functionality, just check the timeout in this test - var receiveMessageWaitSet bool - var visibilityTimeoutSet bool - - for i := 1; i <= 2; i++ { - prefix := fmt.Sprintf("Attribute.%d.", i) - attr := req.FormValue(prefix + "Name") - value := req.FormValue(prefix + "Value") - switch attr { - case "ReceiveMessageWaitTimeSeconds": - c.Assert(value, DeepEquals, "20") - receiveMessageWaitSet = true - case "VisibilityTimeout": - c.Assert(value, DeepEquals, "240") - visibilityTimeoutSet = true - } - } - c.Assert(receiveMessageWaitSet, Equals, true) - c.Assert(visibilityTimeoutSet, Equals, true) -} - -func (s *S) TestListQueues(c *C) { - testServer.PrepareResponse(200, nil, TestListQueuesXmlOK) - - resp, err := s.sqs.ListQueues("") - req := testServer.WaitRequest() - - c.Assert(req.Method, Equals, "GET") - c.Assert(req.URL.Path, Equals, "/") - c.Assert(req.Header["Date"], Not(Equals), "") - - c.Assert(len(resp.QueueUrl), Not(Equals), 0) - c.Assert(resp.QueueUrl[0], Equals, "http://sqs.us-east-1.amazonaws.com/123456789012/testQueue") - c.Assert(resp.ResponseMetadata.RequestId, Equals, "725275ae-0b9b-4762-b238-436d7c65a1ac") - c.Assert(err, IsNil) -} - -func (s *S) TestDeleteQueue(c *C) { - testServer.PrepareResponse(200, nil, TestDeleteQueueXmlOK) - - q := &Queue{s.sqs, testServer.URL + "/123456789012/testQueue/"} - resp, err := q.Delete() - req := testServer.WaitRequest() - - c.Assert(req.Method, Equals, "GET") - c.Assert(req.URL.Path, Equals, "/123456789012/testQueue/") - c.Assert(req.Header["Date"], Not(Equals), "") - - c.Assert(resp.ResponseMetadata.RequestId, Equals, "6fde8d1e-52cd-4581-8cd9-c512f4c64223") - c.Assert(err, IsNil) -} - -func (s *S) TestPurgeQueue(c *C) { - testServer.PrepareResponse(200, nil, TestPurgeQueueXmlOK) - - q := &Queue{s.sqs, testServer.URL + "/123456789012/testQueue/"} - resp, err := q.Purge() - req := testServer.WaitRequest() - - c.Assert(req.Method, Equals, "GET") - c.Assert(req.URL.Path, Equals, "/123456789012/testQueue/") - c.Assert(req.Header["Date"], Not(Equals), "") - - c.Assert(resp.ResponseMetadata.RequestId, Equals, "6fde8d1e-52cd-4581-8cd9-c512f4c64223") - c.Assert(err, IsNil) -} - -func (s *S) TestSendMessage(c *C) { - testServer.PrepareResponse(200, nil, TestSendMessageXmlOK) - - q := &Queue{s.sqs, testServer.URL + "/123456789012/testQueue/"} - resp, err := q.SendMessage("This is a test message") - req := testServer.WaitRequest() - - c.Assert(req.Method, Equals, "GET") - c.Assert(req.URL.Path, Equals, "/123456789012/testQueue/") - c.Assert(req.Header["Date"], Not(Equals), "") - - msg := "This is a test message" - var h hash.Hash = md5.New() - h.Write([]byte(msg)) - c.Assert(resp.MD5, Equals, fmt.Sprintf("%x", h.Sum(nil))) - c.Assert(resp.Id, Equals, "5fea7756-0ea4-451a-a703-a558b933e274") - c.Assert(err, IsNil) -} - -func (s *S) TestSendMessageRelativePath(c *C) { - testServer.PrepareResponse(200, nil, TestSendMessageXmlOK) - - q := &Queue{s.sqs, "/123456789012/testQueue/"} - resp, err := q.SendMessage("This is a test message") - req := testServer.WaitRequest() - - c.Assert(req.Method, Equals, "GET") - c.Assert(req.URL.Path, Equals, "/123456789012/testQueue/") - c.Assert(req.Header["Date"], Not(Equals), "") - - msg := "This is a test message" - var h hash.Hash = md5.New() - h.Write([]byte(msg)) - c.Assert(resp.MD5, Equals, fmt.Sprintf("%x", h.Sum(nil))) - c.Assert(resp.Id, Equals, "5fea7756-0ea4-451a-a703-a558b933e274") - c.Assert(err, IsNil) -} - -func encodeMessageAttribute(str string) []byte { - bstr := []byte(str) - bs := make([]byte, 4+len(bstr)) - binary.BigEndian.PutUint32(bs, uint32(len(bstr))) - copy(bs[4:len(bs)], bstr) - return bs -} - -func (s *S) TestSendMessageWithAttributes(c *C) { - testServer.PrepareResponse(200, nil, TestSendMessageXmlOK) - - q := &Queue{s.sqs, testServer.URL + "/123456789012/testQueue/"} - attrs := map[string]string{ - "test_attribute_name_1": "test_attribute_value_1", - } - resp, err := q.SendMessageWithAttributes("This is a test message", attrs) - req := testServer.WaitRequest() - - c.Assert(req.Method, Equals, "GET") - c.Assert(req.URL.Path, Equals, "/123456789012/testQueue/") - c.Assert(req.Header["Date"], Not(Equals), "") - - var attrsHash = md5.New() - attrsHash.Write(encodeMessageAttribute("test_attribute_name_1")) - attrsHash.Write(encodeMessageAttribute("String")) - attrsHash.Write([]byte{1}) - attrsHash.Write(encodeMessageAttribute("test_attribute_value_1")) - c.Assert(resp.MD5OfMessageAttributes, Equals, fmt.Sprintf("%x", attrsHash.Sum(nil))) - - msg := "This is a test message" - var h hash.Hash = md5.New() - h.Write([]byte(msg)) - c.Assert(resp.MD5, Equals, fmt.Sprintf("%x", h.Sum(nil))) - c.Assert(resp.Id, Equals, "5fea7756-0ea4-451a-a703-a558b933e274") - c.Assert(err, IsNil) -} - -func (s *S) TestSendMessageBatch(c *C) { - testServer.PrepareResponse(200, nil, TestSendMessageBatchXmlOk) - - q := &Queue{s.sqs, testServer.URL + "/123456789012/testQueue/"} - - msgList := []string{"test message body 1", "test message body 2"} - resp, err := q.SendMessageBatchString(msgList) - req := testServer.WaitRequest() - - c.Assert(req.Method, Equals, "GET") - c.Assert(req.URL.Path, Equals, "/123456789012/testQueue/") - c.Assert(req.Header["Date"], Not(Equals), "") - - for idx, msg := range msgList { - var h hash.Hash = md5.New() - h.Write([]byte(msg)) - c.Assert(resp.SendMessageBatchResult[idx].MD5OfMessageBody, Equals, fmt.Sprintf("%x", h.Sum(nil))) - c.Assert(err, IsNil) - } -} - -func (s *S) TestDeleteMessageBatch(c *C) { - testServer.PrepareResponse(200, nil, TestDeleteMessageBatchXmlOK) - - q := &Queue{s.sqs, testServer.URL + "/123456789012/testQueue/"} - - msgList := []Message{*(&Message{ReceiptHandle: "gfk0T0R0waama4fVFffkjPQrrvzMrOg0fTFk2LxT33EuB8wR0ZCFgKWyXGWFoqqpCIiprQUEhir%2F5LeGPpYTLzjqLQxyQYaQALeSNHb0us3uE84uujxpBhsDkZUQkjFFkNqBXn48xlMcVhTcI3YLH%2Bd%2BIqetIOHgBCZAPx6r%2B09dWaBXei6nbK5Ygih21DCDdAwFV68Jo8DXhb3ErEfoDqx7vyvC5nCpdwqv%2BJhU%2FTNGjNN8t51v5c%2FAXvQsAzyZVNapxUrHIt4NxRhKJ72uICcxruyE8eRXlxIVNgeNP8ZEDcw7zZU1Zw%3D%3D"}), - *(&Message{ReceiptHandle: "gfk0T0R0waama4fVFffkjKzmhMCymjQvfTFk2LxT33G4ms5subrE0deLKWSscPU1oD3J9zgeS4PQQ3U30qOumIE6AdAv3w%2F%2Fa1IXW6AqaWhGsEPaLm3Vf6IiWqdM8u5imB%2BNTwj3tQRzOWdTOePjOjPcTpRxBtXix%2BEvwJOZUma9wabv%2BSw6ZHjwmNcVDx8dZXJhVp16Bksiox%2FGrUvrVTCJRTWTLc59oHLLF8sEkKzRmGNzTDGTiV%2BYjHfQj60FD3rVaXmzTsoNxRhKJ72uIHVMGVQiAGgB%2BqAbSqfKHDQtVOmJJgkHug%3D%3D"}), - } - - resp, err := q.DeleteMessageBatch(msgList) - c.Assert(err, IsNil) - req := testServer.WaitRequest() - - c.Assert(req.Method, Equals, "GET") - c.Assert(req.URL.Path, Equals, "/123456789012/testQueue/") - c.Assert(req.Header["Date"], Not(Equals), "") - - for idx, _ := range msgList { - c.Assert(resp.DeleteMessageBatchResult[idx].Id, Equals, fmt.Sprintf("msg%d", idx+1)) - } -} - -func (s *S) TestDeleteMessageUsingReceiptHandle(c *C) { - testServer.PrepareResponse(200, nil, TestDeleteMessageUsingReceiptXmlOK) - - q := &Queue{s.sqs, testServer.URL + "/123456789012/testQueue/"} - - msg := &Message{ReceiptHandle: "gfk0T0R0waama4fVFffkjRQrrvzMrOg0fTFk2LxT33EuB8wR0ZCFgKWyXGWFoqqpCIiprQUEhir%2F5LeGPpYTLzjqLQxyQYaQALeSNHb0us3uE84uujxpBhsDkZUQkjFFkNqBXn48xlMcVhTcI3YLH%2Bd%2BIqetIOHgBCZAPx6r%2B09dWaBXei6nbK5Ygih21DCDdAwFV68Jo8DXhb3ErEfoDqx7vyvC5nCpdwqv%2BJhU%2FTNGjNN8t51v5c%2FAXvQsAzyZVNapxUrHIt4NxRhKJ72uICcxruyE8eRXlxIVNgeNP8ZEDcw7zZU1Zw%3D%3D"} - - resp, err := q.DeleteMessageUsingReceiptHandle(msg.ReceiptHandle) - c.Assert(err, IsNil) - req := testServer.WaitRequest() - - c.Assert(req.Method, Equals, "GET") - c.Assert(req.URL.Path, Equals, "/123456789012/testQueue/") - c.Assert(req.Header["Date"], Not(Equals), "") - - c.Assert(resp.ResponseMetadata.RequestId, Equals, "d6d86b7a-74d1-4439-b43f-196a1e29cd85") -} - -func (s *S) TestReceiveMessage(c *C) { - testServer.PrepareResponse(200, nil, TestReceiveMessageXmlOK) - - q := &Queue{s.sqs, testServer.URL + "/123456789012/testQueue/"} - resp, err := q.ReceiveMessage(5) - req := testServer.WaitRequest() - - c.Assert(req.Method, Equals, "GET") - c.Assert(req.URL.Path, Equals, "/123456789012/testQueue/") - c.Assert(req.Header["Date"], Not(Equals), "") - - c.Assert(len(resp.Messages), Not(Equals), 0) - c.Assert(resp.Messages[0].MessageId, Equals, "5fea7756-0ea4-451a-a703-a558b933e274") - c.Assert(resp.Messages[0].MD5OfBody, Equals, "fafb00f5732ab283681e124bf8747ed1") - c.Assert(resp.Messages[0].ReceiptHandle, Equals, "MbZj6wDWli+JvwwJaBV+3dcjk2YW2vA3+STFFljTM8tJJg6HRG6PYSasuWXPJB+CwLj1FjgXUv1uSj1gUPAWV66FU/WeR4mq2OKpEGYWbnLmpRCJVAyeMjeU5ZBdtcQ+QEauMZc8ZRv37sIW2iJKq3M9MFx1YvV11A2x/KSbkJ0=") - c.Assert(resp.Messages[0].Body, Equals, "This is a test message") - - c.Assert(len(resp.Messages[0].Attribute), Not(Equals), 0) - - expectedAttributeResults := []struct { - Name string - Value string - }{ - {Name: "SenderId", Value: "195004372649"}, - {Name: "SentTimestamp", Value: "1238099229000"}, - {Name: "ApproximateReceiveCount", Value: "5"}, - {Name: "ApproximateFirstReceiveTimestamp", Value: "1250700979248"}, - } - - for i, expected := range expectedAttributeResults { - c.Assert(resp.Messages[0].Attribute[i].Name, Equals, expected.Name) - c.Assert(resp.Messages[0].Attribute[i].Value, Equals, expected.Value) - } - - c.Assert(len(resp.Messages[0].MessageAttribute), Not(Equals), 0) - - expectedMessageAttributeResults := []struct { - Name string - Value struct { - DataType string - BinaryValue []byte - StringValue string - - // Not yet implemented (Reserved for future use) - BinaryListValues [][]byte - StringListValues []string - } - }{ - { - Name: "CustomAttribute", - Value: struct { - DataType string - BinaryValue []byte - StringValue string - - // Not yet implemented (Reserved for future use) - BinaryListValues [][]byte - StringListValues []string - }{ - DataType: "String", - StringValue: "Testing, testing, 1, 2, 3", - }, - }, - { - Name: "BinaryCustomAttribute", - Value: struct { - DataType string - BinaryValue []byte - StringValue string - - // Not yet implemented (Reserved for future use) - BinaryListValues [][]byte - StringListValues []string - }{ - DataType: "Binary", - BinaryValue: []byte("iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAABA0lEQVQ4T72UrQ4CMRCEewhyiiBPopBgcfAUSIICB88CDhRB8hTgsCBRyJMEdUFwZJpMs/3LHQlhVdPufJ1ut03UjyKJcR5zVc4umbW87eeqvVFBjTdJwP54D+4xGXVUCGiBxoOsJOCd9IKgRnnV8wAezrnRmwGcpKtCJ8UgJBNWLFNzVAOimyqIhElXGkQ3LmQ6fKrdqaW1cixhdKVBcEOBLEwViBugVv8B1elVuLYcoTea624drcl5LW4KTRsFhQpLtVzzQKGCh2DuHI8FvdVH7vGQKEPerHRjgegKMESsXgAgWBtu5D1a9BQWCXSrzx9BvjPPkRQR6IJcQNTRV/cvkj93DqUTWzVDIQAAAABJRU5ErkJggg=="), - }, - }, - } - - for i, expected := range expectedMessageAttributeResults { - c.Assert(resp.Messages[0].MessageAttribute[i].Name, Equals, expected.Name) - c.Assert(resp.Messages[0].MessageAttribute[i].Value.DataType, Equals, expected.Value.DataType) - c.Assert(string(resp.Messages[0].MessageAttribute[i].Value.BinaryValue), Equals, string(expected.Value.BinaryValue)) - c.Assert(resp.Messages[0].MessageAttribute[i].Value.StringValue, Equals, expected.Value.StringValue) - } - - c.Assert(err, IsNil) -} - -func (s *S) TestChangeMessageVisibility(c *C) { - testServer.PrepareResponse(200, nil, TestReceiveMessageXmlOK) - - q := &Queue{s.sqs, testServer.URL + "/123456789012/testQueue/"} - - resp1, err := q.ReceiveMessage(1) - req := testServer.WaitRequest() - - testServer.PrepareResponse(200, nil, TestChangeMessageVisibilityXmlOK) - - resp, err := q.ChangeMessageVisibility(&resp1.Messages[0], 50) - req = testServer.WaitRequest() - - c.Assert(req.Method, Equals, "GET") - c.Assert(req.URL.Path, Equals, "/123456789012/testQueue/") - c.Assert(req.Header["Date"], Not(Equals), "") - - c.Assert(resp.ResponseMetadata.RequestId, Equals, "6a7a282a-d013-4a59-aba9-335b0fa48bed") - c.Assert(err, IsNil) -} - -func (s *S) TestGetQueueAttributes(c *C) { - testServer.PrepareResponse(200, nil, TestGetQueueAttributesXmlOK) - - q := &Queue{s.sqs, testServer.URL + "/123456789012/testQueue/"} - - resp, err := q.GetQueueAttributes("All") - req := testServer.WaitRequest() - - c.Assert(req.Method, Equals, "GET") - c.Assert(req.URL.Path, Equals, "/123456789012/testQueue/") - - c.Assert(resp.ResponseMetadata.RequestId, Equals, "1ea71be5-b5a2-4f9d-b85a-945d8d08cd0b") - - c.Assert(len(resp.Attributes), Equals, 9) - - expectedResults := []struct { - Name string - Value string - }{ - {Name: "ReceiveMessageWaitTimeSeconds", Value: "2"}, - {Name: "VisibilityTimeout", Value: "30"}, - {Name: "ApproximateNumberOfMessages", Value: "0"}, - {Name: "ApproximateNumberOfMessagesNotVisible", Value: "0"}, - {Name: "CreatedTimestamp", Value: "1286771522"}, - {Name: "LastModifiedTimestamp", Value: "1286771522"}, - {Name: "QueueArn", Value: "arn:aws:sqs:us-east-1:123456789012:qfoo"}, - {Name: "MaximumMessageSize", Value: "8192"}, - {Name: "MessageRetentionPeriod", Value: "345600"}, - } - - for i, expected := range expectedResults { - c.Assert(resp.Attributes[i].Name, Equals, expected.Name) - c.Assert(resp.Attributes[i].Value, Equals, expected.Value) - } - - c.Assert(err, IsNil) -} diff --git a/vendor/github.com/goamz/goamz/sqs/suite_test.go b/vendor/github.com/goamz/goamz/sqs/suite_test.go deleted file mode 100644 index 8de1bc04f..000000000 --- a/vendor/github.com/goamz/goamz/sqs/suite_test.go +++ /dev/null @@ -1,145 +0,0 @@ -package sqs - -import ( - "flag" - "fmt" - "net/http" - "net/url" - "os" - "testing" - "time" - - "github.com/goamz/goamz/aws" - . "gopkg.in/check.v1" -) - -func Test(t *testing.T) { - TestingT(t) -} - -var integration = flag.Bool("i", false, "Enable integration tests") - -type SuiteI struct { - auth aws.Auth -} - -func (s *SuiteI) SetUpSuite(c *C) { - if !*integration { - c.Skip("Integration tests not enabled (-i flag)") - } - auth, err := aws.EnvAuth() - if err != nil { - c.Fatal(err.Error()) - } - s.auth = auth -} - -type HTTPSuite struct{} - -var testServer = NewTestHTTPServer("http://localhost:4455", 5e9) - -func (s *HTTPSuite) SetUpSuite(c *C) { - testServer.Start() -} - -func (s *HTTPSuite) TearDownTest(c *C) { - testServer.FlushRequests() -} - -type TestHTTPServer struct { - URL string - Timeout time.Duration - started bool - request chan *http.Request - response chan *testResponse - pending chan bool -} - -type testResponse struct { - Status int - Headers map[string]string - Body string -} - -func NewTestHTTPServer(url string, timeout time.Duration) *TestHTTPServer { - return &TestHTTPServer{URL: url, Timeout: timeout} -} - -func (s *TestHTTPServer) Start() { - if s.started { - return - } - s.started = true - - s.request = make(chan *http.Request, 64) - s.response = make(chan *testResponse, 64) - s.pending = make(chan bool, 64) - - url, _ := url.Parse(s.URL) - go func() { - err := http.ListenAndServe(url.Host, s) - if err != nil { - panic(err) - } - }() - - s.PrepareResponse(202, nil, "Nothing.") - for { - // Wait for it to be up. - resp, err := http.Get(s.URL) - if err == nil && resp.StatusCode == 202 { - break - } - fmt.Fprintf(os.Stderr, "\nWaiting for fake server to be up... ") - time.Sleep(1e8) - } - fmt.Fprintf(os.Stderr, "done\n\n") - s.WaitRequest() // Consume dummy request. -} - -// FlushRequests discards requests which were not yet consumed by WaitRequest. -func (s *TestHTTPServer) FlushRequests() { - for { - select { - case <-s.request: - default: - return - } - } -} - -func (s *TestHTTPServer) ServeHTTP(w http.ResponseWriter, req *http.Request) { - s.request <- req - var resp *testResponse - select { - case resp = <-s.response: - case <-time.After(s.Timeout): - fmt.Fprintf(os.Stderr, "ERROR: Timeout waiting for test to provide response\n") - resp = &testResponse{500, nil, ""} - } - if resp.Headers != nil { - h := w.Header() - for k, v := range resp.Headers { - h.Set(k, v) - } - } - if resp.Status != 0 { - w.WriteHeader(resp.Status) - } - w.Write([]byte(resp.Body)) -} - -func (s *TestHTTPServer) WaitRequest() *http.Request { - select { - case req := <-s.request: - req.ParseForm() - return req - case <-time.After(s.Timeout): - panic("Timeout waiting for goamz request") - } - panic("unreached") -} - -func (s *TestHTTPServer) PrepareResponse(status int, headers map[string]string, body string) { - s.response <- &testResponse{status, headers, body} -} |