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 }