hrtools/server/task_test.go
eson fa568b53c4 TODO:
1. 需要改为一个Chrome一个任务. 因为有全局的cookie.
如果开相同的网站会导致cookie混乱.
2021-05-08 18:15:29 +08:00

108 lines
1.9 KiB
Go

package main
import (
"log"
"sync"
"testing"
"time"
"github.com/474420502/requests"
"github.com/gin-gonic/gin"
)
func TestTaskCasePushPop(t *testing.T) {
queue := NewQueue()
queue.Push(&Task{})
queue.Push(&Task{})
if queue.queue.Size() != 2 {
t.Error("size != 2")
}
task := queue.Pop()
if task == nil {
t.Error(task == nil)
}
if queue.queue.Size() != 1 {
t.Error("size != 1")
}
task = queue.PopBlock()
if task == nil {
t.Error(task == nil)
}
if queue.queue.Size() != 0 {
t.Error("size != 1")
}
}
func TestTaskCaseBlock(t *testing.T) {
queue := NewQueue()
wait := &sync.WaitGroup{}
wait.Add(1)
go func(wait *sync.WaitGroup, queue *Queue) {
defer wait.Done()
time.Sleep(time.Millisecond * 500)
queue.Push(&Task{})
time.Sleep(time.Millisecond * 500)
queue.Push(&Task{})
}(wait, queue)
if queue.PopBlock() == nil {
t.Error("value is error")
}
if queue.queue.Size() != 0 {
t.Error("queue errro")
}
first := time.Now()
if queue.PopBlock() == nil {
t.Error("value is error")
}
if queue.queue.Size() != 0 {
t.Error("queue errro")
}
if d := time.Now().Sub(first).Milliseconds(); d < 500 {
t.Errorf("time duration is error %d", d)
}
wait.Wait()
}
func TestTaskPostPushQueue(t *testing.T) {
temp := requests.NewSession().Post("http://localhost" + RemoteAddress + "/queue")
task := &Task{
Name: "test",
Type: 1,
CreateAt: time.Now(),
Info: gin.H{
"data": "test",
},
}
temp.SetBodyAuto(task)
resp, err := temp.Execute()
if err != nil {
t.Error(err)
}
log.Println(string(resp.Content()))
}
func TestBoss(t *testing.T) {
temp := requests.NewSession().Post("http://localhost" + RemoteAddress + "/queue")
task := &Task{
Name: "boss",
Type: 1,
CreateAt: time.Now(),
Info: gin.H{
"data": "boss",
},
}
temp.SetBodyAuto(task)
resp, err := temp.Execute()
if err != nil {
t.Error(err)
}
log.Println(string(resp.Content()))
}