35 lines
1.3 KiB
Go
35 lines
1.3 KiB
Go
package batch
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
/* Submits 10 jobs into a pool that supports 2 simultaneous jobs, and
|
|
tests that only two of the jobs ran at a time by capturing the time
|
|
that they ran and comparing against the start time. */
|
|
func TestBatchPool (t *testing.T) {
|
|
pool := New(2)
|
|
var times []time.Time
|
|
for i := 0; i <= 10; i++ {
|
|
pool.Submit(func() {
|
|
times = append(times, time.Now())
|
|
time.Sleep(1 * time.Second)
|
|
})
|
|
}
|
|
startTime := time.Now()
|
|
pool.Run()
|
|
assert.Equal(t, 0 * time.Second, times[0].Sub(startTime).Round(time.Second))
|
|
assert.Equal(t, 0 * time.Second, times[1].Sub(startTime).Round(time.Second))
|
|
assert.Equal(t, 1 * time.Second, times[2].Sub(startTime).Round(time.Second))
|
|
assert.Equal(t, 1 * time.Second, times[3].Sub(startTime).Round(time.Second))
|
|
assert.Equal(t, 2 * time.Second, times[4].Sub(startTime).Round(time.Second))
|
|
assert.Equal(t, 2 * time.Second, times[5].Sub(startTime).Round(time.Second))
|
|
assert.Equal(t, 3 * time.Second, times[6].Sub(startTime).Round(time.Second))
|
|
assert.Equal(t, 3 * time.Second, times[7].Sub(startTime).Round(time.Second))
|
|
assert.Equal(t, 4 * time.Second, times[8].Sub(startTime).Round(time.Second))
|
|
assert.Equal(t, 4 * time.Second, times[9].Sub(startTime).Round(time.Second))
|
|
}
|