59 строки
1.2 KiB
Go
59 строки
1.2 KiB
Go
// 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
|
|
}
|