gitlab-labkit 0.37.0 → 0.40.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.
Files changed (45) hide show
  1. checksums.yaml +4 -4
  2. data/.copier-answers.yml +16 -0
  3. data/.editorconfig +28 -0
  4. data/.gitlab-ci-asdf-versions.yml +5 -0
  5. data/.gitlab-ci.yml +32 -37
  6. data/.gitleaks.toml +10 -0
  7. data/.mise.toml +8 -0
  8. data/.pre-commit-config.yaml +38 -0
  9. data/.releaserc.json +19 -0
  10. data/.rubocop.yml +1 -58
  11. data/.rubocop_todo.yml +399 -77
  12. data/.tool-versions +3 -1
  13. data/.yamllint.yaml +11 -0
  14. data/CODEOWNERS +4 -0
  15. data/Dangerfile +7 -1
  16. data/LICENSE +1 -3
  17. data/README.md +6 -5
  18. data/Rakefile +14 -24
  19. data/config/covered_experiences/schema.json +35 -0
  20. data/config/covered_experiences/testing_sample.yml +4 -0
  21. data/gitlab-labkit.gemspec +13 -8
  22. data/lib/gitlab-labkit.rb +3 -1
  23. data/lib/labkit/context.rb +1 -0
  24. data/lib/labkit/covered_experience/README.md +134 -0
  25. data/lib/labkit/covered_experience/error.rb +9 -0
  26. data/lib/labkit/covered_experience/experience.rb +198 -0
  27. data/lib/labkit/covered_experience/null.rb +22 -0
  28. data/lib/labkit/covered_experience/registry.rb +105 -0
  29. data/lib/labkit/covered_experience.rb +69 -0
  30. data/lib/labkit/logging/json_logger.rb +11 -0
  31. data/lib/labkit/metrics/README.md +98 -0
  32. data/lib/labkit/metrics/client.rb +90 -0
  33. data/lib/labkit/metrics/null.rb +20 -0
  34. data/lib/labkit/metrics/rack_exporter.rb +12 -0
  35. data/lib/labkit/metrics/registry.rb +69 -0
  36. data/lib/labkit/metrics.rb +19 -0
  37. data/lib/labkit/rspec/README.md +121 -0
  38. data/lib/labkit/rspec/matchers/covered_experience_matchers.rb +198 -0
  39. data/lib/labkit/rspec/matchers.rb +10 -0
  40. data/renovate.json +7 -0
  41. data/scripts/install-asdf-plugins.sh +13 -0
  42. data/scripts/prepare-dev-env.sh +68 -0
  43. data/scripts/update-asdf-version-variables.sh +30 -0
  44. metadata +115 -34
  45. data/.ruby-version +0 -1
