traces 0.5.0 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 284452f4bfc37587b942b74918b2807ad6c51ee09d5a93bd39d5eefa6ba66aa1
4
- data.tar.gz: 7f2d42000701312aeeb5015b19f888d5ed5acb4d4c79322e894b584292c0aed1
3
+ metadata.gz: b772ba31eff5f29bc6ac7c854709194783ea4005ce12f6d7030fa02ad3f8f281
4
+ data.tar.gz: e080e451e146d7d660b4f2f4b0be503bc3c9e087759ec85e303164d0170991b3
5
5
  SHA512:
6
- metadata.gz: b32ad9f2018cce91b418907c052b6f9c8b63b2fad08ccdc4e1abcf3dd623e0209ad3bed87b5dfdf4138c20110e0e1806caec1a1b62bbd064b2699498822e7e24
7
- data.tar.gz: 41e7cd96fb1dcb21f727d2753854ba77c08378fee1ad459b9f696d2bdecc857841c7fda0f3cf2d3e3b03647bfbe6cd137a846cb1c6230a5cbcc1d149899ea031
6
+ metadata.gz: c850a6dc1ec23c2bf6fc8a320fbe00f65837e0931f34ee8b9b86a8d9e492b44b9aebd7e402e5b05637ddb5750d7ef5c5a72346b426efcc9a15fba753828c6778
7
+ data.tar.gz: f1f906387a4de0a53ae71a5ec72a6951cce247e1cd31376a5b0532a5ba0c7a9d95cff94fedf60f468370b8db018b23566a3a81287c3e6b466f17e56dd1baeea8
checksums.yaml.gz.sig CHANGED
Binary file
@@ -74,13 +74,8 @@ module Traces
74
74
  end
75
75
 
76
76
  # Get a trace context from the current execution scope.
77
- # @parameter span [Span] An optional span from which to extract the context.
78
- def trace_context(span = nil)
79
- if span
80
- span.context
81
- else
82
- Fiber.current.traces_backend_context
83
- end
77
+ def trace_context
78
+ Fiber.current.traces_backend_context
84
79
  end
85
80
  end
86
81
  end
@@ -43,12 +43,14 @@ module Traces
43
43
  # @parameter key [String] The metadata key.
44
44
  # @parameter value [Object] The metadata value. Should be coercable to a string.
45
45
  def []= key, value
46
- unless key.is_a?(String)
47
- raise ArgumentError, "Invalid name (must be String): #{key.inspect}!"
46
+ unless key.is_a?(String) || key.is_a?(Symbol)
47
+ raise ArgumentError, "Invalid attribute key (must be String or Symbol): #{key.inspect}!"
48
48
  end
49
49
 
50
- unless String(value)
51
- raise ArgumentError, "Invalid value (must be String): #{value.inspect}!"
50
+ begin
51
+ String(value)
52
+ rescue
53
+ raise ArgumentError, "Invalid attribute value (must be convertible to String): #{value.inspect}!"
52
54
  end
53
55
  end
54
56
  end
@@ -58,6 +60,10 @@ module Traces
58
60
  # @parameter name [String] A useful name/annotation for the recorded span.
59
61
  # @parameter attributes [Hash] Metadata for the recorded span.
60
62
  def trace(name, resource: self.class.name, attributes: nil, &block)
63
+ unless block_given?
64
+ raise ArgumentError, "No block given!"
65
+ end
66
+
61
67
  unless name.is_a?(String)
62
68
  raise ArgumentError, "Invalid name (must be String): #{name.inspect}!"
63
69
  end
@@ -68,12 +74,19 @@ module Traces
68
74
  end
69
75
 
70
76
  context = Context.nested(Fiber.current.traces_backend_context)
77
+
78
+ span = Span.new(context)
79
+
80
+ # Ensure the attributes are valid and follow the requirements:
81
+ attributes&.each do |key, value|
82
+ span[key] = value
83
+ end
84
+
71
85
  Fiber.current.traces_backend_context = context
72
86
 
73
87
  if block.arity.zero?
74
88
  yield
75
89
  else
76
- span = Span.new(context)
77
90
  yield span
78
91
  end
79
92
  end
@@ -84,13 +97,8 @@ module Traces
84
97
  end
