From d13cef6ff6b0dd26fa4272ea7518c463728e1094 Mon Sep 17 00:00:00 2001 From: Emile Vauge Date: Mon, 20 Mar 2017 13:34:07 +0100 Subject: [PATCH] sub-tests + Fatalf/Errorf Signed-off-by: Emile Vauge --- provider/docker_test.go | 536 ++++++++++++++++++++++++---------------- 1 file changed, 324 insertions(+), 212 deletions(-) diff --git a/provider/docker_test.go b/provider/docker_test.go index 9cea60fc2..0a3f5bd6f 100644 --- a/provider/docker_test.go +++ b/provider/docker_test.go @@ -15,6 +15,7 @@ import ( "github.com/docker/engine-api/types/swarm" "github.com/docker/go-connections/nat" "golang.org/x/net/context" + "strconv" ) func TestDockerGetFrontendName(t *testing.T) { @@ -89,12 +90,16 @@ func TestDockerGetFrontendName(t *testing.T) { }, } - for _, e := range containers { - dockerData := parseContainer(e.container) - actual := provider.getFrontendName(dockerData) - if actual != e.expected { - t.Fatalf("expected %q, got %q", e.expected, actual) - } + for containerID, e := range containers { + e := e + t.Run(strconv.Itoa(containerID), func(t *testing.T) { + t.Parallel() + dockerData := parseContainer(e.container) + actual := provider.getFrontendName(dockerData) + if actual != e.expected { + t.Errorf("expected %q, got %q", e.expected, actual) + } + }) } } @@ -153,12 +158,16 @@ func TestDockerGetFrontendRule(t *testing.T) { }, } - for _, e := range containers { - dockerData := parseContainer(e.container) - actual := provider.getFrontendRule(dockerData) - if actual != e.expected { - t.Fatalf("expected %q, got %q", e.expected, actual) - } + for containerID, e := range containers { + e := e + t.Run(strconv.Itoa(containerID), func(t *testing.T) { + t.Parallel() + dockerData := parseContainer(e.container) + actual := provider.getFrontendRule(dockerData) + if actual != e.expected { + t.Errorf("expected %q, got %q", e.expected, actual) + } + }) } } @@ -202,12 +211,16 @@ func TestDockerGetBackend(t *testing.T) { }, } - for _, e := range containers { - dockerData := parseContainer(e.container) - actual := provider.getBackend(dockerData) - if actual != e.expected { - t.Fatalf("expected %q, got %q", e.expected, actual) - } + for containerID, e := range containers { + e := e + t.Run(strconv.Itoa(containerID), func(t *testing.T) { + t.Parallel() + dockerData := parseContainer(e.container) + actual := provider.getBackend(dockerData) + if actual != e.expected { + t.Errorf("expected %q, got %q", e.expected, actual) + } + }) } } @@ -303,12 +316,16 @@ func TestDockerGetIPAddress(t *testing.T) { // TODO }, } - for _, e := range containers { - dockerData := parseContainer(e.container) - actual := provider.getIPAddress(dockerData) - if actual != e.expected { - t.Fatalf("expected %q, got %q", e.expected, actual) - } + for containerID, e := range containers { + e := e + t.Run(strconv.Itoa(containerID), func(t *testing.T) { + t.Parallel() + dockerData := parseContainer(e.container) + actual := provider.getIPAddress(dockerData) + if actual != e.expected { + t.Errorf("expected %q, got %q", e.expected, actual) + } + }) } } @@ -416,12 +433,16 @@ func TestDockerGetPort(t *testing.T) { }, } - for _, e := range containers { - dockerData := parseContainer(e.container) - actual := provider.getPort(dockerData) - if actual != e.expected { - t.Fatalf("expected %q, got %q", e.expected, actual) - } + for containerID, e := range containers { + e := e + t.Run(strconv.Itoa(containerID), func(t *testing.T) { + t.Parallel() + dockerData := parseContainer(e.container) + actual := provider.getPort(dockerData) + if actual != e.expected { + t.Errorf("expected %q, got %q", e.expected, actual) + } + }) } } @@ -456,12 +477,16 @@ func TestDockerGetWeight(t *testing.T) { }, } - for _, e := range containers { - dockerData := parseContainer(e.container) - actual := provider.getWeight(dockerData) - if actual != e.expected { - t.Fatalf("expected %q, got %q", e.expected, actual) - } + for containerID, e := range containers { + e := e + t.Run(strconv.Itoa(containerID), func(t *testing.T) { + t.Parallel() + dockerData := parseContainer(e.container) + actual := provider.getWeight(dockerData) + if actual != e.expected { + t.Errorf("expected %q, got %q", e.expected, actual) + } + }) } } @@ -498,12 +523,16 @@ func TestDockerGetDomain(t *testing.T) { }, } - for _, e := range containers { - dockerData := parseContainer(e.container) - actual := provider.getDomain(dockerData) - if actual != e.expected { - t.Fatalf("expected %q, got %q", e.expected, actual) - } + for containerID, e := range containers { + e := e + t.Run(strconv.Itoa(containerID), func(t *testing.T) { + t.Parallel() + dockerData := parseContainer(e.container) + actual := provider.getDomain(dockerData) + if actual != e.expected { + t.Errorf("expected %q, got %q", e.expected, actual) + } + }) } } @@ -538,12 +567,16 @@ func TestDockerGetProtocol(t *testing.T) { }, } - for _, e := range containers { - dockerData := parseContainer(e.container) - actual := provider.getProtocol(dockerData) - if actual != e.expected { - t.Fatalf("expected %q, got %q", e.expected, actual) - } + for containerID, e := range containers { + e := e + t.Run(strconv.Itoa(containerID), func(t *testing.T) { + t.Parallel() + dockerData := parseContainer(e.container) + actual := provider.getProtocol(dockerData) + if actual != e.expected { + t.Errorf("expected %q, got %q", e.expected, actual) + } + }) } } @@ -577,12 +610,16 @@ func TestDockerGetPassHostHeader(t *testing.T) { }, } - for _, e := range containers { - dockerData := parseContainer(e.container) - actual := provider.getPassHostHeader(dockerData) - if actual != e.expected { - t.Fatalf("expected %q, got %q", e.expected, actual) - } + for containerID, e := range containers { + e := e + t.Run(strconv.Itoa(containerID), func(t *testing.T) { + t.Parallel() + dockerData := parseContainer(e.container) + actual := provider.getPassHostHeader(dockerData) + if actual != e.expected { + t.Errorf("expected %q, got %q", e.expected, actual) + } + }) } } @@ -615,18 +652,22 @@ func TestDockerGetLabel(t *testing.T) { }, } - for _, e := range containers { - dockerData := parseContainer(e.container) - label, err := getLabel(dockerData, "foo") - if e.expected != "" { - if err == nil || !strings.Contains(err.Error(), e.expected) { - t.Fatalf("expected an error with %q, got %v", e.expected, err) + for containerID, e := range containers { + e := e + t.Run(strconv.Itoa(containerID), func(t *testing.T) { + t.Parallel() + dockerData := parseContainer(e.container) + label, err := getLabel(dockerData, "foo") + if e.expected != "" { + if err == nil || !strings.Contains(err.Error(), e.expected) { + t.Errorf("expected an error with %q, got %v", e.expected, err) + } + } else { + if label != "bar" { + t.Errorf("expected label 'bar', got %s", label) + } } - } else { - if label != "bar" { - t.Fatalf("expected label 'bar', got %s", label) - } - } + }) } } @@ -682,17 +723,21 @@ func TestDockerGetLabels(t *testing.T) { }, } - for _, e := range containers { - dockerData := parseContainer(e.container) - labels, err := getLabels(dockerData, []string{"foo", "bar"}) - if !reflect.DeepEqual(labels, e.expectedLabels) { - t.Fatalf("expect %v, got %v", e.expectedLabels, labels) - } - if e.expectedError != "" { - if err == nil || !strings.Contains(err.Error(), e.expectedError) { - t.Fatalf("expected an error with %q, got %v", e.expectedError, err) + for containerID, e := range containers { + e := e + t.Run(strconv.Itoa(containerID), func(t *testing.T) { + t.Parallel() + dockerData := parseContainer(e.container) + labels, err := getLabels(dockerData, []string{"foo", "bar"}) + if !reflect.DeepEqual(labels, e.expectedLabels) { + t.Errorf("expect %v, got %v", e.expectedLabels, labels) } - } + if e.expectedError != "" { + if err == nil || !strings.Contains(err.Error(), e.expectedError) { + t.Errorf("expected an error with %q, got %v", e.expectedError, err) + } + } + }) } } @@ -916,13 +961,17 @@ func TestDockerTraefikFilter(t *testing.T) { }, } - for _, e := range containers { - provider.ExposedByDefault = e.exposedByDefault - dockerData := parseContainer(e.container) - actual := provider.containerFilter(dockerData) - if actual != e.expected { - t.Fatalf("expected %v for %+v, got %+v", e.expected, e, actual) - } + for containerID, e := range containers { + e := e + t.Run(strconv.Itoa(containerID), func(t *testing.T) { + t.Parallel() + provider.ExposedByDefault = e.exposedByDefault + dockerData := parseContainer(e.container) + actual := provider.containerFilter(dockerData) + if actual != e.expected { + t.Errorf("expected %v for %+v, got %+v", e.expected, e, actual) + } + }) } } @@ -1138,21 +1187,25 @@ func TestDockerLoadDockerConfig(t *testing.T) { ExposedByDefault: true, } - for _, c := range cases { - var dockerDataList []dockerData - for _, container := range c.containers { - dockerData := parseContainer(container) - dockerDataList = append(dockerDataList, dockerData) - } + for caseID, c := range cases { + c := c + t.Run(strconv.Itoa(caseID), func(t *testing.T) { + t.Parallel() + var dockerDataList []dockerData + for _, container := range c.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.Frontends, c.expectedFrontends) { - t.Fatalf("expected %#v, got %#v", c.expectedFrontends, actualConfig.Frontends) - } + actualConfig := provider.loadDockerConfig(dockerDataList) + // Compare backends + if !reflect.DeepEqual(actualConfig.Backends, c.expectedBackends) { + t.Errorf("expected %#v, got %#v", c.expectedBackends, actualConfig.Backends) + } + if !reflect.DeepEqual(actualConfig.Frontends, c.expectedFrontends) { + t.Errorf("expected %#v, got %#v", c.expectedFrontends, actualConfig.Frontends) + } + }) } } @@ -1236,12 +1289,16 @@ func TestSwarmGetFrontendName(t *testing.T) { }, } - for _, e := range services { - dockerData := parseService(e.service, e.networks) - actual := provider.getFrontendName(dockerData) - if actual != e.expected { - t.Fatalf("expected %q, got %q", e.expected, actual) - } + for serviceID, e := range services { + e := e + t.Run(strconv.Itoa(serviceID), func(t *testing.T) { + t.Parallel() + dockerData := parseService(e.service, e.networks) + actual := provider.getFrontendName(dockerData) + if actual != e.expected { + t.Errorf("expected %q, got %q", e.expected, actual) + } + }) } } @@ -1308,12 +1365,16 @@ func TestSwarmGetFrontendRule(t *testing.T) { }, } - for _, e := range services { - dockerData := parseService(e.service, e.networks) - actual := provider.getFrontendRule(dockerData) - if actual != e.expected { - t.Fatalf("expected %q, got %q", e.expected, actual) - } + for serviceID, e := range services { + e := e + t.Run(strconv.Itoa(serviceID), func(t *testing.T) { + t.Parallel() + dockerData := parseService(e.service, e.networks) + actual := provider.getFrontendRule(dockerData) + if actual != e.expected { + t.Errorf("expected %q, got %q", e.expected, actual) + } + }) } } @@ -1365,12 +1426,16 @@ func TestSwarmGetBackend(t *testing.T) { }, } - for _, e := range services { - dockerData := parseService(e.service, e.networks) - actual := provider.getBackend(dockerData) - if actual != e.expected { - t.Fatalf("expected %q, got %q", e.expected, actual) - } + for serviceID, e := range services { + e := e + t.Run(strconv.Itoa(serviceID), func(t *testing.T) { + t.Parallel() + dockerData := parseService(e.service, e.networks) + actual := provider.getBackend(dockerData) + if actual != e.expected { + t.Errorf("expected %q, got %q", e.expected, actual) + } + }) } } @@ -1462,12 +1527,16 @@ func TestSwarmGetIPAddress(t *testing.T) { }, } - for _, e := range services { - dockerData := parseService(e.service, e.networks) - actual := provider.getIPAddress(dockerData) - if actual != e.expected { - t.Fatalf("expected %q, got %q", e.expected, actual) - } + for serviceID, e := range services { + e := e + t.Run(strconv.Itoa(serviceID), func(t *testing.T) { + t.Parallel() + dockerData := parseService(e.service, e.networks) + actual := provider.getIPAddress(dockerData) + if actual != e.expected { + t.Errorf("expected %q, got %q", e.expected, actual) + } + }) } } @@ -1500,12 +1569,16 @@ func TestSwarmGetPort(t *testing.T) { }, } - for _, e := range services { - dockerData := parseService(e.service, e.networks) - actual := provider.getPort(dockerData) - if actual != e.expected { - t.Fatalf("expected %q, got %q", e.expected, actual) - } + for serviceID, e := range services { + e := e + t.Run(strconv.Itoa(serviceID), func(t *testing.T) { + t.Parallel() + dockerData := parseService(e.service, e.networks) + actual := provider.getPort(dockerData) + if actual != e.expected { + t.Errorf("expected %q, got %q", e.expected, actual) + } + }) } } @@ -1552,12 +1625,16 @@ func TestSwarmGetWeight(t *testing.T) { }, } - for _, e := range services { - dockerData := parseService(e.service, e.networks) - actual := provider.getWeight(dockerData) - if actual != e.expected { - t.Fatalf("expected %q, got %q", e.expected, actual) - } + for serviceID, e := range services { + e := e + t.Run(strconv.Itoa(serviceID), func(t *testing.T) { + t.Parallel() + dockerData := parseService(e.service, e.networks) + actual := provider.getWeight(dockerData) + if actual != e.expected { + t.Errorf("expected %q, got %q", e.expected, actual) + } + }) } } @@ -1605,12 +1682,16 @@ func TestSwarmGetDomain(t *testing.T) { }, } - for _, e := range services { - dockerData := parseService(e.service, e.networks) - actual := provider.getDomain(dockerData) - if actual != e.expected { - t.Fatalf("expected %q, got %q", e.expected, actual) - } + for serviceID, e := range services { + e := e + t.Run(strconv.Itoa(serviceID), func(t *testing.T) { + t.Parallel() + dockerData := parseService(e.service, e.networks) + actual := provider.getDomain(dockerData) + if actual != e.expected { + t.Errorf("expected %q, got %q", e.expected, actual) + } + }) } } @@ -1657,12 +1738,16 @@ func TestSwarmGetProtocol(t *testing.T) { }, } - for _, e := range services { - dockerData := parseService(e.service, e.networks) - actual := provider.getProtocol(dockerData) - if actual != e.expected { - t.Fatalf("expected %q, got %q", e.expected, actual) - } + for serviceID, e := range services { + e := e + t.Run(strconv.Itoa(serviceID), func(t *testing.T) { + t.Parallel() + dockerData := parseService(e.service, e.networks) + actual := provider.getProtocol(dockerData) + if actual != e.expected { + t.Errorf("expected %q, got %q", e.expected, actual) + } + }) } } @@ -1709,17 +1794,20 @@ func TestSwarmGetPassHostHeader(t *testing.T) { }, } - for _, e := range services { - dockerData := parseService(e.service, e.networks) - actual := provider.getPassHostHeader(dockerData) - if actual != e.expected { - t.Fatalf("expected %q, got %q", e.expected, actual) - } + for serviceID, e := range services { + e := e + t.Run(strconv.Itoa(serviceID), func(t *testing.T) { + t.Parallel() + dockerData := parseService(e.service, e.networks) + actual := provider.getPassHostHeader(dockerData) + if actual != e.expected { + t.Errorf("expected %q, got %q", e.expected, actual) + } + }) } } func TestSwarmGetLabel(t *testing.T) { - services := []struct { service swarm.Service expected string @@ -1758,18 +1846,22 @@ func TestSwarmGetLabel(t *testing.T) { }, } - for _, e := range services { - dockerData := parseService(e.service, e.networks) - label, err := getLabel(dockerData, "foo") - if e.expected != "" { - if err == nil || !strings.Contains(err.Error(), e.expected) { - t.Fatalf("expected an error with %q, got %v", e.expected, err) + for serviceID, e := range services { + e := e + t.Run(strconv.Itoa(serviceID), func(t *testing.T) { + t.Parallel() + dockerData := parseService(e.service, e.networks) + label, err := getLabel(dockerData, "foo") + if e.expected != "" { + if err == nil || !strings.Contains(err.Error(), e.expected) { + t.Errorf("expected an error with %q, got %v", e.expected, err) + } + } else { + if label != "bar" { + t.Errorf("expected label 'bar', got %s", label) + } } - } else { - if label != "bar" { - t.Fatalf("expected label 'bar', got %s", label) - } - } + }) } } @@ -1830,17 +1922,21 @@ func TestSwarmGetLabels(t *testing.T) { }, } - for _, e := range services { - dockerData := parseService(e.service, e.networks) - labels, err := getLabels(dockerData, []string{"foo", "bar"}) - if !reflect.DeepEqual(labels, e.expectedLabels) { - t.Fatalf("expect %v, got %v", e.expectedLabels, labels) - } - if e.expectedError != "" { - if err == nil || !strings.Contains(err.Error(), e.expectedError) { - t.Fatalf("expected an error with %q, got %v", e.expectedError, err) + for serviceID, e := range services { + e := e + t.Run(strconv.Itoa(serviceID), func(t *testing.T) { + t.Parallel() + dockerData := parseService(e.service, e.networks) + labels, err := getLabels(dockerData, []string{"foo", "bar"}) + if !reflect.DeepEqual(labels, e.expectedLabels) { + t.Errorf("expect %v, got %v", e.expectedLabels, labels) } - } + if e.expectedError != "" { + if err == nil || !strings.Contains(err.Error(), e.expectedError) { + t.Errorf("expected an error with %q, got %v", e.expectedError, err) + } + } + }) } } @@ -1994,13 +2090,17 @@ func TestSwarmTraefikFilter(t *testing.T) { }, } - for _, e := range services { - dockerData := parseService(e.service, e.networks) - provider.ExposedByDefault = e.exposedByDefault - actual := provider.containerFilter(dockerData) - if actual != e.expected { - t.Fatalf("expected %v for %+v, got %+v", e.expected, e, actual) - } + for serviceID, e := range services { + e := e + t.Run(strconv.Itoa(serviceID), func(t *testing.T) { + t.Parallel() + dockerData := parseService(e.service, e.networks) + provider.ExposedByDefault = e.exposedByDefault + actual := provider.containerFilter(dockerData) + if actual != e.expected { + t.Errorf("expected %v for %+v, got %+v", e.expected, e, actual) + } + }) } } @@ -2171,21 +2271,25 @@ func TestSwarmLoadDockerConfig(t *testing.T) { SwarmMode: true, } - for _, c := range cases { - var dockerDataList []dockerData - for _, service := range c.services { - dockerData := parseService(service, c.networks) - dockerDataList = append(dockerDataList, dockerData) - } + for caseID, c := range cases { + c := c + t.Run(strconv.Itoa(caseID), func(t *testing.T) { + t.Parallel() + var dockerDataList []dockerData + for _, service := range c.services { + dockerData := parseService(service, c.networks) + 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.Frontends, c.expectedFrontends) { - t.Fatalf("expected %#v, got %#v", c.expectedFrontends, actualConfig.Frontends) - } + actualConfig := provider.loadDockerConfig(dockerDataList) + // Compare backends + if !reflect.DeepEqual(actualConfig.Backends, c.expectedBackends) { + t.Errorf("expected %#v, got %#v", c.expectedBackends, actualConfig.Backends) + } + if !reflect.DeepEqual(actualConfig.Frontends, c.expectedFrontends) { + t.Errorf("expected %#v, got %#v", c.expectedFrontends, actualConfig.Frontends) + } + }) } } @@ -2264,15 +2368,19 @@ func TestSwarmTaskParsing(t *testing.T) { }, } - for _, e := range cases { - dockerData := parseService(e.service, e.networks) + for caseID, e := range cases { + e := e + t.Run(strconv.Itoa(caseID), func(t *testing.T) { + t.Parallel() + dockerData := parseService(e.service, e.networks) - for _, task := range e.tasks { - taskDockerData := parseTasks(task, dockerData, map[string]*docker.NetworkResource{}, e.isGlobalSVC) - if !reflect.DeepEqual(taskDockerData.Name, e.expectedNames[task.ID]) { - t.Fatalf("expect %v, got %v", e.expectedNames[task.ID], taskDockerData.Name) + for _, task := range e.tasks { + taskDockerData := parseTasks(task, dockerData, map[string]*docker.NetworkResource{}, e.isGlobalSVC) + if !reflect.DeepEqual(taskDockerData.Name, e.expectedNames[task.ID]) { + t.Errorf("expect %v, got %v", e.expectedNames[task.ID], taskDockerData.Name) + } } - } + }) } } @@ -2349,19 +2457,23 @@ func TestListTasks(t *testing.T) { }, } - for _, e := range cases { - dockerData := parseService(e.service, e.networks) - dockerClient := &fakeTasksClient{tasks: e.tasks} - taskDockerData, _ := listTasks(context.Background(), dockerClient, e.service.ID, dockerData, map[string]*docker.NetworkResource{}, e.isGlobalSVC) + for caseID, e := range cases { + e := e + t.Run(strconv.Itoa(caseID), func(t *testing.T) { + t.Parallel() + dockerData := parseService(e.service, e.networks) + dockerClient := &fakeTasksClient{tasks: e.tasks} + taskDockerData, _ := listTasks(context.Background(), dockerClient, e.service.ID, dockerData, map[string]*docker.NetworkResource{}, e.isGlobalSVC) - if len(e.expectedTasks) != len(taskDockerData) { - t.Fatalf("expected tasks %v, got %v", spew.Sprint(e.expectedTasks), spew.Sprint(taskDockerData)) - } - - for i, taskID := range e.expectedTasks { - if taskDockerData[i].Name != taskID { - t.Fatalf("expect task id %v, got %v", taskID, taskDockerData[i].Name) + if len(e.expectedTasks) != len(taskDockerData) { + t.Errorf("expected tasks %v, got %v", spew.Sdump(e.expectedTasks), spew.Sdump(taskDockerData)) } - } + + for i, taskID := range e.expectedTasks { + if taskDockerData[i].Name != taskID { + t.Errorf("expect task id %v, got %v", taskID, taskDockerData[i].Name) + } + } + }) } }