|
|
|
package container
|
|
|
|
|
|
|
|
import (
|
|
|
|
"sort"
|
|
|
|
"testing"
|
|
|
|
|
|
|
|
"github.com/samalba/dockerclient"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
)
|
|
|
|
|
|
|
|
func TestByCreated(t *testing.T) {
|
|
|
|
c1 := Container{
|
|
|
|
containerInfo: &dockerclient.ContainerInfo{
|
|
|
|
Created: "2015-07-01T12:00:01.000000000Z",
|
|
|
|
},
|
|
|
|
}
|
|
|
|
c2 := Container{
|
|
|
|
containerInfo: &dockerclient.ContainerInfo{
|
|
|
|
Created: "2015-07-01T12:00:02.000000000Z",
|
|
|
|
},
|
|
|
|
}
|
|
|
|
c3 := Container{
|
|
|
|
containerInfo: &dockerclient.ContainerInfo{
|
|
|
|
Created: "2015-07-01T12:00:02.000000001Z",
|
|
|
|
},
|
|
|
|
}
|
|
|
|
cs := []Container{c3, c2, c1}
|
|
|
|
|
|
|
|
sort.Sort(ByCreated(cs))
|
|
|
|
|
|
|
|
assert.Equal(t, []Container{c1, c2, c3}, cs)
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestSortByDependencies_Success(t *testing.T) {
|
|
|
|
c1 := newTestContainer("1", []string{})
|
|
|
|
c2 := newTestContainer("2", []string{"1:"})
|
|
|
|
c3 := newTestContainer("3", []string{"2:"})
|
|
|
|
c4 := newTestContainer("4", []string{"3:"})
|
|
|
|
c5 := newTestContainer("5", []string{"4:"})
|
|
|
|
c6 := newTestContainer("6", []string{"5:", "3:"})
|
|
|
|
containers := []Container{c6, c2, c4, c1, c3, c5}
|
|
|
|
|
|
|
|
result, err := SortByDependencies(containers)
|
|
|
|
|
|
|
|
assert.NoError(t, err)
|
|
|
|
assert.Equal(t, []Container{c1, c2, c3, c4, c5, c6}, result)
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestSortByDependencies_Error(t *testing.T) {
|
|
|
|
c1 := newTestContainer("1", []string{"3:"})
|
|
|
|
c2 := newTestContainer("2", []string{"1:"})
|
|
|
|
c3 := newTestContainer("3", []string{"2:"})
|
|
|
|
containers := []Container{c1, c2, c3}
|
|
|
|
|
|
|
|
_, err := SortByDependencies(containers)
|
|
|
|
|
|
|
|
assert.Error(t, err)
|
|
|
|
assert.EqualError(t, err, "Circular reference to 1")
|
|
|
|
}
|
|
|
|
|
|
|
|
func newTestContainer(name string, links []string) Container {
|
|
|
|
return *NewContainer(
|
|
|
|
&dockerclient.ContainerInfo{
|
|
|
|
Name: name,
|
|
|
|
HostConfig: &dockerclient.HostConfig{
|
|
|
|
Links: links,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
nil,
|
|
|
|
)
|
|
|
|
}
|