codecov_opentelem 0.1.2 → 0.1.5

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
  SHA256:
3
- metadata.gz: b38a258d6a6d83c82f8c7070d2b3af2338fa15f3de88d91d26aeae9a354a05b4
4
- data.tar.gz: a19bf2fed924c9db850b82ca4d08ef082386a0651e0b7f23d68f9eb75a8e35ef
3
+ metadata.gz: d385d9be5936bef168660940493430288123e80e7e52ef7cfe3c745d7426dc71
4
+ data.tar.gz: ee1593d6f7e9b04d964f81d290a6116ea6d460ad65352500cc3b8b0d8c9b813d
5
5
  SHA512:
6
- metadata.gz: 61f4db26ef7efd8818bda8d02c8f8efec796cced149886c69ed552087699b031d71405dc5956a51a3297f7e0ab59de652ba3a64ababdde09be439b495d196e26
7
- data.tar.gz: b6502f4b505a8310cf8e752a0975e719782972d07e8f08d3849fc78c425d306a9491eca665a7f200cbfa0084b82a0e8eb91d463965a137c6d7057fd3038bd1a2
6
+ metadata.gz: 970d7e5aeecdea1689d933bfa78c222b70265345f3c62b62c79220b6ff212832146a41bcff5cc1017987b572c46d49c8a934cf883d3841630056400e1df5796a
7
+ data.tar.gz: 02fbe4c9bbc6c9e36f346d139dd6c0ea5f82fc4216d75a307a31d79a64ea146775ea06eb8f05d88eff076087f4959b60d97525b744867efb5bf12330dae1017c
data/Gemfile.lock ADDED
@@ -0,0 +1,221 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ codecov_opentelem (0.1.5)
5
+
6
+ GEM
7
+ remote: https://rubygems.org/
8
+ specs:
9
+ diff-lcs (1.5.0)
10
+ google-protobuf (3.21.1-x86_64-darwin)
11
+ googleapis-common-protos-types (1.3.1)
12
+ google-protobuf (~> 3.14)
13
+ opentelemetry-api (1.0.2)
14
+ opentelemetry-common (0.19.6)
15
+ opentelemetry-api (~> 1.0)
16
+ opentelemetry-exporter-otlp (0.22.0)
17
+ google-protobuf (~> 3.19)
18
+ googleapis-common-protos-types (~> 1.3)
19
+ opentelemetry-api (~> 1.0)
20
+ opentelemetry-common (~> 0.19.6)
21
+ opentelemetry-sdk (~> 1.0)
22
+ opentelemetry-semantic_conventions
23
+ opentelemetry-instrumentation-action_pack (0.2.0)
24
+ opentelemetry-api (~> 1.0)
25
+ opentelemetry-instrumentation-base (~> 0.21.0)
26
+ opentelemetry-instrumentation-rack (~> 0.21.0)
27
+ opentelemetry-instrumentation-action_view (0.3.0)
28
+ opentelemetry-api (~> 1.0)
29
+ opentelemetry-instrumentation-active_support (~> 0.1)
30
+ opentelemetry-instrumentation-base (~> 0.20)
31
+ opentelemetry-instrumentation-active_job (0.3.0)
32
+ opentelemetry-api (~> 1.0)
33
+ opentelemetry-instrumentation-base (~> 0.21.0)
34
+ opentelemetry-instrumentation-active_model_serializers (0.19.0)
35
+ opentelemetry-api (~> 1.0)
36
+ opentelemetry-instrumentation-base (~> 0.21.0)
37
+ opentelemetry-instrumentation-active_record (0.4.0)
38
+ opentelemetry-api (~> 1.0)
39
+ opentelemetry-instrumentation-base (~> 0.21.0)
40
+ ruby2_keywords
41
+ opentelemetry-instrumentation-active_support (0.2.0)
42
+ opentelemetry-api (~> 1.0)
43
+ opentelemetry-instrumentation-base (~> 0.21.0)
44
+ opentelemetry-instrumentation-all (0.25.0)
45
+ opentelemetry-instrumentation-action_pack (~> 0.2.0)
46
+ opentelemetry-instrumentation-action_view (~> 0.3.0)
47
+ opentelemetry-instrumentation-active_job (~> 0.3.0)
48
+ opentelemetry-instrumentation-active_model_serializers (~> 0.19.0)
49
+ opentelemetry-instrumentation-active_record (~> 0.4.0)
50
+ opentelemetry-instrumentation-active_support (~> 0.2.0)
51
+ opentelemetry-instrumentation-aws_sdk (~> 0.3.0)
52
+ opentelemetry-instrumentation-bunny (~> 0.19.0)
53
+ opentelemetry-instrumentation-concurrent_ruby (~> 0.20.0)
54
+ opentelemetry-instrumentation-dalli (~> 0.22.0)
55
+ opentelemetry-instrumentation-delayed_job (~> 0.19.0)
56
+ opentelemetry-instrumentation-ethon (~> 0.20.0)
57
+ opentelemetry-instrumentation-excon (~> 0.20.0)
58
+ opentelemetry-instrumentation-faraday (~> 0.21.0)
59
+ opentelemetry-instrumentation-graphql (~> 0.20.0)
60
+ opentelemetry-instrumentation-http (~> 0.20.0)
61
+ opentelemetry-instrumentation-http_client (~> 0.20.0)
62
+ opentelemetry-instrumentation-koala (~> 0.19.0)
63
+ opentelemetry-instrumentation-lmdb (~> 0.21.0)
64
+ opentelemetry-instrumentation-mongo (~> 0.20.0)
65
+ opentelemetry-instrumentation-mysql2 (~> 0.21.0)
66
+ opentelemetry-instrumentation-net_http (~> 0.20.0)
67
+ opentelemetry-instrumentation-pg (~> 0.21.0)
68
+ opentelemetry-instrumentation-que (~> 0.4.0)
69
+ opentelemetry-instrumentation-rack (~> 0.21.0)
70
+ opentelemetry-instrumentation-rails (~> 0.22.0)
71
+ opentelemetry-instrumentation-rdkafka (~> 0.2.0)
72
+ opentelemetry-instrumentation-redis (~> 0.23.0)
73
+ opentelemetry-instrumentation-resque (~> 0.3.0)
74
+ opentelemetry-instrumentation-restclient (~> 0.20.0)
75
+ opentelemetry-instrumentation-ruby_kafka (~> 0.19.0)
76
+ opentelemetry-instrumentation-sidekiq (~> 0.22.0)
77
+ opentelemetry-instrumentation-sinatra (~> 0.20.0)
78
+ opentelemetry-instrumentation-trilogy (~> 0.51.0)
79
+ opentelemetry-instrumentation-aws_sdk (0.3.0)
80
+ opentelemetry-api (~> 1.0)
81
+ opentelemetry-instrumentation-base (~> 0.21.0)
82
+ opentelemetry-instrumentation-base (0.21.0)
83
+ opentelemetry-api (~> 1.0)
84
+ opentelemetry-registry (~> 0.1)
85
+ opentelemetry-instrumentation-bunny (0.19.0)
86
+ opentelemetry-api (~> 1.0)
87
+ opentelemetry-instrumentation-base (~> 0.21.0)
88
+ opentelemetry-instrumentation-concurrent_ruby (0.20.0)
89
+ opentelemetry-api (~> 1.0)
90
+ opentelemetry-instrumentation-base (~> 0.21.0)
91
+ opentelemetry-instrumentation-dalli (0.22.0)
92
+ opentelemetry-api (~> 1.0)
93
+ opentelemetry-common (~> 0.19.3)
94
+ opentelemetry-instrumentation-base (~> 0.21.0)
95
+ opentelemetry-instrumentation-delayed_job (0.19.0)
96
+ opentelemetry-api (~> 1.0)
97
+ opentelemetry-instrumentation-base (~> 0.21.0)
98
+ opentelemetry-instrumentation-ethon (0.20.0)
99
+ opentelemetry-api (~> 1.0)
100
+ opentelemetry-common (~> 0.19.3)
101
+ opentelemetry-instrumentation-base (~> 0.21.0)
102
+ opentelemetry-instrumentation-excon (0.20.0)
103
+ opentelemetry-api (~> 1.0)
104
+ opentelemetry-common (~> 0.19.3)
105
+ opentelemetry-instrumentation-base (~> 0.21.0)
106
+ opentelemetry-instrumentation-faraday (0.21.0)
107
+ opentelemetry-api (~> 1.0)
108
+ opentelemetry-common (~> 0.19.3)
109
+ opentelemetry-instrumentation-base (~> 0.21.0)
110
+ opentelemetry-instrumentation-graphql (0.20.0)
111
+ opentelemetry-api (~> 1.0)
112
+ opentelemetry-instrumentation-base (~> 0.21.0)
113
+ opentelemetry-instrumentation-http (0.20.0)
114
+ opentelemetry-api (~> 1.0)
115
+ opentelemetry-instrumentation-base (~> 0.21.0)
116
+ opentelemetry-instrumentation-http_client (0.20.0)
117
+ opentelemetry-api (~> 1.0)
118
+ opentelemetry-common (~> 0.19.3)
119
+ opentelemetry-instrumentation-base (~> 0.21.0)
120
+ opentelemetry-instrumentation-koala (0.19.0)
121
+ opentelemetry-api (~> 1.0)
122
+ opentelemetry-common (~> 0.19.3)
123
+ opentelemetry-instrumentation-base (~> 0.21.0)
124
+ opentelemetry-instrumentation-lmdb (0.21.0)
125
+ opentelemetry-api (~> 1.0)
126
+ opentelemetry-instrumentation-base (~> 0.21.0)
127
+ opentelemetry-instrumentation-mongo (0.20.0)
128
+ opentelemetry-api (~> 1.0)
129
+ opentelemetry-instrumentation-base (~> 0.21.0)
130
+ opentelemetry-instrumentation-mysql2 (0.21.0)
131
+ opentelemetry-api (~> 1.0)
132
+ opentelemetry-instrumentation-base (~> 0.21.0)
133
+ opentelemetry-instrumentation-net_http (0.20.0)
134
+ opentelemetry-api (~> 1.0)
135
+ opentelemetry-common (~> 0.19.3)
136
+ opentelemetry-instrumentation-base (~> 0.21.0)
137
+ opentelemetry-instrumentation-pg (0.21.0)
138
+ opentelemetry-api (~> 1.0)
139
+ opentelemetry-instrumentation-base (~> 0.21.0)
140
+ opentelemetry-instrumentation-que (0.4.0)
141
+ opentelemetry-api (~> 1.0)
142
+ opentelemetry-instrumentation-base (~> 0.21.0)
143
+ opentelemetry-instrumentation-rack (0.21.0)
144
+ opentelemetry-api (~> 1.0)
145
+ opentelemetry-common (~> 0.19.3)
146
+ opentelemetry-instrumentation-base (~> 0.21.0)
147
+ opentelemetry-instrumentation-rails (0.22.0)
148
+ opentelemetry-api (~> 1.0)
149
+ opentelemetry-instrumentation-action_pack (~> 0.2.0)
150
+ opentelemetry-instrumentation-action_view (~> 0.3.0)
151
+ opentelemetry-instrumentation-active_record (~> 0.4.0)
152
+ opentelemetry-instrumentation-active_support (~> 0.2.0)
153
+ opentelemetry-instrumentation-base (~> 0.21.0)
154
+ opentelemetry-instrumentation-rdkafka (0.2.0)
155
+ opentelemetry-api (~> 1.0.0)
156
+ opentelemetry-common (~> 0.19.3)
157
+ opentelemetry-instrumentation-base (~> 0.21.0)
158
+ opentelemetry-instrumentation-redis (0.23.0)
159
+ opentelemetry-api (~> 1.0)
160
+ opentelemetry-common (~> 0.19.3)
161
+ opentelemetry-instrumentation-base (~> 0.21.0)
162
+ opentelemetry-instrumentation-resque (0.3.0)
163
+ opentelemetry-api (~> 1.0)
164
+ opentelemetry-instrumentation-base (~> 0.21.0)
165
+ opentelemetry-instrumentation-restclient (0.20.0)
166
+ opentelemetry-api (~> 1.0)
167
+ opentelemetry-common (~> 0.19.3)
168
+ opentelemetry-instrumentation-base (~> 0.21.0)
169
+ opentelemetry-instrumentation-ruby_kafka (0.19.0)
170
+ opentelemetry-api (~> 1.0)
171
+ opentelemetry-instrumentation-base (~> 0.21.0)
172
+ opentelemetry-instrumentation-sidekiq (0.22.0)
173
+ opentelemetry-api (~> 1.0)
174
+ opentelemetry-common (~> 0.19.3)
175
+ opentelemetry-instrumentation-base (~> 0.21.0)
176
+ opentelemetry-instrumentation-sinatra (0.20.0)
177
+ opentelemetry-api (~> 1.0)
178
+ opentelemetry-common (~> 0.19.3)
179
+ opentelemetry-instrumentation-base (~> 0.21.0)
180
+ opentelemetry-instrumentation-trilogy (0.51.0)
181
+ opentelemetry-api (~> 1.0)
182
+ opentelemetry-instrumentation-base (~> 0.21.0)
183
+ opentelemetry-semantic_conventions (>= 1.8.0)
184
+ opentelemetry-registry (0.1.0)
185
+ opentelemetry-api (~> 1.0.1)
186
+ opentelemetry-sdk (1.1.0)
187
+ opentelemetry-api (~> 1.0)
188
+ opentelemetry-common (~> 0.19.3)
189
+ opentelemetry-registry (~> 0.1)
190
+ opentelemetry-semantic_conventions
191
+ opentelemetry-semantic_conventions (1.8.0)
192
+ opentelemetry-api (~> 1.0)
193
+ rake (13.0.6)
194
+ rspec (3.11.0)
195
+ rspec-core (~> 3.11.0)
196
+ rspec-expectations (~> 3.11.0)
197
+ rspec-mocks (~> 3.11.0)
198
+ rspec-core (3.11.0)
199
+ rspec-support (~> 3.11.0)
200
+ rspec-expectations (3.11.0)
201
+ diff-lcs (>= 1.2.0, < 2.0)
202
+ rspec-support (~> 3.11.0)
203
+ rspec-mocks (3.11.1)
204
+ diff-lcs (>= 1.2.0, < 2.0)
205
+ rspec-support (~> 3.11.0)
206
+ rspec-support (3.11.0)
207
+ ruby2_keywords (0.0.5)
208
+
209
+ PLATFORMS
210
+ x86_64-darwin-21
211
+
212
+ DEPENDENCIES
213
+ codecov_opentelem!
214
+ opentelemetry-exporter-otlp
215
+ opentelemetry-instrumentation-all
216
+ opentelemetry-sdk
217
+ rake (~> 13.0)
218
+ rspec
219
+
220
+ BUNDLED WITH
221
+ 2.3.16
@@ -20,21 +20,21 @@ class CodecovCoverageStorageManager
20
20
 
