mirror of
https://github.com/open-telemetry/opentelemetry-go.git
synced 2024-12-28 21:09:17 +02:00
5331939a74
This is a follow-up to the comments in https://github.com/open-telemetry/opentelemetry-go/pull/5468#discussion_r1624173196, introducing `logtest.AssertRecordEqual` so bridges can compare log records more easily. --------- Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com>
71 lines
1.8 KiB
Go
71 lines
1.8 KiB
Go
// Copyright The OpenTelemetry Authors
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
package logtest // import "go.opentelemetry.io/otel/log/logtest"
|
|
|
|
import (
|
|
"slices"
|
|
"testing"
|
|
|
|
"go.opentelemetry.io/otel/log"
|
|
)
|
|
|
|
// AssertRecordEqual compares two log records, and fails the test if they are
|
|
// not equal.
|
|
func AssertRecordEqual(t testing.TB, want, got log.Record) bool {
|
|
t.Helper()
|
|
|
|
if !want.Timestamp().Equal(got.Timestamp()) {
|
|
t.Errorf("Timestamp value is not equal:\nwant: %v\ngot: %v", want.Timestamp(), got.Timestamp())
|
|
return false
|
|
}
|
|
if !want.ObservedTimestamp().Equal(got.ObservedTimestamp()) {
|
|
t.Errorf("ObservedTimestamp value is not equal:\nwant: %v\ngot: %v", want.ObservedTimestamp(), got.ObservedTimestamp())
|
|
return false
|
|
}
|
|
if want.Severity() != got.Severity() {
|
|
t.Errorf("Severity value is not equal:\nwant: %v\ngot: %v", want.Severity(), got.Severity())
|
|
return false
|
|
}
|
|
if want.SeverityText() != got.SeverityText() {
|
|
t.Errorf("SeverityText value is not equal:\nwant: %v\ngot: %v", want.SeverityText(), got.SeverityText())
|
|
return false
|
|
}
|
|
if !assertBody(t, want.Body(), got) {
|
|
return false
|
|
}
|
|
|
|
var attrs []log.KeyValue
|
|
want.WalkAttributes(func(kv log.KeyValue) bool {
|
|
attrs = append(attrs, kv)
|
|
return true
|
|
})
|
|
return assertAttributes(t, attrs, got)
|
|
}
|
|
|
|
func assertBody(t testing.TB, want log.Value, r log.Record) bool {
|
|
t.Helper()
|
|
got := r.Body()
|
|
if !got.Equal(want) {
|
|
t.Errorf("Body value is not equal:\nwant: %v\ngot: %v", want, got)
|
|
return false
|
|
}
|
|
|
|
return true
|
|
}
|
|
|
|
func assertAttributes(t testing.TB, want []log.KeyValue, r log.Record) bool {
|
|
t.Helper()
|
|
var got []log.KeyValue
|
|
r.WalkAttributes(func(kv log.KeyValue) bool {
|
|
got = append(got, kv)
|
|
return true
|
|
})
|
|
if !slices.EqualFunc(want, got, log.KeyValue.Equal) {
|
|
t.Errorf("Attributes are not equal:\nwant: %v\ngot: %v", want, got)
|
|
return false
|
|
}
|
|
|
|
return true
|
|
}
|