rspec-otel 0.0.7 → 0.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/rspec_otel/matchers/emit_span.rb +9 -7
- data/lib/rspec_otel/matchers/span_details.rb +64 -0
- data/lib/rspec_otel/matchers.rb +1 -0
- data/lib/rspec_otel/version.rb +1 -1
- metadata +17 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 494c22ee6a688468f77094d8b4f27242edd872ec3a24232337375b8dd611d38e
|
|
4
|
+
data.tar.gz: ecc743b5a1752adfa8d624d17ab3f6ce87a291ce4393d480fb33f7ef92068e77
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 496f2ac07d3b62cc36c4027266d0dbd6188e75fb075140b52791d3697845585223cdaebaf7e79e60b733a175b1b2352ffbbac88c00c0920c7567c319f2526253
|
|
7
|
+
data.tar.gz: d26ee3edc01891c632cb97cd92b02507849ee4c33c20faae47057a7f523f01e010c38ccabf4940dbdc601ac9f8734ffe56fae5f0c7c6aea4aced9ce7103feb2f
|
|
@@ -116,15 +116,12 @@ module RspecOtel
|
|
|
116
116
|
|
|
117
117
|
def failure_message
|
|
118
118
|
closest = closest_span
|
|
119
|
-
|
|
119
|
+
prefix = "expected span #{failure_match_description} #{printable_name} to have been emitted"
|
|
120
120
|
|
|
121
121
|
case closest
|
|
122
|
-
when nil
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
"#{expect_content}, but it couldn't be found. Found a close matching span named `#{closest.name}`"
|
|
126
|
-
else
|
|
127
|
-
raise "I don't know what to do with a #{closest.class} span"
|
|
122
|
+
when nil then "#{prefix}, but there were no spans emitted at all"
|
|
123
|
+
when OpenTelemetry::SDK::Trace::SpanData then closest_not_found_message(prefix, closest)
|
|
124
|
+
else raise "I don't know what to do with a #{closest.class} span"
|
|
128
125
|
end
|
|
129
126
|
end
|
|
130
127
|
|
|
@@ -219,6 +216,11 @@ module RspecOtel
|
|
|
219
216
|
|
|
220
217
|
!link.empty?
|
|
221
218
|
end
|
|
219
|
+
|
|
220
|
+
def closest_not_found_message(prefix, span)
|
|
221
|
+
"#{prefix}, but it couldn't be found. " \
|
|
222
|
+
"Found a close matching span named `#{span.name}`#{SpanDetails.new(span)}"
|
|
223
|
+
end
|
|
222
224
|
end
|
|
223
225
|
end
|
|
224
226
|
end
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module RspecOtel
|
|
4
|
+
module Matchers
|
|
5
|
+
class SpanDetails
|
|
6
|
+
def initialize(span)
|
|
7
|
+
@span = span
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def to_s
|
|
11
|
+
lines = [attributes_details, events_details, links_details, status_details].compact
|
|
12
|
+
return '' if lines.empty?
|
|
13
|
+
|
|
14
|
+
"\n#{lines.join("\n")}"
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
private
|
|
18
|
+
|
|
19
|
+
def attributes_details
|
|
20
|
+
return unless @span.attributes&.any?
|
|
21
|
+
|
|
22
|
+
" attributes: #{@span.attributes.inspect}"
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def events_details
|
|
26
|
+
return unless @span.events&.any?
|
|
27
|
+
|
|
28
|
+
format_collection('events', @span.events) { |e| format_item(e.name, e.attributes) }
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def links_details
|
|
32
|
+
return unless @span.links&.any?
|
|
33
|
+
|
|
34
|
+
format_collection('links', @span.links) { |l| format_item('link', l.attributes) }
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def status_details
|
|
38
|
+
return if @span.status.nil? || @span.status.code == OpenTelemetry::Trace::Status::UNSET
|
|
39
|
+
|
|
40
|
+
label = status_label(@span.status.code)
|
|
41
|
+
desc = @span.status.description
|
|
42
|
+
status_str = desc.to_s.empty? ? label : "#{label} (#{desc})"
|
|
43
|
+
" status: #{status_str}"
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def format_collection(header, collection, &)
|
|
47
|
+
item_lines = collection.map(&)
|
|
48
|
+
" #{header}:\n#{item_lines.join("\n")}"
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def format_item(label, attributes)
|
|
52
|
+
attributes&.any? ? " - #{label} #{attributes.inspect}" : " - #{label}"
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def status_label(code)
|
|
56
|
+
case code
|
|
57
|
+
when OpenTelemetry::Trace::Status::OK then 'ok'
|
|
58
|
+
when OpenTelemetry::Trace::Status::ERROR then 'error'
|
|
59
|
+
else 'unknown'
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
end
|
data/lib/rspec_otel/matchers.rb
CHANGED
data/lib/rspec_otel/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: rspec-otel
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.8
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Damien MATHIEU
|
|
@@ -9,6 +9,20 @@ bindir: bin
|
|
|
9
9
|
cert_chain: []
|
|
10
10
|
date: 1980-01-02 00:00:00.000000000 Z
|
|
11
11
|
dependencies:
|
|
12
|
+
- !ruby/object:Gem::Dependency
|
|
13
|
+
name: logger
|
|
14
|
+
requirement: !ruby/object:Gem::Requirement
|
|
15
|
+
requirements:
|
|
16
|
+
- - ">="
|
|
17
|
+
- !ruby/object:Gem::Version
|
|
18
|
+
version: '0'
|
|
19
|
+
type: :runtime
|
|
20
|
+
prerelease: false
|
|
21
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
22
|
+
requirements:
|
|
23
|
+
- - ">="
|
|
24
|
+
- !ruby/object:Gem::Version
|
|
25
|
+
version: '0'
|
|
12
26
|
- !ruby/object:Gem::Dependency
|
|
13
27
|
name: opentelemetry-api
|
|
14
28
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -77,6 +91,7 @@ files:
|
|
|
77
91
|
- lib/rspec_otel.rb
|
|
78
92
|
- lib/rspec_otel/matchers.rb
|
|
79
93
|
- lib/rspec_otel/matchers/emit_span.rb
|
|
94
|
+
- lib/rspec_otel/matchers/span_details.rb
|
|
80
95
|
- lib/rspec_otel/rspec.rb
|
|
81
96
|
- lib/rspec_otel/version.rb
|
|
82
97
|
homepage: https://github.com/dmathieu/rspec-otel
|
|
@@ -98,7 +113,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
98
113
|
- !ruby/object:Gem::Version
|
|
99
114
|
version: '0'
|
|
100
115
|
requirements: []
|
|
101
|
-
rubygems_version:
|
|
116
|
+
rubygems_version: 4.0.6
|
|
102
117
|
specification_version: 4
|
|
103
118
|
summary: RSpec matchers for the OpenTelemetry framework
|
|
104
119
|
test_files: []
|