From 648a18273d794f4601f463b01982af07c8c9a8e9 Mon Sep 17 00:00:00 2001 From: Nicolas De Loof Date: Tue, 20 Dec 2022 18:29:43 +0100 Subject: [PATCH 1/2] service hash MUST exclude replicas Signed-off-by: Nicolas De Loof --- pkg/compose/hash.go | 4 +++ pkg/compose/hash_test.go | 43 +++++++++++++++++++++++++ pkg/e2e/fixtures/logs-test/restart.yaml | 2 +- 3 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 pkg/compose/hash_test.go diff --git a/pkg/compose/hash.go b/pkg/compose/hash.go index 1e1abafad4..672af0ffc6 100644 --- a/pkg/compose/hash.go +++ b/pkg/compose/hash.go @@ -29,6 +29,10 @@ func ServiceHash(o types.ServiceConfig) (string, error) { o.Build = nil o.PullPolicy = "" o.Scale = 1 + if o.Deploy != nil { + var one uint64 = 1 + o.Deploy.Replicas = &one + } bytes, err := json.Marshal(o) if err != nil { return "", err diff --git a/pkg/compose/hash_test.go b/pkg/compose/hash_test.go new file mode 100644 index 0000000000..0520d6cee1 --- /dev/null +++ b/pkg/compose/hash_test.go @@ -0,0 +1,43 @@ +/* + Copyright 2020 Docker Compose CLI authors + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +package compose + +import ( + "testing" + + "github.com/compose-spec/compose-go/types" + "gotest.tools/v3/assert" +) + +func TestServiceHash(t *testing.T) { + hash1, err := ServiceHash(serviceConfig(1)) + assert.NilError(t, err) + hash2, err := ServiceHash(serviceConfig(2)) + assert.NilError(t, err) + assert.Equal(t, hash1, hash2) +} + +func serviceConfig(replicas uint64) types.ServiceConfig { + return types.ServiceConfig{ + Scale: int(replicas), + Deploy: &types.DeployConfig{ + Replicas: &replicas, + }, + Name: "foo", + Image: "bar", + } +} diff --git a/pkg/e2e/fixtures/logs-test/restart.yaml b/pkg/e2e/fixtures/logs-test/restart.yaml index fcee219836..35a2abb3de 100644 --- a/pkg/e2e/fixtures/logs-test/restart.yaml +++ b/pkg/e2e/fixtures/logs-test/restart.yaml @@ -1,5 +1,5 @@ services: ping: image: alpine - command: "sh -c 'ping -c 1 localhost && exit 1'" + command: "sh -c 'ping -c 2 localhost && exit 1'" restart: "on-failure:2" From ffa570f224cd83dc0a21613b686957fc4dbf03de Mon Sep 17 00:00:00 2001 From: Nicolas De Loof Date: Wed, 21 Dec 2022 08:33:52 +0100 Subject: [PATCH 2/2] remove flaky TestLocalComposeLogsFollow Signed-off-by: Nicolas De Loof --- pkg/e2e/logs_test.go | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/pkg/e2e/logs_test.go b/pkg/e2e/logs_test.go index 42cc91cfa3..42d47d050f 100644 --- a/pkg/e2e/logs_test.go +++ b/pkg/e2e/logs_test.go @@ -56,22 +56,3 @@ func TestLocalComposeLogs(t *testing.T) { _ = c.RunDockerComposeCmd(t, "--project-name", projectName, "down") }) } - -func TestLocalComposeLogsFollow(t *testing.T) { - c := NewParallelCLI(t) - - const projectName = "compose-e2e-logs-restart" - - t.Run("up", func(t *testing.T) { - c.RunDockerComposeCmd(t, "-f", "./fixtures/logs-test/restart.yaml", "--project-name", projectName, "up", "-d") - }) - - t.Run("logs", func(t *testing.T) { - res := c.RunDockerComposeCmd(t, "--project-name", projectName, "logs", "--follow") - assert.Check(t, strings.Count(res.Combined(), "PING localhost (127.0.0.1)") == 2, res.Combined()) - }) - - t.Run("down", func(t *testing.T) { - _ = c.RunDockerComposeCmd(t, "--project-name", projectName, "down") - }) -}