Im trying to unit test reconnection for a go HTTP client that makes a request to an external endpoint that streams server logs over HTTP. My client code looks something like
func PrintLogs() error {
resp, err := http.Get(logsUrl)
if err != nil {
return err
}
reader := bufio.NewReader(resp.Body)
line, isPrefix, err := reader.ReadLine()
for err == nil {
fmt.Print(string(line))
if !isPrefix {
fmt.Println()
}
line, isPrefix, err = reader.ReadLine()
}
if err != io.EOF {
return err
}
return nil
}
I'm calling this with a retry function that retries the method if it returns an error. I want to unit test that the method is retried if the server disconnects but can someone help me implement a mock server that streams data using net/http library?