vendor: update all dependencies

This commit is contained in:
Nick Craig-Wood 2018-06-17 17:59:12 +01:00
parent 3f0789e2db
commit 08021c4636
2474 changed files with 435818 additions and 282709 deletions

View file

@ -21,6 +21,7 @@ import (
"fmt"
"net/http"
"net/url"
"strconv"
"time"
"github.com/golang/protobuf/proto"
@ -147,6 +148,48 @@ func NewPOSTTask(path string, params url.Values) *Task {
}
}
// RequestHeaders are the special HTTP request headers available to push task
// HTTP request handlers. These headers are set internally by App Engine.
// See https://cloud.google.com/appengine/docs/standard/go/taskqueue/push/creating-handlers#reading_request_headers
// for a description of the fields.
type RequestHeaders struct {
QueueName string
TaskName string
TaskRetryCount int64
TaskExecutionCount int64
TaskETA time.Time
TaskPreviousResponse int
TaskRetryReason string
FailFast bool
}
// ParseRequestHeaders parses the special HTTP request headers available to push
// task request handlers. This function silently ignores values of the wrong
// format.
func ParseRequestHeaders(h http.Header) *RequestHeaders {
ret := &RequestHeaders{
QueueName: h.Get("X-AppEngine-QueueName"),
TaskName: h.Get("X-AppEngine-TaskName"),
}
ret.TaskRetryCount, _ = strconv.ParseInt(h.Get("X-AppEngine-TaskRetryCount"), 10, 64)
ret.TaskExecutionCount, _ = strconv.ParseInt(h.Get("X-AppEngine-TaskExecutionCount"), 10, 64)
etaSecs, _ := strconv.ParseInt(h.Get("X-AppEngine-TaskETA"), 10, 64)
if etaSecs != 0 {
ret.TaskETA = time.Unix(etaSecs, 0)
}
ret.TaskPreviousResponse, _ = strconv.Atoi(h.Get("X-AppEngine-TaskPreviousResponse"))
ret.TaskRetryReason = h.Get("X-AppEngine-TaskRetryReason")
if h.Get("X-AppEngine-FailFast") != "" {
ret.FailFast = true
}
return ret
}
var (
currentNamespace = http.CanonicalHeaderKey("X-AppEngine-Current-Namespace")
defaultNamespace = http.CanonicalHeaderKey("X-AppEngine-Default-Namespace")
@ -321,6 +364,8 @@ func Delete(c context.Context, task *Task, queueName string) error {
// DeleteMulti deletes multiple tasks from a named queue.
// If a given task could not be deleted, an appengine.MultiError is returned.
// Each task is deleted independently; one may fail to delete while the others
// are sucessfully deleted.
func DeleteMulti(c context.Context, tasks []*Task, queueName string) error {
taskNames := make([][]byte, len(tasks))
for i, t := range tasks {

View file

@ -7,8 +7,10 @@ package taskqueue
import (
"errors"
"fmt"
"net/http"
"reflect"
"testing"
"time"
"google.golang.org/appengine"
"google.golang.org/appengine/internal"
@ -114,3 +116,58 @@ func TestAddWithEmptyPath(t *testing.T) {
t.Fatalf("Add: %v", err)
}
}
func TestParseRequestHeaders(t *testing.T) {
tests := []struct {
Header http.Header
Want RequestHeaders
}{
{
Header: map[string][]string{
"X-Appengine-Queuename": []string{"foo"},
"X-Appengine-Taskname": []string{"bar"},
"X-Appengine-Taskretrycount": []string{"4294967297"}, // 2^32 + 1
"X-Appengine-Taskexecutioncount": []string{"4294967298"}, // 2^32 + 2
"X-Appengine-Tasketa": []string{"1500000000"},
"X-Appengine-Taskpreviousresponse": []string{"404"},
"X-Appengine-Taskretryreason": []string{"baz"},
"X-Appengine-Failfast": []string{"yes"},
},
Want: RequestHeaders{
QueueName: "foo",
TaskName: "bar",
TaskRetryCount: 4294967297,
TaskExecutionCount: 4294967298,
TaskETA: time.Date(2017, time.July, 14, 2, 40, 0, 0, time.UTC),
TaskPreviousResponse: 404,
TaskRetryReason: "baz",
FailFast: true,
},
},
{
Header: map[string][]string{},
Want: RequestHeaders{
QueueName: "",
TaskName: "",
TaskRetryCount: 0,
TaskExecutionCount: 0,
TaskETA: time.Time{},
TaskPreviousResponse: 0,
TaskRetryReason: "",
FailFast: false,
},
},
}
for idx, test := range tests {
got := *ParseRequestHeaders(test.Header)
if got.TaskETA.UnixNano() != test.Want.TaskETA.UnixNano() {
t.Errorf("%d. ParseRequestHeaders got TaskETA %v, wanted %v", idx, got.TaskETA, test.Want.TaskETA)
}
got.TaskETA = time.Time{}
test.Want.TaskETA = time.Time{}
if !reflect.DeepEqual(got, test.Want) {
t.Errorf("%d. ParseRequestHeaders got %v, wanted %v", idx, got, test.Want)
}
}
}