github.com/observiq/carbon@v0.9.11-0.20200820160507-1b872e368a5e/operator/builtin/transformer/host_metadata_test.go (about)

     1  package transformer
     2  
     3  import (
     4  	"context"
     5  	"sync"
     6  	"testing"
     7  
     8  	"github.com/observiq/carbon/entry"
     9  	"github.com/observiq/carbon/operator"
    10  	"github.com/observiq/carbon/testutil"
    11  	"github.com/stretchr/testify/require"
    12  )
    13  
    14  type hostMetadataBenchmark struct {
    15  	name   string
    16  	cfgMod func(*HostMetadataConfig)
    17  }
    18  
    19  func (g *hostMetadataBenchmark) Run(b *testing.B) {
    20  	cfg := NewHostMetadataConfig(g.name)
    21  	g.cfgMod(cfg)
    22  	op, err := cfg.Build(testutil.NewBuildContext(b))
    23  	require.NoError(b, err)
    24  
    25  	fake := testutil.NewFakeOutput(b)
    26  	op.(*HostMetadata).OutputOperators = []operator.Operator{fake}
    27  
    28  	b.ResetTimer()
    29  	var wg sync.WaitGroup
    30  	wg.Add(1)
    31  	go func() {
    32  		defer wg.Done()
    33  		for i := 0; i < b.N; i++ {
    34  			e := entry.New()
    35  			op.Process(context.Background(), e)
    36  		}
    37  		err = op.Stop()
    38  		require.NoError(b, err)
    39  	}()
    40  
    41  	wg.Add(1)
    42  	go func() {
    43  		defer wg.Done()
    44  		for i := 0; i < b.N; i++ {
    45  			<-fake.Received
    46  		}
    47  	}()
    48  
    49  	wg.Wait()
    50  }
    51  
    52  func BenchmarkHostMetadata(b *testing.B) {
    53  	cases := []hostMetadataBenchmark{
    54  		{
    55  			"Default",
    56  			func(cfg *HostMetadataConfig) {},
    57  		},
    58  		{
    59  			"NoHostname",
    60  			func(cfg *HostMetadataConfig) {
    61  				cfg.IncludeHostname = false
    62  			},
    63  		},
    64  	}
    65  
    66  	for _, tc := range cases {
    67  		b.Run(tc.name, tc.Run)
    68  	}
    69  }