diff --git a/core/trace/message_test.go b/core/trace/message_test.go new file mode 100644 index 00000000..039a5e76 --- /dev/null +++ b/core/trace/message_test.go @@ -0,0 +1,73 @@ +package trace + +import ( + "context" + "testing" + + "github.com/stretchr/testify/assert" + "go.opentelemetry.io/otel/attribute" + "go.opentelemetry.io/otel/codes" + "go.opentelemetry.io/otel/trace" + "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/types/dynamicpb" +) + +func TestMessageType_Event(t *testing.T) { + var span mockSpan + ctx := trace.ContextWithSpan(context.Background(), &span) + MessageReceived.Event(ctx, 1, "foo") + assert.Equal(t, messageEvent, span.name) + assert.NotEmpty(t, span.options) +} + +func TestMessageType_EventProtoMessage(t *testing.T) { + var span mockSpan + var message mockMessage + ctx := trace.ContextWithSpan(context.Background(), &span) + MessageReceived.Event(ctx, 1, message) + assert.Equal(t, messageEvent, span.name) + assert.NotEmpty(t, span.options) +} + +type mockSpan struct { + name string + options []trace.EventOption +} + +func (m *mockSpan) End(options ...trace.SpanEndOption) { +} + +func (m *mockSpan) AddEvent(name string, options ...trace.EventOption) { + m.name = name + m.options = options +} + +func (m *mockSpan) IsRecording() bool { + return false +} + +func (m *mockSpan) RecordError(err error, options ...trace.EventOption) { +} + +func (m *mockSpan) SpanContext() trace.SpanContext { + panic("implement me") +} + +func (m *mockSpan) SetStatus(code codes.Code, description string) { +} + +func (m *mockSpan) SetName(name string) { +} + +func (m *mockSpan) SetAttributes(kv ...attribute.KeyValue) { +} + +func (m *mockSpan) TracerProvider() trace.TracerProvider { + return nil +} + +type mockMessage struct{} + +func (m mockMessage) ProtoReflect() protoreflect.Message { + return new(dynamicpb.Message) +}