21
21
  def start_coverage_for_span(span)
22
22
  if !@filters[CoverageSpanFilter::REGEX_NAME].nil? && @filters[CoverageSpanFilter::REGEX_NAME].match(span.name)
23
+ puts 'returned false'
23
24
  return false
24
25
  end
25
26
 
26
- Coverage.resume
27
+ Coverage.start unless Coverage.running?
27
28
  true
28
29
  end
29
30
 
30
- def stop_coverage_for_span(_span)
31
+ def stop_coverage_for_span(span)
31
32
  span_id = span.context.span_id
32
- Coverage.suspend
33
33
  @inner[span_id] = Coverage.result(stop: false, clear: true)
34
34
  end
35
35
 
36
- def pop_coverage_for_span(_span)
37
- span_id = span.context.span_id
36
+ def pop_coverage_for_span(span)
37
+ span_id = span.span_id
38
38
  @inner.delete(span_id)
39
39
  end
40
40
  end
@@ -47,10 +47,10 @@ class CodecovCoverageGenerator < OpenTelemetry::SDK::Trace::SpanProcessor
47
47
  end
48
48
 
49
49
  def on_start(span, _parent_context = nil)
50
- @cov_storage.possibly_start_cov_for_span(span) if rand < @sample_rate
50
+ @cov_storage.start_coverage_for_span(span) if rand() < @sample_rate
51
51
  end
