firestormy/scheduler/scheduler_test.go

62 lines
1.1 KiB
Go

package scheduler
import (
"bytes"
"local/firestormy/config"
"local/storage"
"testing"
)
func TestSchedulerAddRemove(t *testing.T) {
config.Store, _ = storage.New(storage.MAP)
s := New()
j, err := NewJob(Bash, "@hourly", "hostname")
if err != nil {
t.Fatal(err)
}
if err := s.Add(j); err != nil {
t.Fatal(err)
}
if list, err := s.List(); err != nil {
t.Fatal(err)
} else if len(list) != 1 {
t.Fatal(err)
}
if err := s.Remove(j); err != nil {
t.Fatal(err)
}
if list, err := s.List(); err != nil {
t.Fatal(err)
} else if len(list) != 0 {
t.Fatal(err)
}
}
func TestSchedulerStartStop(t *testing.T) {
b, clean := captureLog()
defer clean()
config.Store, _ = storage.New(storage.MAP)
s := New()
for i := 0; i < 5; i++ {
j, err := NewJob(Bash, "* * * * *", "hostname")
if err != nil {
t.Fatal(err)
}
if err := s.Add(j); err != nil {
t.Fatal(err)
}
}
if err := s.Start(); err != nil {
t.Fatal(err)
}
if err := s.Stop(); err != nil {
t.Fatal(err)
}
if n := bytes.Count(b.Bytes(), []byte("schedule")); n != 5 {
t.Errorf("%v: %s", n, b.Bytes())
}
}