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 }