Skip to content

dmathieu/rspec-otel

Repository files navigation

RSpec Otel

RSpec matchers to be used with the OpenTelemetry framework

Installation

Add this line to your Gemfile:

gem 'rspec-otel'

Within your spec helper, require the gem:

require 'rspec_otel'

And include the matchers within the rspec configuration:

RSpec.configure do |config|
  config.include RspecOtel::Matchers
end

Usage

Matching the presence of a span

You can match the emission of a span with the emit_span matcher:

require 'spec_helper'

RSpec.describe 'User API' do
  it 'emits a span' do
    expect do
      get :user, id: 1
    end.to emit_span('GET /user')
  end
end

emit_span will also match a regular expression:

require 'spec_helper'

RSpec.describe 'User API' do
  it 'emits a span' do
    expect do
      get :user, id: 1
    end.to emit_span(/^GET /)
  end
end

Several conditions can be added to the matcher:

  • as_root - Will match spans that are the root of a trace.
  • as_child - Will match spans that are not the root of a trace
  • with_attributes - Will match only the spans with the specified attributes.
  • without_attributes - Will only match the spans that do not have the specified attributes
  • with_event - Will match only the spans with the specified event.
  • without_event - Will only match the spans that do not have the specified event
  • with_link - Will match only the spans with the specified link.
  • without_link - Will only match the spans that do not have the specified link
  • with_status - Will match only the spans that have the proper status.
  • with_exception - Will match only the spans that have the specified exception event.
  • without_exception - Will match only the spans that do not have the specified exception event.

The *_event condition can be called multiple times with different events.

Disabling

We wrap every example in a new OpenTelemetry SDK configuration by default, if you wish to disable this you can tag your example with :rspec_otel_disable_tracing:

require 'spec_helper'

RSpec.describe 'User API', :rspec_otel_disable_tracing do
  it 'tests my code' do
    expect(true).to be true
  end
end

Compatibility

RSpec Otel ensures compatibility with the currently supported versions of the Ruby Language.

About

RSpec matchers for the OpenTelemetry framework

Topics

Resources

License

Stars

Watchers

Forks

Contributors 3

  •  
  •  
  •  

Languages