@@ -0,0 +1,198 @@
1
+ # frozen_string_literal: true
2
+
3
+ # RSpec matchers for testing Labkit CoveredExperience functionality
4
+ #
5
+ # This file must be explicitly required in your test setup:
6
+ # require 'labkit/rspec/matchers'
7
+
8
+ raise LoadError, "RSpec is not loaded. Please require 'rspec' before requiring 'labkit/rspec/matchers'" unless defined?(RSpec)
9
+
10
+ module Labkit
11
+ module RSpec
12
+ module Matchers
13
+ # Helper module for CoveredExperience functionality
14
+ module CoveredExperience
15
+ def attributes(covered_experience_id)
16
+ raise ArgumentError, "covered_experience_id is required" if covered_experience_id.nil?
17
+
18
+ definition = Labkit::CoveredExperience::Registry.new[covered_experience_id]
19
+ definition.to_h.slice(:covered_experience, :feature_category, :urgency)
20
+ end
21
+
22
+ def checkpoint_counter
23
+ Labkit::Metrics::Client.get(:gitlab_covered_experience_checkpoint_total)
24
+ end
25
+
26
+ def total_counter
27
+ Labkit::Metrics::Client.get(:gitlab_covered_experience_total)
28
+ end
29
+
30
+ def apdex_counter
31
+ Labkit::Metrics::Client.get(:gitlab_covered_experience_apdex_total)
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
37
+
38
+ # Matcher for verifying CoveredExperience start metrics instrumentation.
39
+ #
40
+ # Usage:
41
+ # expect { subject }.to start_covered_experience('rails_request')
42
+ #
43
+ # This matcher verifies that the following metric is incremented:
44
+ # - gitlab_covered_experience_checkpoint_total (with checkpoint=start)
45
+ #
46
+ # Parameters:
47
+ # - covered_experience_id: Required. The ID of the covered experience (e.g., 'rails_request')
48
+ RSpec::Matchers.define :start_covered_experience do |covered_experience_id|
49
+ include Labkit::RSpec::Matchers::CoveredExperience
50
+
51
+ description { "start covered experience '#{covered_experience_id}'" }
52
+ supports_block_expectations
53
+
54
+ match do |actual|
55
+ labels = attributes(covered_experience_id)
56
+
57
+ checkpoint_before = checkpoint_counter&.get(labels.merge(checkpoint: "start")).to_i
58
+
59
+ actual.call
60
+
61
+ checkpoint_after = checkpoint_counter&.get(labels.merge(checkpoint: "start")).to_i
62
+
63
+ @checkpoint_change = checkpoint_after - checkpoint_before
64
+
65
+ @checkpoint_change == 1
66
+ end
67
+
68
+ failure_message do
69
+ "Failed to checkpoint covered experience '#{covered_experience_id}':\n" \
70
+ "expected checkpoint='start' counter to increase by 1, but increased by #{@checkpoint_change}"
71
+ end
72
+ end
73
+
74
+ # Matcher for verifying CoveredExperience checkpoint metrics instrumentation.
75
+ #
76
+ # Usage:
77
+ # expect { subject }.to checkpoint_covered_experience('rails_request')
78
+ #
79
+ # This matcher verifies that the following metric is incremented:
80
+ # - gitlab_covered_experience_checkpoint_total (with checkpoint=intermediate)
81
+ #
82
+ # Parameters:
83
+ # - covered_experience_id: Required. The ID of the covered experience (e.g., 'rails_request')
84
+ RSpec::Matchers.define :checkpoint_covered_experience do |covered_experience_id|
85
+ include Labkit::RSpec::Matchers::CoveredExperience
86
+
87
+ description { "checkpoint covered experience '#{covered_experience_id}'" }
88
+ supports_block_expectations
89
+
90
+ match do |actual|
91
+ labels = attributes(covered_experience_id)
92
+
93
+ checkpoint_before = checkpoint_counter&.get(labels.merge(checkpoint: "intermediate")).to_i
94
+
95
+ actual.call
96
+
97
+ checkpoint_after = checkpoint_counter&.get(labels.merge(checkpoint: "intermediate")).to_i
98
+ @checkpoint_change = checkpoint_after - checkpoint_before
99
+
100
+ @checkpoint_change == 1
101
+ end
102
+
103
+ failure_message do
104
+ "Failed to checkpoint covered experience '#{covered_experience_id}':\n" \
105
+ "expected checkpoint='intermediate' counter to increase by 1, but increased by #{@checkpoint_change}"
106
+ end
107
+
108
+ match_when_negated do |actual|
109
+ labels = attributes(covered_experience_id)
110
+
111
+ checkpoint_before = checkpoint_counter&.get(labels.merge(checkpoint: "intermediate")).to_i
112
+
113
+ actual.call
114
+
115
+ checkpoint_after = checkpoint_counter&.get(labels.merge(checkpoint: "intermediate")).to_i
116
+ @checkpoint_change = checkpoint_after - checkpoint_before
117
+
118
+ @checkpoint_change.zero?
119
+ end
120
+
121
+ failure_message_when_negated do
122
+ "Expected covered experience '#{covered_experience_id}' NOT to checkpoint:\n" \
123
+ "expected checkpoint='intermediate' counter to increase by 0, but increased by #{@checkpoint_change}"
124
+ end
125
+ end
126
+
127
+ # Matcher for verifying CoveredExperience completion metrics instrumentation.
128
+ #
129
+ # Usage:
130
+ # expect { subject }.to complete_covered_experience('rails_request')
131
+ #
132
+ # This matcher verifies that the following metrics are incremented with specific labels:
133
+ # - gitlab_covered_experience_checkpoint_total (with checkpoint=end)
134
+ # - gitlab_covered_experience_total (with error=false)
135
+ # - gitlab_covered_experience_apdex_total (with success=true)
136
+ #
137
+ # Parameters:
138
+ # - covered_experience_id: Required. The ID of the covered experience (e.g., 'rails_request')
139
+ # - error: Optional. The expected error flag for gitlab_covered_experience_total (false by default)
140
+ # - success: Optional. The expected success flag for gitlab_covered_experience_apdex_total (true by default)
141
+ RSpec::Matchers.define :complete_covered_experience do |covered_experience_id, error: false, success: true|
142
+ include Labkit::RSpec::Matchers::CoveredExperience
143
+
144
+ description { "complete covered experience '#{covered_experience_id}'" }
145
+ supports_block_expectations
146
+
147
+ match do |actual|
148
+ labels = attributes(covered_experience_id)
149
+
150
+ checkpoint_before = checkpoint_counter&.get(labels.merge(checkpoint: "end")).to_i
151
+ total_before = total_counter&.get(labels.merge(error: error)).to_i
152
+ apdex_before = apdex_counter&.get(labels.merge(success: success)).to_i
153
+
154
+ actual.call
155
+
156
+ checkpoint_after = checkpoint_counter&.get(labels.merge(checkpoint: "end")).to_i
157
+ total_after = total_counter&.get(labels.merge(error: error)).to_i
158
+ apdex_after = apdex_counter&.get(labels.merge(success: success)).to_i
159
+ @checkpoint_change = checkpoint_after - checkpoint_before
160
+ @total_change = total_after - total_before
161
+ @apdex_change = apdex_after - apdex_before
162
+
163
+ @checkpoint_change == 1 && @total_change == 1 && @apdex_change == (error ? 0 : 1)
164
+ end
165
+
166
+ failure_message do
167
+ "Failed to complete covered experience '#{covered_experience_id}':\n" \
168
+ "expected checkpoint='end' counter to increase by 1, but increased by #{@checkpoint_change}\n" \
169
+ "expected total='error: #{error}' counter to increase by 1, but increased by #{@total_change}\n" \
170
+ "expected apdex='success: #{success}' counter to increase by 1, but increased by #{@apdex_change}"
171
+ end
172
+
173
+ match_when_negated do |actual|
174
+ labels = attributes(covered_experience_id)
175
+
176
+ checkpoint_before = checkpoint_counter&.get(labels.merge(checkpoint: "end")).to_i
177
+ total_before = total_counter&.get(labels.merge(error: error)).to_i
178
+ apdex_before = apdex_counter&.get(labels.merge(success: success)).to_i
179
+
180
+ actual.call
181
+
182
+ checkpoint_after = checkpoint_counter&.get(labels.merge(checkpoint: "end")).to_i
183
+ total_after = total_counter&.get(labels.merge(error: error)).to_i
184
+ apdex_after = apdex_counter&.get(labels.merge(success: success)).to_i
185
+ @checkpoint_change = checkpoint_after - checkpoint_before
186
+ @total_change = total_after - total_before
187
+ @apdex_change = apdex_after - apdex_before
188
+
189
+ @checkpoint_change.zero? && @total_change.zero? && @apdex_change == (error ? 1 : 0)
190
+ end
191
+
192
+ failure_message_when_negated do
193
+ "Failed covered experience '#{covered_experience_id}' NOT to complete:\n" \
194
+ "expected checkpoint='end' counter to increase by 0, but increased by #{@checkpoint_change}\n" \
195
+ "expected total='error: #{error}' counter to increase by 0, but increased by #{@total_change}\n" \
196
+ "expected apdex='success: #{success}' counter to increase by 0, but increased by #{@apdex_change}"
197
+ end
198
+ end
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ # RSpec matchers loader for Labkit
4
+ #
5
+ # This file loads all available RSpec matchers for Labkit.
6
+ # It must be explicitly required in your test setup.
7
+
8
+ raise LoadError, "RSpec is not loaded. Please require 'rspec' before requiring 'labkit/rspec/matchers'" unless defined?(RSpec)
9
+
10
+ require_relative 'matchers/covered_experience_matchers'
data/renovate.json ADDED
@@ -0,0 +1,7 @@
1
+ {
2
+ "$schema": "https://docs.renovatebot.com/renovate-schema.json",
3
+ "extends": [
4
+ "gitlab>gitlab-com/gl-infra/common-ci-tasks:renovate-common",
5
+ "gitlab>gitlab-com/gl-infra/common-ci-tasks:renovate-truncated-versions"
6
+ ]
7
+ }
@@ -0,0 +1,13 @@
1
+ #!/usr/bin/env bash
2
+ # Vendored from https://gitlab.com/gitlab-com/gl-infra/common-template-copier
3
+ # Consider contributing upstream when updating this file
4
+
5
+ # This file is deprecated: going forward running `mise install` should be sufficient.
6
+
7
+ set -euo pipefail
8
+ IFS=$'\n\t'
9
+
10
+ echo >&2 -e "2024-08-07: this file is deprecated: going forward, simply run 'mise install' to install plugins."
11
+ echo >&2 -e "Recommended reading: https://gitlab.com/gitlab-com/gl-infra/common-ci-tasks/-/blob/main/docs/developer-setup.md"
12
+
13
+ mise install
@@ -0,0 +1,68 @@
1
+ #!/usr/bin/env bash
2
+ # Vendored from https://gitlab.com/gitlab-com/gl-infra/common-template-copier
3
+ # Consider contributing upstream when updating this file
4
+
5
+ set -euo pipefail
6
+
7
+ # ---------------------------------------------------------
8
+ # This script will prepare your development environment
9
+ # while working on this project. Run it after cloning this
10
+ # project.
11
+ #
12
+ # It's recommended that you review
13
+ # https://gitlab.com/gitlab-com/gl-infra/common-ci-tasks/-/blob/main/docs/developer-setup.md
14
+ # first.
15
+ # ---------------------------------------------------------
16
+
17
+ cd "$(dirname "${BASH_SOURCE[0]}")/.."
18
+
19
+ warn() {
20
+ echo >&2 -e "${1-}"
21
+ echo >&2 -e "Recommended reading: https://gitlab.com/gitlab-com/gl-infra/common-ci-tasks/-/blob/main/docs/developer-setup.md"
22
+ }
23
+
24
+ if command -v mise >/dev/null; then
25
+ echo >&2 -e "mise installed..."
26
+ elif command -v rtx >/dev/null; then
27
+ warn "⚠️ 2024-01-02: 'rtx' has changed to 'mise'; please replace 'rtx' with 'mise'"
28
+ exit 1
29
+ elif [[ -n ${ASDF_DIR-} ]]; then
30
+ warn "⚠️ 2024-08-07: 'asdf' is no longer supported; please uninstall and replace with 'mise'"
31
+ exit 1
32
+ else
33
+ warn "mise is not installed."
34
+ exit 1
35
+ fi
36
+
37
+ # Do some validation to ensure that the environment is not misconfigured, as this may
38
+ # save a bunch of debugging effort down the line.
39
+
40
+ # Detect Rosetta 2
41
+ if [[ $(uname -m) == "arm64" ]] && [[ $(uname -p) == "x86_64" ]]; then
42
+ echo "This shell is running in Rosetta emulating x86_64. Please use native mode Apple Silicon." >&2
43
+ echo "For help visit https://gitlab.com/gitlab-com/gl-infra/common-ci-tasks/-/blob/main/docs/developer-setup.md" >&2
44
+ exit 1
45
+ fi
46
+
47
+ # Detect ancient versions of bash
48
+ if ((BASH_VERSINFO[0] < 4)); then
49
+ echo "You're running bash < v4.0.0. Please upgrade to a newer version." >&2
50
+ echo "For help visit https://gitlab.com/gitlab-com/gl-infra/common-ci-tasks/-/blob/main/docs/developer-setup.md" >&2
51
+ exit 1
52
+ fi
53
+
54
+ # install mise/asdf dependencies
55
+ echo "installing required plugins with mise install.."
56
+ mise plugins update
57
+ mise install
58
+ eval "$(mise activate bash)"
59
+
60
+ # pre-commit is optional
61
+ if command -v pre-commit &>/dev/null; then
62
+ echo "running pre-commit install..."
63
+ pre-commit install
64
+ pre-commit install-hooks
65
+ pre-commit install --hook-type commit-msg
66
+ else
67
+ warn "pre-commit is not installed. Skipping."
68
+ fi
@@ -0,0 +1,30 @@
1
+ #!/usr/bin/env bash
2
+ # Vendored from https://gitlab.com/gitlab-com/gl-infra/common-template-copier
3
+ # Consider contributing upstream when updating this file
4
+
5
+ # See the README.md for details of how this script works
6
+
7
+ set -euo pipefail
8
+ IFS=$'\n\t'
9
+
10
+ ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
11
+
12
+ export LANG=C LC_ALL=C
13
+
14
+ generate() {
15
+ sort "${ROOT_DIR}/.tool-versions" |
16
+ awk '
17
+ BEGIN {
18
+ print "# DO NOT MANUALLY EDIT; Run ./scripts/update-asdf-version-variables.sh to update this";
19
+ print "variables:"
20
+ }
21
+ {
22
+ if (!/^#/ && $1 != "" && $2 != "system") {
23
+ gsub("-", "_", $1);
24
+ print " GL_ASDF_" toupper($1) "_VERSION: \"" $2 "\""
25
+ }
26
+ }
27
+ '
28
+ }
29
+
30
+ generate >"${ROOT_DIR}/.gitlab-ci-asdf-versions.yml"
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gitlab-labkit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.37.0
4
+ version: 0.40.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Newdigate
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2024-12-05 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: actionpack
@@ -64,6 +63,20 @@ dependencies:
64
63
  - - ">="
