github.com/annwntech/go-micro/v2@v2.9.5/util/wrapper/wrapper_static_client_test.go (about)

     1  package wrapper_test
     2  
     3  import (
     4  	"context"
     5  	"testing"
     6  
     7  	"github.com/annwntech/go-micro/v2/broker"
     8  	bmemory "github.com/annwntech/go-micro/v2/broker/memory"
     9  	"github.com/annwntech/go-micro/v2/client"
    10  	rmemory "github.com/annwntech/go-micro/v2/registry/memory"
    11  	"github.com/annwntech/go-micro/v2/server"
    12  	tmemory "github.com/annwntech/go-micro/v2/transport/memory"
    13  	wrapper "github.com/annwntech/go-micro/v2/util/wrapper"
    14  )
    15  
    16  type TestFoo struct {
    17  }
    18  
    19  type TestReq struct{}
    20  
    21  type TestRsp struct {
    22  	Data string
    23  }
    24  
    25  func (h *TestFoo) Bar(ctx context.Context, req *TestReq, rsp *TestRsp) error {
    26  	rsp.Data = "pass"
    27  	return nil
    28  }
    29  
    30  func TestStaticClientWrapper(t *testing.T) {
    31  	var err error
    32  
    33  	req := client.NewRequest("go.micro.service.foo", "TestFoo.Bar", &TestReq{}, client.WithContentType("application/json"))
    34  	rsp := &TestRsp{}
    35  
    36  	reg := rmemory.NewRegistry()
    37  	brk := bmemory.NewBroker(broker.Registry(reg))
    38  	tr := tmemory.NewTransport()
    39  
    40  	srv := server.NewServer(
    41  		server.Broker(brk),
    42  		server.Registry(reg),
    43  		server.Name("go.micro.service.foo"),
    44  		server.Address("127.0.0.1:0"),
    45  		server.Transport(tr),
    46  	)
    47  	if err = srv.Handle(srv.NewHandler(&TestFoo{})); err != nil {
    48  		t.Fatal(err)
    49  	}
    50  
    51  	if err = srv.Start(); err != nil {
    52  		t.Fatal(err)
    53  	}
    54  
    55  	cli := client.NewClient(
    56  		client.Registry(reg),
    57  		client.Broker(brk),
    58  		client.Transport(tr),
    59  	)
    60  
    61  	w1 := wrapper.StaticClient("xxx_localhost:12345", cli)
    62  	if err = w1.Call(context.TODO(), req, nil); err == nil {
    63  		t.Fatal("address xxx_#localhost:12345 must not exists and call must be failed")
    64  	}
    65  
    66  	w2 := wrapper.StaticClient(srv.Options().Address, cli)
    67  	if err = w2.Call(context.TODO(), req, rsp); err != nil {
    68  		t.Fatal(err)
    69  	} else if rsp.Data != "pass" {
    70  		t.Fatalf("something wrong with response: %#+v", rsp)
    71  	}
    72  }