Skip to content

Commit 88c3225

Browse files
authored
[chore] add first integration test for telemetrygen (#26668)
It shows trace ingest with otlp. Relates to #26659
1 parent a3aa0ef commit 88c3225

File tree

8 files changed

+1232
-13
lines changed

8 files changed

+1232
-13
lines changed

cmd/telemetrygen/go.mod

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,15 @@ go 1.20
44

55
require (
66
github.com/grpc-ecosystem/go-grpc-middleware v1.4.0
7+
github.com/open-telemetry/opentelemetry-collector-contrib/internal/common v0.85.0
78
github.com/spf13/cobra v1.7.0
89
github.com/spf13/pflag v1.0.5
910
github.com/stretchr/testify v1.8.4
1011
go.opentelemetry.io/collector/component v0.85.1-0.20230921012510-68dd7d763b59
12+
go.opentelemetry.io/collector/consumer v0.85.1-0.20230921012510-68dd7d763b59
1113
go.opentelemetry.io/collector/pdata v1.0.0-rcv0014.0.20230921012510-68dd7d763b59
14+
go.opentelemetry.io/collector/receiver v0.85.1-0.20230921012510-68dd7d763b59
15+
go.opentelemetry.io/collector/receiver/otlpreceiver v0.85.1-0.20230921012510-68dd7d763b59
1216
go.opentelemetry.io/collector/semconv v0.85.1-0.20230921012510-68dd7d763b59
1317
go.opentelemetry.io/otel v1.18.0
1418
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v0.41.0
@@ -27,24 +31,46 @@ require (
2731
require (
2832
github.com/cenkalti/backoff/v4 v4.2.1 // indirect
2933
github.com/davecgh/go-spew v1.1.1 // indirect
34+
github.com/felixge/httpsnoop v1.0.3 // indirect
35+
github.com/fsnotify/fsnotify v1.6.0 // indirect
3036
github.com/go-logr/logr v1.2.4 // indirect
3137
github.com/go-logr/stdr v1.2.2 // indirect
3238
github.com/gogo/protobuf v1.3.2 // indirect
3339
github.com/golang/protobuf v1.5.3 // indirect
40+
github.com/golang/snappy v0.0.4 // indirect
3441
github.com/grpc-ecosystem/grpc-gateway/v2 v2.18.0 // indirect
3542
github.com/inconshreveable/mousetrap v1.1.0 // indirect
3643
github.com/json-iterator/go v1.1.12 // indirect
44+
github.com/klauspost/compress v1.17.0 // indirect
3745
github.com/knadh/koanf v1.5.0 // indirect
3846
github.com/knadh/koanf/v2 v2.0.1 // indirect
3947
github.com/mitchellh/copystructure v1.2.0 // indirect
4048
github.com/mitchellh/mapstructure v1.5.1-0.20220423185008-bf980b35cac4 // indirect
4149
github.com/mitchellh/reflectwalk v1.0.2 // indirect
4250
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
4351
github.com/modern-go/reflect2 v1.0.2 // indirect
52+
github.com/mostynb/go-grpc-compression v1.2.1 // indirect
4453
github.com/pmezard/go-difflib v1.0.0 // indirect
54+
github.com/rs/cors v1.10.0 // indirect
55+
go.opencensus.io v0.24.0 // indirect
56+
go.opentelemetry.io/collector v0.85.0 // indirect
57+
go.opentelemetry.io/collector/config/configauth v0.85.1-0.20230921012510-68dd7d763b59 // indirect
58+
go.opentelemetry.io/collector/config/configcompression v0.85.1-0.20230921012510-68dd7d763b59 // indirect
59+
go.opentelemetry.io/collector/config/configgrpc v0.85.1-0.20230921012510-68dd7d763b59 // indirect
60+
go.opentelemetry.io/collector/config/confighttp v0.85.1-0.20230921012510-68dd7d763b59 // indirect
61+
go.opentelemetry.io/collector/config/confignet v0.85.1-0.20230921012510-68dd7d763b59 // indirect
62+
go.opentelemetry.io/collector/config/configopaque v0.85.1-0.20230921012510-68dd7d763b59 // indirect
4563
go.opentelemetry.io/collector/config/configtelemetry v0.85.1-0.20230921012510-68dd7d763b59 // indirect
64+
go.opentelemetry.io/collector/config/configtls v0.85.1-0.20230921012510-68dd7d763b59 // indirect
65+
go.opentelemetry.io/collector/config/internal v0.85.1-0.20230921012510-68dd7d763b59 // indirect
4666
go.opentelemetry.io/collector/confmap v0.85.1-0.20230921012510-68dd7d763b59 // indirect
67+
go.opentelemetry.io/collector/exporter v0.85.1-0.20230921012510-68dd7d763b59 // indirect
68+
go.opentelemetry.io/collector/extension v0.85.1-0.20230921012510-68dd7d763b59 // indirect
69+
go.opentelemetry.io/collector/extension/auth v0.85.1-0.20230921012510-68dd7d763b59 // indirect
4770
go.opentelemetry.io/collector/featuregate v1.0.0-rcv0014.0.20230921012510-68dd7d763b59 // indirect
71+
go.opentelemetry.io/collector/processor v0.85.1-0.20230921012510-68dd7d763b59 // indirect
72+
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.44.0 // indirect
73+
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.44.0 // indirect
4874
go.opentelemetry.io/otel/exporters/otlp/otlpmetric v0.41.0 // indirect
4975
go.opentelemetry.io/otel/metric v1.18.0 // indirect
5076
go.opentelemetry.io/proto/otlp v1.0.0 // indirect
@@ -63,3 +89,8 @@ retract (
6389
v0.76.1
6490
v0.65.0
6591
)
92+
93+
replace github.com/open-telemetry/opentelemetry-collector-contrib/internal/common => ../../internal/common
94+
95+
// ambiguous import: found package cloud.google.com/go/compute/metadata in multiple modules
96+
replace cloud.google.com/go => cloud.google.com/go v0.110.2

cmd/telemetrygen/go.sum

Lines changed: 1126 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cmd/telemetrygen/internal/common/config.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,11 @@ func (v *KeyValue) Type() string {
4444
}
4545

4646
type Config struct {
47-
WorkerCount int
48-
Rate int64
49-
TotalDuration time.Duration
50-
ReportingInterval time.Duration
47+
WorkerCount int
48+
Rate int64
49+
TotalDuration time.Duration
50+
ReportingInterval time.Duration
51+
SkipSettingGRPCLogger bool
5152

5253
// OTLP config
5354
Endpoint string

cmd/telemetrygen/internal/common/log.go

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,15 @@ import (
1111
)
1212

1313
// CreateLogger creates a logger for use by telemetrygen
14-
func CreateLogger() (*zap.Logger, error) {
14+
func CreateLogger(skipSettingGRPCLogger bool) (*zap.Logger, error) {
1515
logger, err := zap.NewDevelopment()
1616
if err != nil {
1717
return nil, fmt.Errorf("failed to obtain logger: %w", err)
1818
}
19-
grpcZap.ReplaceGrpcLoggerV2WithVerbosity(logger.WithOptions(
20-
zap.AddCallerSkip(3),
21-
), 1) // set to warn verbosity to avoid copious logging from grpc framework
19+
if !skipSettingGRPCLogger {
20+
grpcZap.ReplaceGrpcLoggerV2WithVerbosity(logger.WithOptions(
21+
zap.AddCallerSkip(3),
22+
), 1) // set to warn verbosity to avoid copious logging from grpc framework
23+
}
2224
return logger, err
2325
}

cmd/telemetrygen/internal/logs/logs.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ func (e *gRPCClientExporter) export(logs plog.Logs) error {
4040

4141
// Start starts the log telemetry generator
4242
func Start(cfg *Config) error {
43-
logger, err := common.CreateLogger()
43+
logger, err := common.CreateLogger(cfg.SkipSettingGRPCLogger)
4444
if err != nil {
4545
return err
4646
}

cmd/telemetrygen/internal/metrics/metrics.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ import (
2424

2525
// Start starts the metric telemetry generator
2626
func Start(cfg *Config) error {
27-
logger, err := common.CreateLogger()
27+
logger, err := common.CreateLogger(cfg.SkipSettingGRPCLogger)
2828
if err != nil {
2929
return err
3030
}

cmd/telemetrygen/internal/traces/traces.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ import (
2727
)
2828

2929
func Start(cfg *Config) error {
30-
logger, err := common.CreateLogger()
30+
logger, err := common.CreateLogger(cfg.SkipSettingGRPCLogger)
3131
if err != nil {
3232
return err
3333
}

cmd/telemetrygen/main_test.go

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
// Copyright The OpenTelemetry Authors
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
package main
5+
6+
import (
7+
"context"
8+
"testing"
9+
"time"
10+
11+
"github.com/stretchr/testify/require"
12+
"go.opentelemetry.io/collector/component/componenttest"
13+
"go.opentelemetry.io/collector/consumer/consumertest"
14+
"go.opentelemetry.io/collector/receiver/otlpreceiver"
15+
"go.opentelemetry.io/collector/receiver/receivertest"
16+
17+
"github.com/open-telemetry/opentelemetry-collector-contrib/cmd/telemetrygen/internal/common"
18+
"github.com/open-telemetry/opentelemetry-collector-contrib/cmd/telemetrygen/internal/traces"
19+
"github.com/open-telemetry/opentelemetry-collector-contrib/internal/common/testutil"
20+
)
21+
22+
func TestGenerateTraces(t *testing.T) {
23+
f := otlpreceiver.NewFactory()
24+
sink := &consumertest.TracesSink{}
25+
rCfg := f.CreateDefaultConfig()
26+
endpoint := testutil.GetAvailableLocalAddress(t)
27+
rCfg.(*otlpreceiver.Config).GRPC.NetAddr.Endpoint = endpoint
28+
r, err := f.CreateTracesReceiver(context.Background(), receivertest.NewNopCreateSettings(), rCfg, sink)
29+
require.NoError(t, err)
30+
err = r.Start(context.Background(), componenttest.NewNopHost())
31+
require.NoError(t, err)
32+
defer func() {
33+
require.NoError(t, r.Shutdown(context.Background()))
34+
}()
35+
cfg := &traces.Config{
36+
Config: common.Config{
37+
WorkerCount: 10,
38+
Rate: 10,
39+
TotalDuration: 10 * time.Second,
40+
ReportingInterval: 10,
41+
Endpoint: endpoint,
42+
Insecure: true,
43+
UseHTTP: false,
44+
Headers: nil,
45+
ResourceAttributes: nil,
46+
SkipSettingGRPCLogger: true,
47+
},
48+
NumTraces: 6000,
49+
ServiceName: "foo",
50+
StatusCode: "0",
51+
LoadSize: 0,
52+
Batch: true,
53+
}
54+
go func() {
55+
err = traces.Start(cfg)
56+
require.NoError(t, err)
57+
}()
58+
require.Eventually(t, func() bool {
59+
return len(sink.AllTraces()) > 0
60+
}, 10*time.Second, 100*time.Millisecond)
61+
}

0 commit comments

Comments
 (0)