package service

import (
	"net/http"
	"testing"

	"github.com/pingcap-inc/clinic/clinic_data_service/pkg/config"
	"github.com/stretchr/testify/require"
	"go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp"
)

func TestFirstPartyServiceClientsUseTracingTransport(t *testing.T) {
	cfg := &config.DataProxyConfig{}
	tests := []struct {
		name   string
		client *http.Client
	}{
		{name: "BYOC slow query", client: NewBYOCSlowQueryService(nil).httpClient},
		{name: "BYOC statements", client: NewBYOCStatementsService(nil).httpClient},
		{name: "BYOC Top SQL", client: NewBYOCTopSQLService(nil).httpClient},
		{name: "Top RU", client: NewTopRUService(nil).httpClient},
		{name: "BYOC continuous profiling", client: NewBYOCContinuousProfilingService(nil).httpClient},
		{name: "metrics query", client: NewMetricsQueryService(cfg).httpClient},
		{name: "serverless parent metrics", client: NewServerlessParentMetricsService(cfg).httpClient},
		{name: "Loki proxy", client: NewLokiProxyService(cfg).httpClient},
	}

	for _, tt := range tests {
		t.Run(tt.name, func(t *testing.T) {
			require.IsType(t, &otelhttp.Transport{}, tt.client.Transport)
		})
	}
}
