github.com/prom3t3us/turbocookedrabbit@v1.2.4/tests/main_benchpool_test.go (about)

     1  package main_test
     2  
     3  import (
     4  	"context"
     5  	"runtime/trace"
     6  	"testing"
     7  
     8  	"github.com/prom3t3us/turbocookedrabbit/pools"
     9  	"github.com/prom3t3us/turbocookedrabbit/utils"
    10  	"github.com/streadway/amqp"
    11  )
    12  
    13  func BenchmarkGetMultiChannelAndPublish(b *testing.B) {
    14  	b.ReportAllocs()
    15  	_, task := trace.NewTask(context.Background(), "BenchmarkGetMultiChannelAndPublish")
    16  	defer task.End()
    17  
    18  	messageSize := 1000
    19  	channelPool, _ := pools.NewChannelPool(Seasoning.PoolConfig, nil, true)
    20  	letter := utils.CreateMockRandomLetter("ConsumerTestQueue")
    21  	poolErrors := 0
    22  
    23  	for i := 0; i < messageSize; i++ {
    24  		channelHost, err := channelPool.GetChannel()
    25  		if err != nil {
    26  			poolErrors++
    27  			continue
    28  		}
    29  
    30  		go func() {
    31  			err := channelHost.Channel.Publish(
    32  				letter.Envelope.Exchange,
    33  				letter.Envelope.RoutingKey,
    34  				letter.Envelope.Mandatory,
    35  				letter.Envelope.Immediate,
    36  				amqp.Publishing{
    37  					ContentType: letter.Envelope.ContentType,
    38  					Body:        letter.Body,
    39  				})
    40  
    41  			if err != nil {
    42  				b.Log(err)
    43  			}
    44  		}()
    45  
    46  		channelPool.ReturnChannel(channelHost, false)
    47  	}
    48  }
    49  
    50  func BenchmarkGetSingleChannelAndPublish(b *testing.B) {
    51  	b.ReportAllocs()
    52  	_, task := trace.NewTask(context.Background(), "BenchmarkGetSingleChannelAndPublish")
    53  	defer task.End()
    54  
    55  	messageSize := 1000
    56  	channelPool, _ := pools.NewChannelPool(Seasoning.PoolConfig, nil, true)
    57  	letter := utils.CreateMockRandomLetter("ConsumerTestQueue")
    58  
    59  	var err error
    60  	channelHost, err := channelPool.GetChannel()
    61  	if err != nil {
    62  		b.Log(err.Error())
    63  	}
    64  
    65  	for i := 0; i < messageSize; i++ {
    66  		err = channelHost.Channel.Publish(
    67  			letter.Envelope.Exchange,
    68  			letter.Envelope.RoutingKey,
    69  			letter.Envelope.Mandatory,
    70  			letter.Envelope.Immediate,
    71  			amqp.Publishing{
    72  				ContentType: letter.Envelope.ContentType,
    73  				Body:        letter.Body,
    74  			})
    75  
    76  		if err != nil {
    77  			b.Log(err)
    78  		}
    79  	}
    80  
    81  	channelPool.ReturnChannel(channelHost, false)
    82  }