84 lines
2.8 KiB
Go
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"),
|
|
)
|
|
})
|
|
})
|