gitee.com/woood2/luca@v1.0.4/internal/mq/greet_test.go (about)

     1  package mq
     2  
     3  import (
     4  	"context"
     5  	"gitee.com/woood2/luca/internal/producer"
     6  	"gitee.com/woood2/luca/internal/trace"
     7  	"gitee.com/woood2/luca/internal/util"
     8  	"github.com/openzipkin/zipkin-go"
     9  	"sync"
    10  	"testing"
    11  )
    12  
    13  //mac pro 16 (2019款)
    14  //1 topic, 10 partition
    15  //未启动consumer,WaitForLocal,1000/1.7sec
    16  //未启动consumer,NoResponse,1000/60ms
    17  //启动consumer,NoResponse,1000/70ms
    18  //启动consumer,WaitForAll,1000/2.3 sec
    19  //启动consumer,WaitForLocal,1000/2.2sec
    20  func TestSendGreet(t *testing.T) {
    21  	util.SkipCI(t)
    22  	for i := 0; i < 1; i++ {
    23  		//time.Sleep(2*time.Second)
    24  		g := &Greet{"xjb", "zq"}
    25  		span := trace.StartSpan("TestSendGreet")
    26  		ctx := zipkin.NewContext(context.Background(), span)
    27  		if err := producer.G().SendMessage(ctx, g); err != nil {
    28  			t.Errorf("expected err=nil; actual err=%v", err)
    29  		}
    30  		span.Finish()
    31  	}
    32  }
    33  
    34  //mac pro 16 (2019款)
    35  //1 topic, 10 partition
    36  //consumer启动,WaitForLocal
    37  //10w/7.1 sec
    38  func TestSendGreetConcurrently(t *testing.T) {
    39  	util.SkipCI(t)
    40  	var wg sync.WaitGroup
    41  	for i := 0; i < 100000; i++ {
    42  		go func() {
    43  			wg.Add(1)
    44  			g := &Greet{"xjb", "zq"}
    45  			span := trace.StartSpan("TestSendGreetConcurrently")
    46  			ctx := zipkin.NewContext(context.Background(), span)
    47  			if err := producer.G().SendMessage(ctx, g); err != nil {
    48  				t.Errorf("expected err=nil; actual err=%v", err)
    49  			}
    50  			span.Finish()
    51  			wg.Done()
    52  		}()
    53  	}
    54  	wg.Wait()
    55  }
    56  
    57  //mac pro 16 (2019款)
    58  //consumer启动,WaitForLocal
    59  //1 topic, 1 groupID, 10 partition
    60  //p:1, 3434
    61  //p:5, 10000
    62  //p:10, 13732
    63  //1 topic, 3 groupID, 300 partition
    64  //p:1, 800
    65  //1 topic, 3 groupID, 50 partition
    66  //p:1, 1200
    67  //p:5, 6496
    68  //p:10, 10000
    69  func BenchmarkSendGreet(b *testing.B) {
    70  	b.SetParallelism(1)
    71  	b.RunParallel(func(pb *testing.PB) {
    72  		for pb.Next() {
    73  			g := &Greet{"xjb", "zq"}
    74  			span := trace.StartSpan("BenchmarkSendGreet")
    75  			ctx := zipkin.NewContext(context.Background(), span)
    76  			producer.G().SendMessage(ctx, g)
    77  			span.Finish()
    78  		}
    79  	})
    80  }