Skip to content

Commit

Permalink
more worker ticket tests
Browse files Browse the repository at this point in the history
  • Loading branch information
bojand committed Oct 25, 2020
1 parent bd4670e commit a61944b
Show file tree
Hide file tree
Showing 2 changed files with 152 additions and 3 deletions.
6 changes: 3 additions & 3 deletions load/worker_ticker.go
Original file line number Diff line number Diff line change
Expand Up @@ -71,12 +71,12 @@ func (c *StepWorkerTicker) Run() {
go func() {
for range ticker.C {
// we have load duration and we eclipsed it
if c.LoadDuration > 0 && time.Since(begin) > c.LoadDuration {
if stepUp && c.Stop > 0 && c.Stop > uint(wc) {
if c.LoadDuration > 0 && time.Since(begin) >= c.LoadDuration {
if stepUp && c.Stop > 0 && c.Stop >= uint(wc) {
// if we have step up and stop value is > current count
// send the final diff
c.C <- TickValue{Delta: int(c.Stop - uint(wc)), Done: true}
} else if !stepUp && c.Stop > 0 && c.Stop < uint(wc) {
} else if !stepUp && c.Stop > 0 && c.Stop <= uint(wc) {
// if we have step down and stop value is < current count
// send the final diff
c.C <- TickValue{Delta: int(c.Stop - uint(wc)), Done: true}
Expand Down
149 changes: 149 additions & 0 deletions load/worker_ticker_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -121,4 +121,153 @@ func TestStepWorkerTicker(t *testing.T) {
assert.True(t, tv.Done)
assert.True(t, durationEqual(3*expected, end.Round(time.Second)), "expected %s to equal %s", expected, end)
})

t.Run("step decrease load duration", func(t *testing.T) {
wt := StepWorkerTicker{
C: make(chan TickValue),
Start: 10,
Step: -2,
Stop: 0,
StepDuration: 2 * time.Second,
LoadDuration: 5 * time.Second,
}

defer wt.Finish()

wct := wt.Ticker()

assert.NotNil(t, wct)

go func() {
wt.Run()
}()

tv := <-wct
assert.NotEmpty(t, tv)
assert.Equal(t, 10, tv.Delta)
assert.False(t, tv.Done)

start := time.Now()
tv = <-wct
end := time.Since(start)
assert.NotEmpty(t, tv)
assert.Equal(t, -2, tv.Delta)
assert.False(t, tv.Done)
expected := 2 * time.Second
assert.True(t, durationEqual(expected, end.Round(time.Second)), "expected %s to equal %s", expected, end)

tv = <-wct
end = time.Since(start)
assert.NotEmpty(t, tv)
assert.Equal(t, -2, tv.Delta)
assert.False(t, tv.Done)
assert.True(t, durationEqual(2*expected, end.Round(time.Second)), "expected %s to equal %s", expected, end)

tv = <-wct
assert.Equal(t, 0, tv.Delta)
assert.True(t, tv.Done)
})

t.Run("step decrease with stop", func(t *testing.T) {
wt := StepWorkerTicker{
C: make(chan TickValue),
Start: 10,
Step: -2,
Stop: 4,
StepDuration: 2 * time.Second,
LoadDuration: 0,
}

defer wt.Finish()

wct := wt.Ticker()

assert.NotNil(t, wct)

go func() {
wt.Run()
}()

tv := <-wct
assert.NotEmpty(t, tv)
assert.Equal(t, 10, tv.Delta)
assert.False(t, tv.Done)

start := time.Now()
tv = <-wct
end := time.Since(start)
assert.NotEmpty(t, tv)
assert.Equal(t, -2, tv.Delta)
assert.False(t, tv.Done)
expected := 2 * time.Second
assert.True(t, durationEqual(expected, end.Round(time.Second)), "expected %s to equal %s", expected, end)

tv = <-wct
end = time.Since(start)
assert.NotEmpty(t, tv)
assert.Equal(t, -2, tv.Delta)
assert.False(t, tv.Done)
assert.True(t, durationEqual(2*expected, end.Round(time.Second)), "expected %s to equal %s", expected, end)

tv = <-wct
end = time.Since(start)
assert.Equal(t, -2, tv.Delta)
assert.False(t, tv.Done)
assert.True(t, durationEqual(3*expected, end.Round(time.Second)), "expected %s to equal %s", expected, end)

tv = <-wct
end = time.Since(start)
assert.Equal(t, 0, tv.Delta)
assert.True(t, tv.Done)
assert.True(t, durationEqual(4*expected, end.Round(time.Second)), "expected %s to equal %s", expected, end)
})

t.Run("step decrease with stop and load duration", func(t *testing.T) {

wt := StepWorkerTicker{
C: make(chan TickValue),
Start: 12,
Step: -2,
Stop: 3,
StepDuration: 2 * time.Second,
LoadDuration: 5 * time.Second,
}

defer wt.Finish()

wct := wt.Ticker()

assert.NotNil(t, wct)

go func() {
wt.Run()
}()

tv := <-wct
assert.NotEmpty(t, tv)
assert.Equal(t, 12, tv.Delta)
assert.False(t, tv.Done)

start := time.Now()
tv = <-wct
end := time.Since(start)
assert.NotEmpty(t, tv)
assert.Equal(t, -2, tv.Delta)
assert.False(t, tv.Done)
expected := 2 * time.Second
assert.True(t, durationEqual(expected, end.Round(time.Second)), "expected %s to equal %s", expected, end)

tv = <-wct
end = time.Since(start)
assert.NotEmpty(t, tv)
assert.Equal(t, -2, tv.Delta)
assert.False(t, tv.Done)
assert.True(t, durationEqual(2*expected, end.Round(time.Second)), "expected %s to equal %s", expected, end)

tv = <-wct
end = time.Since(start)
assert.Equal(t, -5, tv.Delta)
assert.True(t, tv.Done)
assert.True(t, durationEqual(3*expected, end.Round(time.Second)), "expected %s to equal %s", expected, end)
})
}

0 comments on commit a61944b

Please sign in to comment.