github.com/anth0d/nomad@v0.0.0-20221214183521-ae3a0a2cad06/nomad/drainer/drainer_util_test.go (about) 1 package drainer 2 3 import ( 4 "testing" 5 6 "github.com/hashicorp/nomad/ci" 7 "github.com/hashicorp/nomad/nomad/structs" 8 "github.com/stretchr/testify/require" 9 ) 10 11 func TestDrainer_PartitionAllocDrain(t *testing.T) { 12 ci.Parallel(t) 13 // Set the max ids per reap to something lower. 14 maxIdsPerTxn := 2 15 16 require := require.New(t) 17 transitions := map[string]*structs.DesiredTransition{"a": nil, "b": nil, "c": nil} 18 evals := []*structs.Evaluation{nil, nil, nil} 19 requests := partitionAllocDrain(maxIdsPerTxn, transitions, evals) 20 require.Len(requests, 3) 21 22 first := requests[0] 23 require.Len(first.Transitions, 2) 24 require.Len(first.Evals, 0) 25 26 second := requests[1] 27 require.Len(second.Transitions, 1) 28 require.Len(second.Evals, 1) 29 30 third := requests[2] 31 require.Len(third.Transitions, 0) 32 require.Len(third.Evals, 2) 33 } 34 35 func TestDrainer_PartitionIds(t *testing.T) { 36 ci.Parallel(t) 37 require := require.New(t) 38 39 // Set the max ids per reap to something lower. 40 maxIdsPerTxn := 2 41 42 ids := []string{"1", "2", "3", "4", "5"} 43 requests := partitionIds(maxIdsPerTxn, ids) 44 require.Len(requests, 3) 45 require.Len(requests[0], 2) 46 require.Len(requests[1], 2) 47 require.Len(requests[2], 1) 48 require.Equal(requests[0][0], ids[0]) 49 require.Equal(requests[0][1], ids[1]) 50 require.Equal(requests[1][0], ids[2]) 51 require.Equal(requests[1][1], ids[3]) 52 require.Equal(requests[2][0], ids[4]) 53 }