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,51 @@
package(default_visibility = ["//visibility:public"])
load(
"@io_bazel_rules_go//go:def.bzl",
"go_test",
"go_library",
)
go_test(
name = "go_default_test",
srcs = ["rpcserver_test.go"],
embed = [":go_default_library"],
tags = ["automanaged"],
deps = [
"//app/service/main/up/model:go_default_library",
"//library/net/rpc:go_default_library",
"//library/time:go_default_library",
"//vendor/github.com/davecgh/go-spew/spew:go_default_library",
],
)
go_library(
name = "go_default_library",
srcs = ["rpcserver.go"],
importpath = "go-common/app/service/main/up/server/gorpc",
tags = ["automanaged"],
visibility = ["//visibility:public"],
deps = [
"//app/service/main/up/conf:go_default_library",
"//app/service/main/up/model:go_default_library",
"//app/service/main/up/service:go_default_library",
"//library/ecode:go_default_library",
"//library/log:go_default_library",
"//library/net/rpc:go_default_library",
"//library/net/rpc/context: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"],
)

View File

@@ -0,0 +1,104 @@
package gorpc
import (
"time"
"go-common/app/service/main/up/conf"
"go-common/app/service/main/up/model"
"go-common/app/service/main/up/service"
"go-common/library/ecode"
"go-common/library/log"
"go-common/library/net/rpc"
"go-common/library/net/rpc/context"
)
//RPC rpc server
type RPC struct {
s *service.Service
}
//New create rpc
func New(c *conf.Config, s *service.Service) (svr *rpc.Server) {
r := &RPC{s: s}
svr = rpc.NewServer(c.RPCServer)
if err := svr.Register(r); err != nil {
panic(err)
}
return
}
// Ping check connection success.
func (r *RPC) Ping(c context.Context, arg *struct{}, res *struct{}) (err error) {
return
}
// Special rpc call region
func (r *RPC) Special(c context.Context, arg *model.ArgSpecial, res *[]*model.UpSpecial) (err error) {
*res = r.s.UpsByGroup(c, arg.GroupID)
log.Info("[rpc.Special] arg=%+v, res count=%d", arg, len(*res))
return
}
//Info get up info
func (r *RPC) Info(c context.Context, arg *model.ArgInfo, res *model.UpInfo) (err error) {
if arg.Mid <= 0 {
err = ecode.RequestErr
log.Error("[rpc.Info] error, request mid <= 0, %d", arg.Mid)
return
}
isAuthor, err := r.s.Info(c, arg.Mid, uint8(arg.From))
if err != nil {
log.Error("[rpc.Info] error, mid=%d, from=%d, err=%s", arg.Mid, arg.From, err)
return
}
*res = model.UpInfo{IsAuthor: int32(isAuthor)}
//log.Info("[rpc.Info] mid=%d, from=%d, result=%+v", arg.Mid, arg.From, *res)
return
}
//UpStatBase get up stat
func (r *RPC) UpStatBase(c context.Context, arg *model.ArgMidWithDate, res *model.UpBaseStat) (err error) {
if arg.Date.IsZero() {
// 如果没有填,则取最新的数据,如果有填,则取对应天数的数据,这里不需要做什么操作
arg.Date = time.Now()
// 12点更新数据数据表为昨天日期所以在12点以前要读前天的表
arg.Date = arg.Date.Add(-12*time.Hour).AddDate(0, 0, -1)
}
var data, e = r.s.Data.BaseUpStat(c, arg.Mid, arg.Date.Format("20060102"))
err = e
if err == nil {
data.CopyTo(res)
log.Info("[rpc.UpStatBase] arg=%+v, res=%+v", arg, res)
} else {
log.Error("[rpc.UpStatBase] fail arg=%+v, err=%v", arg, err)
}
return
}
//SetUpSwitch set up switch
func (r *RPC) SetUpSwitch(c context.Context, arg *model.ArgUpSwitch, res *model.PBSetUpSwitchRes) (err error) {
id, err := r.s.SetSwitch(c, arg.Mid, arg.State, uint8(arg.From))
if err == nil {
log.Info("[rpc.SetUpSwitch] arg=%+v, res=%+v", arg, res)
} else {
log.Error("[rpc.SetUpSwitch] fail arg=%+v, err=%v", arg, err)
}
*res = model.PBSetUpSwitchRes{Id: id}
return
}
//UpSwitch get up switch
func (r *RPC) UpSwitch(c context.Context, arg *model.ArgUpSwitch, res *model.PBUpSwitch) (err error) {
if arg.Mid <= 0 {
err = ecode.RequestErr
log.Error("[rpc.UpSwitch] error, request mid <= 0, %d", arg.Mid)
return
}
state, err := r.s.UpSwitchs(c, arg.Mid, uint8(arg.From))
if err != nil {
log.Error("[rpc.UpSwitchs] error, mid=%d, from=%d, err=%s", arg.Mid, arg.From, err)
return
}
*res = model.PBUpSwitch{State: int32(state)}
return
}

