Files
warewulf/internal/pkg/batch/batch_test.go
Jonathon Anderson 88feb1a876 Testing for the batch package
* Remove Min function (unused)

Signed-off-by: Jonathon Anderson <janderson@ciq.co>
2023-02-24 22:47:12 -07:00

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))
}