jaeger-client 0.4.1 → 0.4.2

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
  SHA1:
3
- metadata.gz: 5606aec21baf412bfe48e4c40291596abc074cd7
4
- data.tar.gz: 23c1915aa787002021cc84e9392ad599032128f1
3
+ metadata.gz: 75c88fcea8c5fa02b502e8c2c6cb3838a246e714
4
+ data.tar.gz: 12d8f676f98d486d1b9db5e73c7dc757e46477a8
5
5
  SHA512:
6
- metadata.gz: 21a5aebe28a5c1b4cfe8457ad5735c6e419edefed9d27651b0bbfbf22d3140a3fd958335ff759c569ea88552f02a619866bc6ab90de3b76100796cb4f6a599d7
7
- data.tar.gz: 40dc4610c85b315c347d41a2ff3cd5645e3ea3ba688b14f4418828acb58ba8e90df92554809b430fdb978f122c1c65b59988a8198d700656ae35256392916adf
6
+ metadata.gz: 2eedd11ef42e96094a128fd32df3c3bf5a152d498dd09933a667930caa5af7f287c00bddf9524cc87429898ff78a7e3cc1d2da1b38f560be9f3731bfe0f42ac1
7
+ data.tar.gz: c478b9e68a708fd6a093d08b38c844136535a4b3723dd717392dd7ce5852ac01ba2a6b0948f954924cbe9a46daf6ea9e13f8d87242bb58a647fb44a0d0695d6f
@@ -0,0 +1,32 @@
1
+ require: rubocop-rspec
2
+
3
+ AllCops:
4
+ Exclude:
5
+ - 'thrift/**/*'
6
+
7
+ Style/Documentation:
8
+ Enabled: no
9
+
10
+ Style/IfUnlessModifier:
11
+ Enabled: no
12
+
13
+ RSpec/NestedGroups:
14
+ Max: 4
15
+
16
+ RSpec/ExampleLength:
17
+ Enabled: no
18
+
19
+ Metrics/BlockLength:
20
+ Enabled: no
21
+
22
+ Metrics/MethodLength:
23
+ Enabled: no
24
+
25
+ Metrics/AbcSize:
26
+ Enabled: no
27
+
28
+ Lint/UnusedMethodArgument:
29
+ Enabled: no
30
+
31
+ Metrics/LineLength:
32
+ Max: 120
data/Rakefile CHANGED
@@ -1,6 +1,9 @@
1
1
  require 'bundler/gem_tasks'
2
2
  require 'rspec/core/rake_task'
3
+ require 'rubocop/rake_task'
3
4
 
4
5
  RSpec::Core::RakeTask.new(:spec)
5
6
 
6
- task :default => :spec
7
+ RuboCop::RakeTask.new(:rubocop)
8
+
9
+ task default: %i[rubocop spec]
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require "bundler/setup"
4
- require "jaeger/client"
3
+ require 'bundler/setup'
4
+ require 'jaeger/client'
5
5
 
6
6
  # You can add fixtures and/or initialization code here to make experimenting
7
7
  # with your gem easier. You can also use a different console, if you like.
@@ -10,5 +10,5 @@ require "jaeger/client"
10
10
  # require "pry"
11
11
  # Pry.start
12
12
 
13
- require "irb"
13
+ require 'irb'
14
14
  IRB.start(__FILE__)
@@ -1,15 +1,17 @@
1
- # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
1
+
2
+ lib = File.expand_path('lib', __dir__)
3
3
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
+ require 'jaeger/client/version'
6
+
5
7
  Gem::Specification.new do |spec|
6
8
  spec.name = 'jaeger-client'
7
- spec.version = '0.4.1'
9
+ spec.version = Jaeger::Client::VERSION
8
10
  spec.authors = ['SaleMove TechMovers']
9
11
  spec.email = ['techmovers@salemove.com']
10
12
 
