123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221 |
- package dao
- import (
- "context"
- // "encoding/binary"
- "flag"
- "testing"
- "time"
- "go-common/app/job/main/figure-timer/conf"
- "go-common/app/job/main/figure-timer/model"
- // "go-common/library/log"
- "github.com/pkg/errors"
- . "github.com/smartystreets/goconvey/convey"
- )
- var (
- dao *Dao
- ctx = context.TODO()
- )
- func init() {
- var err error
- flag.Set("conf", "../cmd/figure-timer-job-test.toml")
- if err = conf.Init(); err != nil {
- panic(err)
- }
- dao = New(conf.Conf)
- }
- func TestInit(t *testing.T) {
- Convey("TEST init", t, func() {
- var err error
- So(dao.c, ShouldNotBeNil)
- So(dao.mysql, ShouldNotBeNil)
- So(dao.hbase, ShouldNotBeNil)
- So(dao.redis, ShouldNotBeNil)
- err = dao.Ping(ctx)
- So(err, ShouldBeNil)
- })
- }
- func TestMysql(t *testing.T) {
- Convey("TEST figure", t, func() {
- var (
- figure = &model.Figure{
- Mid: 100,
- Score: 100,
- LawfulScore: 50,
- WideScore: 0,
- FriendlyScore: 23,
- BountyScore: 250,
- CreativityScore: 0,
- Ver: 0,
- }
- figure2 *model.Figure
- figureRank = &model.Rank{
- ScoreFrom: 2000,
- ScoreTo: 3000,
- Percentage: 50,
- Ver: 233,
- }
- err error
- )
- figure.ID, err = dao.UpsertFigure(ctx, figure)
- So(err, ShouldBeNil)
- figure2, err = dao.Figure(ctx, figure.Mid)
- So(err, ShouldBeNil)
- So(figure2, ShouldNotBeNil)
- So(figure2.Ctime, ShouldNotBeEmpty)
- So(figure2.Ctime, ShouldHappenBefore, time.Now().Add(time.Second))
- So(figure2.Mtime, ShouldNotBeEmpty)
- So(figure2.Mtime, ShouldHappenBefore, time.Now().Add(time.Second))
- _, err = dao.InsertRankHistory(ctx, figureRank)
- So(err, ShouldBeNil)
- _, err = dao.UpsertRank(ctx, figureRank)
- So(err, ShouldBeNil)
- })
- Convey("TEST figures", t, func() {
- for shard := 0; shard < 100; shard++ {
- var (
- end bool
- fromMid = int64(shard)
- figures []*model.Figure
- err error
- )
- for !end {
- figures, end, err = dao.Figures(ctx, fromMid, 100)
- So(err, ShouldBeNil)
- for _, f := range figures {
- So(f.Mid, ShouldBeGreaterThan, 0)
- if fromMid < f.Mid {
- fromMid = f.Mid
- }
- }
- }
- }
- })
- }
- func TestRedis(t *testing.T) {
- Convey("TEST figure", t, func() {
- var (
- figure = &model.Figure{
- Mid: 23,
- Score: 100,
- LawfulScore: 50,
- WideScore: 0,
- FriendlyScore: 23,
- BountyScore: 250,
- CreativityScore: 0,
- Ver: 0,
- }
- figure2 *model.Figure
- err error
- )
- err = dao.SetFigureCache(ctx, figure)
- So(err, ShouldBeNil)
- figure2, err = dao.FigureCache(ctx, figure.Mid)
- So(err, ShouldBeNil)
- So(figure2, ShouldNotBeNil)
- So(figure, ShouldResemble, figure2)
- })
- Convey("TEST pending mids", t, func() {
- var (
- mid int64 = 23
- ver int64
- shard = mid % dao.c.Property.PendingMidShard
- mids []int64
- err error
- )
- err = dao.setPendingMidCache(ctx, mid, ver)
- So(err, ShouldBeNil)
- mids, err = dao.PendingMidsCache(ctx, ver, shard)
- So(err, ShouldBeNil)
- So(mids, ShouldNotBeEmpty)
- })
- }
- func (d *Dao) setPendingMidCache(c context.Context, mid int64, ver int64) (err error) {
- var (
- key = keyPendingMids(ver, mid%d.c.Property.PendingMidShard)
- conn = d.redis.Get(c)
- )
- defer conn.Close()
- if err = conn.Send("SADD", key, mid); err != nil {
- err = errors.Wrapf(err, "conn.Send(SADD,%s,%d)", key, mid)
- return
- }
- if err = conn.Send("EXPIRE", key, d); err != nil {
- err = errors.Wrapf(err, "conn.Send(EXPIRE,%s,%v)", key, d)
- return
- }
- if err = conn.Flush(); err != nil {
- err = errors.WithStack(err)
- return
- }
- if _, err = conn.Receive(); err != nil {
- err = errors.WithStack(err)
- return
- }
- return
- }
- // func testHbase(t *testing.T) {
- // Convey("TEST figure_activity", t, func() {
- // var (
- // mid int64 = 15555180
- // err error
- // weekVer = time.Date(2017, 10, 2, 0, 0, 0, 0, time.Local).Unix()
- // weekVerFrom = time.Date(2016, 10, 3, 0, 0, 0, 0, time.Local).Unix()
- // weekVerTo = time.Date(2017, 9, 25, 0, 0, 0, 0, time.Local).Unix()
- // userInfo *model.UserInfo
- // figureRecord = &model.FigureRecord{
- // Mid: mid,
- // XPosLawful: 12,
- // XNegLawful: 2,
- // XPosWide: 12,
- // XNegWide: 13,
- // XPosFriendly: 233,
- // XNegFriendly: 234,
- // XPosCreativity: 0,
- // XNegCreativity: 1,
- // XPosBounty: -250,
- // XNegBounty: -251,
- // }
- // figureRecords []*model.FigureRecord
- // )
- // err = dao.putSpyScore(ctx, mid, 100)
- // So(err, ShouldBeNil)
- // userInfo, err = dao.UserInfo(ctx, mid, weekVer)
- // So(err, ShouldBeNil)
- // So(userInfo, ShouldNotBeNil)
- // err = dao.PutCalcRecord(ctx, figureRecord, time.Date(2016, 12, 3, 0, 0, 0, 0, time.Local).Unix())
- // So(err, ShouldBeNil)
- // figureRecords, err = dao.CalcRecords(ctx, mid, weekVerFrom, weekVerTo+1)
- // So(err, ShouldBeNil)
- // So(figureRecords, ShouldNotBeEmpty)
- // })
- // }
- // // PutSpyScore add spy score info.
- // func (d *Dao) putSpyScore(c context.Context, mid int64, score int8) (err error) {
- // var (
- // key = rowKeyUserInfo(mid)
- // scoreB = make([]byte, 2)
- // ctx, cancel = context.WithTimeout(c, time.Duration(conf.Conf.Hbase.WriteTimeout))
- // )
- // defer cancel()
- // binary.BigEndian.PutUint16(scoreB, uint16(score))
- // values := map[string]map[string][]byte{_hbaseUserFC: map[string][]byte{_hbaseUserQSpy: scoreB}}
- // if _, err = d.hbase.PutStr(ctx, _hbaseUserTable, key, values); err != nil {
- // log.Error("hbase.PutStr(%s, %s, %v) error(%v)", _hbaseUserTable, key, values, err)
- // return
- // }
- // return
- // }
|