@@ -3,6 +3,7 @@ package narada
33import (
44 "context"
55 "errors"
6+ "io"
67 "net/http"
78 "testing"
89 "time"
@@ -111,6 +112,10 @@ func TestNewMultiServers(t *testing.T) {
111112 assert .NoError (t , err )
112113
113114 cfg .Set ("bind.test" , ":12346" )
115+ cfg .Set ("bind.metrics" , ":9002" )
116+
117+ err = NewMetricsInvoke (ms )
118+ assert .NoError (t , err )
114119
115120 err = ms .Add (
116121 "test" ,
@@ -142,6 +147,18 @@ func TestNewMultiServers(t *testing.T) {
142147 assert .Equal (t , http .StatusOK , res .StatusCode )
143148 }
144149
150+ // Check metrics
151+ {
152+ res , err := http .Get ("http://localhost:9002" )
153+ assert .NoError (t , err )
154+
155+ body , err := io .ReadAll (res .Body )
156+ assert .NoError (t , err )
157+
158+ assert .Contains (t , string (body ), `server_healthcheck_duration_seconds_count{code="200",method="get",server="test"} 1` )
159+ assert .NotContains (t , string (body ), `server_healthcheck_duration_seconds_count{code="418",method="get",server="test"}` )
160+ }
161+
145162 err = lc .Stop (context .Background ())
146163 assert .NoError (t , err )
147164 })
@@ -156,6 +173,10 @@ func TestNewMultiServers(t *testing.T) {
156173
157174 cfg .Set ("bind.test_success" , ":12346" )
158175 cfg .Set ("bind.test_failure" , ":12347" )
176+ cfg .Set ("bind.metrics" , ":9002" )
177+
178+ err = NewMetricsInvoke (ms )
179+ assert .NoError (t , err )
159180
160181 err = ms .AddHealthcheck ("test_success" , "/healthz" , func () error { return nil })
161182 assert .NoError (t , err )
@@ -184,12 +205,32 @@ func TestNewMultiServers(t *testing.T) {
184205 assert .Equal (t , http .StatusOK , res .StatusCode )
185206 }
186207
208+ {
209+ res , err := http .Get ("http://localhost:12347" )
210+ assert .NoError (t , err )
211+ assert .Equal (t , http .StatusNotFound , res .StatusCode )
212+ }
213+
187214 {
188215 res , err := http .Get ("http://localhost:12347/healthz" )
189216 assert .NoError (t , err )
190217 assert .Equal (t , http .StatusInternalServerError , res .StatusCode )
191218 }
192219
220+ // Check metrics
221+ {
222+ res , err := http .Get ("http://localhost:9002" )
223+ assert .NoError (t , err )
224+
225+ body , err := io .ReadAll (res .Body )
226+ assert .NoError (t , err )
227+
228+ assert .Contains (t , string (body ), `server_healthcheck_duration_seconds_count{code="404",method="get",server="test_success"} 2` )
229+ assert .Contains (t , string (body ), `server_healthcheck_duration_seconds_count{code="200",method="get",server="test_success"} 1` )
230+ assert .Contains (t , string (body ), `server_healthcheck_duration_seconds_count{code="404",method="get",server="test_failure"} 1` )
231+ assert .Contains (t , string (body ), `server_healthcheck_duration_seconds_count{code="500",method="get",server="test_failure"} 1` )
232+ }
233+
193234 err = lc .Stop (context .Background ())
194235 assert .NoError (t , err )
195236 })
0 commit comments