11
- spec.summary = %q{OpenTracing Tracer implementation for Jaeger in Ruby}
12
- spec.description = %q{}
13
+ spec.summary = 'OpenTracing Tracer implementation for Jaeger in Ruby'
14
+ spec.description = ''
13
15
  spec.homepage = ''
14
16
  spec.license = 'MIT'
15
17
 
@@ -22,6 +24,8 @@ Gem::Specification.new do |spec|
22
24
  spec.add_development_dependency 'bundler', '~> 1.14'
23
25
  spec.add_development_dependency 'rake', '~> 10.0'
24
26
  spec.add_development_dependency 'rspec', '~> 3.0'
27
+ spec.add_development_dependency 'rubocop', '~> 0.54.0'
28
+ spec.add_development_dependency 'rubocop-rspec', '~> 1.24.0'
25
29
 
26
30
  spec.add_dependency 'opentracing', '~> 0.3'
27
31
  spec.add_dependency 'thrift'
@@ -9,6 +9,7 @@ require_relative 'client/carrier'
9
9
  require_relative 'client/trace_id'
10
10
  require_relative 'client/udp_sender'
11
11
  require_relative 'client/collector'
12
+ require_relative 'client/version'
12
13
 
13
14
  module Jaeger
14
15
  module Client
@@ -7,21 +7,18 @@ module Jaeger
7
7
  # [] retrieves a value by the given key
8
8
  # @param key [String] key to retrieve the value
9
9
  # @return [String] the desired value
10
- def [](key)
11
- end
10
+ def [](key); end
12
11
 
13
12
  # []= sets the value for the given key
14
13
  # @param key [String] key to set
15
14
  # @param value [String] value to set
16
- def []=(key, value)
17
- end
15
+ def []=(key, value); end
18
16
 
19
17
  # each iterates over every key-value pair in the carrier
20
18
  # @yield [key, value]
21
19
  # @yieldparam key [String] the key of the tuple
22
20
  # @yieldparam value [String] the value of the tuple
23
- def each(&block)
24
- end
21
+ def each(&block); end
25
22
  end
26
23
  end
27
24
  end
@@ -33,14 +33,14 @@ module Jaeger
33
33
  private
34
34
 
35
35
  def build_tags(tags)
36
- tags.map {|name, value| build_tag(name, value)}
36
+ tags.map { |name, value| build_tag(name, value) }
37
37
  end
38
38
 
39
39
  def build_logs(logs)
40
40
  logs.map do |timestamp:, fields:|
41
41
  Jaeger::Thrift::Log.new(
42
42
  'timestamp' => (timestamp.to_f * 1_000_000).to_i,
43
- 'fields' => fields.map {|name, value| build_tag(name, value)}
43
+ 'fields' => fields.map { |name, value| build_tag(name, value) }
44
44
  )
45
45
  end
46
46
  end
@@ -52,7 +52,7 @@ module Jaeger
52
52
  # @param timestamp [Time] time of the log
53
53
  # @param fields [Hash] Additional information to log
54
54
  def log(timestamp: Time.now, **fields)
55
- @logs << {timestamp: timestamp, fields: fields}
55
+ @logs << { timestamp: timestamp, fields: fields }
56
56
  end
57
57
 
58
58
  # Finish the {Span}
@@ -66,7 +66,7 @@ module Jaeger
66
66
 
67
67
  def build_binary_annotations
68
68
  @tags.map do |name, value|
69
- {key: name, value: value.to_s}
69
+ { key: name, value: value.to_s }
70
70
  end
71
71
  end
72
72
  end
@@ -37,9 +37,9 @@ module Jaeger
37
37
  end
38
38
 
39
39
  def to_s
40
- "#<SpanContext @span_id=#{span_id.to_s(16)} " +
41
- "@parent_id=#{parent_id.to_s(16)} " +
42
- "@trace_id=#{trace_id.to_s(16)} " +
40
+ "#<SpanContext @span_id=#{span_id.to_s(16)} " \
41
+ "@parent_id=#{parent_id.to_s(16)} " \
42
+ "@trace_id=#{trace_id.to_s(16)} " \
43
43
  "@flags=#{flags}>"
44
44
  end
45
45
  end
@@ -1,7 +1,7 @@
1
1
  module Jaeger
2
2
  module Client
3
3
  module TraceId
4
- TRACE_ID_UPPER_BOUND = 2 ** 63 - 1
4
+ TRACE_ID_UPPER_BOUND = 2**63 - 1
5
5
 
6
6
  def self.generate
7
7
  rand(TRACE_ID_UPPER_BOUND)
@@ -72,21 +72,24 @@ module Jaeger
72
72
  def parse_context(trace)
73
73
  return nil if !trace || trace == ''
74
74
 
75
- trace_arguments = trace.split(':').map {|arg| arg.to_i(16)}
75
+ trace_arguments = trace.split(':').map { |arg| arg.to_i(16) }
76
76
  return nil if trace_arguments.size != 4
77
77
 
78
78
  trace_id, span_id, parent_id, flags = trace_arguments
79
+ return nil if trace_id.zero? || span_id.zero?
79
80
 
80
- if trace_id != 0 && span_id != 0
81
- SpanContext.new(
82
- trace_id: trace_id,
83
- parent_id: parent_id,
84
- span_id: span_id,
85
- flags: flags
86
- )
87
- else
88
- nil
89
- end
81
+ SpanContext.new(
82
+ trace_id: to_signed_int(trace_id, 64),
83
+ parent_id: to_signed_int(parent_id, 64),
84
+ span_id: to_signed_int(span_id, 64),
85
+ flags: flags
86
+ )
87
+ end
88
+
89
+ def to_signed_int(num, bits)
90
+ # Using two's complement
91
+ mask = 2**(bits - 1)
92
+ (num & ~mask) - (num & mask)
90
93
  end
91
94
  end
92
95
  end
@@ -1,5 +1,6 @@
1
1
  require_relative './udp_sender/transport'
2
2
  require 'jaeger/thrift/agent'
3
+ require 'socket'
3
4
  require 'thread'
4
5
 
5
6
  module Jaeger
@@ -10,6 +11,27 @@ module Jaeger
10
11
  @collector = collector
11
12
  @flush_interval = flush_interval
12
13
 
14
+ @tags = [
15
+ Jaeger::Thrift::Tag.new(
16
+ 'key' => 'jaeger.version',
17
+ 'vType' => Jaeger::Thrift::TagType::STRING,
18
+ 'vStr' => 'Ruby-' + Jaeger::Client::VERSION
19
+ ),
20
+ Jaeger::Thrift::Tag.new(
21
+ 'key' => 'hostname',
22
+ 'vType' => Jaeger::Thrift::TagType::STRING,
23
+ 'vStr' => Socket.gethostname
24
+ )
25
+ ]
26
+ ipv4 = Socket.ip_address_list.find { |ai| ai.ipv4? && !ai.ipv4_loopback? }
27
+ unless ipv4.nil?
28
+ @tags << Jaeger::Thrift::Tag.new(
29
+ 'key' => 'ip',
30
+ 'vType' => Jaeger::Thrift::TagType::STRING,
31
+ 'vStr' => ipv4.ip_address
32
+ )
33
+ end
34
+
13
35
  transport = Transport.new(host, port)
14
36
  protocol = ::Thrift::CompactProtocol.new(transport)
15
37
  @client = Jaeger::Thrift::Agent::Client.new(protocol)
@@ -38,7 +60,7 @@ module Jaeger
38
60
  batch = Jaeger::Thrift::Batch.new(
39
61
  'process' => Jaeger::Thrift::Process.new(
40
62
  'serviceName' => @service_name,
41
- 'tags' => [],
63
+ 'tags' => @tags
42
64
  ),
43
65
  'spans' => thrift_spans
44
66
  )
@@ -20,6 +20,7 @@ module Jaeger
20
20
  end
21
21
 
22
22
  def open; end
23
+
23
24
  def close; end
24
25
 
