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  }