Files
wehub-resource-sync 1b8708893a
Security Scan / tests (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:12:26 +08:00

84 lines
2.8 KiB
Go

package worker
import (
"os"
"strings"
. "github.com/onsi/ginkgo/v2"
. "github.com/onsi/gomega"
)
var _ = Describe("Worker address resolution", func() {
Describe("effectiveBasePort", func() {
DescribeTable("returns the correct port",
func(addr, serve string, want int) {
cfg := &Config{Addr: addr, ServeAddr: serve}
Expect(cfg.effectiveBasePort()).To(Equal(want))
},
Entry("Addr takes priority", "worker1.example.com:60000", "0.0.0.0:50051", 60000),
Entry("falls back to ServeAddr", "", "0.0.0.0:50051", 50051),
Entry("returns 50051 when neither set", "", "", 50051),
Entry("Addr with custom port", "10.0.0.5:7000", "", 7000),
Entry("invalid port in Addr falls through to ServeAddr", "host:notanumber", "0.0.0.0:9999", 9999),
)
})
Describe("advertiseAddr", func() {
It("returns AdvertiseAddr when set", func() {
cfg := &Config{
AdvertiseAddr: "public.example.com:50051",
Addr: "10.0.0.5:60000",
}
Expect(cfg.advertiseAddr()).To(Equal("public.example.com:50051"))
})
It("returns Addr when set", func() {
cfg := &Config{Addr: "worker1.example.com:60000"}
Expect(cfg.advertiseAddr()).To(Equal("worker1.example.com:60000"))
})
It("falls back to hostname:basePort", func() {
cfg := &Config{ServeAddr: "0.0.0.0:50051"}
got := cfg.advertiseAddr()
_, port, _ := strings.Cut(got, ":")
Expect(port).To(Equal("50051"))
hostname, _ := os.Hostname()
if hostname != "" {
host, _, _ := strings.Cut(got, ":")
Expect(host).To(Equal(hostname))
}
})
})
Describe("resolveHTTPAddr", func() {
DescribeTable("returns the correct address",
func(httpAddr, addr, serve, want string) {
cfg := &Config{HTTPAddr: httpAddr, Addr: addr, ServeAddr: serve}
Expect(cfg.resolveHTTPAddr()).To(Equal(want))
},
Entry("HTTPAddr takes priority", "0.0.0.0:8080", "", "", "0.0.0.0:8080"),
Entry("derives from Addr port minus 1", "", "worker1:60000", "0.0.0.0:50051", "0.0.0.0:59999"),
Entry("derives from ServeAddr port minus 1", "", "", "0.0.0.0:50051", "0.0.0.0:50050"),
Entry("default when nothing set", "", "", "", "0.0.0.0:50050"),
)
})
Describe("advertiseHTTPAddr", func() {
DescribeTable("returns the correct address",
func(advertiseHTTP, advertise, addr, serve, want string) {
cfg := &Config{
AdvertiseHTTPAddr: advertiseHTTP,
AdvertiseAddr: advertise,
Addr: addr,
ServeAddr: serve,
}
Expect(cfg.advertiseHTTPAddr()).To(Equal(want))
},
Entry("AdvertiseHTTPAddr takes priority", "public.example.com:8080", "", "", "", "public.example.com:8080"),
Entry("derives from advertiseAddr host + basePort-1", "", "", "worker1.example.com:60000", "", "worker1.example.com:59999"),
Entry("uses AdvertiseAddr host with basePort-1", "", "public.example.com:60000", "10.0.0.5:60000", "", "public.example.com:59999"),
)
})
})