Files
a80b2f13e7 bump minimum version of go to 1.25 (#14567)
Follows the normal procedure with the release of [go
1.26](https://go.dev/doc/devel/release#go1.26.0)

---------

Signed-off-by: alex boten <[email protected]>
Co-authored-by: Pablo Baeyens <[email protected]>
2026-02-22 00:54:50 -08:00

105 lines
2.6 KiB
Go

// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
package pprofileotlp
import (
"context"
"errors"
"net"
"sync"
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"google.golang.org/grpc"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/credentials/insecure"
"google.golang.org/grpc/resolver"
"google.golang.org/grpc/status"
"google.golang.org/grpc/test/bufconn"
"go.opentelemetry.io/collector/pdata/pprofile"
)
func TestGrpc(t *testing.T) {
lis := bufconn.Listen(1024 * 1024)
s := grpc.NewServer()
RegisterGRPCServer(s, &fakeProfilesServer{t: t})
wg := sync.WaitGroup{}
wg.Go(func() {
assert.NoError(t, s.Serve(lis))
})
t.Cleanup(func() {
s.Stop()
wg.Wait()
})
resolver.SetDefaultScheme("passthrough")
cc, err := grpc.NewClient("bufnet",
grpc.WithContextDialer(func(context.Context, string) (net.Conn, error) {
return lis.Dial()
}),
grpc.WithTransportCredentials(insecure.NewCredentials()))
require.NoError(t, err)
t.Cleanup(func() {
assert.NoError(t, cc.Close())
})
logClient := NewGRPCClient(cc)
resp, err := logClient.Export(context.Background(), generateProfilesRequest())
require.NoError(t, err)
assert.Equal(t, NewExportResponse(), resp)
}
func TestGrpcError(t *testing.T) {
lis := bufconn.Listen(1024 * 1024)
s := grpc.NewServer()
RegisterGRPCServer(s, &fakeProfilesServer{t: t, err: errors.New("my error")})
wg := sync.WaitGroup{}
wg.Go(func() {
assert.NoError(t, s.Serve(lis))
})
t.Cleanup(func() {
s.Stop()
wg.Wait()
})
cc, err := grpc.NewClient("bufnet",
grpc.WithContextDialer(func(context.Context, string) (net.Conn, error) {
return lis.Dial()
}),
grpc.WithTransportCredentials(insecure.NewCredentials()))
require.NoError(t, err)
t.Cleanup(func() {
assert.NoError(t, cc.Close())
})
logClient := NewGRPCClient(cc)
resp, err := logClient.Export(context.Background(), generateProfilesRequest())
require.Error(t, err)
st, okSt := status.FromError(err)
require.True(t, okSt)
assert.Equal(t, "my error", st.Message())
assert.Equal(t, codes.Unknown, st.Code())
assert.Equal(t, ExportResponse{}, resp)
}
type fakeProfilesServer struct {
UnimplementedGRPCServer
t *testing.T
err error
}
func (f fakeProfilesServer) Export(_ context.Context, request ExportRequest) (ExportResponse, error) {
assert.Equal(f.t, generateProfilesRequest(), request)
return NewExportResponse(), f.err
}
func generateProfilesRequest() ExportRequest {
td := pprofile.NewProfiles()
td.ResourceProfiles().AppendEmpty().ScopeProfiles().AppendEmpty().Profiles().AppendEmpty()
return NewExportRequestFromProfiles(td)
}