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 }