github.com/hernad/nomad@v1.6.112/nomad/drainer/drainer_util_test.go (about)

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