Unit test go logs streaming client

Viewed 45

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?

0 Answers
Related