gitee.com/woood2/luca@v1.0.4/test/grpc_client/main.go (about)

     1  package main
     2  
     3  import (
     4  	"context"
     5  	lucaSDK "gitee.com/woood2/luca/cmd/micro/pkg"
     6  	"gitee.com/woood2/luca/internal/conf"
     7  	"gitee.com/woood2/luca/internal/discovery"
     8  	"gitee.com/woood2/luca/internal/trace"
     9  	"github.com/openzipkin/zipkin-go"
    10  	"go.uber.org/zap"
    11  	"log"
    12  	"strconv"
    13  	"sync"
    14  	"time"
    15  )
    16  
    17  const (
    18  	directGRPC = true
    19  
    20  	appkey    = "weibo2"
    21  	appSecret = "todo"
    22  )
    23  
    24  func main() {
    25  	log.Println("test begin")
    26  	attr := conf.Load("application.yml", "configs/application.yml")
    27  	//consul
    28  	client, consulClient := discovery.Client(attr.Consul.Host, attr.Consul.Port)
    29  	conf.MergeConsul(attr, consulClient)
    30  	//zipkin
    31  	trace.Open(attr.Zipkin)
    32  	defer trace.Close()
    33  	//sdk
    34  	var lucaClient *lucaSDK.LucaClient
    35  	if directGRPC {
    36  		var err error
    37  		lucaClient, err = lucaSDK.NewDirect(attr.Host+":"+strconv.Itoa(attr.Micro.Port), appkey, appSecret, zap.NewExample(), trace.ClientTrace())
    38  		if err != nil {
    39  			log.Printf("direct connect failed, err=%+v\n", err)
    40  			return
    41  		}
    42  	} else {
    43  		lucaClient = lucaSDK.NewSD(client, appkey, appSecret, zap.NewExample(), trace.ClientTrace())
    44  	}
    45  	//test in goroutine
    46  	begin := time.Now()
    47  	wg := sync.WaitGroup{}
    48  	n := 1
    49  	for i := 0; i < n; i++ {
    50  		if i%10 == 0 {
    51  			//time.Sleep(2*time.Second)
    52  		}
    53  		go func(seq int) {
    54  			wg.Add(1)
    55  			span := trace.StartSpan("grpc_client")
    56  			defer span.Finish()
    57  			ctx := zipkin.NewContext(context.Background(), span)
    58  			if r, err := lucaClient.CheckPerm(ctx, 911, "user:add"); err != nil {
    59  				log.Printf("check perm failed, err=%+v\n", err)
    60  			} else {
    61  				log.Printf("check perm successed, result=%+v\n", r)
    62  			}
    63  			if r, err := lucaClient.CheckToken(ctx, "nice to meet you"); err != nil {
    64  				log.Printf("check token failed, err=%+v\n", err)
    65  				if err == lucaSDK.InvalidToken {
    66  					log.Println("it's lucaSDK.InvalidToken")
    67  				}
    68  			} else {
    69  				log.Printf("check token successed, result=%+v\n", r)
    70  			}
    71  			wg.Done()
    72  		}(i)
    73  	}
    74  	time.Sleep(10 * time.Millisecond)
    75  	wg.Wait()
    76  	log.Printf("%d request, cost: %d milliseconds", n, time.Since(begin).Milliseconds())
    77  	log.Println("test over")
    78  }