52
52
 
53
- def on_end(span)
53
+ def on_finish(span)
54
54
  @cov_storage.stop_coverage_for_span(span)
55
55
  end
56
56
  end
@@ -65,32 +65,56 @@ class CoverageExporter < OpenTelemetry::SDK::Trace::Export::SpanExporter
65
65
  @untracked_export_rate = untracked_export_rate
66
66
  end
67
67
 
68
- def export(spans)
68
+ def export(spans, timeout)
69
69
  tracked_spans = []
70
70
  untracked_spans = []
71
+
71
72
  spans.each do |span|
72
- cov = cov_storage.pop_cov_for_span(span)
73
- s = JSON.parse(span)
73
+ cov = @cov_storage.pop_coverage_for_span(span)
74
+
75
+ span_hash = Hash.new
76
+ span.to_h.each do |k, v|
77
+ v = v.dup.force_encoding("ISO-8859-1").encode("UTF-8") if v.is_a? String
78
+ span_hash[k] = v
79
+ end
80
+
74
81
  if !cov.nil?
75
- s['codecov'] = { 'type' => 'bytes', 'coverage' => cov }
76
- tracked_spans.append(s)
77
- elsif rand < @untracked_export_rate
78
- untracked_spans.append(s)
82
+ span_hash['codecov'] = {
83
+ 'coverage': cov.to_json,
84
+ 'type': 'json',
85
+ }
86
+ tracked_spans.append(span_hash.to_json)
87
+ elsif rand() < @untracked_export_rate
88
+ untracked_spans.append(span_hash.to_json)
79
89
  end
