- Split OriginLoadBalancer into OriginService / HLSService / RTCService;
the original interface now embeds the three role interfaces. Generate
counterfeiter fakes for all four.
- Extract internal/redisclient: RedisClient interface + New() factory.
internal/lb/redis.go no longer imports github.com/go-redis/redis/v8.
- Add unit tests for lb.go (OriginServer.ID/String/Format/NewOriginServer)
and for the full memory + redis load balancers.
- Replace package-level test seams (memoryKeepaliveInterval, newRedisClient,
redisKeepaliveInterval, signal.signalNotify/osExit, rtmp.createBuffer) with
per-instance struct fields so concurrent tests can't race on them.
- Promote signal.InstallSignals / InstallForceQuit onto a new signal.Handler
type; update bootstrap to construct one.
- Move rtmp createBuffer onto amf0ObjectBase as bufFactory; the three AMF0
marshalers and their tests use the per-instance factory.
- Make proxy test scripts locate the workspace by walking up to go.mod
instead of brittle '../../../..' counting (symlink-aware).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>