85
98
 
86
99
  # Get a trace context from the current execution scope.
87
- # @parameter span [Span] An optional span from which to extract the context.
88
- def trace_context(span = nil)
89
- if span
90
- span.context
91
- else
92
- Fiber.current.traces_backend_context
93
- end
100
+ def trace_context
101
+ Fiber.current.traces_backend_context
94
102
  end
95
103
  end
96
104
  end
@@ -39,7 +39,7 @@ module Traces
39
39
  end
40
40
 
41
41
  if state
42
- state = state.map{|item| item.split('=')}
42
+ state = state.map{|item| item.split('=')}.to_h
43
43
  end
44
44
 
45
45
  self.new(trace_id, parent_id, flags, state, **options)
@@ -91,7 +91,7 @@ module Traces
91
91
 
92
92
  # Denotes that the caller may have recorded trace data. When unset, the caller did not record trace data out-of-band.
93
93
  def sampled?
94
- @flags & SAMPLED
94
+ (@flags & SAMPLED) != 0
95
95
  end
96
96
 
97
97
  # Whether this context was created from a distributed trace header.
@@ -28,18 +28,23 @@ module Traces
28
28
  self.const_defined?(:Backend)
29
29
  end
30
30
 
31
- # A module which contains tracing specific wrappers.
32
31
  module Provider
32
+ end
33
+
34
+ module Singleton
35
+ # A module which contains tracing specific wrappers.
33
36
  def traces_provider
34
37
  @traces_provider ||= Module.new
35
38
  end
36
39
  end
37
40
 
41
+ private_constant :Singleton
42
+
38
43
  # Bail out if there is no backend configured.
39
44
  if self.enabled?
40
45
  # Extend the specified class in order to emit traces.
41
46
  def self.Provider(klass, &block)
42
- klass.extend(Provider)
47
+ klass.extend(Singleton)
43
48
 
44
49
  provider = klass.traces_provider
45
50
  provider.prepend(Backend::Interface)
@@ -21,5 +21,5 @@
21
21
  # THE SOFTWARE.
22
22
 
23
23
  module Traces
24
- VERSION = "0.5.0"
24
+ VERSION = "0.7.0"
25
25
  end
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: traces
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samuel Williams
@@ -10,48 +10,91 @@ bindir: bin
10
10
  cert_chain:
11
11
  - |
12
12
  -----BEGIN CERTIFICATE-----
13
- MIIEhDCCAuygAwIBAgIBATANBgkqhkiG9w0BAQsFADA3MTUwMwYDVQQDDCxzYW11
14
- ZWwud2lsbGlhbXMvREM9b3Jpb250cmFuc2Zlci9EQz1jby9EQz1uejAeFw0yMTA4
15
- MTYwNjMzNDRaFw0yMjA4MTYwNjMzNDRaMDcxNTAzBgNVBAMMLHNhbXVlbC53aWxs
16
- aWFtcy9EQz1vcmlvbnRyYW5zZmVyL0RDPWNvL0RDPW56MIIBojANBgkqhkiG9w0B
17
- AQEFAAOCAY8AMIIBigKCAYEAyXLSS/cw+fXJ5e7hi+U/TeChPWeYdwJojDsFY1xr
18
- xvtqbTTL8gbLHz5LW3QD2nfwCv3qTlw0qI3Ie7a9VMJMbSvgVEGEfQirqIgJXWMj
19
- eNMDgKsMJtC7u/43abRKx7TCURW3iWyR19NRngsJJmaR51yGGGm2Kfsr+JtKKLtL
20
- L188Wm3f13KAx7QJU8qyuBnj1/gWem076hzdA7xi1DbrZrch9GCRz62xymJlrJHn
21
- 9iZEZ7AxrS7vokhMlzSr/XMUihx/8aFKtk+tMLClqxZSmBWIErWdicCGTULXCBNb
22
- E/mljo4zEVKhlTWpJklMIhr55ZRrSarKFuW7en0+tpJrfsYiAmXMJNi4XAYJH7uL
23
- rgJuJwSaa/dMz+VmUoo7VKtSfCoOI+6v5/z0sK3oT6sG6ZwyI47DBq2XqNC6tnAj
24
- w+XmCywiTQrFzMMAvcA7rPI4F0nU1rZId51rOvvfxaONp+wgTi4P8owZLw0/j0m4
25
- 8C20DYi6EYx4AHDXiLpElWh3AgMBAAGjgZowgZcwCQYDVR0TBAIwADALBgNVHQ8E
26
- BAMCBLAwHQYDVR0OBBYEFB6ZaeWKxQjGTI+pmz7cKRmMIywwMC4GA1UdEQQnMCWB
27
- I3NhbXVlbC53aWxsaWFtc0BvcmlvbnRyYW5zZmVyLmNvLm56MC4GA1UdEgQnMCWB
28
- I3NhbXVlbC53aWxsaWFtc0BvcmlvbnRyYW5zZmVyLmNvLm56MA0GCSqGSIb3DQEB
29
- CwUAA4IBgQBVoM+pu3dpdUhZM1w051iw5GfiqclAr1Psypf16Tiod/ho//4oAu6T
30
- 9fj3DPX/acWV9P/FScvqo4Qgv6g4VWO5ZU7z2JmPoTXZtYMunRAmQPFL/gSUc6aK
31
- vszMHIyhtyzRc6DnfW2AiVOjMBjaYv8xXZc9bduniRVPrLR4J7ozmGLh4o4uJp7w
32
- x9KCFaR8Lvn/r0oJWJOqb/DMAYI83YeN2Dlt3jpwrsmsONrtC5S3gOUle5afSGos
33
- bYt5ocnEpKSomR9ZtnCGljds/aeO1Xgpn2r9HHcjwnH346iNrnHmMlC7BtHUFPDg
34
- Ts92S47PTOXzwPBDsrFiq3VLbRjHSwf8rpqybQBH9MfzxGGxTaETQYOd6b4e4Ag6
35
- y92abGna0bmIEb4+Tx9rQ10Uijh1POzvr/VTH4bbIPy9FbKrRsIQ24qDbNJRtOpE
36
- RAOsIl+HOBTb252nx1kIRN5hqQx272AJCbCjKx8egcUQKffFVVCI0nye09v5CK+a
37
- HiLJ8VOFx6w=
13
+ MIIE2DCCA0CgAwIBAgIBATANBgkqhkiG9w0BAQsFADBhMRgwFgYDVQQDDA9zYW11
14
+ ZWwud2lsbGlhbXMxHTAbBgoJkiaJk/IsZAEZFg1vcmlvbnRyYW5zZmVyMRIwEAYK
15
+ CZImiZPyLGQBGRYCY28xEjAQBgoJkiaJk/IsZAEZFgJuejAeFw0yMjA4MDYwNDUz
16
+ MjRaFw0zMjA4MDMwNDUzMjRaMGExGDAWBgNVBAMMD3NhbXVlbC53aWxsaWFtczEd
17
+ MBsGCgmSJomT8ixkARkWDW9yaW9udHJhbnNmZXIxEjAQBgoJkiaJk/IsZAEZFgJj
18
+ bzESMBAGCgmSJomT8ixkARkWAm56MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIB
19
+ igKCAYEAomvSopQXQ24+9DBB6I6jxRI2auu3VVb4nOjmmHq7XWM4u3HL+pni63X2
20
+ 9qZdoq9xt7H+RPbwL28LDpDNflYQXoOhoVhQ37Pjn9YDjl8/4/9xa9+NUpl9XDIW
21
+ sGkaOY0eqsQm1pEWkHJr3zn/fxoKPZPfaJOglovdxf7dgsHz67Xgd/ka+Wo1YqoE
22
+ e5AUKRwUuvaUaumAKgPH+4E4oiLXI4T1Ff5Q7xxv6yXvHuYtlMHhYfgNn8iiW8WN
23
+ XibYXPNP7NtieSQqwR/xM6IRSoyXKuS+ZNGDPUUGk8RoiV/xvVN4LrVm9upSc0ss
24
+ RZ6qwOQmXCo/lLcDUxJAgG95cPw//sI00tZan75VgsGzSWAOdjQpFM0l4dxvKwHn
25
+ tUeT3ZsAgt0JnGqNm2Bkz81kG4A2hSyFZTFA8vZGhp+hz+8Q573tAR89y9YJBdYM
26
+ zp0FM4zwMNEUwgfRzv1tEVVUEXmoFCyhzonUUw4nE4CFu/sE3ffhjKcXcY//qiSW
27
+ xm4erY3XAgMBAAGjgZowgZcwCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAwHQYDVR0O
28
+ BBYEFO9t7XWuFf2SKLmuijgqR4sGDlRsMC4GA1UdEQQnMCWBI3NhbXVlbC53aWxs
29
+ aWFtc0BvcmlvbnRyYW5zZmVyLmNvLm56MC4GA1UdEgQnMCWBI3NhbXVlbC53aWxs
30
+ aWFtc0BvcmlvbnRyYW5zZmVyLmNvLm56MA0GCSqGSIb3DQEBCwUAA4IBgQB5sxkE
31
+ cBsSYwK6fYpM+hA5B5yZY2+L0Z+27jF1pWGgbhPH8/FjjBLVn+VFok3CDpRqwXCl
32
+ xCO40JEkKdznNy2avOMra6PFiQyOE74kCtv7P+Fdc+FhgqI5lMon6tt9rNeXmnW/
33
+ c1NaMRdxy999hmRGzUSFjozcCwxpy/LwabxtdXwXgSay4mQ32EDjqR1TixS1+smp
34
+ 8C/NCWgpIfzpHGJsjvmH2wAfKtTTqB9CVKLCWEnCHyCaRVuKkrKjqhYCdmMBqCws
35
+ JkxfQWC+jBVeG9ZtPhQgZpfhvh+6hMhraUYRQ6XGyvBqEUe+yo6DKIT3MtGE2+CP
36
+ eX9i9ZWBydWb8/rvmwmX2kkcBbX0hZS1rcR593hGc61JR6lvkGYQ2MYskBveyaxt
37
+ Q2K9NVun/S785AP05vKkXZEFYxqG6EW012U4oLcFl5MySFajYXRYbuUpH6AY+HP8
38
+ voD0MPg1DssDLKwXyt1eKD/+Fq0bFWhwVM/1XiAXL7lyYUyOq24KHgQ2Csg=
38
39
  -----END CERTIFICATE-----