65
64
  - !ruby/object:Gem::Version
66
65
  version: '1.62'
66
+ - !ruby/object:Gem::Dependency
67
+ name: google-protobuf
68
+ requirement: !ruby/object:Gem::Requirement
69
+ requirements:
70
+ - - "~>"
71
+ - !ruby/object:Gem::Version
72
+ version: '3'
73
+ type: :runtime
74
+ prerelease: false
75
+ version_requirements: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - "~>"
78
+ - !ruby/object:Gem::Version
79
+ version: '3'
67
80
  - !ruby/object:Gem::Dependency
68
81
  name: jaeger-client
69
82
  requirement: !ruby/object:Gem::Requirement
@@ -78,6 +91,20 @@ dependencies:
78
91
  - - "~>"
79
92
  - !ruby/object:Gem::Version
80
93
  version: 1.1.0
94
+ - !ruby/object:Gem::Dependency
95
+ name: json-schema
96
+ requirement: !ruby/object:Gem::Requirement
97
+ requirements:
98
+ - - "~>"
99
+ - !ruby/object:Gem::Version
100
+ version: '5.1'
101
+ type: :runtime
102
+ prerelease: false
103
+ version_requirements: !ruby/object:Gem::Requirement
104
+ requirements:
105
+ - - "~>"
106
+ - !ruby/object:Gem::Version
107
+ version: '5.1'
81
108
  - !ruby/object:Gem::Dependency
