@@ -412,7 +412,7 @@ var _ = Describe("manger.Manager", func() {
412412 Expect (resp .StatusCode ).To (Equal (200 ))
413413 })
414414
415- It ("should not serve anything other than metrics endpoint" , func (done Done ) {
415+ It ("should not serve anything other than metrics endpoint by default " , func (done Done ) {
416416 opts .MetricsBindAddress = ":0"
417417 m , err := New (cfg , opts )
418418 Expect (err ).NotTo (HaveOccurred ())
@@ -469,6 +469,41 @@ var _ = Describe("manger.Manager", func() {
469469 ok := metrics .Registry .Unregister (one )
470470 Expect (ok ).To (BeTrue ())
471471 })
472+
473+ It ("should serve extra endpoints" , func (done Done ) {
474+ opts .MetricsBindAddress = ":0"
475+ m , err := New (cfg , opts )
476+ Expect (err ).NotTo (HaveOccurred ())
477+
478+ m .AddMetricsExtraHandler ("/debug" , http .HandlerFunc (func (w http.ResponseWriter , req * http.Request ) {
479+ _ , _ = w .Write ([]byte ("Some debug info" ))
480+ }))
481+
482+ // Should panic when we add another extra endpoint on the already registered path.
483+ registerDuplicateEndpoint := func () {
484+ m .AddMetricsExtraHandler ("/debug" , http .HandlerFunc (func (w http.ResponseWriter , req * http.Request ) {
485+ _ , _ = w .Write ([]byte ("Another debug info" ))
486+ }))
487+ }
488+ Expect (registerDuplicateEndpoint ).To (Panic ())
489+
490+ s := make (chan struct {})
491+ defer close (s )
492+ go func () {
493+ defer GinkgoRecover ()
494+ Expect (m .Start (s )).NotTo (HaveOccurred ())
495+ close (done )
496+ }()
497+
498+ endpoint := fmt .Sprintf ("http://%s/debug" , listener .Addr ().String ())
499+ resp , err := http .Get (endpoint )
500+ Expect (err ).NotTo (HaveOccurred ())
501+ Expect (resp .StatusCode ).To (Equal (http .StatusOK ))
502+
503+ body , err := ioutil .ReadAll (resp .Body )
504+ Expect (err ).NotTo (HaveOccurred ())
505+ Expect (string (body )).To (Equal ("Some debug info" ))
506+ })
472507 })
473508 })
474509
0 commit comments