All checks were successful
		
		
	
	test / test (push) Successful in 3m30s
				
			Reviewed-on: #376 Co-authored-by: Evstigneev Denis <danteevstigneev@yandex.ru> Co-committed-by: Evstigneev Denis <danteevstigneev@yandex.ru>
		
			
				
	
	
		
			125 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			125 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package server_test
 | |
| 
 | |
| import (
 | |
| 	"context"
 | |
| 	"fmt"
 | |
| 	"testing"
 | |
| 
 | |
| 	"go.unistack.org/micro/v3/broker"
 | |
| 	"go.unistack.org/micro/v3/client"
 | |
| 	"go.unistack.org/micro/v3/codec"
 | |
| 	"go.unistack.org/micro/v3/logger"
 | |
| 	"go.unistack.org/micro/v3/options"
 | |
| 	"go.unistack.org/micro/v3/server"
 | |
| )
 | |
| 
 | |
| type TestHandler struct {
 | |
| 	t *testing.T
 | |
| }
 | |
| 
 | |
| type TestMessage struct {
 | |
| 	Name string
 | |
| }
 | |
| 
 | |
| func (h *TestHandler) SingleSubHandler(ctx context.Context, msg *codec.Frame) error {
 | |
| 	// fmt.Printf("msg %s\n", msg.Data)
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| func TestNoopSub(t *testing.T) {
 | |
| 	ctx := context.Background()
 | |
| 
 | |
| 	b := broker.NewBroker()
 | |
| 
 | |
| 	if err := b.Init(); err != nil {
 | |
| 		t.Fatal(err)
 | |
| 	}
 | |
| 
 | |
| 	if err := b.Connect(ctx); err != nil {
 | |
| 		t.Fatal(err)
 | |
| 	}
 | |
| 
 | |
| 	if err := logger.DefaultLogger.Init(logger.WithLevel(logger.ErrorLevel)); err != nil {
 | |
| 		t.Fatal(err)
 | |
| 	}
 | |
| 	s := server.NewServer(
 | |
| 		server.Broker(b),
 | |
| 		server.Codec("application/octet-stream", codec.NewCodec()),
 | |
| 	)
 | |
| 	if err := s.Init(); err != nil {
 | |
| 		t.Fatal(err)
 | |
| 	}
 | |
| 
 | |
| 	c := client.NewClient(
 | |
| 		client.Broker(b),
 | |
| 		client.Codec("application/octet-stream", codec.NewCodec()),
 | |
| 		client.ContentType("application/octet-stream"),
 | |
| 	)
 | |
| 	if err := c.Init(); err != nil {
 | |
| 		t.Fatal(err)
 | |
| 	}
 | |
| 	h := &TestHandler{t: t}
 | |
| 
 | |
| 	if err := s.Subscribe(s.NewSubscriber("single_topic", h.SingleSubHandler,
 | |
| 		server.SubscriberQueue("queue"),
 | |
| 	)); err != nil {
 | |
| 		t.Fatal(err)
 | |
| 	}
 | |
| 
 | |
| 	if err := s.Start(); err != nil {
 | |
| 		t.Fatal(err)
 | |
| 	}
 | |
| 
 | |
| 	msgs := make([]client.Message, 0, 8)
 | |
| 	for i := 0; i < 8; i++ {
 | |
| 		msgs = append(msgs, c.NewMessage("batch_topic", &codec.Frame{Data: []byte(fmt.Sprintf(`{"name": "test_name %d"}`, i))}))
 | |
| 	}
 | |
| 
 | |
| 	if err := c.BatchPublish(ctx, msgs); err != nil {
 | |
| 		t.Fatal(err)
 | |
| 	}
 | |
| 
 | |
| 	defer func() {
 | |
| 		if err := s.Stop(); err != nil {
 | |
| 			t.Fatal(err)
 | |
| 		}
 | |
| 	}()
 | |
| }
 | |
| 
 | |
| func TestHooks_Wrap(t *testing.T) {
 | |
| 	n := 5
 | |
| 	fn1 := func(next server.FuncSubHandler) server.FuncSubHandler {
 | |
| 		return func(ctx context.Context, msg server.Message) (err error) {
 | |
| 			n *= 2
 | |
| 			return next(ctx, msg)
 | |
| 		}
 | |
| 	}
 | |
| 	fn2 := func(next server.FuncSubHandler) server.FuncSubHandler {
 | |
| 		return func(ctx context.Context, msg server.Message) (err error) {
 | |
| 			n -= 10
 | |
| 			return next(ctx, msg)
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	hs := &options.Hooks{}
 | |
| 	hs.Append(server.HookSubHandler(fn1), server.HookSubHandler(fn2))
 | |
| 
 | |
| 	var fn = func(ctx context.Context, msg server.Message) error {
 | |
| 		return nil
 | |
| 	}
 | |
| 
 | |
| 	hs.EachPrev(func(hook options.Hook) {
 | |
| 		if h, ok := hook.(server.HookSubHandler); ok {
 | |
| 			fn = h(fn)
 | |
| 		}
 | |
| 	})
 | |
| 
 | |
| 	if err := fn(nil, nil); err != nil {
 | |
| 		t.Fatal(err)
 | |
| 	}
 | |
| 
 | |
| 	if n != 0 {
 | |
| 		t.Fatalf("uncorrected hooks call")
 | |
| 	}
 | |
| }
 |