@@ -577,6 +577,86 @@ func Test_Starting_RelayProxy_UnixSocket(t *testing.T) {
577577 assert .Equal (t , http .StatusOK , responseI .StatusCode )
578578}
579579
580+ func Test_Starting_RelayProxy_UnixSocket_MonitoringPort (t * testing.T ) {
581+ // Create a temporary directory for the socket
582+ tempDir , err := os .MkdirTemp ("" , "goff-test-socket-*" )
583+ require .NoError (t , err )
584+ defer os .RemoveAll (tempDir )
585+
586+ socketPath := filepath .Join (tempDir , "goff-test.sock" )
587+
588+ proxyConf := & config.Config {
589+ CommonFlagSet : config.CommonFlagSet {
590+ Retrievers : & []retrieverconf.RetrieverConf {
591+ {
592+ Kind : "file" ,
593+ Path : "../../../testdata/flag-config.yaml" ,
594+ },
595+ },
596+ },
597+ Server : config.Server {
598+ Mode : config .ServerModeUnixSocket ,
599+ UnixSocketPath : socketPath ,
600+ MonitoringPort : 11026 ,
601+ },
602+ }
603+ log := log .InitLogger ()
604+ defer func () { _ = log .ZapLogger .Sync () }()
605+
606+ metricsV2 , err := metric .NewMetrics ()
607+ if err != nil {
608+ log .ZapLogger .Error ("impossible to initialize prometheus metrics" , zap .Error (err ))
609+ }
610+ wsService := service .NewWebsocketService ()
611+ defer wsService .Close ()
612+ prometheusNotifier := metric .NewPrometheusNotifier (metricsV2 )
613+ proxyNotifier := service .NewNotifierWebsocket (wsService )
614+ flagsetManager , err := service .NewFlagsetManager (proxyConf , log .ZapLogger , []notifier.Notifier {
615+ prometheusNotifier ,
616+ proxyNotifier ,
617+ })
618+ require .NoError (t , err )
619+
620+ services := service.Services {
621+ MonitoringService : service .NewMonitoring (flagsetManager ),
622+ WebsocketService : wsService ,
623+ FlagsetManager : flagsetManager ,
624+ Metrics : metricsV2 ,
625+ }
626+
627+ s := api .New (proxyConf , services , log .ZapLogger )
628+ go func () { s .StartWithContext (context .Background ()) }()
629+ defer s .Stop (context .Background ())
630+
631+ // Wait for the socket to be created
632+ require .Eventually (t , func () bool {
633+ _ , err := os .Stat (socketPath )
634+ return err == nil
635+ }, 1 * time .Second , 10 * time .Millisecond , "unix socket file was not created in time" )
636+
637+ // Verify socket file exists
638+ _ , err = os .Stat (socketPath )
639+ assert .NoError (t , err , "Unix socket file should exist" )
640+
641+ // Test health endpoint
642+ responseH1 , err := http .Get ("http://localhost:11026/health" )
643+ assert .NoError (t , err )
644+ defer responseH1 .Body .Close ()
645+ assert .Equal (t , http .StatusOK , responseH1 .StatusCode )
646+
647+ // Test metrics endpoint
648+ responseM1 , err := http .Get ("http://localhost:11026/metrics" )
649+ assert .NoError (t , err )
650+ defer responseM1 .Body .Close ()
651+ assert .Equal (t , http .StatusOK , responseM1 .StatusCode )
652+
653+ // Test info endpoint
654+ responseI , err := http .Get ("http://localhost:11026/info" )
655+ assert .NoError (t , err )
656+ defer responseI .Body .Close ()
657+ assert .Equal (t , http .StatusOK , responseI .StatusCode )
658+ }
659+
580660func Test_Starting_RelayProxy_UnixSocket_OFREP_API (t * testing.T ) {
581661 // Create a temporary directory for the socket
582662 tempDir , err := os .MkdirTemp ("" , "goff-test-socket-*" )
0 commit comments