update the as per the comment
This commit is contained in:
@@ -17,7 +17,6 @@ import (
|
||||
"github.com/beckn-one/beckn-onix/core/module/handler"
|
||||
"github.com/beckn-one/beckn-onix/pkg/log"
|
||||
"github.com/beckn-one/beckn-onix/pkg/plugin"
|
||||
"github.com/beckn-one/beckn-onix/pkg/telemetry"
|
||||
)
|
||||
|
||||
// ApplicationPlugins holds application-level plugin configurations.
|
||||
@@ -99,29 +98,24 @@ func validateConfig(cfg *Config) error {
|
||||
}
|
||||
|
||||
// initPlugins initializes application-level plugins including telemetry.
|
||||
func initPlugins(ctx context.Context, mgr *plugin.Manager, otelSetupCfg *plugin.Config) (*telemetry.Provider, error) {
|
||||
func initPlugins(ctx context.Context, mgr *plugin.Manager, otelSetupCfg *plugin.Config) error {
|
||||
if otelSetupCfg == nil {
|
||||
log.Info(ctx, "Telemetry config not provided; skipping OpenTelemetry setup")
|
||||
return nil, nil
|
||||
return nil
|
||||
}
|
||||
|
||||
log.Infof(ctx, "Initializing telemetry via plugin id=%s", otelSetupCfg.ID)
|
||||
otelProvider, err := mgr.OtelSetup(ctx, otelSetupCfg)
|
||||
_, err := mgr.OtelSetup(ctx, otelSetupCfg)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to initialize telemetry plugin: %w", err)
|
||||
return fmt.Errorf("failed to initialize telemetry plugin: %w", err)
|
||||
}
|
||||
return otelProvider, nil
|
||||
return nil
|
||||
}
|
||||
|
||||
// newServer creates and initializes the HTTP server.
|
||||
func newServer(ctx context.Context, mgr handler.PluginManager, cfg *Config, otelProvider *telemetry.Provider) (http.Handler, error) {
|
||||
func newServer(ctx context.Context, mgr handler.PluginManager, cfg *Config) (http.Handler, error) {
|
||||
mux := http.NewServeMux()
|
||||
|
||||
if otelProvider != nil && otelProvider.MetricsHandler != nil {
|
||||
mux.Handle("/metrics", otelProvider.MetricsHandler)
|
||||
log.Infof(ctx, "Metrics endpoint registered at /metrics")
|
||||
}
|
||||
|
||||
if err := module.Register(ctx, cfg.Modules, mux, mgr); err != nil {
|
||||
return nil, fmt.Errorf("failed to register modules: %w", err)
|
||||
}
|
||||
@@ -154,14 +148,13 @@ func run(ctx context.Context, configPath string) error {
|
||||
log.Debug(ctx, "Plugin manager loaded.")
|
||||
|
||||
// Initialize plugins including telemetry.
|
||||
otelProvider, err := initPlugins(ctx, mgr, cfg.Plugins.OtelSetup)
|
||||
if err != nil {
|
||||
if err := initPlugins(ctx, mgr, cfg.Plugins.OtelSetup); err != nil {
|
||||
return fmt.Errorf("failed to initialize plugins: %w", err)
|
||||
}
|
||||
|
||||
// Initialize HTTP server.
|
||||
log.Infof(ctx, "Initializing HTTP server")
|
||||
srv, err := newServerFunc(ctx, mgr, cfg, otelProvider)
|
||||
srv, err := newServerFunc(ctx, mgr, cfg)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to initialize server: %w", err)
|
||||
}
|
||||
|
||||
@@ -15,7 +15,6 @@ import (
|
||||
"github.com/beckn-one/beckn-onix/core/module/handler"
|
||||
"github.com/beckn-one/beckn-onix/pkg/plugin"
|
||||
"github.com/beckn-one/beckn-onix/pkg/plugin/definition"
|
||||
"github.com/beckn-one/beckn-onix/pkg/telemetry"
|
||||
"github.com/stretchr/testify/mock"
|
||||
)
|
||||
|
||||
@@ -125,7 +124,7 @@ func TestRunSuccess(t *testing.T) {
|
||||
defer func() { newManagerFunc = originalNewManager }()
|
||||
|
||||
originalNewServer := newServerFunc
|
||||
newServerFunc = func(ctx context.Context, mgr handler.PluginManager, cfg *Config, provider *telemetry.Provider) (http.Handler, error) {
|
||||
newServerFunc = func(ctx context.Context, mgr handler.PluginManager, cfg *Config) (http.Handler, error) {
|
||||
return http.NewServeMux(), nil
|
||||
}
|
||||
defer func() { newServerFunc = originalNewServer }()
|
||||
@@ -176,14 +175,19 @@ func TestRunFailure(t *testing.T) {
|
||||
|
||||
// Mock dependencies
|
||||
originalNewManager := newManagerFunc
|
||||
// newManagerFunc = func(ctx context.Context, cfg *plugin.ManagerConfig) (*plugin.Manager, func(), error) {
|
||||
// return tt.mockMgr()
|
||||
// }
|
||||
newManagerFunc = nil
|
||||
// Ensure newManagerFunc is never nil to avoid panic if invoked.
|
||||
newManagerFunc = func(ctx context.Context, cfg *plugin.ManagerConfig) (*plugin.Manager, func(), error) {
|
||||
_, closer, err := tt.mockMgr()
|
||||
if err != nil {
|
||||
return nil, closer, err
|
||||
}
|
||||
// Return a deterministic error so the code path exits cleanly if reached.
|
||||
return nil, closer, errors.New("mock manager error")
|
||||
}
|
||||
defer func() { newManagerFunc = originalNewManager }()
|
||||
|
||||
originalNewServer := newServerFunc
|
||||
newServerFunc = func(ctx context.Context, mgr handler.PluginManager, cfg *Config, provider *telemetry.Provider) (http.Handler, error) {
|
||||
originalNewServer := newServerFunc
|
||||
newServerFunc = func(ctx context.Context, mgr handler.PluginManager, cfg *Config) (http.Handler, error) {
|
||||
return tt.mockServer(ctx, mgr, cfg)
|
||||
}
|
||||
defer func() { newServerFunc = originalNewServer }()
|
||||
@@ -314,7 +318,7 @@ func TestNewServerSuccess(t *testing.T) {
|
||||
},
|
||||
}
|
||||
|
||||
handler, err := newServer(context.Background(), mockMgr, cfg, nil)
|
||||
handler, err := newServer(context.Background(), mockMgr, cfg)
|
||||
|
||||
if err != nil {
|
||||
t.Errorf("Expected no error, but got: %v", err)
|
||||
@@ -359,7 +363,7 @@ func TestNewServerFailure(t *testing.T) {
|
||||
},
|
||||
}
|
||||
|
||||
handler, err := newServer(context.Background(), mockMgr, cfg, nil)
|
||||
handler, err := newServer(context.Background(), mockMgr, cfg)
|
||||
|
||||
if err == nil {
|
||||
t.Errorf("Expected an error, but got nil")
|
||||
|
||||
@@ -2,7 +2,6 @@ package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"net/http/httptest"
|
||||
"testing"
|
||||
|
||||
"github.com/beckn-one/beckn-onix/pkg/plugin/implementation/otelsetup"
|
||||
@@ -21,12 +20,6 @@ func TestMetricsEndpointExposesPrometheus(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
defer provider.Shutdown(context.Background())
|
||||
|
||||
rec := httptest.NewRecorder()
|
||||
req := httptest.NewRequest("GET", "/metrics", nil)
|
||||
provider.MetricsHandler.ServeHTTP(rec, req)
|
||||
|
||||
require.Equal(t, 200, rec.Code)
|
||||
body := rec.Body.String()
|
||||
require.Contains(t, body, "# HELP")
|
||||
require.Contains(t, body, "# TYPE")
|
||||
// Metrics are served by the plugin’s own HTTP server; just ensure provider is initialized.
|
||||
require.NotNil(t, provider.MeterProvider)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user