71 lines
1.4 KiB
Go
71 lines
1.4 KiB
Go
package crontab
|
|
|
|
import (
|
|
"jiacrontab/pkg/test"
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestJob_NextExecutionTime(t *testing.T) {
|
|
timeLayout := "2006-01-02 15:04:05"
|
|
j := &Job{
|
|
Second: "48",
|
|
Minute: "3",
|
|
Hour: "12",
|
|
Day: "25",
|
|
Weekday: "*",
|
|
Month: "1",
|
|
}
|
|
|
|
tt, err := j.NextExecutionTime(time.Now())
|
|
test.Nil(t, err)
|
|
test.Equal(t, "2020-01-25 12:03:48", tt.Format(timeLayout))
|
|
|
|
tt, err = j.NextExecutionTime(tt)
|
|
test.Nil(t, err)
|
|
test.Equal(t, "2021-01-25 12:03:48", tt.Format(timeLayout))
|
|
|
|
tt, err = j.NextExecutionTime(tt)
|
|
test.Equal(t, "2022-01-25 12:03:48", tt.Format(timeLayout))
|
|
|
|
j = &Job{
|
|
Second: "58",
|
|
Minute: "*/4",
|
|
Hour: "12",
|
|
Day: "4",
|
|
Weekday: "*",
|
|
Month: "3",
|
|
}
|
|
tt, err = j.NextExecutionTime(time.Now())
|
|
test.Nil(t, err)
|
|
test.Equal(t, "2020-03-04 12:00:58", tt.Format(timeLayout))
|
|
|
|
tt, err = j.NextExecutionTime(tt)
|
|
test.Nil(t, err)
|
|
test.Equal(t, "2020-03-04 12:04:58", tt.Format(timeLayout))
|
|
|
|
tt, err = j.NextExecutionTime(tt)
|
|
test.Nil(t, err)
|
|
test.Equal(t, "2020-03-04 12:08:58", tt.Format(timeLayout))
|
|
|
|
j = &Job{
|
|
Second: "0",
|
|
Minute: "*",
|
|
Hour: "*",
|
|
Day: "*",
|
|
Weekday: "*",
|
|
Month: "*",
|
|
}
|
|
|
|
tt, err = j.NextExecutionTime(time.Now())
|
|
test.Nil(t, err)
|
|
t.Log(tt, j.GetLastExecTime())
|
|
for i := 0; i < 1000; i++ {
|
|
tt, err = j.NextExecutionTime(tt)
|
|
test.Nil(t, err)
|
|
t.Log(tt, j.GetLastExecTime())
|
|
}
|
|
|
|
t.Log("end")
|
|
}
|