Create & Init Project...

This commit is contained in:
2019-04-22 18:49:16 +08:00
commit fc4fa37393
25440 changed files with 4054998 additions and 0 deletions

View File

@@ -0,0 +1,41 @@
package(default_visibility = ["//visibility:public"])
load(
"@io_bazel_rules_go//go:def.bzl",
"go_library",
"go_binary",
)
go_library(
name = "go_default_library",
srcs = ["client.go"],
importpath = "go-common/library/net/rpc/warden/examples/grpcDebug",
tags = ["automanaged"],
visibility = ["//visibility:public"],
deps = [
"@com_github_gogo_protobuf//jsonpb:go_default_library",
"@org_golang_google_grpc//:go_default_library",
"@org_golang_google_grpc//credentials:go_default_library",
"@org_golang_google_grpc//encoding:go_default_library",
],
)
filegroup(
name = "package-srcs",
srcs = glob(["**"]),
tags = ["automanaged"],
visibility = ["//visibility:private"],
)
filegroup(
name = "all-srcs",
srcs = [":package-srcs"],
tags = ["automanaged"],
visibility = ["//visibility:public"],
)
go_binary(
name = "grpcDebug",
embed = [":go_default_library"],
tags = ["automanaged"],
)

View File

@@ -0,0 +1,103 @@
package main
import (
"context"
"flag"
"fmt"
"io/ioutil"
"os"
"github.com/gogo/protobuf/jsonpb"
"google.golang.org/grpc"
"google.golang.org/grpc/credentials"
"google.golang.org/grpc/encoding"
)
// Reply for test
type Reply struct {
res []byte
}
var data string
var file string
var method string
var addr string
var tlsCert string
var tlsServerName string
//Reference https://jbrandhorst.com/post/grpc-json/
func init() {
encoding.RegisterCodec(JSON{
Marshaler: jsonpb.Marshaler{
EmitDefaults: true,
OrigName: true,
},
})
flag.StringVar(&data, "data", `{"name":"longxia","age":19}`, `{"name":"longxia","age":19}`)
flag.StringVar(&file, "file", ``, `./data.json`)
flag.StringVar(&method, "method", "/testproto.Greeter/SayHello", `/testproto.Greeter/SayHello`)
flag.StringVar(&addr, "addr", "127.0.0.1:8080", `127.0.0.1:8080`)
flag.StringVar(&tlsCert, "cert", "", `./cert.pem`)
flag.StringVar(&tlsServerName, "server_name", "", `hello_server`)
}
// 该example因为使用的是json传输格式所以只能用于调试或测试用于线上会导致性能下降
// 使用方法:
// ./grpcDebug -data='{"name":"xia","age":19}' -addr=127.0.0.1:8080 -method=/testproto.Greeter/SayHello
// ./grpcDebug -file=data.json -addr=127.0.0.1:8080 -method=/testproto.Greeter/SayHello
func main() {
flag.Parse()
opts := []grpc.DialOption{
grpc.WithInsecure(),
grpc.WithDefaultCallOptions(grpc.CallContentSubtype(JSON{}.Name())),
}
if tlsCert != "" {
creds, err := credentials.NewClientTLSFromFile(tlsCert, tlsServerName)
if err != nil {
panic(err)
}
opts = append(opts, grpc.WithTransportCredentials(creds))
}
if file != "" {
content, err := ioutil.ReadFile(file)
if err != nil {
fmt.Println("ioutil.ReadFile %s failed!err:=%v", file, err)
os.Exit(1)
}
if len(content) > 0 {
data = string(content)
}
}
conn, err := grpc.Dial(addr, opts...)
if err != nil {
panic(err)
}
var reply Reply
err = grpc.Invoke(context.Background(), method, []byte(data), &reply, conn)
if err != nil {
panic(err)
}
fmt.Println(string(reply.res))
}
// JSON is impl of encoding.Codec
type JSON struct {
jsonpb.Marshaler
jsonpb.Unmarshaler
}
// Name is name of JSON
func (j JSON) Name() string {
return "json"
}
// Marshal is json marshal
func (j JSON) Marshal(v interface{}) (out []byte, err error) {
return v.([]byte), nil
}
// Unmarshal is json unmarshal
func (j JSON) Unmarshal(data []byte, v interface{}) (err error) {
v.(*Reply).res = data
return nil
}

View File

@@ -0,0 +1 @@
{"name":"xia","age":19}