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.
127 lines
2.1 KiB
127 lines
2.1 KiB
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) |
|
} |
|
}
|
|
|