diff options
Diffstat (limited to 'jobs/testscheduler.go')
-rw-r--r-- | jobs/testscheduler.go | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/jobs/testscheduler.go b/jobs/testscheduler.go new file mode 100644 index 000000000..31b5d144c --- /dev/null +++ b/jobs/testscheduler.go @@ -0,0 +1,58 @@ +// Copyright (c) 2017-present Mattermost, Inc. All Rights Reserved. +// See License.txt for license information. + +package jobs + +import ( + "time" + + l4g "github.com/alecthomas/log4go" +) + +type TestScheduler struct { + name string + jobType string + stop chan bool + stopped chan bool +} + +func MakeTestScheduler(name string, jobType string) *TestScheduler { + return &TestScheduler{ + name: name, + jobType: jobType, + stop: make(chan bool, 1), + stopped: make(chan bool, 1), + } +} + +func (scheduler *TestScheduler) Run() { + l4g.Debug("Scheduler %v: Started", scheduler.name) + + defer func(){ + l4g.Debug("Scheduler %v: Finished", scheduler.name) + scheduler.stopped <- true + }() + + for { + select { + case <-scheduler.stop: + l4g.Debug("Scheduler %v: Received stop signal", scheduler.name) + return + case <-time.After(86400 * time.Second): + l4g.Debug("Scheduler: %v: Scheduling new job", scheduler.name) + scheduler.AddJob() + } + } +} + +func (scheduler *TestScheduler) AddJob() { + if _, err := CreateJob(scheduler.jobType, nil); err != nil { + l4g.Error("Scheduler %v: failed to create job: %v", scheduler.name, err) + } +} + +func (scheduler *TestScheduler) Stop() { + l4g.Debug("Scheduler %v: Stopping", scheduler.name) + scheduler.stop <- true + <-scheduler.stopped +} |