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"