82
109
  name: opentracing
83
110
  requirement: !ruby/object:Gem::Requirement
@@ -98,7 +125,7 @@ dependencies:
98
125
  requirements:
99
126
  - - ">="
100
127
  - !ruby/object:Gem::Version
101
- version: 5.1.0
128
+ version: 6.1.0
102
129
  - - "<"
103
130
  - !ruby/object:Gem::Version
104
131
  version: '7.0'
@@ -108,10 +135,24 @@ dependencies:
108
135
  requirements:
109
136
  - - ">="
110
137
  - !ruby/object:Gem::Version
111
- version: 5.1.0
138
+ version: 6.1.0
112
139
  - - "<"
113
140
  - !ruby/object:Gem::Version
114
141
  version: '7.0'
142
+ - !ruby/object:Gem::Dependency
143
+ name: prometheus-client-mmap
144
+ requirement: !ruby/object:Gem::Requirement
145
+ requirements:
146
+ - - "~>"
147
+ - !ruby/object:Gem::Version
148
+ version: 1.2.9
149
+ type: :runtime
150
+ prerelease: false
151
+ version_requirements: !ruby/object:Gem::Requirement
152
+ requirements:
153
+ - - "~>"
154
+ - !ruby/object:Gem::Version
155
+ version: 1.2.9
115
156
  - !ruby/object:Gem::Dependency
