feat(http): construct telegraf handler by TelegrafBackend
parent
18f4825e4f
commit
df93adce9a
|
@ -120,14 +120,9 @@ func NewAPIHandler(b *APIBackend) *APIHandler {
|
|||
taskBackend := NewTaskBackend(b)
|
||||
h.TaskHandler = NewTaskHandler(taskBackend)
|
||||
|
||||
h.TelegrafHandler = NewTelegrafHandler(
|
||||
b.Logger.With(zap.String("handler", "telegraf")),
|
||||
b.UserResourceMappingService,
|
||||
b.LabelService,
|
||||
authorizer.NewTelegrafConfigService(b.TelegrafService, b.UserResourceMappingService),
|
||||
b.UserService,
|
||||
b.OrganizationService,
|
||||
)
|
||||
telegrafBackend := NewTelegrafBackend(b)
|
||||
telegrafBackend.TelegrafService = authorizer.NewTelegrafConfigService(b.TelegrafService, b.UserResourceMappingService)
|
||||
h.TelegrafHandler = NewTelegrafHandler(telegrafBackend)
|
||||
|
||||
h.WriteHandler = NewWriteHandler(b.PointsWriter)
|
||||
h.WriteHandler.OrganizationService = b.OrganizationService
|
||||
|
|
|
@ -14,6 +14,31 @@ import (
|
|||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
// TelegrafBackend is all services and associated parameters required to construct
|
||||
// the TelegrafHandler.
|
||||
type TelegrafBackend struct {
|
||||
Logger *zap.Logger
|
||||
|
||||
TelegrafService platform.TelegrafConfigStore
|
||||
UserResourceMappingService platform.UserResourceMappingService
|
||||
LabelService platform.LabelService
|
||||
UserService platform.UserService
|
||||
OrganizationService platform.OrganizationService
|
||||
}
|
||||
|
||||
// NewTelegrafBackend returns a new instance of TelegrafBackend.
|
||||
func NewTelegrafBackend(b *APIBackend) *TelegrafBackend {
|
||||
return &TelegrafBackend{
|
||||
Logger: b.Logger.With(zap.String("handler", "telegraf")),
|
||||
|
||||
TelegrafService: b.TelegrafService,
|
||||
UserResourceMappingService: b.UserResourceMappingService,
|
||||
LabelService: b.LabelService,
|
||||
UserService: b.UserService,
|
||||
OrganizationService: b.OrganizationService,
|
||||
}
|
||||
}
|
||||
|
||||
// TelegrafHandler is the handler for the telegraf service
|
||||
type TelegrafHandler struct {
|
||||
*httprouter.Router
|
||||
|
@ -38,23 +63,16 @@ const (
|
|||
)
|
||||
|
||||
// NewTelegrafHandler returns a new instance of TelegrafHandler.
|
||||
func NewTelegrafHandler(
|
||||
logger *zap.Logger,
|
||||
mappingService platform.UserResourceMappingService,
|
||||
labelService platform.LabelService,
|
||||
telegrafSvc platform.TelegrafConfigStore,
|
||||
userService platform.UserService,
|
||||
orgService platform.OrganizationService,
|
||||
) *TelegrafHandler {
|
||||
func NewTelegrafHandler(b *TelegrafBackend) *TelegrafHandler {
|
||||
h := &TelegrafHandler{
|
||||
Router: NewRouter(),
|
||||
Logger: b.Logger,
|
||||
|
||||
UserResourceMappingService: mappingService,
|
||||
LabelService: labelService,
|
||||
TelegrafService: telegrafSvc,
|
||||
Logger: logger,
|
||||
UserService: userService,
|
||||
OrganizationService: orgService,
|
||||
TelegrafService: b.TelegrafService,
|
||||
UserResourceMappingService: b.UserResourceMappingService,
|
||||
LabelService: b.LabelService,
|
||||
UserService: b.UserService,
|
||||
OrganizationService: b.OrganizationService,
|
||||
}
|
||||
h.HandlerFunc("POST", telegrafsPath, h.handlePostTelegraf)
|
||||
h.HandlerFunc("GET", telegrafsPath, h.handleGetTelegrafs)
|
||||
|
|
|
@ -10,13 +10,27 @@ import (
|
|||
"strings"
|
||||
"testing"
|
||||
|
||||
"go.uber.org/zap"
|
||||
|
||||
platform "github.com/influxdata/influxdb"
|
||||
"github.com/influxdata/influxdb/mock"
|
||||
"github.com/influxdata/influxdb/telegraf/plugins/inputs"
|
||||
"github.com/influxdata/influxdb/telegraf/plugins/outputs"
|
||||
"go.uber.org/zap/zaptest"
|
||||
)
|
||||
|
||||
// NewMockTelegrafBackend returns a TelegrafBackend with mock services.
|
||||
func NewMockTelegrafBackend() *TelegrafBackend {
|
||||
return &TelegrafBackend{
|
||||
Logger: zap.NewNop().With(zap.String("handler", "telegraf")),
|
||||
|
||||
TelegrafService: &mock.TelegrafConfigStore{},
|
||||
UserResourceMappingService: mock.NewUserResourceMappingService(),
|
||||
LabelService: mock.NewLabelService(),
|
||||
UserService: mock.NewUserService(),
|
||||
OrganizationService: mock.NewOrganizationService(),
|
||||
}
|
||||
}
|
||||
|
||||
func TestTelegrafHandler_handleGetTelegrafs(t *testing.T) {
|
||||
type wants struct {
|
||||
statusCode int
|
||||
|
@ -155,7 +169,9 @@ func TestTelegrafHandler_handleGetTelegrafs(t *testing.T) {
|
|||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
w := httptest.NewRecorder()
|
||||
h := NewTelegrafHandler(zaptest.NewLogger(t), mock.NewUserResourceMappingService(), mock.NewLabelService(), tt.svc, mock.NewUserService(), &mock.OrganizationService{})
|
||||
telegrafBackend := NewMockTelegrafBackend()
|
||||
telegrafBackend.TelegrafService = tt.svc
|
||||
h := NewTelegrafHandler(telegrafBackend)
|
||||
h.ServeHTTP(w, tt.r)
|
||||
|
||||
res := w.Result()
|
||||
|
@ -674,15 +690,11 @@ func TestTelegrafHandler_handleGetTelegraf(t *testing.T) {
|
|||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
logger := zaptest.NewLogger(t)
|
||||
mapping := mock.NewUserResourceMappingService()
|
||||
labels := mock.NewLabelService()
|
||||
users := mock.NewUserService()
|
||||
orgs := &mock.OrganizationService{}
|
||||
|
||||
tt.r.Header.Set("Accept", tt.acceptHeader)
|
||||
w := httptest.NewRecorder()
|
||||
h := NewTelegrafHandler(logger, mapping, labels, tt.svc, users, orgs)
|
||||
telegrafBackend := NewMockTelegrafBackend()
|
||||
telegrafBackend.TelegrafService = tt.svc
|
||||
h := NewTelegrafHandler(telegrafBackend)
|
||||
|
||||
h.ServeHTTP(w, tt.r)
|
||||
|
||||
|
|
Loading…
Reference in New Issue