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