diff options
Diffstat (limited to 'jobs/testjob.go')
-rw-r--r-- | jobs/testjob.go | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/jobs/testjob.go b/jobs/testjob.go new file mode 100644 index 000000000..59d5274e5 --- /dev/null +++ b/jobs/testjob.go @@ -0,0 +1,54 @@ +// Copyright (c) 2017-present Mattermost, Inc. All Rights Reserved. +// See License.txt for license information. + +package jobs + +import ( + "time" + + l4g "github.com/alecthomas/log4go" + "github.com/mattermost/platform/store" +) + +type TestJob struct { + store store.Store + + name string + stop chan bool + stopped chan bool +} + +func MakeTestJob(s store.Store, name string) *TestJob { + return &TestJob{ + store: s, + name: name, + stop: make(chan bool, 1), + stopped: make(chan bool, 1), + } +} + +func (job *TestJob) Run() { + l4g.Debug("Job %v: Started", job.name) + + running := true + for running { + l4g.Debug("Job %v: Tick", job.name) + + select { + case <-job.stop: + l4g.Debug("Job %v: Received stop signal", job.name) + running = false + case <-time.After(10 * time.Second): + continue + } + } + + l4g.Debug("Job %v: Finished", job.name) + job.stopped <- true +} + +func (job *TestJob) Stop() { + l4g.Debug("Job %v: Stopping", job.name) + job.stop <- true + <-job.stopped +} |