Feat: add get all tasks function (#4999)

* feat: add get all tasks function
This commit is contained in:
日暮颂歌1991 2022-07-02 18:18:22 +08:00 committed by GitHub
parent 50c4c849da
commit 2c506f7c2b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 44 additions and 2 deletions

View File

@ -1,6 +1,7 @@
# developing
- [Fix 4984: random expire cache](https://github.com/beego/beego/pull/4984)
- [Fix 4907: make admin serve HTTP only](https://github.com/beego/beego/pull/5005)
- [Feat 4999: add get all tasks function](https://github.com/beego/beego/pull/4999)
# v2.0.4

1
go.sum
View File

@ -567,6 +567,7 @@ golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81R
golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
golang.org/x/net v0.0.0-20210525063256-abc453219eb5 h1:wjuX4b5yYQnEQHzd+CBcrcC6OVR2J1CN6mUy0oSxIPo=
golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=

View File

@ -465,11 +465,16 @@ func DeleteTask(taskName string) {
globalTaskManager.DeleteTask(taskName)
}
// ClearTask clear all tasks
// ClearTask clear all tasks
func ClearTask() {
globalTaskManager.ClearTask()
}
// GetAllTasks get all tasks
func GetAllTasks() []Tasker {
return globalTaskManager.GetAllTasks()
}
// GracefulShutdown wait all task done
func GracefulShutdown() <-chan struct{} {
return globalTaskManager.GracefulShutdown()
@ -635,7 +640,7 @@ func (m *taskManager) DeleteTask(taskname string) {
}
}
// ClearTask clear all tasks
// ClearTask clear all tasks
func (m *taskManager) ClearTask() {
isChanged := false
@ -653,6 +658,20 @@ func (m *taskManager) ClearTask() {
}
}
// GetAllTasks get all tasks
func (m *taskManager) GetAllTasks() []Tasker {
m.taskLock.RLock()
l := make([]Tasker, 0, len(m.adminTaskList))
for _, t := range m.adminTaskList {
l = append(l, t)
}
m.taskLock.RUnlock()
return l
}
// MapSorter sort map for tasker
type MapSorter struct {
Keys []string

View File

@ -206,3 +206,24 @@ func wait(wg *sync.WaitGroup) chan bool {
}()
return ch
}
func TestGetAllTasks(t *testing.T) {
m := newTaskManager()
defer m.ClearTask()
tk := NewTask("task1", "0/30 * * * * *", func(ctx context.Context) error {
return nil
})
tk2 := NewTask("task2", "0/40 * * * * *", func(ctx context.Context) error {
return nil
})
m.AddTask("task1", tk)
m.AddTask("task2", tk2)
tasks := m.GetAllTasks()
total := len(tasks)
assert.Equal(t, 2, total)
}