179 lines
4.2 KiB
Go
179 lines
4.2 KiB
Go
![]() |
package cmd
|
|||
|
|
|||
|
import (
|
|||
|
"fmt"
|
|||
|
"os"
|
|||
|
"os/signal"
|
|||
|
"samba/pkg/log"
|
|||
|
"samba/proto"
|
|||
|
. "samba/server/game/baseroom"
|
|||
|
"samba/server/game/player"
|
|||
|
"samba/server/truco/handler"
|
|||
|
. "samba/server/truco/room"
|
|||
|
. "samba/server/truco/service"
|
|||
|
"samba/stub"
|
|||
|
"samba/util/config"
|
|||
|
"samba/util/model"
|
|||
|
"syscall"
|
|||
|
"testing"
|
|||
|
"time"
|
|||
|
)
|
|||
|
|
|||
|
func initEnv() {
|
|||
|
config.Cmd = config.Command{
|
|||
|
LogLevel: int(log.InfoLevel),
|
|||
|
//ConfigPath: "D:\\work\\samba\\samba\\bin\\config\\truco_dev.xml",
|
|||
|
ConfigPath: "./config/truco.xml",
|
|||
|
LogPath: "./log/test",
|
|||
|
MinRoomId: 100000,
|
|||
|
MaxRoomId: 120000,
|
|||
|
}
|
|||
|
initLog(&config.Cmd)
|
|||
|
var err = config.Load(config.Cmd.ConfigPath)
|
|||
|
if err != nil {
|
|||
|
log.Error(fmt.Sprintf("load config err: %v", err))
|
|||
|
}
|
|||
|
initRepo()
|
|||
|
|
|||
|
handler.InitService()
|
|||
|
}
|
|||
|
|
|||
|
func releaseEnv() {
|
|||
|
c := make(chan os.Signal, 1)
|
|||
|
signal.Notify(c, syscall.SIGINT, syscall.SIGTERM)
|
|||
|
sig := <-c
|
|||
|
handler.StopService()
|
|||
|
log.Info(fmt.Sprintf("received %s, initiating shutdown...\n", sig))
|
|||
|
}
|
|||
|
|
|||
|
func copyRobotUserInfo(ui *model.UserInfo) *model.UserInfo {
|
|||
|
return &model.UserInfo{
|
|||
|
UID: ui.UID,
|
|||
|
UType: ui.UType,
|
|||
|
API: ui.API,
|
|||
|
SItemID: ui.SItemID,
|
|||
|
Device: ui.Device,
|
|||
|
MNick: ui.MNick,
|
|||
|
Sex: ui.Sex,
|
|||
|
HeadURL: ui.HeadURL,
|
|||
|
IconId: ui.IconId,
|
|||
|
MTime: ui.MTime,
|
|||
|
Phone: ui.Phone,
|
|||
|
Address: ui.Address,
|
|||
|
MStatus: ui.MStatus,
|
|||
|
UTMSource: ui.UTMSource,
|
|||
|
AvatarFrame: ui.AvatarFrame,
|
|||
|
TakeCoin: 0,
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
func TemperVsAnotherTemper(rt1, rt2 stub.RobotTemper) {
|
|||
|
roomType := 0
|
|||
|
var roomCnf *stub.Room
|
|||
|
log.Info(fmt.Sprintf("stub.Rooms size:%v", len(stub.Rooms)))
|
|||
|
for _, cnf := range stub.Rooms {
|
|||
|
if cnf.MinPlayers == 2 {
|
|||
|
roomCnf = cnf
|
|||
|
roomType = cnf.Id
|
|||
|
break
|
|||
|
}
|
|||
|
}
|
|||
|
robot1 := player.RobotMgr.Pop(roomCnf)
|
|||
|
robot2 := player.RobotMgr.Pop(roomCnf)
|
|||
|
log.Info(fmt.Sprintf("测试robot:%v temper:%v vs another:%v temper:%v roomType:%v", robot1.UID, rt1.String(), robot2.UID, rt2.String(), roomType))
|
|||
|
TrucoService.ProcFuncOnce(func() {
|
|||
|
for i := 0; i < 6000; i++ {
|
|||
|
iRm, ok := RoomMgr.CreateRoom(roomType, 0, NewTrucoRoom)
|
|||
|
if ok != proto.Ok {
|
|||
|
log.Error(fmt.Sprintf("err:%v", ok.Error()))
|
|||
|
}
|
|||
|
room := iRm.(*TrucoRoom)
|
|||
|
// 不能共用同一个userinfo,因为userinfo包含了携带金币字段,会造成携带金币混乱
|
|||
|
rob1 := &player.Player{UserInfo: copyRobotUserInfo(robot1.UserInfo), Continue: 0, Robot: nil}
|
|||
|
rob2 := &player.Player{UserInfo: copyRobotUserInfo(robot2.UserInfo), Continue: 0, Robot: nil}
|
|||
|
room.OnEnterRoom(rob1)
|
|||
|
room.OnEnterRoom(rob2)
|
|||
|
room.SetRobotTemper(0, rt1)
|
|||
|
room.SetRobotTemper(1, rt2)
|
|||
|
}
|
|||
|
})
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
func AplombVsNormal() {
|
|||
|
TemperVsAnotherTemper(stub.RteAplomb, stub.RteNormal)
|
|||
|
}
|
|||
|
|
|||
|
func AplombVsRadical() {
|
|||
|
TemperVsAnotherTemper(stub.RteAplomb, stub.RteRadical)
|
|||
|
}
|
|||
|
|
|||
|
func AplombVsEvaluation() {
|
|||
|
TemperVsAnotherTemper(stub.RteAplomb, stub.RteEvaluation)
|
|||
|
}
|
|||
|
|
|||
|
func AplombVsRotten() {
|
|||
|
TemperVsAnotherTemper(stub.RteAplomb, stub.RteRotten)
|
|||
|
}
|
|||
|
|
|||
|
// ------------------------------------------------------------------
|
|||
|
func NormalVsRadical() {
|
|||
|
TemperVsAnotherTemper(stub.RteNormal, stub.RteRadical)
|
|||
|
}
|
|||
|
|
|||
|
func NormalVsEvaluation() {
|
|||
|
TemperVsAnotherTemper(stub.RteNormal, stub.RteEvaluation)
|
|||
|
}
|
|||
|
|
|||
|
func NormalVsRotten() {
|
|||
|
TemperVsAnotherTemper(stub.RteNormal, stub.RteRotten)
|
|||
|
}
|
|||
|
|
|||
|
// ------------------------------------------------------------------
|
|||
|
func RadicalVsEvaluation() {
|
|||
|
TemperVsAnotherTemper(stub.RteRadical, stub.RteEvaluation)
|
|||
|
}
|
|||
|
|
|||
|
func RadicalVsRotten() {
|
|||
|
TemperVsAnotherTemper(stub.RteRadical, stub.RteRotten)
|
|||
|
}
|
|||
|
|
|||
|
// ------------------------------------------------------------------
|
|||
|
func EvaluationVsRotten() {
|
|||
|
TemperVsAnotherTemper(stub.RteEvaluation, stub.RteRotten)
|
|||
|
}
|
|||
|
|
|||
|
func TestRobotWinRate(t *testing.T) {
|
|||
|
initEnv()
|
|||
|
//stub.GGlobal.TrucoWinPoint = 2
|
|||
|
|
|||
|
//AplombVsRadical()
|
|||
|
//time.Sleep(time.Minute * 30)
|
|||
|
|
|||
|
//AplombVsEvaluation()
|
|||
|
//time.Sleep(time.Minute * 30)
|
|||
|
|
|||
|
//AplombVsRotten()
|
|||
|
//time.Sleep(time.Minute * 30)
|
|||
|
|
|||
|
//NormalVsRadical()
|
|||
|
//time.Sleep(time.Minute * 30)
|
|||
|
|
|||
|
NormalVsEvaluation()
|
|||
|
time.Sleep(time.Minute * 30)
|
|||
|
|
|||
|
//NormalVsRotten()
|
|||
|
//time.Sleep(time.Minute * 30)
|
|||
|
|
|||
|
//RadicalVsEvaluation()
|
|||
|
//time.Sleep(time.Minute * 30)
|
|||
|
//
|
|||
|
//RadicalVsRotten()
|
|||
|
//time.Sleep(time.Minute * 30)
|
|||
|
//
|
|||
|
//EvaluationVsRotten()
|
|||
|
//time.Sleep(time.Minute * 30)
|
|||
|
|
|||
|
releaseEnv()
|
|||
|
}
|