package main import ( "bufio" "bytes" "encoding/json" "fmt" "testing" "time" ) func TestEventsApiGetLineDelim(t *testing.T) { name := "testimageevents" defer deleteImages(name) _, err := buildImage(name, `FROM scratch MAINTAINER "docker"`, true) if err != nil { t.Fatal(err) } if err := deleteImages(name); err != nil { t.Fatal(err) } endpoint := fmt.Sprintf("/events?since=1&until=%d", time.Now().Unix()) body, err := sockRequest("GET", endpoint) if err != nil { t.Fatal(err) } linesRead := 0 scanner := bufio.NewScanner(bytes.NewReader(body)) for scanner.Scan() && linesRead < 2 { line := scanner.Bytes() if len(line) == 0 { continue } // make sure line delimited json res := make(map[string]interface{}) if err := json.Unmarshal(line, &res); err != nil { t.Fatalf("Unmarshaling the line as JSON failed: %v", err) } linesRead++ } if err := scanner.Err(); err != nil { t.Fatalf("Scanner failed: %v", err) } if linesRead < 2 { t.Fatalf("Only %d lines were read from the stream", linesRead) } logDone("events - test the api response is line delimited json") }