[VOL-4291] Rw-core updates for gRPC migration
Change-Id: I8d5a554409115b29318089671ca4e1ab3fa98810
diff --git a/vendor/github.com/golang/mock/gomock/call.go b/vendor/github.com/golang/mock/gomock/call.go
index b18cc2d..13c9f44 100644
--- a/vendor/github.com/golang/mock/gomock/call.go
+++ b/vendor/github.com/golang/mock/gomock/call.go
@@ -50,16 +50,16 @@
t.Helper()
// TODO: check arity, types.
- margs := make([]Matcher, len(args))
+ mArgs := make([]Matcher, len(args))
for i, arg := range args {
if m, ok := arg.(Matcher); ok {
- margs[i] = m
+ mArgs[i] = m
} else if arg == nil {
// Handle nil specially so that passing a nil interface value
// will match the typed nils of concrete args.
- margs[i] = Nil()
+ mArgs[i] = Nil()
} else {
- margs[i] = Eq(arg)
+ mArgs[i] = Eq(arg)
}
}
@@ -76,7 +76,7 @@
return rets
}}
return &Call{t: t, receiver: receiver, method: method, methodType: methodType,
- args: margs, origin: origin, minCalls: 1, maxCalls: 1, actions: actions}
+ args: mArgs, origin: origin, minCalls: 1, maxCalls: 1, actions: actions}
}
// AnyTimes allows the expectation to be called 0 or more times
@@ -113,19 +113,25 @@
v := reflect.ValueOf(f)
c.addAction(func(args []interface{}) []interface{} {
- vargs := make([]reflect.Value, len(args))
+ c.t.Helper()
+ vArgs := make([]reflect.Value, len(args))
ft := v.Type()
+ if c.methodType.NumIn() != ft.NumIn() {
+ c.t.Fatalf("wrong number of arguments in DoAndReturn func for %T.%v: got %d, want %d [%s]",
+ c.receiver, c.method, ft.NumIn(), c.methodType.NumIn(), c.origin)
+ return nil
+ }
for i := 0; i < len(args); i++ {
if args[i] != nil {
- vargs[i] = reflect.ValueOf(args[i])
+ vArgs[i] = reflect.ValueOf(args[i])
} else {
// Use the zero value for the arg.
- vargs[i] = reflect.Zero(ft.In(i))
+ vArgs[i] = reflect.Zero(ft.In(i))
}
}
- vrets := v.Call(vargs)
- rets := make([]interface{}, len(vrets))
- for i, ret := range vrets {
+ vRets := v.Call(vArgs)
+ rets := make([]interface{}, len(vRets))
+ for i, ret := range vRets {
rets[i] = ret.Interface()
}
return rets
@@ -142,17 +148,23 @@
v := reflect.ValueOf(f)
c.addAction(func(args []interface{}) []interface{} {
- vargs := make([]reflect.Value, len(args))
+ c.t.Helper()
+ if c.methodType.NumIn() != v.Type().NumIn() {
+ c.t.Fatalf("wrong number of arguments in Do func for %T.%v: got %d, want %d [%s]",
+ c.receiver, c.method, v.Type().NumIn(), c.methodType.NumIn(), c.origin)
+ return nil
+ }
+ vArgs := make([]reflect.Value, len(args))
ft := v.Type()
for i := 0; i < len(args); i++ {
if args[i] != nil {
- vargs[i] = reflect.ValueOf(args[i])
+ vArgs[i] = reflect.ValueOf(args[i])
} else {
// Use the zero value for the arg.
- vargs[i] = reflect.Zero(ft.In(i))
+ vArgs[i] = reflect.Zero(ft.In(i))
}
}
- v.Call(vargs)
+ v.Call(vArgs)
return nil
})
return c
@@ -353,12 +365,12 @@
// matches all the remaining arguments or the lack of any.
// Convert the remaining arguments, if any, into a slice of the
// expected type.
- vargsType := c.methodType.In(c.methodType.NumIn() - 1)
- vargs := reflect.MakeSlice(vargsType, 0, len(args)-i)
+ vArgsType := c.methodType.In(c.methodType.NumIn() - 1)
+ vArgs := reflect.MakeSlice(vArgsType, 0, len(args)-i)
for _, arg := range args[i:] {
- vargs = reflect.Append(vargs, reflect.ValueOf(arg))
+ vArgs = reflect.Append(vArgs, reflect.ValueOf(arg))
}
- if m.Matches(vargs.Interface()) {
+ if m.Matches(vArgs.Interface()) {
// Got Foo(a, b, c, d, e) want Foo(matcherA, matcherB, gomock.Any())
// Got Foo(a, b, c, d, e) want Foo(matcherA, matcherB, someSliceMatcher)
// Got Foo(a, b) want Foo(matcherA, matcherB, gomock.Any())
@@ -380,7 +392,7 @@
// Check that all prerequisite calls have been satisfied.
for _, preReqCall := range c.preReqs {
if !preReqCall.satisfied() {
- return fmt.Errorf("Expected call at %s doesn't have a prerequisite call satisfied:\n%v\nshould be called before:\n%v",
+ return fmt.Errorf("expected call at %s doesn't have a prerequisite call satisfied:\n%v\nshould be called before:\n%v",
c.origin, preReqCall, c)
}
}
@@ -425,7 +437,7 @@
}
func formatGottenArg(m Matcher, arg interface{}) string {
- got := fmt.Sprintf("%v", arg)
+ got := fmt.Sprintf("%v (%T)", arg, arg)
if gs, ok := m.(GotFormatter); ok {
got = gs.Got(arg)
}
diff --git a/vendor/github.com/golang/mock/gomock/callset.go b/vendor/github.com/golang/mock/gomock/callset.go
index e4e85d6..49dba78 100644
--- a/vendor/github.com/golang/mock/gomock/callset.go
+++ b/vendor/github.com/golang/mock/gomock/callset.go
@@ -16,6 +16,7 @@
import (
"bytes"
+ "errors"
"fmt"
)
@@ -95,7 +96,7 @@
_, _ = fmt.Fprintf(&callsErrors, "there are no expected calls of the method %q for that receiver", method)
}
- return nil, fmt.Errorf(callsErrors.String())
+ return nil, errors.New(callsErrors.String())
}
// Failures returns the calls that are not satisfied.
diff --git a/vendor/github.com/golang/mock/gomock/controller.go b/vendor/github.com/golang/mock/gomock/controller.go
index 3b65690..f054200 100644
--- a/vendor/github.com/golang/mock/gomock/controller.go
+++ b/vendor/github.com/golang/mock/gomock/controller.go
@@ -123,7 +123,7 @@
// Controller.
//
// New in go1.14+, if you are passing a *testing.T into this function you no
-// longer need to call ctrl.Finish() in your test methods
+// longer need to call ctrl.Finish() in your test methods.
func NewController(t TestReporter) *Controller {
h, ok := t.(TestHelper)
if !ok {
@@ -259,6 +259,9 @@
// Finish checks to see if all the methods that were expected to be called
// were called. It should be invoked for each Controller. It is not idempotent
// and therefore can only be invoked once.
+//
+// New in go1.14+, if you are passing a *testing.T into NewController function you no
+// longer need to call ctrl.Finish() in your test methods.
func (ctrl *Controller) Finish() {
// If we're currently panicking, probably because this is a deferred call.
// This must be recovered in the deferred function.
diff --git a/vendor/github.com/golang/mock/gomock/matchers.go b/vendor/github.com/golang/mock/gomock/matchers.go
index 770aba5..2822fb2 100644
--- a/vendor/github.com/golang/mock/gomock/matchers.go
+++ b/vendor/github.com/golang/mock/gomock/matchers.go
@@ -120,7 +120,7 @@
}
func (e eqMatcher) String() string {
- return fmt.Sprintf("is equal to %v", e.x)
+ return fmt.Sprintf("is equal to %v (%T)", e.x, e.x)
}
type nilMatcher struct{}
@@ -153,7 +153,6 @@
}
func (n notMatcher) String() string {
- // TODO: Improve this if we add a NotString method to the Matcher interface.
return "not(" + n.m.String() + ")"
}
@@ -208,6 +207,70 @@
return fmt.Sprintf("has length %d", m.i)
}
+type inAnyOrderMatcher struct {
+ x interface{}
+}
+
+func (m inAnyOrderMatcher) Matches(x interface{}) bool {
+ given, ok := m.prepareValue(x)
+ if !ok {
+ return false
+ }
+ wanted, ok := m.prepareValue(m.x)
+ if !ok {
+ return false
+ }
+
+ if given.Len() != wanted.Len() {
+ return false
+ }
+
+ usedFromGiven := make([]bool, given.Len())
+ foundFromWanted := make([]bool, wanted.Len())
+ for i := 0; i < wanted.Len(); i++ {
+ wantedMatcher := Eq(wanted.Index(i).Interface())
+ for j := 0; j < given.Len(); j++ {
+ if usedFromGiven[j] {
+ continue
+ }
+ if wantedMatcher.Matches(given.Index(j).Interface()) {
+ foundFromWanted[i] = true
+ usedFromGiven[j] = true
+ break
+ }
+ }
+ }
+
+ missingFromWanted := 0
+ for _, found := range foundFromWanted {
+ if !found {
+ missingFromWanted++
+ }
+ }
+ extraInGiven := 0
+ for _, used := range usedFromGiven {
+ if !used {
+ extraInGiven++
+ }
+ }
+
+ return extraInGiven == 0 && missingFromWanted == 0
+}
+
+func (m inAnyOrderMatcher) prepareValue(x interface{}) (reflect.Value, bool) {
+ xValue := reflect.ValueOf(x)
+ switch xValue.Kind() {
+ case reflect.Slice, reflect.Array:
+ return xValue, true
+ default:
+ return reflect.Value{}, false
+ }
+}
+
+func (m inAnyOrderMatcher) String() string {
+ return fmt.Sprintf("has the same elements as %v", m.x)
+}
+
// Constructors
// All returns a composite Matcher that returns true if and only all of the
@@ -267,3 +330,12 @@
}
return assignableToTypeOfMatcher{reflect.TypeOf(x)}
}
+
+// InAnyOrder is a Matcher that returns true for collections of the same elements ignoring the order.
+//
+// Example usage:
+// InAnyOrder([]int{1, 2, 3}).Matches([]int{1, 3, 2}) // returns true
+// InAnyOrder([]int{1, 2, 3}).Matches([]int{1, 2}) // returns false
+func InAnyOrder(x interface{}) Matcher {
+ return inAnyOrderMatcher{x}
+}