116
157
  name: redis
117
158
  requirement: !ruby/object:Gem::Requirement
@@ -180,14 +221,14 @@ dependencies:
180
221
  requirements:
181
222
  - - "~>"
182
223
  - !ruby/object:Gem::Version
183
- version: 6.2.0
224
+ version: 13.0.2
184
225
  type: :development
185
226
  prerelease: false
186
227
  version_requirements: !ruby/object:Gem::Requirement
187
228
  requirements:
188
229
  - - "~>"
189
230
  - !ruby/object:Gem::Version
190
- version: 6.2.0
231
+ version: 13.0.2
191
232
  - !ruby/object:Gem::Dependency
192
233
  name: grpc-tools
193
234
  requirement: !ruby/object:Gem::Requirement
@@ -208,28 +249,42 @@ dependencies:
208
249
  requirements:
209
250
  - - "~>"
210
251
  - !ruby/object:Gem::Version
211
- version: 0.17.3
252
+ version: 0.22.0
212
253
  type: :development
213
254
  prerelease: false
214
255
  version_requirements: !ruby/object:Gem::Requirement
215
256
  requirements:
216
257
  - - "~>"
217
258
  - !ruby/object:Gem::Version
218
- version: 0.17.3
259
+ version: 0.22.0
219
260
  - !ruby/object:Gem::Dependency
