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
4 changed files with 44 additions and 2 deletions

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)
}