diff --git a/modules/gitea/cmd/forge/templates_test.go b/modules/gitea/cmd/forge/templates_test.go index 7d0718b5..3b516c5c 100644 --- a/modules/gitea/cmd/forge/templates_test.go +++ b/modules/gitea/cmd/forge/templates_test.go @@ -62,3 +62,29 @@ func TestEveryFileTakesItsTextFromATemplate(t *testing.T) { t.Errorf("the build packs files/ into %d archives, not one", packs) } } + +// The forge's sshd takes a burst of the mesh's machines fetching at once: the image's MaxStartups raised from OpenSSH's +// default 10:30:100 to 100:30:200 through SSH_MAX_STARTUPS, which dropped ace's thirteen connections at once. +func TestTheForgesSshdTakesABurstOfTheMeshsMachines(t *testing.T) { + raw, err := os.ReadFile(filepath.Join(moduleDir, "module.json")) + if err != nil { + t.Fatal(err) + } + var m struct { + Resources []map[string]any `json:"resources"` + } + if err := json.Unmarshal(raw, &m); err != nil { + t.Fatal(err) + } + for _, r := range m.Resources { + if r["id"] != "server" { + continue + } + env, _ := r["env"].(map[string]any) + if env["SSH_MAX_STARTUPS"] != "100:30:200" { + t.Errorf("SSH_MAX_STARTUPS is %v, not 100:30:200", env["SSH_MAX_STARTUPS"]) + } + return + } + t.Error("the manifest has no server container") +} diff --git a/modules/gitea/module.json b/modules/gitea/module.json index 69b88adb..2b197288 100644 --- a/modules/gitea/module.json +++ b/modules/gitea/module.json @@ -266,7 +266,8 @@ "env": { "DB_TYPE": "postgres", "USER_UID": "1000", - "USER_GID": "1000" + "USER_GID": "1000", + "SSH_MAX_STARTUPS": "100:30:200" }, "env-file": [ "${dir:state}/server.env"