View File

@@ -0,0 +1,152 @@
package gorpc
import (
"context"
"flag"
"path/filepath"
"testing"
"time"
"go-common/app/service/main/up/model"
"go-common/library/net/rpc"
xtime "go-common/library/time"
"github.com/davecgh/go-spew/spew"
)
const (
/*clientConfigStr = `
proto = "tcp"
timeout = "1s"
timer = 1000
token = "123456"
addr = "127.0.0.1:6079"
[breaker]
window = "3s"
sleep = "100ms"
bucket = 10
ratio = 0.5
request = 100`*/
_Special = "RPC.Special"
_Info = "RPC.Info"
_SetUpSwitch = "RPC.SetUpSwitch"
_UpSwitch = "RPC.UpSwitch"
_UpCards = "RPC.UpCards"
)
func init() {
dir, _ := filepath.Abs("../../cmd/up-service.toml")
flag.Set("conf", dir)
}
func initSvrAndClient(t *testing.T) (client *rpc.Client, err error) {
client = rpc.Dial("127.0.0.1:6079", xtime.Duration(time.Second), nil)
return
}
func TestInfo(t *testing.T) {
client, err := initSvrAndClient(t)
if err != nil {
t.Errorf("rpc.Dial error(%v)", err)
t.FailNow()
}
defer client.Close()
//time.Sleep(1 * time.Second)
info(client, t)
}
func info(client *rpc.Client, t *testing.T) {
var res *model.UpInfo
arg := &model.ArgInfo{
Mid: 2089809,
From: 1,
}
err := client.Call(context.TODO(), _Info, arg, &res)
if err != nil {
t.Logf("err:%v.", err)
}
spew.Dump(res)
}
func TestSpecial(t *testing.T) {
client, err := initSvrAndClient(t)
if err != nil {
t.Errorf("rpc.Dial error(%v)", err)
t.FailNow()
}
defer client.Close()
//time.Sleep(1 * time.Second)
special(client, t)
}
func special(client *rpc.Client, t *testing.T) {
var res []model.UpSpecial
arg := &model.ArgSpecial{
GroupID: 2,
}
err := client.Call(context.TODO(), _Special, arg, &res)
if err != nil {
t.Logf("err:%v.", err)
}
spew.Dump(res)
}
func Test_UpSwitch(t *testing.T) {
client, err := initSvrAndClient(t)
if err != nil {
t.Errorf("rpc.Dial error(%v)", err)
t.FailNow()
}
defer client.Close()
var res *model.PBUpSwitch
arg := &model.ArgUpSwitch{
Mid: 1,
From: 0,
}
err = client.Call(context.TODO(), _UpSwitch, arg, &res)
if err != nil {
t.Logf("err:%v.", err)
}
spew.Dump(11111, res)
}
func Test_SetUpSwitch(t *testing.T) {
client, err := initSvrAndClient(t)
if err != nil {
t.Errorf("rpc.Dial error(%v)", err)
t.FailNow()
}
defer client.Close()
var res *model.PBSetUpSwitchRes
arg := &model.ArgUpSwitch{
Mid: 1,
From: 0,
State: 1,
}
err = client.Call(context.TODO(), _SetUpSwitch, arg, &res)
if err != nil {
t.Logf("err:%v.", err)
}
spew.Dump(11111, res)
}
func Test_UpCards(t *testing.T) {
client, err := initSvrAndClient(t)
if err != nil {
t.Errorf("rpc.Dial error(%v)", err)
t.FailNow()
}
defer client.Close()
arg := &model.ListUpCardInfoArg{
Pn: 1,
Ps: 1,
}
var res *model.UpCardInfoPage
err = client.Call(context.TODO(), _UpCards, arg, &res)
if err != nil {
t.Logf("err:%v.", err)
}
spew.Dump(11111, res)
}