Fixed name and type we're testing for

This commit is contained in:
Peter Wilson
2024-01-08 18:40:12 +00:00
parent 0c3e551a70
commit 3e7cbad383
8 changed files with 29 additions and 10 deletions

View File

@@ -552,7 +552,7 @@ func (b *Backend) configureSinkNode(name string, filePath string, mode string, f
metricLabeler = &audit.MetricLabelerAuditSink{} metricLabeler = &audit.MetricLabelerAuditSink{}
} }
sinkMetricCounter, err := event.NewMetricsCounter(sinkMetricTimer, metricLabeler) sinkMetricCounter, err := event.NewMetricsCounter(sinkName, sinkMetricTimer, metricLabeler)
if err != nil { if err != nil {
return fmt.Errorf("%s: unable to add counting metrics to sink for path %q: %w", op, filePath, err) return fmt.Errorf("%s: unable to add counting metrics to sink for path %q: %w", op, filePath, err)
} }

View File

@@ -15,6 +15,7 @@ import (
"github.com/hashicorp/eventlogger" "github.com/hashicorp/eventlogger"
"github.com/hashicorp/vault/audit" "github.com/hashicorp/vault/audit"
"github.com/hashicorp/vault/helper/namespace" "github.com/hashicorp/vault/helper/namespace"
"github.com/hashicorp/vault/internal/observability/event"
"github.com/hashicorp/vault/sdk/helper/salt" "github.com/hashicorp/vault/sdk/helper/salt"
"github.com/hashicorp/vault/sdk/logical" "github.com/hashicorp/vault/sdk/logical"
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
@@ -529,7 +530,7 @@ func TestBackend_configureSinkNode(t *testing.T) {
id := b.nodeIDList[0] id := b.nodeIDList[0]
node := b.nodeMap[id] node := b.nodeMap[id]
require.Equal(t, eventlogger.NodeTypeSink, node.Type()) require.Equal(t, eventlogger.NodeTypeSink, node.Type())
sw, ok := node.(*audit.SinkMetricTimer) sw, ok := node.(*event.MetricsCounter)
require.True(t, ok) require.True(t, ok)
require.Equal(t, tc.expectedName, sw.Name) require.Equal(t, tc.expectedName, sw.Name)
} }

View File

@@ -443,7 +443,7 @@ func (b *Backend) configureSinkNode(name string, address string, format string,
metricLabeler = &audit.MetricLabelerAuditSink{} metricLabeler = &audit.MetricLabelerAuditSink{}
} }
sinkMetricCounter, err := event.NewMetricsCounter(sinkMetricTimer, metricLabeler) sinkMetricCounter, err := event.NewMetricsCounter(name, sinkMetricTimer, metricLabeler)
if err != nil { if err != nil {
return fmt.Errorf("%s: unable to add counting metrics to sink for path %q: %w", op, name, err) return fmt.Errorf("%s: unable to add counting metrics to sink for path %q: %w", op, name, err)
} }

View File

@@ -9,6 +9,7 @@ import (
"github.com/hashicorp/eventlogger" "github.com/hashicorp/eventlogger"
"github.com/hashicorp/vault/audit" "github.com/hashicorp/vault/audit"
"github.com/hashicorp/vault/internal/observability/event"
"github.com/hashicorp/vault/sdk/helper/salt" "github.com/hashicorp/vault/sdk/helper/salt"
"github.com/hashicorp/vault/sdk/logical" "github.com/hashicorp/vault/sdk/logical"
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
@@ -285,7 +286,7 @@ func TestBackend_configureSinkNode(t *testing.T) {
id := b.nodeIDList[0] id := b.nodeIDList[0]
node := b.nodeMap[id] node := b.nodeMap[id]
require.Equal(t, eventlogger.NodeTypeSink, node.Type()) require.Equal(t, eventlogger.NodeTypeSink, node.Type())
sw, ok := node.(*audit.SinkMetricTimer) sw, ok := node.(*event.MetricsCounter)
require.True(t, ok) require.True(t, ok)
require.Equal(t, tc.expectedName, sw.Name) require.Equal(t, tc.expectedName, sw.Name)
} }

View File

@@ -353,7 +353,7 @@ func (b *Backend) configureSinkNode(name string, format string, opts ...event.Op
metricLabeler = &audit.MetricLabelerAuditSink{} metricLabeler = &audit.MetricLabelerAuditSink{}
} }
sinkMetricCounter, err := event.NewMetricsCounter(sinkMetricTimer, metricLabeler) sinkMetricCounter, err := event.NewMetricsCounter(name, sinkMetricTimer, metricLabeler)
if err != nil { if err != nil {
return fmt.Errorf("%s: unable to add counting metrics to sink for path %q: %w", op, name, err) return fmt.Errorf("%s: unable to add counting metrics to sink for path %q: %w", op, name, err)
} }

View File

