File: helpers_test.go

package info (click to toggle)
docker.io 20.10.24%2Bdfsg1-1%2Bdeb12u1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 60,824 kB
  • sloc: sh: 5,621; makefile: 593; ansic: 179; python: 162; asm: 7
file content (66 lines) | stat: -rw-r--r-- 2,483 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
package genericresource

import (
	"testing"

	"github.com/docker/swarmkit/api"
	"github.com/stretchr/testify/assert"
)

func TestConsumeResourcesSingle(t *testing.T) {
	nodeAvailableResources := NewSet("apple", "red", "orange", "blue")
	res := NewSet("apple", "red")

	ConsumeNodeResources(&nodeAvailableResources, res)
	assert.Len(t, nodeAvailableResources, 2)

	nodeAvailableResources = append(nodeAvailableResources, NewDiscrete("apple", 1))
	res = []*api.GenericResource{NewDiscrete("apple", 1)}

	ConsumeNodeResources(&nodeAvailableResources, res)
	assert.Len(t, nodeAvailableResources, 2)

	nodeAvailableResources = append(nodeAvailableResources, NewDiscrete("apple", 4))
	res = []*api.GenericResource{NewDiscrete("apple", 1)}

	ConsumeNodeResources(&nodeAvailableResources, res)
	assert.Len(t, nodeAvailableResources, 3)
	assert.Equal(t, int64(3), nodeAvailableResources[2].GetDiscreteResourceSpec().Value)
}

func TestConsumeResourcesMultiple(t *testing.T) {
	nodeAvailableResources := NewSet("apple", "red", "orange", "blue", "green", "yellow")
	nodeAvailableResources = append(nodeAvailableResources, NewDiscrete("orange", 5))
	nodeAvailableResources = append(nodeAvailableResources, NewDiscrete("banana", 3))
	nodeAvailableResources = append(nodeAvailableResources, NewSet("grape", "red", "orange", "blue", "green", "yellow")...)
	nodeAvailableResources = append(nodeAvailableResources, NewDiscrete("cakes", 3))

	res := NewSet("apple", "red")
	res = append(res, NewDiscrete("banana", 2))
	res = append(res, NewSet("apple", "green", "blue", "red")...)
	res = append(res, NewSet("grape", "red", "blue", "red")...)
	res = append(res, NewDiscrete("cakes", 3))

	ConsumeNodeResources(&nodeAvailableResources, res)
	assert.Len(t, nodeAvailableResources, 7)

	apples := GetResource("apple", nodeAvailableResources)
	oranges := GetResource("orange", nodeAvailableResources)
	bananas := GetResource("banana", nodeAvailableResources)
	grapes := GetResource("grape", nodeAvailableResources)
	assert.Len(t, apples, 2)
	assert.Len(t, oranges, 1)
	assert.Len(t, bananas, 1)
	assert.Len(t, grapes, 3)

	for _, k := range []string{"yellow", "orange"} {
		assert.True(t, HasResource(NewString("apple", k), apples))
	}

	for _, k := range []string{"yellow", "orange", "green"} {
		assert.True(t, HasResource(NewString("grape", k), grapes))
	}

	assert.Equal(t, int64(5), oranges[0].GetDiscreteResourceSpec().Value)
	assert.Equal(t, int64(1), bananas[0].GetDiscreteResourceSpec().Value)
}