220
261
  name: httpclient
221
262
  requirement: !ruby/object:Gem::Requirement
222
263
  requirements:
223
264
  - - "~>"
224
265
  - !ruby/object:Gem::Version
225
- version: 2.8.3
266
+ version: 2.9.0
226
267
  type: :development
227
268
  prerelease: false
228
269
  version_requirements: !ruby/object:Gem::Requirement
229
270
  requirements:
230
271
  - - "~>"
231
272
  - !ruby/object:Gem::Version
232
- version: 2.8.3
273
+ version: 2.9.0
274
+ - !ruby/object:Gem::Dependency
275
+ name: irb
276
+ requirement: !ruby/object:Gem::Requirement
277
+ requirements:
278
+ - - "~>"
279
+ - !ruby/object:Gem::Version
280
+ version: 1.15.2
281
+ type: :development
282
+ prerelease: false
283
+ version_requirements: !ruby/object:Gem::Requirement
284
+ requirements:
285
+ - - "~>"
286
+ - !ruby/object:Gem::Version
287
+ version: 1.15.2
233
288
  - !ruby/object:Gem::Dependency
234
289
  name: pry
235
290
  requirement: !ruby/object:Gem::Requirement
@@ -244,6 +299,20 @@ dependencies:
244
299
  - - "~>"
