package nnet import ( "net/http" "net/http/httptest" "testing" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) func TestPresetBuilderBuild(t *testing.T) { mux := http.NewServeMux() builder := NewPreset(). WithAddress("tcp://:9090"). WithMetricsHandler(mux, "/metrics"). WithHealthHandler(mux, "/healthz"). WithServerSetup(func(s Server) error { // ensure setup invoked return nil }) server, err := builder.Build() require.NoError(t, err) t.Cleanup(func() { _ = server.Stop() }) // 配置变更生效 cfg := server.Config() assert.Equal(t, "tcp://:9090", cfg.Addr) require.NotNil(t, cfg.Metrics) assert.Equal(t, "/metrics", cfg.Metrics.Path) // Metrics handler 挂载成功 metricsReq := httptest.NewRequest(http.MethodGet, "/metrics", nil) metricsRes := httptest.NewRecorder() mux.ServeHTTP(metricsRes, metricsReq) assert.Equal(t, http.StatusOK, metricsRes.Code) assert.Contains(t, metricsRes.Body.String(), "nnet_connections") // Health handler 挂载成功 healthReq := httptest.NewRequest(http.MethodGet, "/healthz", nil) healthRes := httptest.NewRecorder() mux.ServeHTTP(healthRes, healthReq) assert.Equal(t, http.StatusOK, healthRes.Code) assert.Contains(t, healthRes.Body.String(), `"status"`) }