tracing-matchers 1.0.1 → 1.1.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7b267634453368b953b1c360b97c757a78dea84b
4
- data.tar.gz: 3ca899031fbfa05514868c595911074e3d9fc556
3
+ metadata.gz: 453bdb76b19f9217b2e1ef3149f1f787b6bee188
4
+ data.tar.gz: 951d8e59a64ae2ed9f01f18e427b051c901e5d36
5
5
  SHA512:
6
- metadata.gz: 8ec28d560afdac35daf3eeabcd2a59410af45d967a88b6d615ec1ee00d7a7b05f98f4a613cc3d3e1c95f9fb7cab676fe5aa869998148a7884fe9759d664c51b8
7
- data.tar.gz: 45c633fa61aa88201de235a5469384015cd249a51c6b88c4ca8ed967606a68bbcd532a0d0ae7313428acd7c5309797997135212df4058def6ff689471b1d34cd
6
+ metadata.gz: 76455d6e26271679fa9f5c5ece791be45063a329f44a969f9d7e7f7768ca6f1c57099640f178013d29304649fbb52ce0b02184861f8a526cb39350de74a672de
7
+ data.tar.gz: 8d2a86f4590c50b52b759f79da0920bd3ed1ea5064384d1422081b94f9c687d7acd4a9a0f9d2e3ee70d796a50d66d16de39116be00a03b5957e88342ce4c4f80
data/README.md CHANGED
@@ -36,6 +36,7 @@ expect(tracer).to have_span(optional operation_name)
36
36
  .with_log(optional fields)
37
37
  .with_baggage(optional baggage to match)
38
38
  .child_of(operation_name or span or context)
39
+ .following_after(operation_name or span)
39
40
 
40
41
  expect(span).to have_tag
41
42
  expect(span).to have_tags
@@ -45,6 +46,7 @@ expect(span).to have_baggage
45
46
  expect(span).to have_baggage_item
46
47
  expect(span).to have_parent
47
48
  expect(span).to be_child_of
49
+ expect(span).to follow_after(String|Span)
48
50
  ```
49
51
 
50
52
  Detailed documentation and usage examples can be found in [matchers.rb](https://github.com/iaintshine/ruby-tracing-matchers/blob/master/lib/tracing/matchers.rb) file.
@@ -41,6 +41,12 @@ module Tracing
41
41
  end
42
42
  alias :with_parent :child_of
43
43
 
44
+ def follow_after(previous)
45
+ @predicates << Tracing::Matchers::Span::FollowAfter.new(previous)
46
+ self
47
+ end
48
+ alias :following_after :follow_after
49
+
44
50
  # @return [Boolean]
45
51
  def matches?(tracer)
46
52
  @subject = tracer
@@ -0,0 +1,72 @@
1
+ module Tracing
2
+ module Matchers
3
+ module Span
4
+ # @private
5
+ class FollowAfter
6
+ include Test::TypeCheck
7
+
8
+ def initialize(previous)
9
+ NotNull! previous
10
+ @expected = previous
11
+ end
12
+
13
+ # @return [Boolean]
14
+ def matches?(span)
15
+ @tracer = span.tracer
16
+ @subject = span
17
+
18
+ return false unless expected_index && subject_index
19
+ expected_index < subject_index
20
+ end
21
+
22
+ # @return [String]
23
+ def description
24
+ "follow after #{expected_message}"
25
+ end
26
+
27
+ # @return [String]
28
+ def failure_message
29
+ "expected #{subject_message} to follow after #{expected_message}"
30
+ end
31
+ alias :failure_message_for_should :failure_message
32
+
33
+ # @return [String]
34
+ def failure_message_when_negated
35
+ "did not expected #{subject_message} to follow after #{expected_message}"
36
+ end
37
+ alias :failure_message_for_should_not :failure_message_when_negated
38
+
39
+ private
40
+
41
+ def expected_index
42
+ @tracer.spans.find_index(expected_span)
43
+ end
44
+
45
+ def subject_index
46
+ @tracer.spans.find_index(@subject)
47
+ end
48
+
49
+ def expected_span
50
+ case
51
+ when @expected.respond_to?(:context) then @expected
52
+ when @expected.is_a?(String)
53
+ @tracer.spans.find { |span| span.operation_name == @expected }
54
+ else @expected
55
+ end
56
+ end
57
+
58
+ def expected_message
59
+ case
60
+ when @expected.respond_to?(:context) then "the span with operation name \"#{@expected.operation_name}\""
61
+ when @expected.is_a?(String) then "a span with operation name \"#{@expected}\""
62
+ else nil
63
+ end
64
+ end
65
+
66
+ def subject_message
67
+ "a span with operation name \"#{@subject.operation_name}\""
68
+ end
69
+ end
70
+ end
71
+ end
72
+ end
@@ -2,6 +2,7 @@ require "tracing/matchers/span/have_tag"
2
2
  require "tracing/matchers/span/have_log"
3
3
  require "tracing/matchers/span/have_baggage"
4
4
  require "tracing/matchers/span/be_child_of"
5
+ require "tracing/matchers/span/follow_after"
5
6
 
6
7
  module Tracing
7
8
  module Matchers
@@ -68,5 +69,18 @@ module Tracing
68
69
  Tracing::Matchers::Span::BeChildOf.new(parent)
69
70
  end
70
71
  alias :have_parent :be_child_of
72
+
73
+ # The `follow_after` matcher tests that the span follows after some other span.
74
+ # @example
75
+ #
76
+ # # Passes if span follows after spcific span
77
+ # expect(span).to be_child_of("previous operation")
78
+ # expect(span).to be_child_of(previous_span)
79
+ #
80
+ # @param [String, Span] previous expected span to follow after
81
+ # @return [FollowAfter]
82
+ def follow_after(previous)
83
+ Tracing::Matchers::Span::FollowAfter.new(previous)
84
+ end
71
85
  end
72
86
  end
@@ -1,5 +1,5 @@
1
1
  module Tracing
2
2
  module Matchers
3
- VERSION = "1.0.1"
3
+ VERSION = "1.1.0"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tracing-matchers
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - iaintshine
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-08-30 00:00:00.000000000 Z
11
+ date: 2017-08-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: test-tracer
@@ -89,6 +89,7 @@ files:
89
89
  - lib/tracing/matchers/have_spans.rb
90
90
  - lib/tracing/matchers/have_traces.rb
91
91
  - lib/tracing/matchers/span/be_child_of.rb
92
+ - lib/tracing/matchers/span/follow_after.rb
92
93
  - lib/tracing/matchers/span/have_baggage.rb
93
94
  - lib/tracing/matchers/span/have_log.rb
94
95
  - lib/tracing/matchers/span/have_tag.rb