github.com/kaisenlinux/docker@v0.0.0-20230510090727-ea55db55fac7/swarmkit/api/genericresource/helpers_test.go (about)

     1  package genericresource
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/docker/swarmkit/api"
     7  	"github.com/stretchr/testify/assert"
     8  )
     9  
    10  func TestConsumeResourcesSingle(t *testing.T) {
    11  	nodeAvailableResources := NewSet("apple", "red", "orange", "blue")
    12  	res := NewSet("apple", "red")
    13  
    14  	ConsumeNodeResources(&nodeAvailableResources, res)
    15  	assert.Len(t, nodeAvailableResources, 2)
    16  
    17  	nodeAvailableResources = append(nodeAvailableResources, NewDiscrete("apple", 1))
    18  	res = []*api.GenericResource{NewDiscrete("apple", 1)}
    19  
    20  	ConsumeNodeResources(&nodeAvailableResources, res)
    21  	assert.Len(t, nodeAvailableResources, 2)
    22  
    23  	nodeAvailableResources = append(nodeAvailableResources, NewDiscrete("apple", 4))
    24  	res = []*api.GenericResource{NewDiscrete("apple", 1)}
    25  
    26  	ConsumeNodeResources(&nodeAvailableResources, res)
    27  	assert.Len(t, nodeAvailableResources, 3)
    28  	assert.Equal(t, int64(3), nodeAvailableResources[2].GetDiscreteResourceSpec().Value)
    29  }
    30  
    31  func TestConsumeResourcesMultiple(t *testing.T) {
    32  	nodeAvailableResources := NewSet("apple", "red", "orange", "blue", "green", "yellow")
    33  	nodeAvailableResources = append(nodeAvailableResources, NewDiscrete("orange", 5))
    34  	nodeAvailableResources = append(nodeAvailableResources, NewDiscrete("banana", 3))
    35  	nodeAvailableResources = append(nodeAvailableResources, NewSet("grape", "red", "orange", "blue", "green", "yellow")...)
    36  	nodeAvailableResources = append(nodeAvailableResources, NewDiscrete("cakes", 3))
    37  
    38  	res := NewSet("apple", "red")
    39  	res = append(res, NewDiscrete("banana", 2))
    40  	res = append(res, NewSet("apple", "green", "blue", "red")...)
    41  	res = append(res, NewSet("grape", "red", "blue", "red")...)
    42  	res = append(res, NewDiscrete("cakes", 3))
    43  
    44  	ConsumeNodeResources(&nodeAvailableResources, res)
    45  	assert.Len(t, nodeAvailableResources, 7)
    46  
    47  	apples := GetResource("apple", nodeAvailableResources)
    48  	oranges := GetResource("orange", nodeAvailableResources)
    49  	bananas := GetResource("banana", nodeAvailableResources)
    50  	grapes := GetResource("grape", nodeAvailableResources)
    51  	assert.Len(t, apples, 2)
    52  	assert.Len(t, oranges, 1)
    53  	assert.Len(t, bananas, 1)
    54  	assert.Len(t, grapes, 3)
    55  
    56  	for _, k := range []string{"yellow", "orange"} {
    57  		assert.True(t, HasResource(NewString("apple", k), apples))
    58  	}
    59  
    60  	for _, k := range []string{"yellow", "orange", "green"} {
    61  		assert.True(t, HasResource(NewString("grape", k), grapes))
    62  	}
    63  
    64  	assert.Equal(t, int64(5), oranges[0].GetDiscreteResourceSpec().Value)
    65  	assert.Equal(t, int64(1), bananas[0].GetDiscreteResourceSpec().Value)
    66  }