Merge pull request #724 from vieux/fix_affinity_images_test

fix affinities.bats and add test in affinity_test.go
This commit is contained in:
Andrea Luzzardi 2015-05-05 19:32:47 -07:00
commit 2815f100bd
2 changed files with 70 additions and 7 deletions

View File

@ -193,3 +193,63 @@ func TestAffinityFilter(t *testing.T) {
assert.Len(t, result, 0) assert.Len(t, result, 0)
} }
func TestAffinityFilterLabels(t *testing.T) {
var (
f = AffinityFilter{}
nodes = []*node.Node{
{
ID: "node-0-id",
Name: "node-0-name",
Addr: "node-0",
Containers: []*cluster.Container{
{Container: dockerclient.Container{
Id: "container-n0-id",
Names: []string{"/container-n0-name"},
}},
},
Images: []*cluster.Image{{Image: dockerclient.Image{
Id: "image-0-id",
RepoTags: []string{"image-0:tag0"},
}}},
},
{
ID: "node-1-id",
Name: "node-1-name",
Addr: "node-1",
Containers: []*cluster.Container{
{Container: dockerclient.Container{
Id: "container-n1-id",
Names: []string{"/container-n1-name"},
}},
},
Images: []*cluster.Image{{Image: dockerclient.Image{
Id: "image-1-id",
RepoTags: []string{"image-1:tag1"},
}}},
},
}
result []*node.Node
err error
)
result, err = f.Filter(cluster.BuildContainerConfig(&dockerclient.ContainerConfig{Env: []string{"affinity:image==image-1"}}), nodes)
assert.NoError(t, err)
assert.Len(t, result, 1)
assert.Equal(t, result[0], nodes[1])
result, err = f.Filter(cluster.BuildContainerConfig(&dockerclient.ContainerConfig{Env: []string{"affinity:image!=image-1"}}), nodes)
assert.NoError(t, err)
assert.Len(t, result, 1)
assert.Equal(t, result[0], nodes[0])
result, err = f.Filter(cluster.BuildContainerConfig(&dockerclient.ContainerConfig{Labels: map[string]string{"com.docker.swarm.affinities": "[\"image==image-1\"]"}}), nodes)
assert.NoError(t, err)
assert.Len(t, result, 1)
assert.Equal(t, result[0], nodes[1])
result, err = f.Filter(cluster.BuildContainerConfig(&dockerclient.ContainerConfig{Labels: map[string]string{"com.docker.swarm.affinities": "[\"image!=image-1\"]"}}), nodes)
assert.NoError(t, err)
assert.Len(t, result, 1)
assert.Equal(t, result[0], nodes[0])
}

View File

@ -44,20 +44,23 @@ function teardown() {
} }
@test "image affinity" { @test "image affinity" {
#FIXME: Broken
skip
start_docker 2 start_docker 2
swarm_manage swarm_manage
run docker -H ${HOSTS[0]} pull busybox run docker -H ${HOSTS[0]} build -t test $BATS_TEST_DIRNAME/testdata/build
[ "$status" -eq 0 ] [ "$status" -eq 0 ]
run docker_swarm run --name c1 -e affinity:image==busybox -d busybox:latest sh
# pull busybox to force the refresh images
run docker_swarm pull busybox
[ "$status" -eq 0 ] [ "$status" -eq 0 ]
run docker_swarm run --name c2 -e affinity:image!=busybox -d busybox:latest sh
run docker_swarm run --name c1 -e affinity:image==test -d busybox:latest sh
[ "$status" -eq 0 ] [ "$status" -eq 0 ]
run docker_swarm run --name c3 --label 'com.docker.swarm.affinities=["image==busybox"]' -d busybox:latest sh run docker_swarm run --name c2 -e affinity:image!=test -d busybox:latest sh
[ "$status" -eq 0 ] [ "$status" -eq 0 ]
run docker_swarm run --name c4 --label 'com.docker.swarm.affinities=["image\!=busybox"]' -d busybox:latest sh run docker_swarm run --name c3 --label 'com.docker.swarm.affinities=["image==test"]' -d busybox:latest sh
[ "$status" -eq 0 ]
run docker_swarm run --name c4 --label 'com.docker.swarm.affinities=["image\!=test"]' -d busybox:latest sh
[ "$status" -eq 0 ] [ "$status" -eq 0 ]
run docker_swarm inspect c1 run docker_swarm inspect c1