Add wrapper test
This commit is contained in:
		
							
								
								
									
										71
									
								
								client/rpc_client_test.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										71
									
								
								client/rpc_client_test.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,71 @@ | |||||||
|  | package client | ||||||
|  |  | ||||||
|  | import ( | ||||||
|  | 	"fmt" | ||||||
|  | 	"testing" | ||||||
|  |  | ||||||
|  | 	"github.com/micro/go-micro/registry" | ||||||
|  | 	"github.com/micro/go-micro/registry/mock" | ||||||
|  | 	"github.com/micro/go-micro/selector" | ||||||
|  |  | ||||||
|  | 	"golang.org/x/net/context" | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | func TestCallWrapper(t *testing.T) { | ||||||
|  | 	var called bool | ||||||
|  | 	id := "test.1" | ||||||
|  | 	service := "test.service" | ||||||
|  | 	method := "Test.Method" | ||||||
|  | 	host := "10.1.10.1" | ||||||
|  | 	port := 8080 | ||||||
|  | 	address := "10.1.10.1:8080" | ||||||
|  |  | ||||||
|  | 	wrap := func(cf CallFunc) CallFunc { | ||||||
|  | 		return func(ctx context.Context, addr string, req Request, rsp interface{}, opts ...CallOptions) error { | ||||||
|  | 			called = true | ||||||
|  |  | ||||||
|  | 			if req.Service() != service { | ||||||
|  | 				return fmt.Errorf("expected service: %s got %s", service, req.Service()) | ||||||
|  | 			} | ||||||
|  |  | ||||||
|  | 			if req.Method() != method { | ||||||
|  | 				return fmt.Errorf("expected service: %s got %s", method, req.Method()) | ||||||
|  | 			} | ||||||
|  |  | ||||||
|  | 			if addr != address { | ||||||
|  | 				return fmt.Errorf("expected address: %s got %s", address, addr) | ||||||
|  | 			} | ||||||
|  |  | ||||||
|  | 			// don't do the call | ||||||
|  | 			return nil | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	r := mock.NewRegistry() | ||||||
|  | 	c := NewClient( | ||||||
|  | 		Registry(r), | ||||||
|  | 		WrapCall(wrap), | ||||||
|  | 	) | ||||||
|  | 	c.Options().Selector.Init(selector.Registry(r)) | ||||||
|  |  | ||||||
|  | 	r.Register(®istry.Service{ | ||||||
|  | 		Name:    service, | ||||||
|  | 		Version: "latest", | ||||||
|  | 		Nodes: []*registry.Node{ | ||||||
|  | 			®istry.Node{ | ||||||
|  | 				Id:      id, | ||||||
|  | 				Address: host, | ||||||
|  | 				Port:    port, | ||||||
|  | 			}, | ||||||
|  | 		}, | ||||||
|  | 	}) | ||||||
|  |  | ||||||
|  | 	req := c.NewRequest(service, method, nil) | ||||||
|  | 	if err := c.Call(context.Background(), req, nil); err != nil { | ||||||
|  | 		t.Fatal("call wrapper error", err) | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	if !called { | ||||||
|  | 		t.Fatal("wrapper not called") | ||||||
|  | 	} | ||||||
|  | } | ||||||
		Reference in New Issue
	
	Block a user