56 lines
1.4 KiB
Go
56 lines
1.4 KiB
Go
package tasksch
|
|
|
|
import (
|
|
"fmt"
|
|
"math/rand"
|
|
"testing"
|
|
"time"
|
|
|
|
"git.rosy.net.cn/baseapi/utils"
|
|
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
|
|
)
|
|
|
|
func TestRunSeqTask(t *testing.T) {
|
|
var seqTask ITask
|
|
seqTask = NewSeqTask("TestSeqTask", jxcontext.AdminCtx,
|
|
func(task *SeqTask, step int, params ...interface{}) (result interface{}, err error) {
|
|
switch step {
|
|
case 0:
|
|
fmt.Println("ONE")
|
|
task2 := NewParallelTask("hello", nil, jxcontext.AdminCtx,
|
|
func(parallelTask *ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
|
i := batchItemList[0].(int)
|
|
time.Sleep(2 * time.Second)
|
|
fmt.Println(i * 2)
|
|
return nil, nil
|
|
}, []int{1, 2, 3})
|
|
seqTask.AddChild(task2)
|
|
time.Sleep(time.Duration(rand.Intn(3)) * time.Second)
|
|
task2.Run()
|
|
case 1:
|
|
fmt.Println("TWO")
|
|
time.Sleep(time.Duration(rand.Intn(3)) * time.Second)
|
|
case 2:
|
|
fmt.Println("THREE")
|
|
time.Sleep(time.Duration(rand.Intn(3)) * time.Second)
|
|
case 3:
|
|
fmt.Println("FOUR")
|
|
time.Sleep(time.Duration(rand.Intn(3)) * time.Second)
|
|
case 4:
|
|
fmt.Println("FIVE")
|
|
time.Sleep(time.Duration(rand.Intn(3)) * time.Second)
|
|
}
|
|
return []string{"1"}, nil
|
|
}, 5)
|
|
|
|
seqTask.Run()
|
|
time.Sleep(3 * time.Second)
|
|
seqTask.Cancel()
|
|
fmt.Println(utils.Format4Output(seqTask, false))
|
|
result, err := seqTask.GetResult(0)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
t.Log(result)
|
|
}
|