25
26
  private
@@ -29,7 +30,7 @@ module Jaeger
29
30
  @socket.flush
30
31
  rescue Errno::ECONNREFUSED
31
32
  warn 'Unable to connect to Jaeger Agent'
32
- rescue => e
33
+ rescue StandardError => e
33
34
  warn "Unable to send spans: #{e.message}"
34
35
  end
35
36
  end
@@ -0,0 +1,5 @@
1
+ module Jaeger
2
+ module Client
3
+ VERSION = '0.4.2'.freeze
4
+ end
5
+ end
@@ -11,24 +11,31 @@ port = ENV['JAEGER_HOST'] || 6831
11
11
  tracer1 = Jaeger::Client.build(host: host, port: port.to_i, service_name: 'test-service', flush_interval: 1)
12
12
  tracer2 = Jaeger::Client.build(host: host, port: port.to_i, service_name: 'downstream-service', flush_interval: 1)
13
13
 
14
- outer_span = tracer1.start_span('receive request', tags: {
15
- 'span.kind' => 'server'
16
- })
14
+ outer_span = tracer1.start_span(
15
+ 'receive request',
16
+ tags: { 'span.kind' => 'server' }
17
+ )
17
18
  sleep 0.1
18
19
  outer_span.log(event: 'woop di doop', count: 5)
19
20
  sleep 1
20
21
 
21
- inner_span = tracer1.start_span('fetch info from downstream', child_of: outer_span, tags: {
22
- 'span.kind' => 'client',
23
- 'peer.service' => 'downstream-service',
24
- 'peer.ipv4' => '6.6.6.6',
25
- 'peer.port' => 443
26
- })
22
+ inner_span = tracer1.start_span(
23
+ 'fetch info from downstream',
24
+ child_of: outer_span,
25
+ tags: {
26
+ 'span.kind' => 'client',
27
+ 'peer.service' => 'downstream-service',
28
+ 'peer.ipv4' => '6.6.6.6',
29
+ 'peer.port' => 443
30
+ }
31
+ )
27
32
  sleep 0.3 # emulate network delay
28
33
 
29
- downstream_span = tracer2.start_span('downstream operation', child_of: inner_span, tags: {
30
- 'span.kind' => 'server'
31
- })
34
+ downstream_span = tracer2.start_span(
35
+ 'downstream operation',
36
+ child_of: inner_span,
37
+ tags: { 'span.kind' => 'server' }
38
+ )
32
39
  sleep 0.5
33
40
  downstream_span.finish
34
41
 
@@ -42,5 +49,4 @@ outer_span.finish
42
49
  tracer1.stop
43
50
  tracer2.stop
44
51
 
45
- puts "Finished"
46
-
52
+ puts 'Finished'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jaeger-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - SaleMove TechMovers
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-09-27 00:00:00.000000000 Z
11
+ date: 2018-04-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -52,6 +52,34 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '3.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rubocop
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 0.54.0
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 0.54.0
69
+ - !ruby/object:Gem::Dependency
70
+ name: rubocop-rspec
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 1.24.0
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 1.24.0
55
83
  - !ruby/object:Gem::Dependency
56
84
  name: opentracing
57
85
  requirement: !ruby/object:Gem::Requirement
@@ -89,6 +117,7 @@ extra_rdoc_files: []
89
117
  files:
90
118
  - ".gitignore"
91
119
  - ".rspec"
120
+ - ".rubocop.yml"
92
121
  - ".travis.yml"
93
122
  - Gemfile
94
123
  - LICENSE.txt
@@ -106,6 +135,7 @@ files:
106
135
  - lib/jaeger/client/tracer.rb
107
136
  - lib/jaeger/client/udp_sender.rb
108
137
  - lib/jaeger/client/udp_sender/transport.rb
138
+ - lib/jaeger/client/version.rb
109
139
  - script/create_trace
110
140
  - thrift/agent.thrift
111
141
  - thrift/gen-rb/jaeger/thrift/agent.rb