Skip to content

Commit

Permalink
refactor: Server.schedule 复用 time.Now 的值
Browse files Browse the repository at this point in the history
  • Loading branch information
caixw committed Nov 14, 2023
1 parent 1e5ed8c commit 6e29139
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 10 deletions.
7 changes: 3 additions & 4 deletions server.go
Original file line number Diff line number Diff line change
Expand Up @@ -88,15 +88,15 @@ func (s *Server) schedule(ctx context.Context) {
sortJobs(s.jobs) // 按执行时间进行排序

var dur time.Duration
now := time.Now()

if len(s.jobs) == 0 || s.jobs[0].Next().IsZero() {
dur = time.Minute
} else {
dur = time.Until(s.jobs[0].Next())
dur = s.jobs[0].Next().Sub(now)
}

// dur > 0 表示没有需要立即执行的,根据最早的一条任务做一个计时器。
if dur > 0 {
if dur > 0 { // dur > 0 表示没有需要立即执行的,根据最早的一条任务做一个计时器。
timer := time.NewTimer(dur)
for {
select {
Expand All @@ -111,7 +111,6 @@ func (s *Server) schedule(ctx context.Context) {
}
}

now := time.Now()
for _, j := range s.jobs {
if next := j.Next(); next.After(now) || next.IsZero() {
break
Expand Down
12 changes: 6 additions & 6 deletions server_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,7 @@ func TestServer_Serve_zero(t *testing.T) {
}
}

// 一个运行时间超过一个时间间隔的任务
// 运行时间超过一个时间间隔的任务
func TestServer_Serve_delay(t *testing.T) {
a := assert.New(t, false)
srv := NewServer(nil, nil, nil)
Expand Down Expand Up @@ -179,19 +179,19 @@ func TestServer_Serve_delay(t *testing.T) {
time.Sleep(5 * time.Second)
cancel()

a.NotEmpty(tickers1)
a.NotEmpty(tickers2)
a.NotEmpty(tickers1).
NotEmpty(tickers2)
for i := 1; i < len(tickers1); i++ {
prev := tickers1[i-1].Unix()
curr := tickers1[i].Unix()
delta := math.Abs(float64(curr - prev)) // 缺失一次执行,应该介于 4-6 之间?
a.True(delta >= 4 && delta < 6, "%d != %d", prev, curr)
a.True(delta >= 4 && delta < 6, "v1=%d, v2=%d", prev, curr)
}
for i := 1; i < len(tickers2); i++ {
prev := tickers2[i-1].Unix()
curr := tickers2[i].Unix()
delta := math.Abs(float64(curr - prev))
a.True(delta <= 3, "%d != %d", prev, curr)
delta := math.Abs(float64(curr - prev)) // 缺失一次执行,应该介于 4-6 之间?
a.True(delta >= 4 && delta < 6, "v1=%d, v2=%d", prev, curr)
}
}

Expand Down

0 comments on commit 6e29139

Please sign in to comment.