80
90
  end
81
- return SpanExportResult.SUCCESS if !tracked_spans && !untracked_spans
82
-
83
- res = Net::HTTP.post(URI.join(@codecov_url, '/profiling/uploads'),
84
- { 'code' => @code }.to_json,
85
- 'Content-Type' => 'application/json',
86
- 'Authorization' => "repotoken #{@repository_token}")
87
- return SpanExportResult.FAILURE if res.is_a?(Net::HTTPError)
88
-
89
- location = res.body.raw_upload_location
90
- Net::HTTP.put(URI(location),
91
- { 'spans' => tracked_spans,
92
- 'untracked' => untracked_spans }.to_json,
93
- 'Content-Type' => 'text/plain')
94
- SpanExportResult.SUCCESS
91
+
92
+ return OpenTelemetry::SDK::Trace::Export::SUCCESS if !tracked_spans && !untracked_spans
93
+
94
+ body = { 'profiling' => @code }.to_json
95
+ res = Net::HTTP.post(
96
+ URI.join(@codecov_url, '/profiling/uploads'),
97
+ { 'profiling' => @code }.to_json,
98
+ 'Content-Type' => 'application/json',
99
+ 'Authorization' => "repotoken #{@repository_token}"
100
+ )
101
+ return OpenTelemetry::SDK::Trace::Export::FAILURE if res.is_a?(Net::HTTPError)
102
+
103
+ location = JSON(res.body)['raw_upload_location']
104
+ uri = URI(location)
105
+ https = Net::HTTP.new(uri.host, uri.port)
106
+ https.use_ssl = true
107
+ req = Net::HTTP::Put.new(
108
+ location,
109
+ {
110
+ 'Content-Type' => 'text/plain'
111
+ }
112
+ )
113
+ req.body = {
114
+ 'spans' => tracked_spans,
115
+ 'untracked' => untracked_spans
116
+ }.to_json
117
+ https.request(req)
118
+ OpenTelemetry::SDK::Trace::Export::SUCCESS
95
119
  end
