internal/pkg/testing/bulk.go (123 lines of code) (raw):
// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
// or more contributor license agreements. Licensed under the Elastic License;
// you may not use this file except in compliance with the Elastic License.
package testing
import (
"context"
"github.com/elastic/go-elasticsearch/v8"
"github.com/rs/zerolog"
"github.com/stretchr/testify/mock"
"go.elastic.co/apm/v2"
"github.com/elastic/fleet-server/v7/internal/pkg/bulk"
"github.com/elastic/fleet-server/v7/internal/pkg/es"
)
// MockBulk is a mock bulk interface that uses testify/mock.
type MockBulk struct {
mock.Mock
}
func NewMockBulk() *MockBulk {
return &MockBulk{}
}
func (m *MockBulk) Create(ctx context.Context, index, id string, body []byte, opts ...bulk.Opt) (string, error) {
args := m.Called(ctx, index, id, body, opts)
return args.String(0), args.Error(1)
}
func (m *MockBulk) Index(ctx context.Context, index, id string, body []byte, opts ...bulk.Opt) (string, error) {
args := m.Called(ctx, index, id, body, opts)
return args.String(0), args.Error(1)
}
func (m *MockBulk) Update(ctx context.Context, index, id string, body []byte, opts ...bulk.Opt) error {
args := m.Called(ctx, index, id, body, opts)
return args.Error(0)
}
func (m *MockBulk) Read(ctx context.Context, index, id string, opts ...bulk.Opt) ([]byte, error) {
args := m.Called(ctx, index, id, opts)
return args.Get(0).([]byte), args.Error(1)
}
func (m *MockBulk) ReadRaw(ctx context.Context, index, id string, opts ...bulk.Opt) (*bulk.MgetResponseItem, error) {
args := m.Called(ctx, index, id, opts)
return args.Get(0).(*bulk.MgetResponseItem), args.Error(1)
}
func (m *MockBulk) Delete(ctx context.Context, index, id string, opts ...bulk.Opt) error {
args := m.Called(ctx, index, id, opts)
return args.Error(0)
}
func (m *MockBulk) MCreate(ctx context.Context, ops []bulk.MultiOp, opts ...bulk.Opt) ([]bulk.BulkIndexerResponseItem, error) {
args := m.Called(ctx, ops, opts)
return args.Get(0).([]bulk.BulkIndexerResponseItem), args.Error(1)
}
func (m *MockBulk) MIndex(ctx context.Context, ops []bulk.MultiOp, opts ...bulk.Opt) ([]bulk.BulkIndexerResponseItem, error) {
args := m.Called(ctx, ops, opts)
return args.Get(0).([]bulk.BulkIndexerResponseItem), args.Error(1)
}
func (m *MockBulk) MUpdate(ctx context.Context, ops []bulk.MultiOp, opts ...bulk.Opt) ([]bulk.BulkIndexerResponseItem, error) {
args := m.Called(ctx, ops, opts)
return args.Get(0).([]bulk.BulkIndexerResponseItem), args.Error(1)
}
func (m *MockBulk) MDelete(ctx context.Context, ops []bulk.MultiOp, opts ...bulk.Opt) ([]bulk.BulkIndexerResponseItem, error) {
args := m.Called(ctx, ops, opts)
return args.Get(0).([]bulk.BulkIndexerResponseItem), args.Error(1)
}
func (m *MockBulk) Search(ctx context.Context, index string, body []byte, opts ...bulk.Opt) (*es.ResultT, error) {
args := m.Called(ctx, index, body, opts)
return args.Get(0).(*es.ResultT), args.Error(1)
}
func (m *MockBulk) Client() *elasticsearch.Client {
args := m.Called()
return args.Get(0).(*elasticsearch.Client)
}
func (m *MockBulk) GetBulker(outputName string) bulk.Bulk {
args := m.Called(outputName)
if args.Get(0) == nil {
return nil
}
return args.Get(0).(bulk.Bulk)
}
func (m *MockBulk) GetBulkerMap() map[string]bulk.Bulk {
args := m.Called()
return args.Get(0).(map[string]bulk.Bulk)
}
func (m *MockBulk) CreateAndGetBulker(ctx context.Context, zlog zerolog.Logger, outputName string, outputMap map[string]map[string]interface{}) (bulk.Bulk, bool, error) {
args := m.Called(ctx, zlog, outputName, outputMap)
return args.Get(0).(bulk.Bulk), args.Get(1).(bool), nil
}
func (m *MockBulk) CancelFn() context.CancelFunc {
args := m.Called()
return args.Get(0).(context.CancelFunc)
}
func (m *MockBulk) ReadSecrets(ctx context.Context, secretIds []string) (map[string]string, error) {
result := make(map[string]string)
for _, id := range secretIds {
result[id] = id + "_value"
}
return result, nil
}
func (m *MockBulk) APIKeyCreate(ctx context.Context, name, ttl string, roles []byte, meta interface{}) (*bulk.APIKey, error) {
args := m.Called(ctx, name, ttl, roles, meta)
return args.Get(0).(*bulk.APIKey), args.Error(1)
}
func (m *MockBulk) APIKeyRead(ctx context.Context, id string, _ bool) (*bulk.APIKeyMetadata, error) {
args := m.Called(ctx, id)
return args.Get(0).(*bulk.APIKeyMetadata), args.Error(1)
}
func (m *MockBulk) APIKeyAuth(ctx context.Context, key bulk.APIKey) (*bulk.SecurityInfo, error) {
args := m.Called(ctx, key)
return args.Get(0).(*bulk.SecurityInfo), args.Error(1)
}
func (m *MockBulk) APIKeyInvalidate(ctx context.Context, ids ...string) error {
args := m.Called(ctx, ids)
return args.Error(0)
}
func (m *MockBulk) APIKeyUpdate(ctx context.Context, id, outputPolicyHash string, roles []byte) error {
args := m.Called(ctx, id)
return args.Error(0)
}
func (m *MockBulk) HasTracer() bool {
return false
}
func (m *MockBulk) StartTransaction(name, transactionType string) *apm.Transaction {
return nil
}
func (m *MockBulk) StartTransactionOptions(name, transactionType string, opts apm.TransactionOptions) *apm.Transaction {
return nil
}
func (m *MockBulk) RemoteOutputConfigChanged(zlog zerolog.Logger, name string, newCfg map[string]interface{}) bool {
return name == "outdated"
}
var _ bulk.Bulk = (*MockBulk)(nil)