245
300
  - !ruby/object:Gem::Version
246
301
  version: '0.12'
302
+ - !ruby/object:Gem::Dependency
303
+ name: pry-byebug
304
+ requirement: !ruby/object:Gem::Requirement
305
+ requirements:
306
+ - - "~>"
307
+ - !ruby/object:Gem::Version
308
+ version: '3.11'
309
+ type: :development
310
+ prerelease: false
311
+ version_requirements: !ruby/object:Gem::Requirement
312
+ requirements:
313
+ - - "~>"
314
+ - !ruby/object:Gem::Version
315
+ version: '3.11'
247
316
  - !ruby/object:Gem::Dependency
248
317
  name: rack
249
318
  requirement: !ruby/object:Gem::Requirement
@@ -264,14 +333,14 @@ dependencies:
264
333
  requirements:
265
334
  - - "~>"
266
335
  - !ruby/object:Gem::Version
267
- version: '12.3'
336
+ version: '13.2'
268
337
  type: :development
269
338
  prerelease: false
270
339
  version_requirements: !ruby/object:Gem::Requirement
271
340
  requirements:
272
341
  - - "~>"
273
342
  - !ruby/object:Gem::Version
274
- version: '12.3'
343
+ version: '13.2'
275
344
  - !ruby/object:Gem::Dependency
276
345
  name: rest-client
277
346
  requirement: !ruby/object:Gem::Requirement
@@ -314,20 +383,6 @@ dependencies:
314
383
  - - "~>"
315
384
  - !ruby/object:Gem::Version
316
385
  version: '1.0'
317
- - !ruby/object:Gem::Dependency
318
- name: rufo
319
- requirement: !ruby/object:Gem::Requirement
320
- requirements:
321
- - - '='
322
- - !ruby/object:Gem::Version
323
- version: 0.9.0
324
- type: :development
325
- prerelease: false
326
- version_requirements: !ruby/object:Gem::Requirement
327
- requirements:
328
- - - '='
329
- - !ruby/object:Gem::Version
330
- version: 0.9.0
331
386
  - !ruby/object:Gem::Dependency
332
387
  name: sidekiq
333
388
  requirement: !ruby/object:Gem::Requirement
@@ -362,29 +417,38 @@ dependencies:
362
417
  - - "~>"
363
418
  - !ruby/object:Gem::Version
364
419
  version: 1.7.0
365
- description:
366
420
  email:
367
421
  - andrew@gitlab.com
368
422
  executables: []
369
423
  extensions: []
370
424
  extra_rdoc_files: []
371
425
  files:
426
+ - ".copier-answers.yml"
427
+ - ".editorconfig"
372
428
  - ".env.example.sh"
373
429
  - ".gitignore"
430
+ - ".gitlab-ci-asdf-versions.yml"
374
431
  - ".gitlab-ci.yml"
375
432
  - ".gitlab/CODEOWNERS"
433
+ - ".gitleaks.toml"
434
+ - ".mise.toml"
435
+ - ".pre-commit-config.yaml"
436
+ - ".releaserc.json"
376
437
  - ".rspec"
377
438
  - ".rubocop.yml"
378
439
  - ".rubocop_todo.yml"
379
- - ".ruby-version"
380
440
  - ".rufo"
381
441
  - ".tool-versions"
442
+ - ".yamllint.yaml"
443
+ - CODEOWNERS
382
444
  - CONTRIBUTING.md
383
445
  - Dangerfile
384
446
  - Gemfile
385
447
  - LICENSE
386
448
  - README.md
387
449
  - Rakefile
450
+ - config/covered_experiences/schema.json
451
+ - config/covered_experiences/testing_sample.yml
388
452
  - gitlab-labkit.gemspec
