datadog-ci 1.0.0.beta4 → 1.0.0.beta5
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/CHANGELOG.md +15 -2
- data/lib/datadog/ci/contrib/rspec/example.rb +1 -0
- data/lib/datadog/ci/contrib/rspec/example_group.rb +1 -0
- data/lib/datadog/ci/contrib/rspec/knapsack_pro/extension.rb +0 -1
- data/lib/datadog/ci/contrib/rspec/knapsack_pro/patcher.rb +26 -0
- data/lib/datadog/ci/contrib/rspec/knapsack_pro/runner.rb +1 -0
- data/lib/datadog/ci/contrib/rspec/patcher.rb +6 -4
- data/lib/datadog/ci/contrib/rspec/runner.rb +1 -0
- data/lib/datadog/ci/ext/transport.rb +3 -0
- data/lib/datadog/ci/transport/api/agentless.rb +11 -3
- data/lib/datadog/ci/transport/gzip.rb +12 -0
- data/lib/datadog/ci/transport/http.rb +35 -3
- data/lib/datadog/ci/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8d82afa69ce303c4d7652a9455b4f19c6e89fe5afda868a10bf2b42c765bc06d
|
4
|
+
data.tar.gz: 5b2c939c277b4f0b712fcdd3d361cef50302e9947feac333b49bfcea5cd83e4d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f315f6d11021a34dc32815ffa1fea4ffddd4e894253aa8c69225d40fb10930e50949a5bd11237aa9f15f60bca171e4781efbf24e1edce24f239b513819c41741
|
7
|
+
data.tar.gz: 80df3261fb5fbb357d4bdcec7b530de26ece4316ba5f289e9254b1e8fcc6129d58e9cf2cada61e81a98500c2aea03aa6410e0a25696148c782c74e99da44fc95
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,15 @@
|
|
1
1
|
## [Unreleased]
|
2
2
|
|
3
|
+
## [1.0.0.beta5] - 2024-05-23
|
4
|
+
|
5
|
+
### Changed
|
6
|
+
|
7
|
+
* accept gzipped responses from API ([#170][])
|
8
|
+
|
9
|
+
### Fixed
|
10
|
+
|
11
|
+
* Fix Knapsack Pro integration ([#180][])
|
12
|
+
|
3
13
|
## [1.0.0.beta4] - 2024-05-14
|
4
14
|
|
5
15
|
### Added
|
@@ -238,7 +248,8 @@ Currently test suite level visibility is not used by our instrumentation: it wil
|
|
238
248
|
|
239
249
|
- Ruby versions < 2.7 no longer supported ([#8][])
|
240
250
|
|
241
|
-
[Unreleased]: https://github.com/DataDog/datadog-ci-rb/compare/v1.0.0.
|
251
|
+
[Unreleased]: https://github.com/DataDog/datadog-ci-rb/compare/v1.0.0.beta5...main
|
252
|
+
[1.0.0.beta5]: https://github.com/DataDog/datadog-ci-rb/compare/v1.0.0.beta4...v1.0.0.beta5
|
242
253
|
[1.0.0.beta4]: https://github.com/DataDog/datadog-ci-rb/compare/v1.0.0.beta3...v1.0.0.beta4
|
243
254
|
[1.0.0.beta3]: https://github.com/DataDog/datadog-ci-rb/compare/v1.0.0.beta2...v1.0.0.beta3
|
244
255
|
[1.0.0.beta2]: https://github.com/DataDog/datadog-ci-rb/compare/v1.0.0.beta1...v1.0.0.beta2
|
@@ -334,7 +345,9 @@ Currently test suite level visibility is not used by our instrumentation: it wil
|
|
334
345
|
[#166]: https://github.com/DataDog/datadog-ci-rb/issues/166
|
335
346
|
[#167]: https://github.com/DataDog/datadog-ci-rb/issues/167
|
336
347
|
[#168]: https://github.com/DataDog/datadog-ci-rb/issues/168
|
348
|
+
[#170]: https://github.com/DataDog/datadog-ci-rb/issues/170
|
337
349
|
[#172]: https://github.com/DataDog/datadog-ci-rb/issues/172
|
338
350
|
[#173]: https://github.com/DataDog/datadog-ci-rb/issues/173
|
339
351
|
[#174]: https://github.com/DataDog/datadog-ci-rb/issues/174
|
340
|
-
[#175]: https://github.com/DataDog/datadog-ci-rb/issues/175
|
352
|
+
[#175]: https://github.com/DataDog/datadog-ci-rb/issues/175
|
353
|
+
[#180]: https://github.com/DataDog/datadog-ci-rb/issues/180
|
@@ -16,6 +16,7 @@ module Datadog
|
|
16
16
|
# Instance methods for configuration
|
17
17
|
module ClassMethods
|
18
18
|
def run(reporter = ::RSpec::Core::NullReporter)
|
19
|
+
return super if ::RSpec.configuration.dry_run?
|
19
20
|
return super unless datadog_configuration[:enabled]
|
20
21
|
return super unless top_level?
|
21
22
|
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Datadog
|
4
|
+
module CI
|
5
|
+
module Contrib
|
6
|
+
module RSpec
|
7
|
+
module KnapsackPro
|
8
|
+
module Patcher
|
9
|
+
def self.patch
|
10
|
+
if defined?(::KnapsackPro::Extensions::RSpecExtension::Runner) &&
|
11
|
+
::RSpec::Core::Runner.ancestors.include?(::KnapsackPro::Extensions::RSpecExtension::Runner)
|
12
|
+
# knapsack already patched rspec runner
|
13
|
+
require_relative "runner"
|
14
|
+
::RSpec::Core::Runner.include(KnapsackPro::Runner)
|
15
|
+
else
|
16
|
+
# knapsack didn't patch rspec runner yet
|
17
|
+
require_relative "extension"
|
18
|
+
::KnapsackPro::Extensions::RSpecExtension.include(KnapsackPro::Extension)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -27,14 +27,16 @@ module Datadog
|
|
27
27
|
::RSpec::Queue::Runner.include(Runner)
|
28
28
|
end
|
29
29
|
|
30
|
-
# Knapsack Pro test runner instrumentation
|
31
|
-
# https://github.com/KnapsackPro/knapsack_pro-ruby
|
32
30
|
if knapsack_pro?
|
33
|
-
|
34
|
-
|
31
|
+
# Knapsack Pro test runner instrumentation
|
32
|
+
# https://github.com/KnapsackPro/knapsack_pro-ruby
|
33
|
+
require_relative "knapsack_pro/patcher"
|
34
|
+
Datadog::CI::Contrib::RSpec::KnapsackPro::Patcher.patch
|
35
35
|
end
|
36
36
|
|
37
|
+
# default rspec test runner instrumentation
|
37
38
|
::RSpec::Core::Runner.include(Runner)
|
39
|
+
|
38
40
|
::RSpec::Core::Example.include(Example)
|
39
41
|
::RSpec::Core::ExampleGroup.include(ExampleGroup)
|
40
42
|
end
|
@@ -7,6 +7,7 @@ module Datadog
|
|
7
7
|
DEFAULT_DD_SITE = "datadoghq.com"
|
8
8
|
|
9
9
|
HEADER_DD_API_KEY = "DD-API-KEY"
|
10
|
+
HEADER_ACCEPT_ENCODING = "Accept-Encoding"
|
10
11
|
HEADER_CONTENT_TYPE = "Content-Type"
|
11
12
|
HEADER_CONTENT_ENCODING = "Content-Encoding"
|
12
13
|
HEADER_EVP_SUBDOMAIN = "X-Datadog-EVP-Subdomain"
|
@@ -48,6 +49,8 @@ module Datadog
|
|
48
49
|
CONTENT_TYPE_JSON = "application/json"
|
49
50
|
CONTENT_TYPE_MULTIPART_FORM_DATA = "multipart/form-data"
|
50
51
|
CONTENT_ENCODING_GZIP = "gzip"
|
52
|
+
|
53
|
+
GZIP_MAGIC_NUMBER = "\x1F\x8B".b
|
51
54
|
end
|
52
55
|
end
|
53
56
|
end
|
@@ -26,7 +26,14 @@ module Datadog
|
|
26
26
|
def api_request(path:, payload:, headers: {}, verb: "post")
|
27
27
|
super
|
28
28
|
|
29
|
-
perform_request(
|
29
|
+
perform_request(
|
30
|
+
@api_http,
|
31
|
+
path: path,
|
32
|
+
payload: payload,
|
33
|
+
headers: headers,
|
34
|
+
verb: verb,
|
35
|
+
accept_compressed_response: true
|
36
|
+
)
|
30
37
|
end
|
31
38
|
|
32
39
|
def citestcov_request(path:, payload:, headers: {}, verb: "post")
|
@@ -37,12 +44,13 @@ module Datadog
|
|
37
44
|
|
38
45
|
private
|
39
46
|
|
40
|
-
def perform_request(http_client, path:, payload:, headers:, verb:)
|
47
|
+
def perform_request(http_client, path:, payload:, headers:, verb:, accept_compressed_response: false)
|
41
48
|
http_client.request(
|
42
49
|
path: path,
|
43
50
|
payload: payload,
|
44
51
|
headers: headers_with_default(headers),
|
45
|
-
verb: verb
|
52
|
+
verb: verb,
|
53
|
+
accept_compressed_response: accept_compressed_response
|
46
54
|
)
|
47
55
|
end
|
48
56
|
|
@@ -16,6 +16,18 @@ module Datadog
|
|
16
16
|
gzip_writer.close
|
17
17
|
sio.string
|
18
18
|
end
|
19
|
+
|
20
|
+
def decompress(input)
|
21
|
+
sio = StringIO.new(input)
|
22
|
+
gzip_reader = Zlib::GzipReader.new(
|
23
|
+
sio,
|
24
|
+
external_encoding: Encoding::UTF_8,
|
25
|
+
internal_encoding: Encoding::UTF_8
|
26
|
+
)
|
27
|
+
gzip_reader.read || ""
|
28
|
+
ensure
|
29
|
+
gzip_reader&.close
|
30
|
+
end
|
19
31
|
end
|
20
32
|
end
|
21
33
|
end
|
@@ -32,12 +32,24 @@ module Datadog
|
|
32
32
|
@compress = compress.nil? ? false : compress
|
33
33
|
end
|
34
34
|
|
35
|
-
def request(
|
35
|
+
def request(
|
36
|
+
path:,
|
37
|
+
payload:,
|
38
|
+
headers:,
|
39
|
+
verb: "post",
|
40
|
+
retries: MAX_RETRIES,
|
41
|
+
backoff: INITIAL_BACKOFF,
|
42
|
+
accept_compressed_response: false
|
43
|
+
)
|
36
44
|
if compress
|
37
45
|
headers[Ext::Transport::HEADER_CONTENT_ENCODING] = Ext::Transport::CONTENT_ENCODING_GZIP
|
38
46
|
payload = Gzip.compress(payload)
|
39
47
|
end
|
40
48
|
|
49
|
+
if accept_compressed_response
|
50
|
+
headers[Ext::Transport::HEADER_ACCEPT_ENCODING] = Ext::Transport::CONTENT_ENCODING_GZIP
|
51
|
+
end
|
52
|
+
|
41
53
|
Datadog.logger.debug do
|
42
54
|
"Sending #{verb} request: host=#{host}; port=#{port}; ssl_enabled=#{ssl}; " \
|
43
55
|
"compression_enabled=#{compress}; path=#{path}; payload_size=#{payload.size}"
|
@@ -91,12 +103,32 @@ module Datadog
|
|
91
103
|
@adapter ||= Datadog::Core::Transport::HTTP::Adapters::Net.new(settings)
|
92
104
|
end
|
93
105
|
|
94
|
-
#
|
95
|
-
#
|
106
|
+
# adds compatibility with Datadog::Tracing transport and
|
107
|
+
# provides ungzipping capabilities
|
96
108
|
class ResponseDecorator < ::SimpleDelegator
|
109
|
+
def payload
|
110
|
+
return @decompressed_payload if defined?(@decompressed_payload)
|
111
|
+
|
112
|
+
if gzipped?(__getobj__.payload)
|
113
|
+
Datadog.logger.debug("Decompressing gzipped response payload")
|
114
|
+
@decompressed_payload = Gzip.decompress(__getobj__.payload)
|
115
|
+
else
|
116
|
+
__getobj__.payload
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
97
120
|
def trace_count
|
98
121
|
0
|
99
122
|
end
|
123
|
+
|
124
|
+
def gzipped?(payload)
|
125
|
+
return false if payload.nil? || payload.empty?
|
126
|
+
|
127
|
+
first_bytes = payload[0, 2]
|
128
|
+
return false if first_bytes.nil? || first_bytes.empty?
|
129
|
+
|
130
|
+
first_bytes.b == Datadog::CI::Ext::Transport::GZIP_MAGIC_NUMBER
|
131
|
+
end
|
100
132
|
end
|
101
133
|
|
102
134
|
class AdapterSettings
|
data/lib/datadog/ci/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: datadog-ci
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.0.
|
4
|
+
version: 1.0.0.beta5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Datadog, Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-05-
|
11
|
+
date: 2024-05-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: datadog
|
@@ -89,6 +89,7 @@ files:
|
|
89
89
|
- lib/datadog/ci/contrib/rspec/ext.rb
|
90
90
|
- lib/datadog/ci/contrib/rspec/integration.rb
|
91
91
|
- lib/datadog/ci/contrib/rspec/knapsack_pro/extension.rb
|
92
|
+
- lib/datadog/ci/contrib/rspec/knapsack_pro/patcher.rb
|
92
93
|
- lib/datadog/ci/contrib/rspec/knapsack_pro/runner.rb
|
93
94
|
- lib/datadog/ci/contrib/rspec/patcher.rb
|
94
95
|
- lib/datadog/ci/contrib/rspec/runner.rb
|