package diode_test import ( "bytes" "fmt" "io/ioutil" "log" "os" "testing" "time" "github.com/rs/zerolog" "github.com/rs/zerolog/diode" "github.com/rs/zerolog/internal/cbor" ) func TestNewWriter(t *testing.T) { buf := bytes.Buffer{} w := diode.NewWriter(&buf, 1000, 0, func(missed int) { fmt.Printf("Dropped %d messages\n", missed) }) log := zerolog.New(w) log.Print("test") w.Close() want := "{\"level\":\"debug\",\"message\":\"test\"}\n" got := cbor.DecodeIfBinaryToString(buf.Bytes()) if got != want { t.Errorf("Diode New Writer Test failed. got:%s, want:%s!", got, want) } } func Benchmark(b *testing.B) { log.SetOutput(ioutil.Discard) defer log.SetOutput(os.Stderr) benchs := map[string]time.Duration{ "Waiter": 0, "Pooler": 10 * time.Millisecond, } for name, interval := range benchs { b.Run(name, func(b *testing.B) { w := diode.NewWriter(ioutil.Discard, 100000, interval, nil) log := zerolog.New(w) defer w.Close() b.SetParallelism(1000) b.RunParallel(func(pb *testing.PB) { for pb.Next() { log.Print("test") } }) }) } }