comparetest

package module
v0.69.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 9, 2023 License: Apache-2.0 Imports: 10 Imported by: 0

README

comparetest

This module provides a mechanism for capturing and comparing expected metric and log results.

Typical Usage

A scraper test typically looks something like this:

func TestScraper(t *testing.T) {
  cfg := createDefaultConfig().(*Config)
  require.NoError(t, component.ValidateConfig(cfg))

  scraper := newScraper(componenttest.NewNopReceiverCreateSettings(), cfg)

  err := scraper.start(context.Background(), componenttest.NewNopHost())
  require.NoError(t, err)

  actualMetrics, err := scraper.scrape(context.Background())
  require.NoError(t, err)

  expectedFile := filepath.Join("testdata", "scraper", "expected.json")
  expectedMetrics, err := golden.ReadMetrics(expectedFile)
  require.NoError(t, err)

  require.NoError(t, comparetest.CompareMetrics(expectedMetrics, actualMetrics))
}
func TestLogsSink(t *testing.T) {
  cfg := createDefaultConfig().(*Config)
  require.NoError(t, component.ValidateConfig(cfg))

  sink := &consumertest.LogsSink{}
  alertRcvr := newLogsReceiver(cfg, zap.NewNop(), sink)
  alertRcvr.client = defaultMockClient()

  err := alertRcvr.Start(context.Background(), componenttest.NewNopHost())
  require.NoError(t, err)

  require.Eventually(t, func() bool {
    return sink.LogRecordCount() > 0
  }, 2*time.Second, 10*time.Millisecond)

  err = alertRcvr.Shutdown(context.Background())
  require.NoError(t, err)

  logs := sink.AllLogs()[0]
  expected, err := readLogs(filepath.Join("testdata", "logs", "expected.json"))
  require.NoError(t, err)
  require.NoError(t, comparetest.CompareLogs(expected, logs))
}

Generating an expected result file

The easiest way to capture the expected result in a file is golden.WriteMetrics or golden.WriteLogs.

When writing a new test:

  1. Write the test as if the expected file exists.
  2. Follow the steps below for updating an existing test.

When updating an existing test:

  1. Add a call to golden.WriteMetrics or golden.WriteLogs or in the appropriate place.
  2. Run the test once.
  3. Remove the call to golden.WriteMetrics or golden.WriteLogs.

NOTE: golden.WriteMetrics will always mark the test as failed. This behavior is necessary to ensure the function is removed after the golden file is written.

func TestScraper(t *testing.T) {
  cfg := createDefaultConfig().(*Config)
  require.NoError(t, component.ValidateConfig(cfg))

  scraper := newScraper(componenttest.NewNopReceiverCreateSettings(), cfg)

  err := scraper.start(context.Background(), componenttest.NewNopHost())
  require.NoError(t, err)

  actualMetrics, err := scraper.scrape(context.Background())
  require.NoError(t, err)

  expectedFile := filepath.Join("testdata", "scraper", "expected.json")

  golden.WriteMetrics(t, expectedFile, actualMetrics) // This line is temporary! TODO remove this!!

  expectedMetrics, err := golden.ReadMetrics(expectedFile)
  require.NoError(t, err)

  require.NoError(t, comparetest.CompareMetrics(expectedMetrics, actualMetrics))
}

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func CompareLogRecordSlices added in v0.69.0

func CompareLogRecordSlices(expected, actual plog.LogRecordSlice) error

CompareLogRecordSlices compares each part of two given LogRecordSlices and returns an error if they don't match. The error describes what didn't match.

func CompareLogRecords added in v0.69.0

func CompareLogRecords(expected, actual plog.LogRecord) error

CompareLogRecords compares each part of two given LogRecord and returns an error if they don't match. The error describes what didn't match.

func CompareLogs added in v0.69.0

func CompareLogs(expected, actual plog.Logs, options ...LogsCompareOption) error

CompareLogs compares each part of two given Logs and returns an error if they don't match. The error describes what didn't match.

func CompareMetricSlices

func CompareMetricSlices(expected, actual pmetric.MetricSlice) error

CompareMetricSlices compares each part of two given MetricSlices and returns an error if they don't match. The error describes what didn't match. The expected and actual values are clones before options are applied.

func CompareMetrics

func CompareMetrics(expected, actual pmetric.Metrics, options ...MetricsCompareOption) error

func CompareNumberDataPointSlices

func CompareNumberDataPointSlices(expected, actual pmetric.NumberDataPointSlice) error

CompareNumberDataPointSlices compares each part of two given NumberDataPointSlices and returns an error if they don't match. The error describes what didn't match.

func CompareNumberDataPoints

func CompareNumberDataPoints(expected, actual pmetric.NumberDataPoint) error

CompareNumberDataPoints compares each part of two given NumberDataPoints and returns an error if they don't match. The error describes what didn't match.

func CompareResourceLogs added in v0.69.0

func CompareResourceLogs(expected, actual plog.ResourceLogs) error

CompareResourceLogs compares each part of two given ResourceLogs and returns an error if they don't match. The error describes what didn't match.

func CompareResourceMetrics

func CompareResourceMetrics(expected, actual pmetric.ResourceMetrics) error

Types

type CompareOption

type CompareOption interface {
	MetricsCompareOption
	LogsCompareOption
}

func IgnoreResourceAttributeValue

func IgnoreResourceAttributeValue(attributeName string) CompareOption

IgnoreResourceAttributeValue is a CompareOption that removes a resource attribute from all resources.

type LogsCompareOption added in v0.69.0

type LogsCompareOption interface {
	// contains filtered or unexported methods
}

LogsCompareOption can be used to mutate expected and/or actual logs before comparing.

func IgnoreObservedTimestamp added in v0.69.0

func IgnoreObservedTimestamp() LogsCompareOption

type MetricsCompareOption added in v0.69.0

type MetricsCompareOption interface {
	// contains filtered or unexported methods
}

MetricsCompareOption can be used to mutate expected and/or actual metrics before comparing.

func IgnoreMetricAttributeValue

func IgnoreMetricAttributeValue(attributeName string, metricNames ...string) MetricsCompareOption

IgnoreMetricAttributeValue is a MetricsCompareOption that clears value of the metric attribute.

func IgnoreMetricValues

func IgnoreMetricValues(metricNames ...string) MetricsCompareOption

IgnoreMetricValues is a MetricsCompareOption that clears all metric values.

func IgnoreSubsequentDataPoints

func IgnoreSubsequentDataPoints(metricNames ...string) MetricsCompareOption

IgnoreSubsequentDataPoints is a MetricsCompareOption that ignores data points after the first.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL