datadog-ci 0.1.0 → 0.2.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 +4 -4
- data/CHANGELOG.md +24 -1
- data/LICENSE-3rdparty.csv +1 -0
- data/README.md +65 -0
- data/lib/datadog/ci/configuration/components.rb +51 -5
- data/lib/datadog/ci/configuration/settings.rb +36 -8
- data/lib/datadog/ci/contrib/cucumber/configuration/settings.rb +2 -3
- data/lib/datadog/ci/contrib/cucumber/formatter.rb +8 -10
- data/lib/datadog/ci/contrib/cucumber/integration.rb +3 -2
- data/lib/datadog/ci/contrib/integration.rb +149 -0
- data/lib/datadog/ci/contrib/minitest/configuration/settings.rb +2 -3
- data/lib/datadog/ci/contrib/minitest/hooks.rb +8 -4
- data/lib/datadog/ci/contrib/minitest/integration.rb +3 -2
- data/lib/datadog/ci/contrib/rspec/configuration/settings.rb +2 -3
- data/lib/datadog/ci/contrib/rspec/example.rb +5 -8
- data/lib/datadog/ci/contrib/rspec/integration.rb +3 -4
- data/lib/datadog/ci/contrib/settings.rb +33 -0
- data/lib/datadog/ci/ext/environment/extractor.rb +0 -1
- data/lib/datadog/ci/ext/environment/providers/local_git.rb +7 -0
- data/lib/datadog/ci/ext/settings.rb +2 -0
- data/lib/datadog/ci/ext/transport.rb +19 -0
- data/lib/datadog/ci/{test.rb → recorder.rb} +6 -5
- data/lib/datadog/ci/test_visibility/flush.rb +40 -0
- data/lib/datadog/ci/test_visibility/serializers/base.rb +161 -0
- data/lib/datadog/ci/test_visibility/serializers/factories/test_level.rb +30 -0
- data/lib/datadog/ci/test_visibility/serializers/span.rb +51 -0
- data/lib/datadog/ci/test_visibility/serializers/test_v1.rb +60 -0
- data/lib/datadog/ci/test_visibility/transport.rb +169 -0
- data/lib/datadog/ci/transport/gzip.rb +20 -0
- data/lib/datadog/ci/transport/http.rb +153 -0
- data/lib/datadog/ci/version.rb +1 -1
- data/lib/datadog/ci.rb +0 -1
- data/sig/datadog/ci/configuration/components.rbs +2 -0
- data/sig/datadog/ci/configuration/settings.rbs +2 -0
- data/sig/datadog/ci/contrib/cucumber/configuration/settings.rbs +1 -1
- data/sig/datadog/ci/contrib/cucumber/integration.rbs +2 -1
- data/sig/datadog/ci/contrib/integration.rbs +44 -0
- data/sig/datadog/ci/contrib/minitest/configuration/settings.rbs +1 -1
- data/sig/datadog/ci/contrib/minitest/integration.rbs +4 -3
- data/sig/datadog/ci/contrib/rspec/configuration/settings.rbs +1 -1
- data/sig/datadog/ci/contrib/rspec/integration.rbs +3 -2
- data/sig/datadog/ci/contrib/settings.rbs +25 -0
- data/sig/datadog/ci/ext/settings.rbs +2 -0
- data/sig/datadog/ci/ext/transport.rbs +21 -0
- data/sig/datadog/ci/{test.rbs → recorder.rbs} +1 -1
- data/sig/datadog/ci/test_visibility/flush.rbs +17 -0
- data/sig/datadog/ci/test_visibility/serializers/base.rbs +73 -0
- data/sig/datadog/ci/test_visibility/serializers/factories/test_level.rbs +13 -0
- data/sig/datadog/ci/test_visibility/serializers/span.rbs +18 -0
- data/sig/datadog/ci/test_visibility/serializers/test_v1.rbs +23 -0
- data/sig/datadog/ci/test_visibility/transport.rbs +39 -0
- data/sig/datadog/ci/transport/gzip.rbs +9 -0
- data/sig/datadog/ci/transport/http.rbs +61 -0
- data/sig/datadog/ci/version.rbs +5 -5
- metadata +41 -7
- data/lib/datadog/ci/flush.rb +0 -38
- data/sig/datadog/ci/flush.rbs +0 -15
@@ -0,0 +1,153 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "net/http"
|
4
|
+
|
5
|
+
require_relative "gzip"
|
6
|
+
require_relative "../ext/transport"
|
7
|
+
|
8
|
+
module Datadog
|
9
|
+
module CI
|
10
|
+
module Transport
|
11
|
+
class HTTP
|
12
|
+
attr_reader \
|
13
|
+
:host,
|
14
|
+
:port,
|
15
|
+
:ssl,
|
16
|
+
:timeout,
|
17
|
+
:compress
|
18
|
+
|
19
|
+
DEFAULT_TIMEOUT = 30
|
20
|
+
|
21
|
+
def initialize(host:, timeout: DEFAULT_TIMEOUT, port: nil, ssl: true, compress: false)
|
22
|
+
@host = host
|
23
|
+
@port = port
|
24
|
+
@timeout = timeout
|
25
|
+
@ssl = ssl.nil? ? true : ssl
|
26
|
+
@compress = compress.nil? ? false : compress
|
27
|
+
end
|
28
|
+
|
29
|
+
def request(path:, payload:, headers:, method: "post")
|
30
|
+
raise "Unknown method #{method}" unless respond_to?(method, true)
|
31
|
+
|
32
|
+
if compress
|
33
|
+
headers[Ext::Transport::HEADER_CONTENT_ENCODING] = Ext::Transport::CONTENT_ENCODING_GZIP
|
34
|
+
payload = Gzip.compress(payload)
|
35
|
+
end
|
36
|
+
|
37
|
+
Datadog.logger.debug do
|
38
|
+
"Sending #{method} request: host=#{host}; port=#{port}; ssl_enabled=#{ssl}; " \
|
39
|
+
"compression_enabled=#{compress}; path=#{path}; payload_size=#{payload.size}"
|
40
|
+
end
|
41
|
+
|
42
|
+
send(method, path: path, payload: payload, headers: headers)
|
43
|
+
end
|
44
|
+
|
45
|
+
private
|
46
|
+
|
47
|
+
def open(&block)
|
48
|
+
req = ::Net::HTTP.new(@host, @port)
|
49
|
+
|
50
|
+
req.use_ssl = @ssl
|
51
|
+
req.open_timeout = req.read_timeout = @timeout
|
52
|
+
|
53
|
+
req.start(&block)
|
54
|
+
end
|
55
|
+
|
56
|
+
def post(path:, headers:, payload:)
|
57
|
+
post = ::Net::HTTP::Post.new(path, headers)
|
58
|
+
post.body = payload
|
59
|
+
|
60
|
+
http_response = open do |http|
|
61
|
+
http.request(post)
|
62
|
+
end
|
63
|
+
|
64
|
+
Response.new(http_response)
|
65
|
+
rescue => e
|
66
|
+
Datadog.logger.debug("Unable to send events: #{e}")
|
67
|
+
|
68
|
+
InternalErrorResponse.new(e)
|
69
|
+
end
|
70
|
+
|
71
|
+
# Data structure for an HTTP Response
|
72
|
+
class Response
|
73
|
+
attr_reader :http_response
|
74
|
+
|
75
|
+
def initialize(http_response)
|
76
|
+
@http_response = http_response
|
77
|
+
end
|
78
|
+
|
79
|
+
def payload
|
80
|
+
http_response.body
|
81
|
+
end
|
82
|
+
|
83
|
+
def code
|
84
|
+
http_response.code.to_i
|
85
|
+
end
|
86
|
+
|
87
|
+
def ok?
|
88
|
+
code.between?(200, 299)
|
89
|
+
end
|
90
|
+
|
91
|
+
def unsupported?
|
92
|
+
code == 415
|
93
|
+
end
|
94
|
+
|
95
|
+
def not_found?
|
96
|
+
code == 404
|
97
|
+
end
|
98
|
+
|
99
|
+
def client_error?
|
100
|
+
code.between?(400, 499)
|
101
|
+
end
|
102
|
+
|
103
|
+
def server_error?
|
104
|
+
code.between?(500, 599)
|
105
|
+
end
|
106
|
+
|
107
|
+
def internal_error?
|
108
|
+
false
|
109
|
+
end
|
110
|
+
|
111
|
+
def trace_count
|
112
|
+
0
|
113
|
+
end
|
114
|
+
|
115
|
+
def inspect
|
116
|
+
"#{self.class} ok?:#{ok?} unsupported?:#{unsupported?}, " \
|
117
|
+
"not_found?:#{not_found?}, client_error?:#{client_error?}, " \
|
118
|
+
"server_error?:#{server_error?}, internal_error?:#{internal_error?}, " \
|
119
|
+
"payload:#{payload}"
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
class InternalErrorResponse < Response
|
124
|
+
class DummyNetHTTPResponse
|
125
|
+
def body
|
126
|
+
""
|
127
|
+
end
|
128
|
+
|
129
|
+
def code
|
130
|
+
"-1"
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
attr_reader :error
|
135
|
+
|
136
|
+
def initialize(error)
|
137
|
+
super(DummyNetHTTPResponse.new)
|
138
|
+
|
139
|
+
@error = error
|
140
|
+
end
|
141
|
+
|
142
|
+
def internal_error?
|
143
|
+
true
|
144
|
+
end
|
145
|
+
|
146
|
+
def inspect
|
147
|
+
"#{super}, error_class:#{error.class}, error:#{error}"
|
148
|
+
end
|
149
|
+
end
|
150
|
+
end
|
151
|
+
end
|
152
|
+
end
|
153
|
+
end
|
data/lib/datadog/ci/version.rb
CHANGED
data/lib/datadog/ci.rb
CHANGED
@@ -3,6 +3,8 @@ module Datadog
|
|
3
3
|
module Configuration
|
4
4
|
module Settings
|
5
5
|
extend Datadog::Core::Configuration::Options::ClassMethods
|
6
|
+
include Datadog::Core::Configuration::Options::InstanceMethods
|
7
|
+
|
6
8
|
extend Datadog::Core::Configuration::Base::ClassMethods
|
7
9
|
|
8
10
|
def self.extended: (untyped base) -> untyped
|
@@ -3,7 +3,8 @@ module Datadog
|
|
3
3
|
module Contrib
|
4
4
|
module Cucumber
|
5
5
|
class Integration
|
6
|
-
extend Datadog::
|
6
|
+
extend Datadog::CI::Contrib::Integration::ClassMethods
|
7
|
+
include Datadog::CI::Contrib::Integration::InstanceMethods
|
7
8
|
|
8
9
|
MINIMUM_VERSION: Gem::Version
|
9
10
|
|
@@ -0,0 +1,44 @@
|
|
1
|
+
module Datadog
|
2
|
+
module CI
|
3
|
+
module Contrib
|
4
|
+
module Integration
|
5
|
+
self.@registry: Hash[Symbol, untyped]
|
6
|
+
|
7
|
+
def self.included: (Module base) -> void
|
8
|
+
|
9
|
+
def self.register: (untyped integration, Symbol name) -> void
|
10
|
+
|
11
|
+
def self.registry: () -> Hash[Symbol, Struct[untyped]]
|
12
|
+
|
13
|
+
module ClassMethods
|
14
|
+
def register_as: (Symbol name) -> void
|
15
|
+
|
16
|
+
def version: () -> Gem::Version?
|
17
|
+
|
18
|
+
def available?: () -> bool
|
19
|
+
|
20
|
+
def loaded?: () -> bool
|
21
|
+
|
22
|
+
def compatible?: () -> bool
|
23
|
+
|
24
|
+
def patchable?: () -> bool
|
25
|
+
end
|
26
|
+
|
27
|
+
module InstanceMethods
|
28
|
+
extend ClassMethods
|
29
|
+
@configuration: Datadog::CI::Contrib::Settings?
|
30
|
+
|
31
|
+
def configuration: () -> Datadog::CI::Contrib::Settings
|
32
|
+
|
33
|
+
def configure: (?::Hash[Symbol, untyped] options) ?{ (Datadog::CI::Contrib::Settings) -> Datadog::CI::Contrib::Settings } -> Datadog::CI::Contrib::Settings
|
34
|
+
|
35
|
+
def reset_configuration!: () -> void
|
36
|
+
|
37
|
+
def patcher: () -> Datadog::Tracing::Contrib::Patcher?
|
38
|
+
|
39
|
+
def new_configuration: () -> Datadog::CI::Contrib::Settings
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -3,13 +3,14 @@ module Datadog
|
|
3
3
|
module Contrib
|
4
4
|
module Minitest
|
5
5
|
class Integration
|
6
|
-
extend Datadog::
|
6
|
+
extend Datadog::CI::Contrib::Integration::ClassMethods
|
7
|
+
include Datadog::CI::Contrib::Integration::InstanceMethods
|
7
8
|
|
8
|
-
MINIMUM_VERSION:
|
9
|
+
MINIMUM_VERSION: Gem::Version
|
9
10
|
|
10
11
|
def self.version: () -> untyped
|
11
12
|
|
12
|
-
def self.loaded?: () ->
|
13
|
+
def self.loaded?: () -> bool
|
13
14
|
|
14
15
|
def compatible?: () -> bool
|
15
16
|
|
@@ -3,9 +3,10 @@ module Datadog
|
|
3
3
|
module Contrib
|
4
4
|
module RSpec
|
5
5
|
class Integration
|
6
|
-
extend Datadog::
|
6
|
+
extend Datadog::CI::Contrib::Integration::ClassMethods
|
7
|
+
include Datadog::CI::Contrib::Integration::InstanceMethods
|
7
8
|
|
8
|
-
MINIMUM_VERSION:
|
9
|
+
MINIMUM_VERSION: Gem::Version
|
9
10
|
|
10
11
|
def self.version: () -> untyped
|
11
12
|
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module Datadog
|
2
|
+
module CI
|
3
|
+
module Contrib
|
4
|
+
class Settings
|
5
|
+
include Core::Configuration::Base
|
6
|
+
extend Datadog::Core::Configuration::Options::ClassMethods
|
7
|
+
include Datadog::Core::Configuration::Options::InstanceMethods
|
8
|
+
|
9
|
+
extend Datadog::Core::Configuration::Base::ClassMethods
|
10
|
+
|
11
|
+
def configure: (?::Hash[Symbol, untyped] options) ?{ (Datadog::CI::Contrib::Settings) -> Datadog::CI::Contrib::Settings } -> Datadog::CI::Contrib::Settings?
|
12
|
+
|
13
|
+
def []: (Symbol name) -> Datadog::CI::Contrib::Settings
|
14
|
+
|
15
|
+
def []=: (untyped name, untyped value) -> untyped
|
16
|
+
|
17
|
+
# default configuration options
|
18
|
+
#
|
19
|
+
def enabled: () -> bool
|
20
|
+
def service_name: () -> String
|
21
|
+
def operation_name: () -> String
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Datadog
|
2
|
+
module CI
|
3
|
+
module Ext
|
4
|
+
module Transport
|
5
|
+
HEADER_DD_API_KEY: "DD-API-KEY"
|
6
|
+
|
7
|
+
HEADER_CONTENT_TYPE: "Content-Type"
|
8
|
+
|
9
|
+
HEADER_CONTENT_ENCODING: "Content-Encoding"
|
10
|
+
|
11
|
+
TEST_VISIBILITY_INTAKE_HOST_PREFIX: "citestcycle-intake"
|
12
|
+
|
13
|
+
TEST_VISIBILITY_INTAKE_PATH: "/api/v2/citestcycle"
|
14
|
+
|
15
|
+
CONTENT_TYPE_MESSAGEPACK: "application/msgpack"
|
16
|
+
|
17
|
+
CONTENT_ENCODING_GZIP: "gzip"
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Datadog
|
2
|
+
module CI
|
3
|
+
module TestVisibility
|
4
|
+
module Flush
|
5
|
+
module Tagging
|
6
|
+
def get_trace: (Datadog::Tracing::TraceOperation trace_op) -> untyped
|
7
|
+
end
|
8
|
+
class Finished < Tracing::Flush::Finished
|
9
|
+
prepend Tagging
|
10
|
+
end
|
11
|
+
class Partial < Tracing::Flush::Partial
|
12
|
+
prepend Tagging
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,73 @@
|
|
1
|
+
module Datadog
|
2
|
+
module CI
|
3
|
+
module TestVisibility
|
4
|
+
module Serializers
|
5
|
+
class Base
|
6
|
+
MINIMUM_TIMESTAMP_NANO: 946684800000000000
|
7
|
+
MINIMUM_DURATION_NANO: 0
|
8
|
+
MAXIMUM_DURATION_NANO: 9223372036854775807
|
9
|
+
|
10
|
+
@content_fields_count: Integer
|
11
|
+
@start: Integer
|
12
|
+
@duration: Integer
|
13
|
+
|
14
|
+
attr_reader trace: Datadog::Tracing::TraceSegment
|
15
|
+
attr_reader span: Datadog::Tracing::Span
|
16
|
+
|
17
|
+
def initialize: (Datadog::Tracing::TraceSegment trace, Datadog::Tracing::Span span) -> void
|
18
|
+
|
19
|
+
def to_msgpack: (?untyped? packer) -> untyped
|
20
|
+
|
21
|
+
def valid?: () -> bool
|
22
|
+
def content_fields: () -> ::Array[String | Hash[String, String]]
|
23
|
+
def content_map_size: () -> Integer
|
24
|
+
|
25
|
+
def runtime_id: () -> String
|
26
|
+
|
27
|
+
def trace_id: () -> String
|
28
|
+
|
29
|
+
def span_id: () -> String
|
30
|
+
|
31
|
+
def parent_id: () -> String
|
32
|
+
|
33
|
+
def type: () -> nil
|
34
|
+
|
35
|
+
def version: () -> 1
|
36
|
+
|
37
|
+
def span_type: () -> String
|
38
|
+
|
39
|
+
def name: () -> String
|
40
|
+
|
41
|
+
def resource: () -> String
|
42
|
+
|
43
|
+
def service: () -> String
|
44
|
+
|
45
|
+
def start: () -> Integer
|
46
|
+
|
47
|
+
def duration: () -> Integer
|
48
|
+
|
49
|
+
def meta: () -> Hash[String, untyped]
|
50
|
+
|
51
|
+
def metrics: () -> Hash[String, untyped]
|
52
|
+
|
53
|
+
def error: () -> Integer
|
54
|
+
|
55
|
+
def self.calculate_content_map_size: (Array[String | Hash[String, String]] fields_list) -> Integer
|
56
|
+
|
57
|
+
private
|
58
|
+
|
59
|
+
def valid_start_time?: () -> bool
|
60
|
+
def valid_duration?: () -> bool
|
61
|
+
def required_fields_present?: () -> bool
|
62
|
+
def required_fields: () -> Array[String]
|
63
|
+
|
64
|
+
def write_field: (untyped packer, String field_name, ?String? method) -> untyped
|
65
|
+
def time_nano: (Time time) -> Integer
|
66
|
+
def duration_nano: (Float duration) -> Integer
|
67
|
+
|
68
|
+
def content_fields_count: () -> Integer
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module Datadog
|
2
|
+
module CI
|
3
|
+
module TestVisibility
|
4
|
+
module Serializers
|
5
|
+
module Factories
|
6
|
+
module TestLevel
|
7
|
+
def self?.serializer: (Datadog::Tracing::TraceSegment trace, Datadog::Tracing::Span span) -> Datadog::CI::TestVisibility::Serializers::Base
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Datadog
|
2
|
+
module CI
|
3
|
+
module TestVisibility
|
4
|
+
module Serializers
|
5
|
+
class Span < Base
|
6
|
+
CONTENT_FIELDS: Array[String | Hash[String, String]]
|
7
|
+
CONTENT_MAP_SIZE: Integer
|
8
|
+
REQUIRED_FIELDS: Array[String]
|
9
|
+
|
10
|
+
def required_fields: () -> Array[String]
|
11
|
+
def content_fields: () -> Array[String | Hash[String, String]]
|
12
|
+
def content_map_size: () -> Integer
|
13
|
+
def type: () -> "span"
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module Datadog
|
2
|
+
module CI
|
3
|
+
module TestVisibility
|
4
|
+
module Serializers
|
5
|
+
class TestV1 < Base
|
6
|
+
CONTENT_FIELDS: Array[String | Hash[String, String]]
|
7
|
+
CONTENT_MAP_SIZE: Integer
|
8
|
+
REQUIRED_FIELDS: Array[String]
|
9
|
+
|
10
|
+
def required_fields: () -> Array[String]
|
11
|
+
def content_fields: () -> Array[String | Hash[String, String]]
|
12
|
+
def content_map_size: () -> Integer
|
13
|
+
|
14
|
+
def type: () -> "test"
|
15
|
+
|
16
|
+
def name: () -> ::String
|
17
|
+
|
18
|
+
def resource: () -> ::String
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
module Datadog
|
2
|
+
module CI
|
3
|
+
module TestVisibility
|
4
|
+
class Transport
|
5
|
+
DEFAULT_MAX_PAYLOAD_SIZE: Integer
|
6
|
+
|
7
|
+
attr_reader serializers_factory: singleton(Datadog::CI::TestVisibility::Serializers::Factories::TestLevel)
|
8
|
+
attr_reader api_key: String
|
9
|
+
attr_reader env: String?
|
10
|
+
attr_reader http: Datadog::CI::Transport::HTTP
|
11
|
+
attr_reader max_payload_size: Integer
|
12
|
+
|
13
|
+
@api_key: String
|
14
|
+
@env: String?
|
15
|
+
@http: Datadog::CI::Transport::HTTP
|
16
|
+
@serializers_factory: singleton(Datadog::CI::TestVisibility::Serializers::Factories::TestLevel)
|
17
|
+
@max_payload_size: Integer
|
18
|
+
|
19
|
+
def initialize: (
|
20
|
+
api_key: String,
|
21
|
+
url: ::String,
|
22
|
+
?env: ::String?,
|
23
|
+
?serializers_factory: singleton(Datadog::CI::TestVisibility::Serializers::Factories::TestLevel),
|
24
|
+
?max_payload_size: Integer
|
25
|
+
) -> void
|
26
|
+
|
27
|
+
def send_traces: (Array[Datadog::Tracing::TraceSegment] traces) -> ::Array[Datadog::CI::Transport::HTTP::Response]
|
28
|
+
|
29
|
+
private
|
30
|
+
|
31
|
+
def send_payload: (String encoded_payload) -> Datadog::CI::Transport::HTTP::Response
|
32
|
+
def pack_events: (Array[String] encoded_events) -> String
|
33
|
+
def encode_traces: (Array[Datadog::Tracing::TraceSegment] traces) -> ::Array[String]
|
34
|
+
def encode_span: (Datadog::Tracing::TraceSegment trace, Datadog::Tracing::Span span) -> String?
|
35
|
+
def encoder: () -> singleton(Datadog::Core::Encoding::MsgpackEncoder)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
module Datadog
|
2
|
+
module CI
|
3
|
+
module Transport
|
4
|
+
class HTTP
|
5
|
+
attr_reader host: String
|
6
|
+
attr_reader port: Integer?
|
7
|
+
attr_reader ssl: bool
|
8
|
+
attr_reader timeout: Integer
|
9
|
+
attr_reader compress: bool
|
10
|
+
|
11
|
+
DEFAULT_TIMEOUT: 30
|
12
|
+
|
13
|
+
def initialize: (host: String, ?port: Integer?, ?ssl: bool, ?timeout: Integer, ?compress: bool) -> void
|
14
|
+
|
15
|
+
def request: (?method: String, payload: String, headers: Hash[String, String], path: String) -> Response
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
def open: () { (::Net::HTTP) -> Net::HTTPResponse } -> Net::HTTPResponse
|
20
|
+
|
21
|
+
def post: (payload: String, headers: Hash[String, String], path: String) -> Response
|
22
|
+
|
23
|
+
class Response
|
24
|
+
attr_reader http_response: (Net::HTTPResponse | InternalErrorResponse::DummyNetHTTPResponse)
|
25
|
+
|
26
|
+
def initialize: ((Net::HTTPResponse | InternalErrorResponse::DummyNetHTTPResponse) http_response) -> void
|
27
|
+
|
28
|
+
def payload: () -> String
|
29
|
+
|
30
|
+
def code: () -> Integer
|
31
|
+
|
32
|
+
def ok?: () -> bool
|
33
|
+
|
34
|
+
def unsupported?: () -> bool
|
35
|
+
|
36
|
+
def not_found?: () -> bool
|
37
|
+
|
38
|
+
def client_error?: () -> bool
|
39
|
+
|
40
|
+
def server_error?: () -> bool
|
41
|
+
|
42
|
+
def internal_error?: () -> bool
|
43
|
+
|
44
|
+
def inspect: () -> ::String
|
45
|
+
end
|
46
|
+
|
47
|
+
class InternalErrorResponse < Response
|
48
|
+
class DummyNetHTTPResponse
|
49
|
+
def body: () -> ""
|
50
|
+
def code: () -> "-1"
|
51
|
+
end
|
52
|
+
|
53
|
+
attr_reader error: StandardError
|
54
|
+
@error: StandardError
|
55
|
+
|
56
|
+
def initialize: (StandardError error) -> void
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
data/sig/datadog/ci/version.rbs
CHANGED
@@ -1,16 +1,16 @@
|
|
1
1
|
module Datadog
|
2
2
|
module CI
|
3
3
|
module VERSION
|
4
|
-
MAJOR:
|
5
|
-
MINOR:
|
6
|
-
PATCH:
|
4
|
+
MAJOR: String
|
5
|
+
MINOR: String
|
6
|
+
PATCH: String
|
7
7
|
PRE: String?
|
8
8
|
BUILD: String?
|
9
9
|
|
10
10
|
STRING: String
|
11
11
|
|
12
|
-
MINIMUM_RUBY_VERSION:
|
13
|
-
MAXIMUM_RUBY_VERSION:
|
12
|
+
MINIMUM_RUBY_VERSION: String
|
13
|
+
MAXIMUM_RUBY_VERSION: String
|
14
14
|
end
|
15
15
|
end
|
16
16
|
end
|