package graylog import ( "bytes" "compress/zlib" "encoding/json" "io" "net" "sync" "testing" "github.com/influxdata/telegraf/testutil" "github.com/stretchr/testify/assert" ) func TestWrite(t *testing.T) { var wg sync.WaitGroup var wg2 sync.WaitGroup wg.Add(1) wg2.Add(1) go UDPServer(t, &wg, &wg2) wg2.Wait() i := Graylog{ Servers: []string{"127.0.0.1:12201"}, } i.Connect() metrics := testutil.MockMetrics() i.Write(metrics) wg.Wait() i.Close() } type GelfObject map[string]interface{} func UDPServer(t *testing.T, wg *sync.WaitGroup, wg2 *sync.WaitGroup) { serverAddr, _ := net.ResolveUDPAddr("udp", "127.0.0.1:12201") udpServer, _ := net.ListenUDP("udp", serverAddr) defer wg.Done() bufR := make([]byte, 1024) wg2.Done() n, _, _ := udpServer.ReadFromUDP(bufR) b := bytes.NewReader(bufR[0:n]) r, _ := zlib.NewReader(b) bufW := bytes.NewBuffer(nil) io.Copy(bufW, r) r.Close() var obj GelfObject json.Unmarshal(bufW.Bytes(), &obj) assert.Equal(t, obj["_value"], float64(1)) }