123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
- package service
- import (
- "context"
- "fmt"
- "sync"
- "testing"
- "time"
- "go-common/app/admin/main/videoup/model/archive"
- "go-common/app/admin/main/videoup/model/utils"
- )
- func TestLockVideo(t *testing.T) {
- svr.lockVideo()
- }
- func TestConsumer(t *testing.T) {
- var c = context.TODO()
- e := svr.HandsUp(c, 10, "10")
- if e != nil {
- t.Fatal(e)
- }
- e = svr.HandsUp(c, 20, "20")
- if e != nil {
- t.Fatal(e)
- }
- e = svr.HandsOff(c, 10, 20)
- if e != nil {
- t.Fatal(e)
- }
- e = svr.HandsUp(c, 20, "20")
- if e != nil {
- t.Fatal(e)
- }
- e = svr.HandsOff(c, 20, 10)
- if e == nil {
- t.Fatal("只有组长能强制踢出")
- }
- cms, err := svr.Online(c)
- if err != nil {
- t.Fatal(err)
- }
- if len(cms) != 2 {
- t.Fatal("在线人数错误")
- }
- for _, v := range cms {
- if (v.UID != 10 && v.UID != 20) || v.State != 1 {
- t.Fatal("在线人信息错误")
- }
- }
- }
- func BenchmarkMultiGetNextTask(b *testing.B) {
- var (
- mux sync.RWMutex
- wg = sync.WaitGroup{}
- ConMap = make(map[int64]struct{})
- )
- Audit := func(w *sync.WaitGroup, uid int64) {
- defer w.Done()
- for {
- tl, err := svr.Next(context.TODO(), uid)
- if err != nil {
- panic(err)
- }
- if tl == nil {
- fmt.Println("任务领取完成")
- return
- }
- mux.RLock()
- _, ok := ConMap[tl.ID]
- mux.RUnlock()
- if ok {
- panic(fmt.Sprintf("%d 重复下发:%d", uid, tl.ID))
- } else {
- mux.Lock()
- ConMap[tl.ID] = struct{}{}
- mux.Unlock()
- }
- fmt.Printf("uid=%d 领取任务:%d, weight=%d\n", uid, tl.ID, tl.Weight)
- time.Sleep(time.Millisecond * 50)
- if err = svr.Delay(context.TODO(), tl.ID, uid, "test-reson"); err != nil {
- panic(err)
- }
- }
- }
- for i := 1; i <= 10; i++ {
- wg.Add(1)
- go Audit(&wg, int64(i))
- }
- wg.Wait()
- }
- func TestFree(t *testing.T) {
- var c = context.TODO()
- rows := svr.Free(c, 481)
- if rows == 0 {
- t.Fail()
- }
- t.Fail()
- }
- func Test_setWeightConf(t *testing.T) {
- err := svr.setWeightConf(context.TODO(), "7", map[int64]*archive.WCItem{
- 7: {
- Radio: 4,
- Weight: 18,
- Mtime: utils.NewFormatTime(time.Now()),
- Desc: "指派回流任务",
- },
- })
- if err != nil {
- t.Fatal(err)
- }
- }
|