github.com/mongodb/grip@v0.0.0-20240213223901-f906268d82b9/send/benchmark/sender_test.go (about) 1 package send 2 3 import ( 4 "context" 5 "fmt" 6 "testing" 7 "time" 8 9 "github.com/mongodb/grip" 10 ) 11 12 const maxBenchTime = 1 * time.Minute 13 14 func wrapBenchmark(b *testing.B, bench benchCase) { 15 for _, msgSize := range messageSizes() { 16 b.Run(fmt.Sprintf("%dBytesPerMessage", msgSize), func(b *testing.B) { 17 for _, msgCount := range messageCounts() { 18 ctx, cancel := context.WithTimeout(context.Background(), maxBenchTime) 19 defer cancel() 20 b.Run(fmt.Sprintf("Send%dMessages", msgCount), wrapCase(ctx, b, msgSize, msgCount, bench)) 21 } 22 }) 23 } 24 } 25 26 func wrapCase(ctx context.Context, b *testing.B, size int, numMsgs int, bench benchCase) func(b *testing.B) { 27 return func(b *testing.B) { 28 b.ResetTimer() 29 err := bench(ctx, b, b.N, size, numMsgs) 30 if err != nil { 31 grip.Error(err) 32 } 33 } 34 } 35 36 func BenchmarkBufferedSender(b *testing.B) { 37 wrapBenchmark(b, bufferedSenderCase) 38 } 39 40 func BenchmarkCallSiteFileLogger(b *testing.B) { 41 wrapBenchmark(b, callSiteFileLoggerCase) 42 } 43 44 func BenchmarkFileLogger(b *testing.B) { 45 wrapBenchmark(b, fileLoggerCase) 46 } 47 48 func BenchmarkInMemorySender(b *testing.B) { 49 wrapBenchmark(b, inMemorySenderCase) 50 } 51 52 func BenchmarkJSONFileLogger(b *testing.B) { 53 wrapBenchmark(b, jsonFileLoggerCase) 54 } 55 56 func BenchmarkStreamLogger(b *testing.B) { 57 wrapBenchmark(b, streamLoggerCase) 58 }