Files
Joshua MacDonaldandGitHub 593537a94c Add context.Context to HTTP middleware interface constructors (#14549)
#### Description

API change in extensionmiddleware, an unstable package to allow
middleware access to the start context.

HTTP only. gRPC is treated in #14536.

This is technically a breaking change in configmiddleware and for all
implementations of this extension. We believe no one is using this
feature outside of this repository, see memorylimiter is fixed here.

#### Link to tracking issue

Part of
https://github.com/open-telemetry/opentelemetry-collector/issues/14523

#### Documentation

N/A
2026-03-01 21:43:32 +00:00

71 lines
1.6 KiB
Go

// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
package extensionmiddlewaretest
import (
"context"
"net/http"
"testing"
"github.com/stretchr/testify/require"
"go.opentelemetry.io/collector/extension/extensionmiddleware"
)
func TestNopClient(t *testing.T) {
testctx := context.Background()
client := NewNop()
httpClient, ok := client.(extensionmiddleware.HTTPClient)
require.True(t, ok)
rtfunc, err := httpClient.GetHTTPRoundTripper(context.Background())
require.NoError(t, err)
rt, err := rtfunc(testctx, nil)
require.NoError(t, err)
require.Nil(t, rt)
grpcClient, ok := client.(extensionmiddleware.GRPCClient)
require.True(t, ok)
grpcOpts, err := grpcClient.GetGRPCClientOptions(context.Background())
require.NoError(t, err)
require.Nil(t, grpcOpts)
}
func TestNopServer(t *testing.T) {
client := NewNop()
testctx := context.Background()
httpServer, ok := client.(extensionmiddleware.HTTPServer)
require.True(t, ok)
hfunc, err := httpServer.GetHTTPHandler(testctx)
require.NoError(t, err)
handler, err := hfunc(testctx, nil)
require.NoError(t, err)
require.Nil(t, handler)
grpcServer, ok := client.(extensionmiddleware.GRPCServer)
require.True(t, ok)
grpcOpts, err := grpcServer.GetGRPCServerOptions(context.Background())
require.NoError(t, err)
require.Nil(t, grpcOpts)
}
func TestRoundTripperFunc(t *testing.T) {
called := false
req := &http.Request{}
resp := &http.Response{}
f := RoundTripperFunc(func(r *http.Request) (*http.Response, error) {
require.Equal(t, r, req)
called = true
return resp, nil
})
result, _ := f.RoundTrip(req)
require.True(t, called)
require.Equal(t, resp, result)
}