|
@@ -1,12 +1,15 @@
|
|
package clientinterceptors
|
|
package clientinterceptors
|
|
|
|
|
|
import (
|
|
import (
|
|
|
|
+ "context"
|
|
|
|
+ "errors"
|
|
"testing"
|
|
"testing"
|
|
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/tal-tech/go-zero/core/breaker"
|
|
"github.com/tal-tech/go-zero/core/breaker"
|
|
"github.com/tal-tech/go-zero/core/stat"
|
|
"github.com/tal-tech/go-zero/core/stat"
|
|
rcodes "github.com/tal-tech/go-zero/rpcx/internal/codes"
|
|
rcodes "github.com/tal-tech/go-zero/rpcx/internal/codes"
|
|
|
|
+ "google.golang.org/grpc"
|
|
"google.golang.org/grpc/codes"
|
|
"google.golang.org/grpc/codes"
|
|
"google.golang.org/grpc/status"
|
|
"google.golang.org/grpc/status"
|
|
)
|
|
)
|
|
@@ -49,3 +52,30 @@ func TestBreakerInterceptorDeadlineExceeded(t *testing.T) {
|
|
assert.True(t, errs[err] > 0)
|
|
assert.True(t, errs[err] > 0)
|
|
assert.True(t, errs[breaker.ErrServiceUnavailable] > 0)
|
|
assert.True(t, errs[breaker.ErrServiceUnavailable] > 0)
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+func TestBreakerInterceptor(t *testing.T) {
|
|
|
|
+ tests := []struct {
|
|
|
|
+ name string
|
|
|
|
+ err error
|
|
|
|
+ }{
|
|
|
|
+ {
|
|
|
|
+ name: "nil",
|
|
|
|
+ err: nil,
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ name: "with error",
|
|
|
|
+ err: errors.New("mock"),
|
|
|
|
+ },
|
|
|
|
+ }
|
|
|
|
+ for _, test := range tests {
|
|
|
|
+ t.Run(test.name, func(t *testing.T) {
|
|
|
|
+ cc := new(grpc.ClientConn)
|
|
|
|
+ err := BreakerInterceptor(context.Background(), "/foo", nil, nil, cc,
|
|
|
|
+ func(ctx context.Context, method string, req, reply interface{}, cc *grpc.ClientConn,
|
|
|
|
+ opts ...grpc.CallOption) error {
|
|
|
|
+ return test.err
|
|
|
|
+ })
|
|
|
|
+ assert.Equal(t, test.err, err)
|
|
|
|
+ })
|
|
|
|
+ }
|
|
|
|
+}
|