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  }