调整任务实现, 增加单元测试
This commit is contained in:
parent
e84950da59
commit
bb088f1d29
6
core.go
6
core.go
@ -21,8 +21,8 @@ import (
|
|||||||
// Date : 16:50 2023/8/11
|
// Date : 16:50 2023/8/11
|
||||||
func NewTimeWheel(slotCount int, interval time.Duration) *TimeWheel {
|
func NewTimeWheel(slotCount int, interval time.Duration) *TimeWheel {
|
||||||
tw := &TimeWheel{
|
tw := &TimeWheel{
|
||||||
Interval: 0,
|
Interval: interval,
|
||||||
Slots: make([]*list.List, 0),
|
Slots: make([]*list.List, slotCount),
|
||||||
Ticker: time.NewTicker(interval),
|
Ticker: time.NewTicker(interval),
|
||||||
CurrentPosition: 0,
|
CurrentPosition: 0,
|
||||||
SlotCount: slotCount,
|
SlotCount: slotCount,
|
||||||
@ -75,6 +75,7 @@ func (tw *TimeWheel) initSlots() {
|
|||||||
//
|
//
|
||||||
// Date : 13:38 2023/8/4
|
// Date : 13:38 2023/8/4
|
||||||
func (tw *TimeWheel) Start() {
|
func (tw *TimeWheel) Start() {
|
||||||
|
tw.IsRunning = true
|
||||||
for {
|
for {
|
||||||
select {
|
select {
|
||||||
case <-tw.Ticker.C:
|
case <-tw.Ticker.C:
|
||||||
@ -88,6 +89,7 @@ func (tw *TimeWheel) Start() {
|
|||||||
tw.RemoveTask(task)
|
tw.RemoveTask(task)
|
||||||
case <-tw.StopChannel:
|
case <-tw.StopChannel:
|
||||||
tw.Ticker.Stop()
|
tw.Ticker.Stop()
|
||||||
|
tw.IsRunning = false
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
77
core_test.go
Normal file
77
core_test.go
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
// Package task ...
|
||||||
|
//
|
||||||
|
// Description : task ...
|
||||||
|
//
|
||||||
|
// Author : go_developer@163.com<白茶清欢>
|
||||||
|
//
|
||||||
|
// Date : 2023-08-11 17:00
|
||||||
|
package task
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"fmt"
|
||||||
|
"git.zhangdeman.cn/zhangdeman/wrapper"
|
||||||
|
"testing"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
var tw *TimeWheel
|
||||||
|
|
||||||
|
// TestNewTimeWheel ...
|
||||||
|
//
|
||||||
|
// Author : go_developer@163.com<白茶清欢>
|
||||||
|
//
|
||||||
|
// Date : 17:00 2023/8/11
|
||||||
|
func TestNewTimeWheel(t *testing.T) {
|
||||||
|
tw = NewTimeWheel(10, 10*time.Second)
|
||||||
|
tw.AddTask(&Task{
|
||||||
|
Key: wrapper.StringFromRandom(32, "").Value(),
|
||||||
|
Interval: 5 * time.Second,
|
||||||
|
CreatedTime: time.Now(),
|
||||||
|
Position: 0,
|
||||||
|
Circle: 100,
|
||||||
|
Job: &testTask{},
|
||||||
|
Times: 10,
|
||||||
|
MaxExecuteTime: 0,
|
||||||
|
}, false)
|
||||||
|
go tw.Start()
|
||||||
|
time.Sleep(3 * time.Second)
|
||||||
|
for tw.IsRunning {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
type testTask struct {
|
||||||
|
}
|
||||||
|
|
||||||
|
func (t testTask) GetFlag() string {
|
||||||
|
return "unit_test"
|
||||||
|
}
|
||||||
|
|
||||||
|
func (t testTask) Description() string {
|
||||||
|
return "单元测试任务"
|
||||||
|
}
|
||||||
|
|
||||||
|
func (t testTask) GetRunID() string {
|
||||||
|
return wrapper.StringFromRandom(32, "").Value()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (t testTask) Callback(result *Result) error {
|
||||||
|
fmt.Println(result)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (t testTask) Execute(ctx context.Context, cfg *Config) (map[string]interface{}, error) {
|
||||||
|
fmt.Println(wrapper.OwnTimeFromNow().ToString())
|
||||||
|
tw.AddTask(&Task{
|
||||||
|
Key: wrapper.StringFromRandom(32, "").Value(),
|
||||||
|
Interval: 5 * time.Second,
|
||||||
|
CreatedTime: time.Now(),
|
||||||
|
Position: 0,
|
||||||
|
Circle: 100,
|
||||||
|
Job: &testTask{},
|
||||||
|
Times: 10,
|
||||||
|
MaxExecuteTime: 100,
|
||||||
|
}, false)
|
||||||
|
return nil, nil
|
||||||
|
}
|
7
go.mod
7
go.mod
@ -5,9 +5,16 @@ go 1.20
|
|||||||
require git.zhangdeman.cn/zhangdeman/easymap v0.0.0-20230811085725-1a7414bb7590
|
require git.zhangdeman.cn/zhangdeman/easymap v0.0.0-20230811085725-1a7414bb7590
|
||||||
|
|
||||||
require (
|
require (
|
||||||
|
git.zhangdeman.cn/zhangdeman/consts v0.0.0-20230811030300-6f850372c88c // indirect
|
||||||
|
git.zhangdeman.cn/zhangdeman/serialize v0.0.0-20230811032817-e6ad534a9a10 // indirect
|
||||||
git.zhangdeman.cn/zhangdeman/util v0.0.0-20230811070456-d6a489d5860b // indirect
|
git.zhangdeman.cn/zhangdeman/util v0.0.0-20230811070456-d6a489d5860b // indirect
|
||||||
|
git.zhangdeman.cn/zhangdeman/wrapper v0.0.0-20230811071513-cfc46e8d82e1 // indirect
|
||||||
|
github.com/BurntSushi/toml v1.3.2 // indirect
|
||||||
|
github.com/axgle/mahonia v0.0.0-20180208002826-3358181d7394 // indirect
|
||||||
|
github.com/go-ini/ini v1.67.0 // indirect
|
||||||
github.com/mitchellh/go-homedir v1.1.0 // indirect
|
github.com/mitchellh/go-homedir v1.1.0 // indirect
|
||||||
github.com/mozillazg/go-pinyin v0.20.0 // indirect
|
github.com/mozillazg/go-pinyin v0.20.0 // indirect
|
||||||
github.com/pkg/errors v0.9.1 // indirect
|
github.com/pkg/errors v0.9.1 // indirect
|
||||||
github.com/spaolacci/murmur3 v1.1.0 // indirect
|
github.com/spaolacci/murmur3 v1.1.0 // indirect
|
||||||
|
gopkg.in/yaml.v3 v3.0.1 // indirect
|
||||||
)
|
)
|
||||||
|
15
go.sum
15
go.sum
@ -1,9 +1,21 @@
|
|||||||
|
git.zhangdeman.cn/zhangdeman/consts v0.0.0-20230811030300-6f850372c88c h1:Dan3iSVU6XTKt8r3/qixfPHPpfLZjkYlPmaJios7wtE=
|
||||||
|
git.zhangdeman.cn/zhangdeman/consts v0.0.0-20230811030300-6f850372c88c/go.mod h1:IXXaZkb7vGzGnGM5RRWrASAuwrVSNxuoe0DmeXx5g6k=
|
||||||
git.zhangdeman.cn/zhangdeman/easymap v0.0.0-20230307094841-e437ba87af10 h1:+Lg4vXFEiWVKjhUJdXuoP0AgjGT49oqJ3301STnZErk=
|
git.zhangdeman.cn/zhangdeman/easymap v0.0.0-20230307094841-e437ba87af10 h1:+Lg4vXFEiWVKjhUJdXuoP0AgjGT49oqJ3301STnZErk=
|
||||||
git.zhangdeman.cn/zhangdeman/easymap v0.0.0-20230307094841-e437ba87af10/go.mod h1:+Lc0zYF8sylRi75A7NGmObrLxugwAZa8WVpWh2eh5X0=
|
git.zhangdeman.cn/zhangdeman/easymap v0.0.0-20230307094841-e437ba87af10/go.mod h1:+Lc0zYF8sylRi75A7NGmObrLxugwAZa8WVpWh2eh5X0=
|
||||||
git.zhangdeman.cn/zhangdeman/easymap v0.0.0-20230811085725-1a7414bb7590 h1:zN5JKHvzCH5q+X6W6fZw1hZ18FTlmZdv+k5T2j+6/GQ=
|
git.zhangdeman.cn/zhangdeman/easymap v0.0.0-20230811085725-1a7414bb7590 h1:zN5JKHvzCH5q+X6W6fZw1hZ18FTlmZdv+k5T2j+6/GQ=
|
||||||
git.zhangdeman.cn/zhangdeman/easymap v0.0.0-20230811085725-1a7414bb7590/go.mod h1:l9S40lsDnTd/VAZjh1kmfYvz0B9z+7oT86pMQ/KurWo=
|
git.zhangdeman.cn/zhangdeman/easymap v0.0.0-20230811085725-1a7414bb7590/go.mod h1:l9S40lsDnTd/VAZjh1kmfYvz0B9z+7oT86pMQ/KurWo=
|
||||||
|
git.zhangdeman.cn/zhangdeman/serialize v0.0.0-20230811032817-e6ad534a9a10 h1:orhcMAKrcOajsBJCgssnb9O8YcLsPJvWuXF511gs5dc=
|
||||||
|
git.zhangdeman.cn/zhangdeman/serialize v0.0.0-20230811032817-e6ad534a9a10/go.mod h1:CzX5/WwGDTnKmewarnjkK5XcSRbgszTQTdTL3OUc/s4=
|
||||||
git.zhangdeman.cn/zhangdeman/util v0.0.0-20230811070456-d6a489d5860b h1:vnmxYrNdX6f5sEVjjkM1fIR+i32kHJ4g9DJqug9KKek=
|
git.zhangdeman.cn/zhangdeman/util v0.0.0-20230811070456-d6a489d5860b h1:vnmxYrNdX6f5sEVjjkM1fIR+i32kHJ4g9DJqug9KKek=
|
||||||
git.zhangdeman.cn/zhangdeman/util v0.0.0-20230811070456-d6a489d5860b/go.mod h1:Yum5+tgP+Wf1GWUAyQz1Qh8Ab9m5+90GYkYdzqVs0lA=
|
git.zhangdeman.cn/zhangdeman/util v0.0.0-20230811070456-d6a489d5860b/go.mod h1:Yum5+tgP+Wf1GWUAyQz1Qh8Ab9m5+90GYkYdzqVs0lA=
|
||||||
|
git.zhangdeman.cn/zhangdeman/wrapper v0.0.0-20230811071513-cfc46e8d82e1 h1:k2iu9KgRxeroytB+N+/XapAxt1di7o2pNTISjFlYDJ8=
|
||||||
|
git.zhangdeman.cn/zhangdeman/wrapper v0.0.0-20230811071513-cfc46e8d82e1/go.mod h1:kvjAbtGTo14gKCS0X4rxnb2sPkskHOUy2NXcx34t6Mw=
|
||||||
|
github.com/BurntSushi/toml v1.3.2 h1:o7IhLm0Msx3BaB+n3Ag7L8EVlByGnpq14C4YWiu/gL8=
|
||||||
|
github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
|
||||||
|
github.com/axgle/mahonia v0.0.0-20180208002826-3358181d7394 h1:OYA+5W64v3OgClL+IrOD63t4i/RW7RqrAVl9LTZ9UqQ=
|
||||||
|
github.com/axgle/mahonia v0.0.0-20180208002826-3358181d7394/go.mod h1:Q8n74mJTIgjX4RBBcHnJ05h//6/k6foqmgE45jTQtxg=
|
||||||
|
github.com/go-ini/ini v1.67.0 h1:z6ZrTEZqSWOTyH2FlglNbNgARyHG8oLW9gMELqKr06A=
|
||||||
|
github.com/go-ini/ini v1.67.0/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8=
|
||||||
github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=
|
github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=
|
||||||
github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
|
github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
|
||||||
github.com/mozillazg/go-pinyin v0.20.0 h1:BtR3DsxpApHfKReaPO1fCqF4pThRwH9uwvXzm+GnMFQ=
|
github.com/mozillazg/go-pinyin v0.20.0 h1:BtR3DsxpApHfKReaPO1fCqF4pThRwH9uwvXzm+GnMFQ=
|
||||||
@ -12,3 +24,6 @@ github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
|
|||||||
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||||
github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI=
|
github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI=
|
||||||
github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
|
github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
|
||||||
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
|
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
||||||
|
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||||
|
Loading…
Reference in New Issue
Block a user