forked from docker-archive/classicswarm
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcluster_test.go
92 lines (81 loc) · 2.5 KB
/
cluster_test.go
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
package mesos
import (
"testing"
"time"
"github.com/docker/swarm/cluster"
"github.com/samalba/dockerclient"
"github.com/stretchr/testify/assert"
)
func createAgent(t *testing.T, ID string, containers ...*cluster.Container) *agent {
engOpts := &cluster.EngineOpts{
RefreshMinInterval: time.Duration(30) * time.Second,
RefreshMaxInterval: time.Duration(60) * time.Second,
FailureRetry: 3,
}
engine := cluster.NewEngine(ID, 0, engOpts)
engine.Name = ID
engine.ID = ID
for _, container := range containers {
container.Engine = engine
engine.AddContainer(container)
}
return newAgent("agent-"+ID, engine)
}
func TestContainerLookup(t *testing.T) {
c := &Cluster{
agents: make(map[string]*agent),
}
container1 := &cluster.Container{
Container: dockerclient.Container{
Id: "container1-id",
Names: []string{"/container1-name1", "/container1-name2"},
},
Config: cluster.BuildContainerConfig(dockerclient.ContainerConfig{
Labels: map[string]string{
"com.docker.swarm.mesos.task": "task1-id",
"com.docker.swarm.mesos.name": "container1-name1",
},
}),
}
container2 := &cluster.Container{
Container: dockerclient.Container{
Id: "container2-id",
Names: []string{"/con"},
},
Config: cluster.BuildContainerConfig(dockerclient.ContainerConfig{
Labels: map[string]string{
"com.docker.swarm.mesos.task": "task2-id",
"com.docker.swarm.mesos.name": "con",
},
}),
}
container3 := &cluster.Container{
Container: dockerclient.Container{
Id: "container3-id",
Names: []string{"/container3-name"},
},
Config: cluster.BuildContainerConfig(dockerclient.ContainerConfig{}),
}
s := createAgent(t, "test-engine", container1, container2, container3)
c.agents[s.id] = s
// Hide container without `com.docker.swarm.mesos.task`
assert.Equal(t, len(c.Containers()), 2)
// Invalid lookup
assert.Nil(t, c.Container("invalid-id"))
assert.Nil(t, c.Container(""))
// Container ID lookup.
assert.NotNil(t, c.Container("container1-id"))
// Container ID prefix lookup.
assert.NotNil(t, c.Container("container1-"))
assert.Nil(t, c.Container("container"))
// Container name lookup.
assert.NotNil(t, c.Container("container1-name1"))
assert.NotNil(t, c.Container("container1-name2"))
// Container engine/name matching.
assert.NotNil(t, c.Container("test-engine/container1-name1"))
assert.NotNil(t, c.Container("test-engine/container1-name2"))
// Match name before ID prefix
cc := c.Container("con")
assert.NotNil(t, cc)
assert.Equal(t, cc.Id, "container2-id")
}