(t *testing.T)
| 321 | } |
| 322 | |
| 323 | func TestPreStartHookRunsOnceForScaledService(t *testing.T) { |
| 324 | c := NewParallelCLI(t) |
| 325 | const ( |
| 326 | projectName = "hooks-pre-start-scaled" |
| 327 | composeFile = "fixtures/pre_start/scaled/compose.yaml" |
| 328 | ) |
| 329 | |
| 330 | t.Cleanup(func() { |
| 331 | c.RunDockerComposeCmd(t, "-f", composeFile, "--project-name", projectName, "down", "-v", "--remove-orphans", "-t", "0") |
| 332 | }) |
| 333 | |
| 334 | c.RunDockerComposeCmd(t, "-f", composeFile, "--project-name", projectName, "up", "-d", "--wait") |
| 335 | |
| 336 | // per_replica: false (default) → hook must run ONCE for the whole service, |
| 337 | // even with deploy.replicas: 2. |
| 338 | probe := c.RunDockerCmd(t, "run", "--rm", "-v", projectName+"_data:/mnt", "alpine", "wc", "-l", "/mnt/log") |
| 339 | assert.Assert(t, strings.HasPrefix(strings.TrimSpace(probe.Stdout()), "1 "), |
| 340 | "expected hook to run exactly once across replicas, got: %q", probe.Stdout()) |
| 341 | } |
nothing calls this directly
no test coverage detected