389
453
  - lib/gitlab-labkit.rb
390
454
  - lib/labkit/context.rb
@@ -394,6 +458,12 @@ files:
394
458
  - lib/labkit/correlation/grpc/client_interceptor.rb
395
459
  - lib/labkit/correlation/grpc/grpc_common.rb
396
460
  - lib/labkit/correlation/grpc/server_interceptor.rb
461
+ - lib/labkit/covered_experience.rb
462
+ - lib/labkit/covered_experience/README.md
463
+ - lib/labkit/covered_experience/error.rb
464
+ - lib/labkit/covered_experience/experience.rb
465
+ - lib/labkit/covered_experience/null.rb
466
+ - lib/labkit/covered_experience/registry.rb
397
467
  - lib/labkit/excon_publisher.rb
398
468
  - lib/labkit/fips.rb
399
469
  - lib/labkit/httpclient_publisher.rb
@@ -402,6 +472,12 @@ files:
402
472
  - lib/labkit/logging/grpc/server_interceptor.rb
403
473
  - lib/labkit/logging/json_logger.rb
404
474
  - lib/labkit/logging/sanitizer.rb
475
+ - lib/labkit/metrics.rb
476
+ - lib/labkit/metrics/README.md
477
+ - lib/labkit/metrics/client.rb
478
+ - lib/labkit/metrics/null.rb
479
+ - lib/labkit/metrics/rack_exporter.rb
480
+ - lib/labkit/metrics/registry.rb
405
481
  - lib/labkit/middleware.rb
406
482
  - lib/labkit/middleware/rack.rb
407
483
  - lib/labkit/middleware/sidekiq.rb
@@ -415,6 +491,9 @@ files:
415
491
  - lib/labkit/middleware/sidekiq/tracing/server.rb
416
492
  - lib/labkit/middleware/sidekiq/tracing/sidekiq_common.rb
417
493
  - lib/labkit/net_http_publisher.rb
494
+ - lib/labkit/rspec/README.md
495
+ - lib/labkit/rspec/matchers.rb
496
+ - lib/labkit/rspec/matchers/covered_experience_matchers.rb
418
497
  - lib/labkit/system.rb
419
498
  - lib/labkit/tracing.rb
420
499
  - lib/labkit/tracing/abstract_instrumenter.rb
@@ -448,28 +527,30 @@ files:
448
527
  - lib/labkit/tracing/redis/redis_interceptor_helper.rb
449
528
  - lib/labkit/tracing/tracing_common.rb
450
529
  - lib/labkit/tracing/tracing_utils.rb
530
+ - renovate.json
531
+ - scripts/install-asdf-plugins.sh
532
+ - scripts/prepare-dev-env.sh
533
+ - scripts/update-asdf-version-variables.sh
451
534
  homepage: https://gitlab.com/gitlab-org/labkit-ruby
452
535
  licenses:
453
536
  - MIT
454
537
  metadata:
455
538
  source_code_uri: https://gitlab.com/gitlab-org/ruby/gems/labkit-ruby
456
- post_install_message:
457
539
  rdoc_options: []
458
540
  require_paths:
459
541
  - lib
460
542
  required_ruby_version: !ruby/object:Gem::Requirement
461
543
  requirements:
462
- - - ">="
544
+ - - "~>"
463
545
  - !ruby/object:Gem::Version
464
- version: 2.6.0
546
+ version: '3.2'
465
547
  required_rubygems_version: !ruby/object:Gem::Requirement
466
548
  requirements:
467
549
  - - ">="
468
550
  - !ruby/object:Gem::Version
469
551
  version: '0'
470
552
  requirements: []
471
- rubygems_version: 3.3.27
472
- signing_key:
553
+ rubygems_version: 3.6.9
473
554
  specification_version: 4
474
555
  summary: Instrumentation for GitLab
475
556
  test_files: []
data/.ruby-version DELETED
@@ -1 +0,0 @@
1
- 3.1.4