From b1b56b80c2056419b505cfd83d0a5f9cfe7db4e4 Mon Sep 17 00:00:00 2001 From: adeniyistephen Date: Wed, 2 Dec 2020 01:27:24 +0100 Subject: [PATCH] Allow publishing same port as UDP and TCP using docker stack deploy(Trying tests) Signed-off-by: adeniyistephen --- cli/compose/loader/merge.go | 2 +- cli/compose/loader/merge_test.go | 41 ++++++++++++++++++++++++++------ 2 files changed, 35 insertions(+), 8 deletions(-) diff --git a/cli/compose/loader/merge.go b/cli/compose/loader/merge.go index 0de8d8a1b6..ec52224e2d 100644 --- a/cli/compose/loader/merge.go +++ b/cli/compose/loader/merge.go @@ -111,7 +111,7 @@ func toServicePortConfigsMap(s interface{}) (map[interface{}]interface{}, error) } m := map[interface{}]interface{}{} for _, p := range ports { - m[p.Published] = p + m[p] = p } return m, nil } diff --git a/cli/compose/loader/merge_test.go b/cli/compose/loader/merge_test.go index 4828df8548..f5ab5e0061 100644 --- a/cli/compose/loader/merge_test.go +++ b/cli/compose/loader/merge_test.go @@ -237,7 +237,10 @@ func TestLoadMultipleServicePorts(t *testing.T) { name: "no_override", portBase: map[string]interface{}{ "ports": []interface{}{ - "8080:80", + Mode: "ingress", + Published: 8080, + Target: 80, + Protocol: "tcp", }, }, portOverride: map[string]interface{}{}, @@ -254,12 +257,18 @@ func TestLoadMultipleServicePorts(t *testing.T) { name: "override_different_published", portBase: map[string]interface{}{ "ports": []interface{}{ - "8080:80", + Mode: "ingress", + Published: 8080, + Target: 80, + Protocol: "tcp", }, }, portOverride: map[string]interface{}{ "ports": []interface{}{ - "8081:80", + Mode: "ingress", + Published: 8081, + Target: 80, + Protocol: "tcp", }, }, expected: []types.ServicePortConfig{ @@ -281,12 +290,18 @@ func TestLoadMultipleServicePorts(t *testing.T) { name: "override_same_published", portBase: map[string]interface{}{ "ports": []interface{}{ - "8080:80", + Mode: "ingress", + Published: 8080, + Target: 80, + Protocol: "tcp", }, }, portOverride: map[string]interface{}{ "ports": []interface{}{ - "8080:81", + Mode: "ingress", + Published: 8080, + Target: 81, + Protocol: "tcp", }, }, expected: []types.ServicePortConfig{ @@ -843,8 +858,18 @@ func TestLoadMultipleConfigs(t *testing.T) { "dockerfile": "bar.Dockerfile", }, "ports": []interface{}{ - "8080:80", - "9090:90", + { + Mode: "ingress", + Published: 8080, + Target: 80, + Protocol: "tcp", + }, + { + Mode: "ingress", + Published: 9090, + Target: 90, + Protocol: "tcp", + } }, "labels": []interface{}{ "foo=bar", @@ -873,8 +898,10 @@ func TestLoadMultipleConfigs(t *testing.T) { }, "ports": []interface{}{ map[string]interface{}{ + "Mode": "ingress", "target": 81, "published": 8080, + "Protocol": "tcp", }, }, "labels": map[string]interface{}{