96
120
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module CodecovOpentelem
4
- VERSION = "0.1.2"
4
+ VERSION = "0.1.5"
5
5
  end
@@ -40,9 +40,9 @@ def get_codecov_opentelemetry_instances(
40
40
  'Authorization' => "repotoken #{repository_token}")
41
41
  raise UnableToStartProcessorException if res.is_a?(Net::HTTPError)
42
42
  end
43
- manager = CodecovCoverageStorageManager(filters)
44
- generator = CodecovCoverageGenerator(manager, sample_rate)
45
- exporter = CoverageExporter(
43
+ manager = CodecovCoverageStorageManager.new(filters)
44
+ generator = CodecovCoverageGenerator.new(manager, sample_rate)
45
+ exporter = CoverageExporter.new(
46
46
  manager, repository_token, code, codecov_url, untracked_export_rate
47
47
  )
48
48
  [generator, exporter]
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: codecov_opentelem
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ahmed-Elghrbawy
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-06-02 00:00:00.000000000 Z
11
+ date: 2022-06-18 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description:
14
14
  email:
@@ -19,6 +19,7 @@ extra_rdoc_files: []
19
19
  files:
20
20
  - CHANGELOG.md
21
21
  - Gemfile
22
+ - Gemfile.lock
22
23
  - LICENSE.txt
23
24
  - README.md
24
25
  - Rakefile