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,50 @@
package(default_visibility = ["//visibility:public"])
load(
"@io_bazel_rules_go//go:def.bzl",
"go_test",
"go_library",
)
go_test(
name = "go_default_test",
srcs = ["server_test.go"],
embed = [":go_default_library"],
rundir = ".",
tags = ["automanaged"],
deps = [
"//app/service/main/resource/conf:go_default_library",
"//app/service/main/resource/model:go_default_library",
"//app/service/main/resource/service:go_default_library",
],
)
go_library(
name = "go_default_library",
srcs = ["server.go"],
importpath = "go-common/app/service/main/resource/rpc/server",
tags = ["automanaged"],
visibility = ["//visibility:public"],
deps = [
"//app/service/main/resource/conf:go_default_library",
"//app/service/main/resource/model:go_default_library",
"//app/service/main/resource/service:go_default_library",
"//library/ecode: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,131 @@
package server
import (
"go-common/app/service/main/resource/conf"
"go-common/app/service/main/resource/model"
"go-common/app/service/main/resource/service"
"go-common/library/ecode"
"go-common/library/net/rpc"
"go-common/library/net/rpc/context"
)
// RPC struct
type RPC struct {
s *service.Service
}
// New init rpc server.
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
}
// ResourceAll get all resource.
func (r *RPC) ResourceAll(c context.Context, a *struct{}, res *[]*model.Resource) (err error) {
*res = r.s.ResourceAll(c)
return
}
// AssignmentAll get all assignment.
func (r *RPC) AssignmentAll(c context.Context, a *struct{}, res *[]*model.Assignment) (err error) {
*res = r.s.AssignmentAll(c)
return
}
// DefBanner get default banner.
func (r *RPC) DefBanner(c context.Context, a *struct{}, as *model.Assignment) (err error) {
res := r.s.DefBanner(c)
if res == nil {
err = ecode.NothingFound
return
}
*as = *res
return
}
// Resource get resource.
func (r *RPC) Resource(c context.Context, arg *model.ArgRes, res *model.Resource) (err error) {
rs := r.s.Resource(c, arg.ResID)
if rs == nil {
err = ecode.NothingFound
return
}
*res = *rs
return
}
// Resources get resource.
func (r *RPC) Resources(c context.Context, as *model.ArgRess, res *map[int]*model.Resource) (err error) {
*res = r.s.Resources(c, as.ResIDs)
return
}
// Banners get banners.
func (r *RPC) Banners(c context.Context, ab *model.ArgBanner, res *model.Banners) (err error) {
// func Banners already new rs, rs can not be nil.
rs := r.s.Banners(c, ab.Plat, ab.Build, ab.AID, ab.MID, ab.ResIDs, ab.Channel, ab.IP, ab.Buvid, ab.Network, ab.MobiApp, ab.Device, ab.OpenEvent, ab.AdExtra, ab.Version, ab.IsAd)
*res = *rs
return
}
// PasterAPP get paster for APP.
func (r *RPC) PasterAPP(c context.Context, arg *model.ArgPaster, res *model.Paster) (err error) {
var rs *model.Paster
if rs, err = r.s.PasterAPP(c, arg.Platform, arg.AdType, arg.Aid, arg.TypeId, arg.Buvid); err == nil {
*res = *rs
}
return
}
// IndexIcon get index icon.
func (r *RPC) IndexIcon(c context.Context, a *struct{}, res *map[string][]*model.IndexIcon) (err error) {
*res = r.s.IndexIcon(c)
return
}
// PlayerIcon get player icon config.
func (r *RPC) PlayerIcon(c context.Context, arg *struct{}, res *model.PlayerIcon) (err error) {
var rs *model.PlayerIcon
rs, err = r.s.PlayerIcon(c)
if err == nil {
*res = *rs
}
return
}
// Cmtbox get live box.
func (r *RPC) Cmtbox(c context.Context, cb *model.ArgCmtbox, res *model.Cmtbox) (err error) {
rs, err := r.s.Cmtbox(c, cb.ID)
if err == nil {
*res = *rs
}
return
}
// SideBars get sode bar.
func (r *RPC) SideBars(c context.Context, a *struct{}, res *model.SideBars) (err error) {
sbs := r.s.SideBars(c)
*res = *sbs
return
}
// AbTest get abtest.
func (r *RPC) AbTest(c context.Context, ab *model.ArgAbTest, res *map[string]*model.AbTest) (err error) {
*res = r.s.AbTest(c, ab.Groups, ab.IP)
return
}
// PasterCID get all Paster's cid.
func (r *RPC) PasterCID(c context.Context, a *struct{}, res *map[int64]int64) (err error) {
*res, err = r.s.PasterCID(c)
return
}

View File

@@ -0,0 +1,239 @@
package server
import (
"fmt"
"net/rpc"
"testing"
"time"
"go-common/app/service/main/resource/conf"
"go-common/app/service/main/resource/model"
"go-common/app/service/main/resource/service"
)
// rpc server const
const (
addr = "127.0.0.1:6429"
_resourceAll = "RPC.ResourceAll"
_assignmentAll = "RPC.AssignmentAll"
_defBanner = "RPC.DefBanner"
_resource = "RPC.Resource"
_resources = "RPC.Resources"
_assignment = "RPC.Assignment"
_banners = "RPC.Banners"
_pasterAPP = "RPC.PasterAPP"
_indexIcon = "RPC.IndexIcon"
_playerIcon = "RPC.playerIcon"
_cmtbox = "RPC.Cmtbox"
_sidebars = "RPC.SideBars"
_abtest = "RPC.AbTest"
_pasterCID = "RPC.PasterCID"
)
// TestResource test rpc server
func TestResource(t *testing.T) {
if err := conf.Init(); err != nil {
t.Errorf("conf.Init() error(%v)", err)
t.FailNow()
}
svr := service.New(conf.Conf)
New(conf.Conf, svr)
time.Sleep(time.Second * 3)
client, err := rpc.Dial("tcp", addr)
defer client.Close()
if err != nil {
t.Errorf("rpc.Dial(tcp, \"%s\") error(%v)", addr, err)
t.FailNow()
}
resourceAllRPC(client, t)
assignmentAllRPC(client, t)
defBannerRPC(client, t)
resourceRPC(client, t)
resourcesRPC(client, t)
assignmentRPC(client, t)
bannersRPC(client, t)
pasterAPPRpc(client, t)
indexIconRPC(client, t)
playerIconRPC(client, t)
cmtboxRPC(client, t)
sideBarsRPC(client, t)
abTestRPC(client, t)
pasterCIDRPC(client, t)
}
func resourceAllRPC(client *rpc.Client, t *testing.T) {
var res []*model.Resource
arg := &struct{}{}
if err := client.Call(_resourceAll, arg, &res); err != nil {
t.Errorf("err: %v.", err)
} else {
result("resourceAll", t, res)
}
}
func assignmentAllRPC(client *rpc.Client, t *testing.T) {
var res []*model.Assignment
arg := &struct{}{}
if err := client.Call(_assignmentAll, arg, &res); err != nil {
t.Errorf("err: %v.", err)
} else {
result("assignmentAll", t, res)
}
}
func defBannerRPC(client *rpc.Client, t *testing.T) {
var res model.Assignment
arg := &struct{}{}
if err := client.Call(_defBanner, arg, &res); err != nil {
t.Errorf("err: %v.", err)
} else {
result("defBanner", t, res)
}
}
func resourceRPC(client *rpc.Client, t *testing.T) {
var res model.Resource
arg := &model.ArgRes{
ResID: 1187,
}
if err := client.Call(_resource, arg, &res); err != nil {
t.Errorf("err: %v.", err)
} else {
result("resource", t, res)
}
}
func resourcesRPC(client *rpc.Client, t *testing.T) {
var res map[int]*model.Resource
arg := &model.ArgRess{
ResIDs: []int{1187, 1639},
}
if err := client.Call(_resources, arg, &res); err != nil {
t.Errorf("err: %v.", err)
} else {
result("resources", t, res)
}
}
func assignmentRPC(client *rpc.Client, t *testing.T) {
var res []*model.Assignment
arg := &model.ArgRes{
ResID: 1187,
}
if err := client.Call(_assignment, arg, &res); err != nil {
t.Errorf("err: %v.", err)
} else {
result("assignment", t, res)
}
}
func bannersRPC(client *rpc.Client, t *testing.T) {
var res *model.Banners
arg := &model.ArgBanner{
Plat: 1,
ResIDs: "454,467",
Build: 508000,
MID: 1493031,
Channel: "abc",
IP: "211.139.80.6",
Buvid: "123",
Network: "wifi",
MobiApp: "iphone",
Device: "test",
IsAd: true,
OpenEvent: "abc",
}
if err := client.Call(_banners, arg, &res); err != nil {
t.Errorf("err: %v.", err)
} else {
result("banners", t, res)
}
}
func pasterAPPRpc(client *rpc.Client, t *testing.T) {
var res model.Paster
arg := &model.ArgPaster{
Platform: int8(1),
AdType: int8(1),
Aid: "666666",
TypeId: "11",
Buvid: "666666",
}
if err := client.Call(_pasterAPP, arg, &res); err != nil {
t.Errorf("err: %v.", err)
} else {
result("pasterAPPRpc", t, res)
}
}
func indexIconRPC(client *rpc.Client, t *testing.T) {
var res map[string][]*model.IndexIcon
arg := &struct{}{}
if err := client.Call(_indexIcon, arg, &res); err != nil {
t.Errorf("err: %v.", err)
} else {
result("indexIconRpc", t, res)
}
}
func playerIconRPC(client *rpc.Client, t *testing.T) {
var res *model.PlayerIcon
arg := &struct{}{}
if err := client.Call(_playerIcon, arg, &res); err != nil {
t.Errorf("err: %v.", err)
} else {
result("playerIconRPC", t, res)
}
}
func cmtboxRPC(client *rpc.Client, t *testing.T) {
var res model.Cmtbox
arg := &model.ArgCmtbox{
ID: 1,
}
if err := client.Call(_cmtbox, arg, &res); err != nil {
t.Errorf("err: %v.", err)
} else {
result("resource", t, res)
}
}
func sideBarsRPC(client *rpc.Client, t *testing.T) {
var res []*model.SideBars
arg := &struct{}{}
if err := client.Call(_sidebars, arg, &res); err != nil {
t.Errorf("err: %v.", err)
} else {
result("sideBars", t, res)
}
}
func abTestRPC(client *rpc.Client, t *testing.T) {
var res map[string]*model.AbTest
arg := &model.ArgAbTest{
Groups: "不显示热门tab,显示热门tab",
IP: "127.0.0.1",
}
if err := client.Call(_abtest, arg, &res); err != nil {
t.Errorf("err: %v.", err)
} else {
result("abTest", t, res)
}
}
func pasterCIDRPC(client *rpc.Client, t *testing.T) {
var res map[int64]int64
arg := &struct{}{}
if err := client.Call(_pasterCID, arg, &res); err != nil {
t.Errorf("err: %v.", err)
} else {
result("pasterCID", t, res)
}
}
func result(name string, t *testing.T, res interface{}) {
fmt.Printf("res : %+v \n", res)
t.Log("[==========" + name + "单元测试结果==========]")
t.Log(res)
t.Log("[↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑]\r\n")
}