@@ -9,6 +9,7 @@ import (
"github.com/hashicorp/eventlogger" "github.com/hashicorp/eventlogger"
"github.com/hashicorp/vault/audit" "github.com/hashicorp/vault/audit"
"github.com/hashicorp/vault/internal/observability/event"
"github.com/hashicorp/vault/sdk/helper/salt" "github.com/hashicorp/vault/sdk/helper/salt"
"github.com/hashicorp/vault/sdk/logical" "github.com/hashicorp/vault/sdk/logical"
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
@@ -267,7 +268,7 @@ func TestBackend_configureSinkNode(t *testing.T) {
id := b.nodeIDList[0] id := b.nodeIDList[0]
node := b.nodeMap[id] node := b.nodeMap[id]
require.Equal(t, eventlogger.NodeTypeSink, node.Type()) require.Equal(t, eventlogger.NodeTypeSink, node.Type())
sw, ok := node.(*audit.SinkMetricTimer) sw, ok := node.(*event.MetricsCounter)
require.True(t, ok) require.True(t, ok)
require.Equal(t, tc.expectedName, sw.Name) require.Equal(t, tc.expectedName, sw.Name)
} }

View File

@@ -7,6 +7,7 @@ import (
"context" "context"
"fmt" "fmt"
"reflect" "reflect"
"strings"
"github.com/hashicorp/eventlogger" "github.com/hashicorp/eventlogger"
"github.com/hashicorp/go-metrics" "github.com/hashicorp/go-metrics"
@@ -16,6 +17,7 @@ var _ eventlogger.Node = (*MetricsCounter)(nil)
// MetricsCounter offers a way for nodes to emit metrics which increment a label by 1. // MetricsCounter offers a way for nodes to emit metrics which increment a label by 1.
type MetricsCounter struct { type MetricsCounter struct {
Name string
Node eventlogger.Node Node eventlogger.Node
labeler Labeler labeler Labeler
} }
@@ -28,9 +30,14 @@ type Labeler interface {
} }
// NewMetricsCounter should be used to create the MetricsCounter. // NewMetricsCounter should be used to create the MetricsCounter.
func NewMetricsCounter(node eventlogger.Node, labeler Labeler) (*MetricsCounter, error) { func NewMetricsCounter(name string, node eventlogger.Node, labeler Labeler) (*MetricsCounter, error) {
const op = "event.NewMetricsCounter" const op = "event.NewMetricsCounter"
name = strings.TrimSpace(name)
if name == "" {
return nil, fmt.Errorf("%s: name is required: %w", op, ErrInvalidParameter)
}
if node == nil || reflect.ValueOf(node).IsNil() { if node == nil || reflect.ValueOf(node).IsNil() {
return nil, fmt.Errorf("%s: node is required: %w", op, ErrInvalidParameter) return nil, fmt.Errorf("%s: node is required: %w", op, ErrInvalidParameter)
} }
@@ -40,6 +47,7 @@ func NewMetricsCounter(node eventlogger.Node, labeler Labeler) (*MetricsCounter,
} }
return &MetricsCounter{ return &MetricsCounter{
Name: name,
Node: node, Node: node,
labeler: labeler, labeler: labeler,
}, nil }, nil

View File

@@ -35,12 +35,20 @@ func TestNewMetricsCounter(t *testing.T) {
labeler: &testMetricsCounter{}, labeler: &testMetricsCounter{},
isErrorExpected: false, isErrorExpected: false,
}, },
"no-name": {
node: nil,
labeler: nil,
isErrorExpected: true,
expectedErrorMessage: "event.NewMetricsCounter: name is required: invalid parameter",
},
"no-node": { "no-node": {
name: "foo",
node: nil, node: nil,
isErrorExpected: true, isErrorExpected: true,
expectedErrorMessage: "event.NewMetricsCounter: node is required: invalid parameter", expectedErrorMessage: "event.NewMetricsCounter: node is required: invalid parameter",
}, },
"no-labeler": { "no-labeler": {
name: "foo",
node: &testEventLoggerNode{}, node: &testEventLoggerNode{},
labeler: nil, labeler: nil,
isErrorExpected: true, isErrorExpected: true,
@@ -52,7 +60,7 @@ func TestNewMetricsCounter(t *testing.T) {
name := name name := name
tc := tc tc := tc
t.Run(name, func(t *testing.T) { t.Run(name, func(t *testing.T) {
m, err := NewMetricsCounter(tc.node, tc.labeler) m, err := NewMetricsCounter(tc.name, tc.node, tc.labeler)
switch { switch {
case tc.isErrorExpected: case tc.isErrorExpected:
@@ -84,6 +92,6 @@ func (t testEventLoggerNode) Type() eventlogger.NodeType {
// testMetricsCounter is for testing and implements the event.Labeler interface. // testMetricsCounter is for testing and implements the event.Labeler interface.
type testMetricsCounter struct{} type testMetricsCounter struct{}
func (m *testMetricsCounter) Label(_ *eventlogger.Event, err error) string { func (m *testMetricsCounter) Labels(_ *eventlogger.Event, err error) []string {
return "" return []string{""}
} }