| 155 | func (m *mapProvider) Shutdown(context.Context) error { return nil } |
| 156 | |
| 157 | func New(receiverCfg map[string]interface{}, pusher TracesPusher, middleware Middleware, retryAfterDuration time.Duration, logLevel dslog.Level, reg prometheus.Registerer) (services.Service, error) { |
| 158 | shim := &receiversShim{ |
| 159 | pusher: pusher, |
| 160 | logger: log.NewRateLimitedLogger(logsPerSecond, level.Error(log.Logger)), |
| 161 | fatal: make(chan error), |
| 162 | } |
| 163 | |
| 164 | if retryAfterDuration > 0 { |
| 165 | shim.retryDelay = durationpb.New(retryAfterDuration) |
| 166 | } |
| 167 | |
| 168 | // shim otel observability |
| 169 | zapLogger := newLogger(logLevel) |
| 170 | |
| 171 | // load config |
| 172 | receiverFactories, err := otelcol.MakeFactoryMap( |
| 173 | jaegerreceiver.NewFactory(), |
| 174 | zipkinreceiver.NewFactory(), |
| 175 | otlpreceiver.NewFactory(), |
| 176 | kafkareceiver.NewFactory(), |
| 177 | ) |
| 178 | if err != nil { |
| 179 | return nil, err |
| 180 | } |
| 181 | |
| 182 | for recv := range receiverCfg { |
| 183 | switch recv { |
| 184 | case "otlp": |
| 185 | statReceiverOtlp.Set(1) |
| 186 | case "jaeger": |
| 187 | statReceiverJaeger.Set(1) |
| 188 | case "zipkin": |
| 189 | statReceiverZipkin.Set(1) |
| 190 | case "kafka": |
| 191 | statReceiverKafka.Set(1) |
| 192 | } |
| 193 | } |
| 194 | |
| 195 | receivers := make([]string, 0, len(receiverCfg)) |
| 196 | for k := range receiverCfg { |
| 197 | receivers = append(receivers, k) |
| 198 | } |
| 199 | |
| 200 | // Define a factory function to create the mock provider |
| 201 | mockProviderFactory := confmap.NewProviderFactory(func(confmap.ProviderSettings) confmap.Provider { |
| 202 | return &mapProvider{ |
| 203 | raw: map[string]interface{}{ |
| 204 | "receivers": receiverCfg, |
| 205 | "exporters": map[string]interface{}{ |
| 206 | "nop": map[string]interface{}{}, |
| 207 | }, |
| 208 | "service": map[string]interface{}{ |
| 209 | "pipelines": map[string]interface{}{ |
| 210 | "traces": map[string]interface{}{ |
| 211 | "exporters": []string{"nop"}, // nop exporter to avoid errors |
| 212 | "receivers": receivers, |
| 213 | }, |
| 214 | }, |