39
- date: 2022-01-27 00:00:00.000000000 Z
40
+ date: 2022-09-05 00:00:00.000000000 Z
40
41
  dependencies:
41
42
  - !ruby/object:Gem::Dependency
42
- name: rspec
43
+ name: bake-test
43
44
  requirement: !ruby/object:Gem::Requirement
44
45
  requirements:
45
46
  - - "~>"
46
47
  - !ruby/object:Gem::Version
47
- version: '3.0'
48
+ version: '0.2'
48
49
  type: :development
49
50
  prerelease: false
50
51
  version_requirements: !ruby/object:Gem::Requirement
51
52
  requirements:
52
53
  - - "~>"
53
54
  - !ruby/object:Gem::Version
54
- version: '3.0'
55
+ version: '0.2'
56
+ - !ruby/object:Gem::Dependency
57
+ name: bake-test-external
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - "~>"
61
+ - !ruby/object:Gem::Version
62
+ version: '0.2'
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: '0.2'
70
+ - !ruby/object:Gem::Dependency
71
+ name: covered
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - "~>"
75
+ - !ruby/object:Gem::Version
76
+ version: '0.16'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - "~>"
82
+ - !ruby/object:Gem::Version
83
+ version: '0.16'
84
+ - !ruby/object:Gem::Dependency
85
+ name: sus
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - "~>"
89
+ - !ruby/object:Gem::Version
90
+ version: '0.13'
91
+ type: :development
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - "~>"
96
+ - !ruby/object:Gem::Version
97
+ version: '0.13'
55
98
  description:
56
99
  email:
57
100
  executables: []
@@ -84,7 +127,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
84
127
  - !ruby/object:Gem::Version
85
128
  version: '0'
86
129
  requirements: []
87
- rubygems_version: 3.1.6
130
+ rubygems_version: 3.3.7
88
131
  signing_key:
89
132
  specification_version: 4
90
133
  summary: Application instrumentation and tracing.
metadata.gz.sig CHANGED
Binary file