You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
132 lines
3.1 KiB
132 lines
3.1 KiB
package service |
|
|
|
import ( |
|
"context" |
|
"flag" |
|
"fmt" |
|
"path/filepath" |
|
"testing" |
|
"time" |
|
|
|
"go-common/app/job/main/spy/conf" |
|
"go-common/app/job/main/spy/model" |
|
"go-common/library/cache/redis" |
|
|
|
"github.com/robfig/cron" |
|
. "github.com/smartystreets/goconvey/convey" |
|
) |
|
|
|
var ( |
|
c = context.Background() |
|
s *Service |
|
testCron = "*/5 * * * * ?" |
|
testCyTime = 5000 |
|
) |
|
|
|
func init() { |
|
var ( |
|
err error |
|
) |
|
dir, _ := filepath.Abs("../cmd/spy-job-dev.toml") |
|
flag.Set("conf", dir) |
|
if err = conf.Init(); err != nil { |
|
panic(err) |
|
} |
|
if s == nil { |
|
s = New(conf.Conf) |
|
} |
|
time.Sleep(time.Second) |
|
} |
|
|
|
func CleanCache() { |
|
pool := redis.NewPool(conf.Conf.Redis.Config) |
|
pool.Get(c).Do("FLUSHDB") |
|
} |
|
|
|
func WithService(f func(s *Service)) func() { |
|
return func() { |
|
Reset(func() { CleanCache() }) |
|
f(s) |
|
} |
|
} |
|
|
|
func Test_LoadSystemConfig(t *testing.T) { |
|
Convey("Test_LoadSystemConfig had data", t, WithService(func(s *Service) { |
|
fmt.Println(s.spyConfig) |
|
So(s.spyConfig, ShouldContainKey, model.LimitBlockCount) |
|
So(s.spyConfig, ShouldContainKey, model.LessBlockScore) |
|
So(s.spyConfig, ShouldContainKey, model.AutoBlock) |
|
})) |
|
} |
|
|
|
func Test_cycleblock(t *testing.T) { |
|
Convey("Test_cycleblock cron", t, WithService(func(s *Service) { |
|
fmt.Println("Test_cycleblock start ") |
|
tx, err := s.dao.BeginTran(c) |
|
So(err, ShouldBeNil) |
|
ui := &model.UserInfo{Mid: testBlockMid, State: model.StateNormal} |
|
err = s.dao.TxUpdateUserState(c, tx, ui) |
|
So(err, ShouldBeNil) |
|
err = tx.Commit() |
|
So(err, ShouldBeNil) |
|
|
|
lastBlockNo := s.lastBlockNo(s.c.Property.Block.CycleTimes) |
|
t := cron.New() |
|
err = t.AddFunc(testCron, s.cycleblock) |
|
if err != nil { |
|
panic(err) |
|
} |
|
t.Start() |
|
|
|
Convey("Test_cycleblock user info 1", WithService(func(s *Service) { |
|
var ui *model.UserInfo |
|
ui, err = s.dao.UserInfo(context.TODO(), testBlockMid) |
|
So(err, ShouldBeNil) |
|
So(ui.State == model.StateNormal, ShouldBeTrue) |
|
})) |
|
|
|
err = s.dao.AddBlockCache(c, testBlockMid, testLowScore, lastBlockNo) |
|
So(err, ShouldBeNil) |
|
mids, err := s.blockUsers(c, lastBlockNo) |
|
So(err, ShouldBeNil) |
|
So(mids, ShouldContain, testBlockMid) |
|
|
|
time.Sleep(5000 * time.Millisecond) |
|
time.Sleep(time.Duration(s.blockWaitTick)) |
|
|
|
Convey("Test_cycleblock user info 2 ", WithService(func(s *Service) { |
|
ui, err := s.dao.UserInfo(context.TODO(), testBlockMid) |
|
So(err, ShouldBeNil) |
|
So(ui.State == model.StateBlock, ShouldBeTrue) |
|
})) |
|
fmt.Println("Test_cycleblock end ") |
|
})) |
|
} |
|
|
|
// go test -test.v -test.run TestStat |
|
func TestStat(t *testing.T) { |
|
Convey(" UpdateStatData ", t, WithService(func(s *Service) { |
|
err := s.UpdateStatData(c, &model.SpyStatMessage{ |
|
TargetMid: 1, |
|
TargetID: 1, |
|
EventName: "init_user_info", |
|
Type: model.IncreaseStat, |
|
Quantity: 2, |
|
Time: time.Now().Unix(), |
|
UUID: "123456789qweasdzxcccccccc", |
|
}) |
|
So(err, ShouldBeNil) |
|
})) |
|
Convey(" UpdateStatData 2", t, WithService(func(s *Service) { |
|
err := s.UpdateStatData(c, &model.SpyStatMessage{ |
|
TargetMid: 1, |
|
TargetID: 1, |
|
EventName: "auto_block", |
|
Type: model.ResetStat, |
|
Quantity: 2, |
|
Time: time.Now().Unix(), |
|
UUID: "123456789qweasdzxcccccccc", |
|
}) |
|
So(err, ShouldBeNil) |
|
})) |
|
}
|
|
|