You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

48 lines
1.3 KiB
Go

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"`)
}