test: fix TestAgent.Start() to not segfault if the DNSServer cannot ListenAndServe (#6409)
The embedded `Server` field on a `DNSServer` is only set inside of the `ListenAndServe` method. If that method fails for reasons like the address being in use and is not bindable, then the `Server` field will not be set and the overall `Agent.Start()` will fail. This will trigger the inner loop of `TestAgent.Start()` to invoke `ShutdownEndpoints` which will attempt to pretty print the DNS servers using fields on that inner `Server` field. Because it was never set, this causes a nil pointer dereference and crashes the test.
This commit is contained in:
parent
9662b7c01a
commit
0c5409d172
|
@ -1654,9 +1654,11 @@ func (a *Agent) ShutdownEndpoints() {
|
|||
}
|
||||
|
||||
for _, srv := range a.dnsServers {
|
||||
if srv.Server != nil {
|
||||
a.logger.Printf("[INFO] agent: Stopping DNS server %s (%s)", srv.Server.Addr, srv.Server.Net)
|
||||
srv.Shutdown()
|
||||
}
|
||||
}
|
||||
a.dnsServers = nil
|
||||
|
||||
for _, srv := range a.httpServers {
|
||||
|
|
|
@ -165,7 +165,7 @@ func (a *TestAgent) Start(t *testing.T) *TestAgent {
|
|||
a.Agent = agent
|
||||
break
|
||||
} else if i == 0 {
|
||||
require.Fail("%s %s Error starting agent: %s", id, a.Name, err)
|
||||
require.Failf("%s %s Error starting agent: %s", id, a.Name, err)
|
||||
} else if a.ExpectConfigError {
|
||||
// Panic the error since this can be caught if needed. Pretty gross way to
|
||||
// detect errors but enough for now and this is a tiny edge case that I'd
|
||||
|
|
Loading…
Reference in New Issue