go-micro.dev/v5@v5.12.0/test/benchmark.go (about)

     1  package test
     2  
     3  import (
     4  	"testing"
     5  
     6  	"go-micro.dev/v5"
     7  	"go-micro.dev/v5/broker"
     8  	"go-micro.dev/v5/client"
     9  	"go-micro.dev/v5/registry"
    10  	"go-micro.dev/v5/server"
    11  	"go-micro.dev/v5/transport"
    12  	"go-micro.dev/v5/util/test"
    13  )
    14  
    15  func BenchmarkService(b *testing.B) {
    16  	cfg := ServiceTestConfig{
    17  		Name:       "test-service",
    18  		NewService: newService,
    19  		Parallel:   []int{1, 8, 16, 32, 64},
    20  		Sequential: []int{0},
    21  		Streams:    []int{0},
    22  		//		PubSub:     []int{10},
    23  	}
    24  
    25  	cfg.Run(b)
    26  }
    27  
    28  func newService(name string, opts ...micro.Option) (micro.Service, error) {
    29  	r := registry.NewMemoryRegistry(
    30  		registry.Services(test.Data),
    31  	)
    32  
    33  	b := broker.NewMemoryBroker()
    34  
    35  	t := transport.NewHTTPTransport()
    36  	c := client.NewClient(
    37  		client.Transport(t),
    38  		client.Broker(b),
    39  	)
    40  
    41  	s := server.NewRPCServer(
    42  		server.Name(name),
    43  		server.Registry(r),
    44  		server.Transport(t),
    45  		server.Broker(b),
    46  	)
    47  
    48  	if err := s.Init(); err != nil {
    49  		return nil, err
    50  	}
    51  
    52  	options := []micro.Option{
    53  		micro.Name(name),
    54  		micro.Server(s),
    55  		micro.Client(c),
    56  		micro.Registry(r),
    57  		micro.Broker(b),
    58  	}
    59  	options = append(options, opts...)
    60  
    61  	srv := micro.NewService(options...)
    62  
    63  	return srv, nil
    64  }