Merge pull request #1313 from denverdino/origin-master

Fix the problem for the orders of filters
This commit is contained in:
Andrea Luzzardi 2015-10-19 13:56:49 -07:00
commit 31cba69ac6
2 changed files with 72 additions and 2 deletions

View File

@ -24,11 +24,11 @@ var (
func init() { func init() {
filters = []Filter{ filters = []Filter{
&AffinityFilter{},
&HealthFilter{}, &HealthFilter{},
&ConstraintFilter{},
&PortFilter{}, &PortFilter{},
&DependencyFilter{}, &DependencyFilter{},
&AffinityFilter{},
&ConstraintFilter{},
} }
} }

View File

@ -0,0 +1,70 @@
package filter
import (
"testing"
"github.com/docker/swarm/cluster"
"github.com/docker/swarm/scheduler/node"
"github.com/samalba/dockerclient"
"github.com/stretchr/testify/assert"
)
func TestApplyFilters(t *testing.T) {
var (
nodes = []*node.Node{
{
ID: "node-0-id",
Name: "node-0-name",
Addr: "node-0",
Containers: []*cluster.Container{
{Container: dockerclient.Container{
Id: "container-n0-0-id",
Names: []string{"/container-n0-0-name"},
}},
{Container: dockerclient.Container{
Id: "container-n0-1-id",
Names: []string{"/container-n0-1-name"},
}},
},
Images: []*cluster.Image{{Image: dockerclient.Image{
Id: "image-0-id",
RepoTags: []string{"image-0:tag1", "image-0:tag2"},
}}},
IsHealthy: true,
},
{
ID: "node-1-id",
Name: "node-1-name",
Addr: "node-1",
Containers: []*cluster.Container{
{
Container: dockerclient.Container{
Id: "container-n1-0-id",
Names: []string{"/container-n1-0-name"},
},
},
{
Container: dockerclient.Container{
Id: "container-n1-1-id",
Names: []string{"/container-n1-1-name"},
},
},
},
Images: []*cluster.Image{{Image: dockerclient.Image{
Id: "image-1-id",
RepoTags: []string{"image-1:tag1", "image-0:tag3", "image-1:tag2"},
}}},
IsHealthy: false,
},
}
result []*node.Node
err error
)
//Tests for Soft affinity, it should be considered as last
config := cluster.BuildContainerConfig(dockerclient.ContainerConfig{Env: []string{"affinity:image==~image-0:tag3"}})
result, err = ApplyFilters(filters, config, nodes)
assert.NoError(t, err)
assert.Len(t, result, 1)
}