add unit test, fix interceptor bug

master
kevin 4 years ago
parent e7d46aa6e2
commit 33a9db85c8

@ -0,0 +1,31 @@
package mapping
import (
"reflect"
"testing"
"github.com/stretchr/testify/assert"
)
type Bar struct {
Val string `json:"val"`
}
func TestFieldOptionOptionalDep(t *testing.T) {
var bar Bar
rt := reflect.TypeOf(bar)
for i := 0; i < rt.NumField(); i++ {
field := rt.Field(i)
val, opt, err := parseKeyAndOptions(jsonTagKey, field)
assert.Equal(t, "val", val)
assert.Nil(t, opt)
assert.Nil(t, err)
}
// check nil working
var o *fieldOptions
check := func(o *fieldOptions) {
assert.Equal(t, 0, len(o.optionalDep()))
}
check(o)
}

@ -2387,6 +2387,13 @@ func TestUnmarshalNestedMapSimpleTypeMatch(t *testing.T) {
assert.Equal(t, "1", c.Anything["id"]) assert.Equal(t, "1", c.Anything["id"])
} }
func TestUnmarshalValuer(t *testing.T) {
unmarshaler := NewUnmarshaler(jsonTagKey)
var foo string
err := unmarshaler.UnmarshalValuer(nil, foo)
assert.NotNil(t, err)
}
func BenchmarkUnmarshalString(b *testing.B) { func BenchmarkUnmarshalString(b *testing.B) {
type inner struct { type inner struct {
Value string `key:"value"` Value string `key:"value"`

@ -0,0 +1,16 @@
package proc
import (
"log"
"strings"
"testing"
"github.com/stretchr/testify/assert"
)
func TestDumpGoroutines(t *testing.T) {
var buf strings.Builder
log.SetOutput(&buf)
dumpGoroutines()
assert.True(t, strings.Contains(buf.String(), ".dump"))
}

@ -0,0 +1,21 @@
package proc
import (
"log"
"strings"
"testing"
"github.com/stretchr/testify/assert"
)
func TestProfile(t *testing.T) {
var buf strings.Builder
log.SetOutput(&buf)
profiler := StartProfile()
// start again should not work
assert.NotNil(t, StartProfile())
profiler.Stop()
// stop twice
profiler.Stop()
assert.True(t, strings.Contains(buf.String(), ".pprof"))
}

@ -4,6 +4,7 @@ import (
"context" "context"
"flag" "flag"
"fmt" "fmt"
"log"
"os" "os"
"sync" "sync"
"time" "time"
@ -50,5 +51,13 @@ func main() {
server := zrpc.MustNewServer(c, func(grpcServer *grpc.Server) { server := zrpc.MustNewServer(c, func(grpcServer *grpc.Server) {
unary.RegisterGreeterServer(grpcServer, NewGreetServer()) unary.RegisterGreeterServer(grpcServer, NewGreetServer())
}) })
interceptor := func(ctx context.Context, req interface{}, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (resp interface{}, err error) {
st := time.Now()
resp, err = handler(ctx, req)
log.Printf("method: %s time: %v\n", info.FullMethod, time.Since(st))
return resp, err
}
server.AddUnaryInterceptors(interceptor)
server.Start() server.Start()
} }

@ -67,15 +67,15 @@ func NewServer(c RpcServerConf, register internal.RegisterFn) (*RpcServer, error
} }
func (rs *RpcServer) AddOptions(options ...grpc.ServerOption) { func (rs *RpcServer) AddOptions(options ...grpc.ServerOption) {
rs.AddOptions(options...) rs.server.AddOptions(options...)
} }
func (rs *RpcServer) AddStreamInterceptors(interceptors ...grpc.StreamServerInterceptor) { func (rs *RpcServer) AddStreamInterceptors(interceptors ...grpc.StreamServerInterceptor) {
rs.AddStreamInterceptors(interceptors...) rs.server.AddStreamInterceptors(interceptors...)
} }
func (rs *RpcServer) AddUnaryInterceptors(interceptors ...grpc.UnaryServerInterceptor) { func (rs *RpcServer) AddUnaryInterceptors(interceptors ...grpc.UnaryServerInterceptor) {
rs.AddUnaryInterceptors(interceptors...) rs.server.AddUnaryInterceptors(interceptors...)
} }
func (rs *RpcServer) Start() { func (rs *RpcServer) Start() {

Loading…
Cancel
Save