Docker labels
This commit is contained in:
parent
101a4d0d8d
commit
4bdeb33ac1
8 changed files with 778 additions and 1237 deletions
|
@ -10,86 +10,8 @@ import (
|
|||
"github.com/docker/go-connections/nat"
|
||||
)
|
||||
|
||||
func TestDockerGetServiceProtocol(t *testing.T) {
|
||||
provider := &Provider{}
|
||||
|
||||
containers := []struct {
|
||||
container docker.ContainerJSON
|
||||
expected string
|
||||
}{
|
||||
{
|
||||
container: containerJSON(),
|
||||
expected: "http",
|
||||
},
|
||||
{
|
||||
container: containerJSON(labels(map[string]string{
|
||||
types.LabelProtocol: "https",
|
||||
})),
|
||||
expected: "https",
|
||||
},
|
||||
{
|
||||
container: containerJSON(labels(map[string]string{
|
||||
"traefik.myservice.protocol": "https",
|
||||
})),
|
||||
expected: "https",
|
||||
},
|
||||
}
|
||||
|
||||
for containerID, e := range containers {
|
||||
e := e
|
||||
t.Run(strconv.Itoa(containerID), func(t *testing.T) {
|
||||
t.Parallel()
|
||||
dockerData := parseContainer(e.container)
|
||||
actual := provider.getServiceProtocol(dockerData, "myservice")
|
||||
if actual != e.expected {
|
||||
t.Fatalf("expected %q, got %q", e.expected, actual)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestDockerGetServiceWeight(t *testing.T) {
|
||||
provider := &Provider{}
|
||||
|
||||
containers := []struct {
|
||||
container docker.ContainerJSON
|
||||
expected string
|
||||
}{
|
||||
{
|
||||
container: containerJSON(),
|
||||
expected: "0",
|
||||
},
|
||||
{
|
||||
container: containerJSON(labels(map[string]string{
|
||||
types.LabelWeight: "200",
|
||||
})),
|
||||
expected: "200",
|
||||
},
|
||||
{
|
||||
container: containerJSON(labels(map[string]string{
|
||||
"traefik.myservice.weight": "31337",
|
||||
})),
|
||||
expected: "31337",
|
||||
},
|
||||
}
|
||||
|
||||
for containerID, e := range containers {
|
||||
e := e
|
||||
t.Run(strconv.Itoa(containerID), func(t *testing.T) {
|
||||
t.Parallel()
|
||||
dockerData := parseContainer(e.container)
|
||||
actual := provider.getServiceWeight(dockerData, "myservice")
|
||||
if actual != e.expected {
|
||||
t.Fatalf("expected %q, got %q", e.expected, actual)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestDockerGetServicePort(t *testing.T) {
|
||||
provider := &Provider{}
|
||||
|
||||
containers := []struct {
|
||||
testCases := []struct {
|
||||
container docker.ContainerJSON
|
||||
expected string
|
||||
}{
|
||||
|
@ -111,14 +33,14 @@ func TestDockerGetServicePort(t *testing.T) {
|
|||
},
|
||||
}
|
||||
|
||||
for containerID, e := range containers {
|
||||
e := e
|
||||
for containerID, test := range testCases {
|
||||
test := test
|
||||
t.Run(strconv.Itoa(containerID), func(t *testing.T) {
|
||||
t.Parallel()
|
||||
dockerData := parseContainer(e.container)
|
||||
actual := provider.getServicePort(dockerData, "myservice")
|
||||
if actual != e.expected {
|
||||
t.Fatalf("expected %q, got %q", e.expected, actual)
|
||||
dockerData := parseContainer(test.container)
|
||||
actual := getServicePort(dockerData, "myservice")
|
||||
if actual != test.expected {
|
||||
t.Fatalf("expected %q, got %q", test.expected, actual)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
@ -127,7 +49,7 @@ func TestDockerGetServicePort(t *testing.T) {
|
|||
func TestDockerGetServiceFrontendRule(t *testing.T) {
|
||||
provider := &Provider{}
|
||||
|
||||
containers := []struct {
|
||||
testCases := []struct {
|
||||
container docker.ContainerJSON
|
||||
expected string
|
||||
}{
|
||||
|
@ -149,23 +71,21 @@ func TestDockerGetServiceFrontendRule(t *testing.T) {
|
|||
},
|
||||
}
|
||||
|
||||
for containerID, e := range containers {
|
||||
e := e
|
||||
for containerID, test := range testCases {
|
||||
test := test
|
||||
t.Run(strconv.Itoa(containerID), func(t *testing.T) {
|
||||
t.Parallel()
|
||||
dockerData := parseContainer(e.container)
|
||||
dockerData := parseContainer(test.container)
|
||||
actual := provider.getServiceFrontendRule(dockerData, "myservice")
|
||||
if actual != e.expected {
|
||||
t.Fatalf("expected %q, got %q", e.expected, actual)
|
||||
if actual != test.expected {
|
||||
t.Fatalf("expected %q, got %q", test.expected, actual)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestDockerGetServiceBackend(t *testing.T) {
|
||||
provider := &Provider{}
|
||||
|
||||
containers := []struct {
|
||||
testCases := []struct {
|
||||
container docker.ContainerJSON
|
||||
expected string
|
||||
}{
|
||||
|
@ -187,135 +107,21 @@ func TestDockerGetServiceBackend(t *testing.T) {
|
|||
},
|
||||
}
|
||||
|
||||
for containerID, e := range containers {
|
||||
e := e
|
||||
for containerID, test := range testCases {
|
||||
test := test
|
||||
t.Run(strconv.Itoa(containerID), func(t *testing.T) {
|
||||
t.Parallel()
|
||||
dockerData := parseContainer(e.container)
|
||||
actual := provider.getServiceBackend(dockerData, "myservice")
|
||||
if actual != e.expected {
|
||||
t.Fatalf("expected %q, got %q", e.expected, actual)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestDockerGetServicePriority(t *testing.T) {
|
||||
provider := &Provider{}
|
||||
|
||||
containers := []struct {
|
||||
container docker.ContainerJSON
|
||||
expected string
|
||||
}{
|
||||
{
|
||||
container: containerJSON(),
|
||||
expected: "0",
|
||||
},
|
||||
{
|
||||
container: containerJSON(labels(map[string]string{
|
||||
types.LabelFrontendPriority: "33",
|
||||
})),
|
||||
expected: "33",
|
||||
},
|
||||
{
|
||||
container: containerJSON(labels(map[string]string{
|
||||
"traefik.myservice.frontend.priority": "2503",
|
||||
})),
|
||||
expected: "2503",
|
||||
},
|
||||
}
|
||||
|
||||
for containerID, e := range containers {
|
||||
e := e
|
||||
t.Run(strconv.Itoa(containerID), func(t *testing.T) {
|
||||
t.Parallel()
|
||||
dockerData := parseContainer(e.container)
|
||||
actual := provider.getServicePriority(dockerData, "myservice")
|
||||
if actual != e.expected {
|
||||
t.Fatalf("expected %q, got %q", e.expected, actual)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestDockerGetServicePassHostHeader(t *testing.T) {
|
||||
provider := &Provider{}
|
||||
|
||||
containers := []struct {
|
||||
container docker.ContainerJSON
|
||||
expected string
|
||||
}{
|
||||
{
|
||||
container: containerJSON(),
|
||||
expected: "true",
|
||||
},
|
||||
{
|
||||
container: containerJSON(labels(map[string]string{
|
||||
types.LabelFrontendPassHostHeader: "false",
|
||||
})),
|
||||
expected: "false",
|
||||
},
|
||||
{
|
||||
container: containerJSON(labels(map[string]string{
|
||||
"traefik.myservice.frontend.passHostHeader": "false",
|
||||
})),
|
||||
expected: "false",
|
||||
},
|
||||
}
|
||||
|
||||
for containerID, e := range containers {
|
||||
e := e
|
||||
t.Run(strconv.Itoa(containerID), func(t *testing.T) {
|
||||
t.Parallel()
|
||||
dockerData := parseContainer(e.container)
|
||||
actual := provider.getServicePassHostHeader(dockerData, "myservice")
|
||||
if actual != e.expected {
|
||||
t.Fatalf("expected %q, got %q", e.expected, actual)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestDockerGetServiceEntryPoints(t *testing.T) {
|
||||
provider := &Provider{}
|
||||
|
||||
containers := []struct {
|
||||
container docker.ContainerJSON
|
||||
expected []string
|
||||
}{
|
||||
{
|
||||
container: containerJSON(),
|
||||
expected: []string{},
|
||||
},
|
||||
{
|
||||
container: containerJSON(labels(map[string]string{
|
||||
types.LabelFrontendEntryPoints: "http,https",
|
||||
})),
|
||||
expected: []string{"http", "https"},
|
||||
},
|
||||
{
|
||||
container: containerJSON(labels(map[string]string{
|
||||
"traefik.myservice.frontend.entryPoints": "http,https",
|
||||
})),
|
||||
expected: []string{"http", "https"},
|
||||
},
|
||||
}
|
||||
|
||||
for containerID, e := range containers {
|
||||
e := e
|
||||
t.Run(strconv.Itoa(containerID), func(t *testing.T) {
|
||||
t.Parallel()
|
||||
dockerData := parseContainer(e.container)
|
||||
actual := provider.getServiceEntryPoints(dockerData, "myservice")
|
||||
if !reflect.DeepEqual(actual, e.expected) {
|
||||
t.Fatalf("expected %q, got %q for container %q", e.expected, actual, dockerData.Name)
|
||||
dockerData := parseContainer(test.container)
|
||||
actual := getServiceBackend(dockerData, "myservice")
|
||||
if actual != test.expected {
|
||||
t.Fatalf("expected %q, got %q", test.expected, actual)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestDockerLoadDockerServiceConfig(t *testing.T) {
|
||||
cases := []struct {
|
||||
testCases := []struct {
|
||||
containers []docker.ContainerJSON
|
||||
expectedFrontends map[string]*types.Frontend
|
||||
expectedBackends map[string]*types.Backend
|
||||
|
@ -456,23 +262,23 @@ func TestDockerLoadDockerServiceConfig(t *testing.T) {
|
|||
ExposedByDefault: true,
|
||||
}
|
||||
|
||||
for caseID, c := range cases {
|
||||
c := c
|
||||
for caseID, test := range testCases {
|
||||
test := test
|
||||
t.Run(strconv.Itoa(caseID), func(t *testing.T) {
|
||||
t.Parallel()
|
||||
var dockerDataList []dockerData
|
||||
for _, container := range c.containers {
|
||||
for _, container := range test.containers {
|
||||
dockerData := parseContainer(container)
|
||||
dockerDataList = append(dockerDataList, dockerData)
|
||||
}
|
||||
|
||||
actualConfig := provider.loadDockerConfig(dockerDataList)
|
||||
// Compare backends
|
||||
if !reflect.DeepEqual(actualConfig.Backends, c.expectedBackends) {
|
||||
t.Fatalf("expected %#v, got %#v", c.expectedBackends, actualConfig.Backends)
|
||||
if !reflect.DeepEqual(actualConfig.Backends, test.expectedBackends) {
|
||||
t.Fatalf("expected %#v, got %#v", test.expectedBackends, actualConfig.Backends)
|
||||
}
|
||||
if !reflect.DeepEqual(actualConfig.Frontends, c.expectedFrontends) {
|
||||
t.Fatalf("expected %#v, got %#v", c.expectedFrontends, actualConfig.Frontends)
|
||||
if !reflect.DeepEqual(actualConfig.Frontends, test.expectedFrontends) {
|
||||
t.Fatalf("expected %#v, got %#v", test.expectedFrontends, actualConfig.Frontends)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue