mirror of https://github.com/docker/docs.git
107 lines
4.5 KiB
Go
107 lines
4.5 KiB
Go
package cluster
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/docker/engine-api/types/container"
|
|
"github.com/docker/engine-api/types/network"
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestBuildContainerConfig(t *testing.T) {
|
|
config := BuildContainerConfig(container.Config{}, container.HostConfig{}, network.NetworkingConfig{})
|
|
assert.Empty(t, config.Env)
|
|
assert.Empty(t, config.Labels)
|
|
|
|
config = BuildContainerConfig(container.Config{Env: []string{"test=true"}}, container.HostConfig{}, network.NetworkingConfig{})
|
|
assert.Len(t, config.Env, 1)
|
|
assert.Empty(t, config.Labels)
|
|
|
|
config = BuildContainerConfig(container.Config{Env: []string{"constraint:test==true"}}, container.HostConfig{}, network.NetworkingConfig{})
|
|
assert.Empty(t, config.Env)
|
|
assert.Len(t, config.Labels, 1)
|
|
|
|
config = BuildContainerConfig(container.Config{Env: []string{"affinity:container==test"}}, container.HostConfig{}, network.NetworkingConfig{})
|
|
assert.Empty(t, config.Env)
|
|
assert.Len(t, config.Labels, 1)
|
|
|
|
config = BuildContainerConfig(container.Config{Env: []string{"test=true", "constraint:test==true", "affinity:container==test"}}, container.HostConfig{}, network.NetworkingConfig{})
|
|
assert.Len(t, config.Env, 1)
|
|
assert.Len(t, config.Labels, 2)
|
|
}
|
|
|
|
func TestSwarmID(t *testing.T) {
|
|
// Getter / Setter
|
|
config := BuildContainerConfig(container.Config{}, container.HostConfig{}, network.NetworkingConfig{})
|
|
assert.Empty(t, config.SwarmID())
|
|
config.SetSwarmID("foo")
|
|
assert.Equal(t, config.SwarmID(), "foo")
|
|
assert.Equal(t, config.Labels[SwarmLabelNamespace+".id"], "foo")
|
|
|
|
// Retrieve an existing ID.
|
|
config = BuildContainerConfig(container.Config{Labels: map[string]string{SwarmLabelNamespace + ".id": "test"}}, container.HostConfig{}, network.NetworkingConfig{})
|
|
assert.Equal(t, config.SwarmID(), "test")
|
|
}
|
|
|
|
func TestConstraints(t *testing.T) {
|
|
config := BuildContainerConfig(container.Config{}, container.HostConfig{}, network.NetworkingConfig{})
|
|
assert.Empty(t, config.Constraints())
|
|
|
|
config = BuildContainerConfig(container.Config{Env: []string{"constraint:test==true"}}, container.HostConfig{}, network.NetworkingConfig{})
|
|
assert.Len(t, config.Constraints(), 1)
|
|
|
|
config = BuildContainerConfig(container.Config{Env: []string{"test=true", "constraint:test==true", "affinity:container==test"}}, container.HostConfig{}, network.NetworkingConfig{})
|
|
assert.Len(t, config.Constraints(), 1)
|
|
}
|
|
|
|
func TestAffinities(t *testing.T) {
|
|
config := BuildContainerConfig(container.Config{}, container.HostConfig{}, network.NetworkingConfig{})
|
|
assert.Empty(t, config.Affinities())
|
|
|
|
config = BuildContainerConfig(container.Config{Env: []string{"affinity:container==test"}}, container.HostConfig{}, network.NetworkingConfig{})
|
|
assert.Len(t, config.Affinities(), 1)
|
|
|
|
config = BuildContainerConfig(container.Config{Env: []string{"test=true", "constraint:test==true", "affinity:container==test"}}, container.HostConfig{}, network.NetworkingConfig{})
|
|
assert.Len(t, config.Affinities(), 1)
|
|
assert.Equal(t, len(config.Affinities()), 1)
|
|
}
|
|
|
|
func TestConsolidateResourceFields(t *testing.T) {
|
|
|
|
config := BuildContainerConfig(container.Config{}, container.HostConfig{Resources: container.Resources{Memory: 4242, MemorySwap: 4343, CPUShares: 4444, CpusetCpus: "1-2"}}, network.NetworkingConfig{})
|
|
assert.Equal(t, config.HostConfig.Memory, int64(4242))
|
|
assert.Equal(t, config.HostConfig.MemorySwap, int64(4343))
|
|
assert.Equal(t, config.HostConfig.CPUShares, int64(4444))
|
|
assert.Equal(t, config.HostConfig.CpusetCpus, "1-2")
|
|
}
|
|
|
|
func TestAddAffinity(t *testing.T) {
|
|
config := BuildContainerConfig(container.Config{}, container.HostConfig{}, network.NetworkingConfig{})
|
|
assert.Empty(t, config.Affinities())
|
|
|
|
config.AddAffinity("image==~testimage")
|
|
assert.Len(t, config.Affinities(), 1)
|
|
}
|
|
|
|
func TestRemoveAffinity(t *testing.T) {
|
|
config := BuildContainerConfig(container.Config{}, container.HostConfig{}, network.NetworkingConfig{})
|
|
assert.Empty(t, config.Affinities())
|
|
|
|
config.AddAffinity("image==~testimage1")
|
|
config.AddAffinity("image==~testimage2")
|
|
assert.Len(t, config.Affinities(), 2)
|
|
|
|
config.RemoveAffinity("image==~testimage1")
|
|
assert.Len(t, config.Affinities(), 1)
|
|
|
|
assert.Equal(t, config.Affinities()[0], "image==~testimage2")
|
|
}
|
|
|
|
func TestHaveNodeConstraint(t *testing.T) {
|
|
config := BuildContainerConfig(container.Config{}, container.HostConfig{}, network.NetworkingConfig{})
|
|
assert.False(t, config.HaveNodeConstraint())
|
|
|
|
config = BuildContainerConfig(container.Config{Env: []string{"constraint:node==node1"}}, container.HostConfig{}, network.NetworkingConfig{})
|
|
assert.True(t, config.HaveNodeConstraint())
|
|
}
|