gitlab_quality-test_tooling 1.25.0 → 1.26.1

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
  SHA256:
3
- metadata.gz: 4d9ffa0b968a30865f566b0e0605f0f1f3e86ada066e5d9f556cf5fc841158a2
4
- data.tar.gz: 86ff9419e5023c229f7e0dfbb98d9afae4370f62e98e0742a0050d314839d9a3
3
+ metadata.gz: e3ee730d9233005716cead9875a8a94b79db857b68ef7dcc16715e8f1ac3f281
4
+ data.tar.gz: 74d20185fa73cb46cdc998786267d79946c5f96e29966b4c5d57eac40b26c14e
5
5
  SHA512:
6
- metadata.gz: c1a1d48ad6f07f3861d2c20cac6c24623b709664b80f796b42972238e0c378c22a97f9374bb29546c5f9a3012d22b523d84b3e178d413040fe4d8e40a14e3827
7
- data.tar.gz: 6ec38fbbba05b00c978a3f0a48994217257aca572ec8081b1764d950c47175e91bd0cdc3dbd944c730c184ea76e856bd0e46691c7323f16c5acc0b7fe1d5cab1
6
+ metadata.gz: 7909fce13b1b085bef53aa1843029cda34199bd11757ec50a3175a933b3e2805d432a489e9fe157926c14c7f6819466b6a45970cd8b0d62f483df0b0ea422856
7
+ data.tar.gz: 2e28b30086187f268911b15c359bd5635958c6061dfddc0213e3176e686cbf27fdc96c5fd72594a608cd0ebf21ac3870ac9f0330a148a5112e252cb97d32a8fc
data/Gemfile.lock CHANGED
@@ -1,11 +1,12 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- gitlab_quality-test_tooling (1.25.0)
5
- activesupport (>= 6.1, < 7.2)
4
+ gitlab_quality-test_tooling (1.26.1)
5
+ activesupport (~> 7.1)
6
6
  amatch (~> 0.4.1)
7
7
  gitlab (~> 4.19)
8
8
  http (~> 5.0)
9
+ influxdb-client (~> 3.1)
9
10
  nokogiri (~> 1.10)
10
11
  parallel (>= 1, < 2)
11
12
  rainbow (>= 3, < 4)
@@ -35,7 +36,7 @@ GEM
35
36
  backport (1.2.0)
36
37
  base64 (0.2.0)
37
38
  benchmark (0.3.0)
38
- bigdecimal (3.1.6)
39
+ bigdecimal (3.1.8)
39
40
  binding_of_caller (1.0.0)
40
41
  debug_inspector (>= 0.0.1)
41
42
  byebug (11.1.3)
@@ -128,7 +129,7 @@ GEM
128
129
  httparty (0.21.0)
129
130
  mini_mime (>= 1.0.0)
130
131
  multi_xml (>= 0.5.2)
131
- i18n (1.14.4)
132
+ i18n (1.14.5)
132
133
  concurrent-ruby (~> 1.0)
133
134
  influxdb-client (3.1.0)
134
135
  jaro_winkler (1.5.6)
@@ -148,7 +149,7 @@ GEM
148
149
  method_source (1.0.0)
149
150
  mini_mime (1.1.5)
150
151
  mini_portile2 (2.8.5)
151
- minitest (5.22.2)
152
+ minitest (5.23.0)
152
153
  mize (0.4.1)
153
154
  protocol (~> 2.0)
154
155
  multi_xml (0.6.0)
@@ -313,13 +314,11 @@ PLATFORMS
313
314
  ruby
314
315
 
315
316
  DEPENDENCIES
316
- activesupport (>= 6.1, < 7.2)
317
317
  climate_control (~> 1.2)
318
318
  gitlab-dangerfiles (~> 3.8)
319
319
  gitlab-styles (~> 10.0)
320
320
  gitlab_quality-test_tooling!
321
321
  guard-rspec (~> 4.7)
322
- influxdb-client (~> 3.1)
323
322
  lefthook (~> 1.3)
324
323
  pry-byebug (= 3.10.1)
325
324
  rake (~> 13.0)
@@ -331,4 +330,4 @@ DEPENDENCIES
331
330
  webmock (= 3.7.0)
332
331
 
333
332
  BUNDLED WITH
334
- 2.5.4
333
+ 2.5.6
@@ -33,10 +33,11 @@ module GitlabQuality
33
33
  input_files:,
34
34
  base_issue_labels: nil,
35
35
  dry_run: false,
36
+ related_issues_file: nil,
36
37
  project: nil,
37
38
  max_diff_ratio: DEFAULT_MAX_DIFF_RATIO_FOR_DETECTION,
38
39
  **_kwargs)
39
- super(token: token, input_files: input_files, project: project, dry_run: dry_run)
40
+ super(token: token, input_files: input_files, related_issues_file: related_issues_file, project: project, dry_run: dry_run)
40
41
 
41
42
  @base_issue_labels = Set.new(base_issue_labels)
42
43
  @max_diff_ratio = max_diff_ratio.to_f
@@ -0,0 +1,44 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "singleton"
4
+
5
+ module GitlabQuality
6
+ module TestTooling
7
+ module TestMetricsExporter
8
+ class Config
9
+ include Singleton
10
+
11
+ class << self
12
+ def configuration
13
+ Config.instance
14
+ end
15
+
16
+ def configure
17
+ yield(configuration)
18
+ end
19
+ end
20
+
21
+ attr_accessor :influxdb_url,
22
+ :influxdb_token,
23
+ :influxdb_bucket,
24
+ :run_type
25
+
26
+ attr_writer :custom_keys_tags,
27
+ :custom_keys_fields,
28
+ :test_metric_file_name
29
+
30
+ def custom_keys_tags
31
+ @custom_keys_tags || []
32
+ end
33
+
34
+ def custom_keys_fields
35
+ @custom_keys_fields || []
36
+ end
37
+
38
+ def test_metric_file_name
39
+ @test_metric_file_name || "test_metrics.json"
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,44 @@
1
+ # frozen_string_literal: true
2
+
3
+ module GitlabQuality
4
+ module TestTooling
5
+ module TestMetricsExporter
6
+ class Formatter < RSpec::Core::Formatters::BaseFormatter
7
+ RSpec::Core::Formatters.register(self, :stop)
8
+
9
+ def stop(notification)
10
+ setup_test_metrics_exporter(notification.examples)
11
+
12
+ log_test_metrics.push_test_metrics(
13
+ custom_keys_tags: config.custom_keys_tags,
14
+ custom_keys_fields: config.custom_keys_fields
15
+ )
16
+
17
+ log_test_metrics.save_test_metrics(
18
+ file_name: config.test_metric_file_name,
19
+ custom_keys_tags: config.custom_keys_tags,
20
+ custom_keys_fields: config.custom_keys_fields
21
+ )
22
+ end
23
+
24
+ private
25
+
26
+ attr_reader :log_test_metrics
27
+
28
+ def config
29
+ Config.configuration
30
+ end
31
+
32
+ def setup_test_metrics_exporter(examples)
33
+ @log_test_metrics = LogTestMetrics.new(
34
+ examples: examples,
35
+ influxdb_url: config.influxdb_url,
36
+ influxdb_token: config.influxdb_token,
37
+ influxdb_bucket: config.influxdb_bucket,
38
+ run_type: config.run_type
39
+ )
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
@@ -2,7 +2,7 @@
2
2
 
3
3
  module GitlabQuality
4
4
  module TestTooling
5
- module Concerns
5
+ module TestMetricsExporter
6
6
  module InfluxdbTools
7
7
  # InfluxDb client
8
8
  #
@@ -1,13 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'json'
4
-
5
3
  module GitlabQuality
6
4
  module TestTooling
7
- module TestMetric
5
+ module TestMetricsExporter
8
6
  class LogTestMetrics
9
- include Concerns::TestMetrics
10
- include Concerns::InfluxdbTools
7
+ include TestMetrics
8
+ include InfluxdbTools
11
9
 
12
10
  CUSTOM_METRICS_KEY = :custom_test_metrics
13
11
 
@@ -39,7 +37,9 @@ module GitlabQuality
39
37
  # @param [Array<String>] custom_keys_tags
40
38
  # @param [Array<String>] custom_keys_fields
41
39
  # @return [nil]
42
- def save_test_metrics(file_name, custom_keys_tags: nil, custom_keys_fields: nil)
40
+ def save_test_metrics(file_name:, custom_keys_tags: nil, custom_keys_fields: nil)
41
+ return Runtime::Logger.warn("No file_name provided, not saving test metrics") if file_name.nil?
42
+
43
43
  @test_metrics ||= examples.filter_map { |example| parse_test_results(example, custom_keys_tags, custom_keys_fields) }
44
44
  file = "tmp/#{file_name}"
45
45
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  module GitlabQuality
4
4
  module TestTooling
5
- module Concerns
5
+ module TestMetricsExporter
6
6
  module TestMetrics
7
7
  # Single common timestamp for all exported example metrics to keep data points consistently grouped
8
8
  #
@@ -30,7 +30,7 @@ module GitlabQuality
30
30
  job_name: job_name,
31
31
  merge_request: merge_request,
32
32
  run_type: run_type,
33
- stage: example.metadata[:product_stage] || example.metadata[:product_category],
33
+ feature_category: example.metadata[:feature_category],
34
34
  product_group: example.metadata[:product_group],
35
35
  exception_class: example.execution_result.exception&.class&.to_s,
36
36
  **custom_metrics(example.metadata, custom_keys)
@@ -2,6 +2,6 @@
2
2
 
3
3
  module GitlabQuality
4
4
  module TestTooling
5
- VERSION = "1.25.0"
5
+ VERSION = "1.26.1"
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,35 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gitlab_quality-test_tooling
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.25.0
4
+ version: 1.26.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - GitLab Quality
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-05-14 00:00:00.000000000 Z
11
+ date: 2024-05-22 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: activesupport
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: '6.1'
20
- - - "<"
21
- - !ruby/object:Gem::Version
22
- version: '7.2'
23
- type: :development
24
- prerelease: false
25
- version_requirements: !ruby/object:Gem::Requirement
26
- requirements:
27
- - - ">="
28
- - !ruby/object:Gem::Version
29
- version: '6.1'
30
- - - "<"
31
- - !ruby/object:Gem::Version
32
- version: '7.2'
33
13
  - !ruby/object:Gem::Dependency
34
14
  name: climate_control
35
15
  requirement: !ruby/object:Gem::Requirement
@@ -86,20 +66,6 @@ dependencies:
86
66
  - - "~>"
87
67
  - !ruby/object:Gem::Version
88
68
  version: '4.7'
89
- - !ruby/object:Gem::Dependency
90
- name: influxdb-client
91
- requirement: !ruby/object:Gem::Requirement
92
- requirements:
93
- - - "~>"
94
- - !ruby/object:Gem::Version
95
- version: '3.1'
96
- type: :development
97
- prerelease: false
98
- version_requirements: !ruby/object:Gem::Requirement
99
- requirements:
100
- - - "~>"
101
- - !ruby/object:Gem::Version
102
- version: '3.1'
103
69
  - !ruby/object:Gem::Dependency
104
70
  name: lefthook
105
71
  requirement: !ruby/object:Gem::Requirement
@@ -230,22 +196,16 @@ dependencies:
230
196
  name: activesupport
231
197
  requirement: !ruby/object:Gem::Requirement
232
198
  requirements:
233
- - - ">="
234
- - !ruby/object:Gem::Version
235
- version: '6.1'
236
- - - "<"
199
+ - - "~>"
237
200
  - !ruby/object:Gem::Version
238
- version: '7.2'
201
+ version: '7.1'
239
202
  type: :runtime
240
203
  prerelease: false
241
204
  version_requirements: !ruby/object:Gem::Requirement
242
205
  requirements:
243
- - - ">="
244
- - !ruby/object:Gem::Version
245
- version: '6.1'
246
- - - "<"
206
+ - - "~>"
247
207
  - !ruby/object:Gem::Version
248
- version: '7.2'
208
+ version: '7.1'
249
209
  - !ruby/object:Gem::Dependency
250
210
  name: amatch
251
211
  requirement: !ruby/object:Gem::Requirement
@@ -288,6 +248,20 @@ dependencies:
288
248
  - - "~>"
289
249
  - !ruby/object:Gem::Version
290
250
  version: '5.0'
251
+ - !ruby/object:Gem::Dependency
252
+ name: influxdb-client
253
+ requirement: !ruby/object:Gem::Requirement
254
+ requirements:
255
+ - - "~>"
256
+ - !ruby/object:Gem::Version
257
+ version: '3.1'
258
+ type: :runtime
259
+ prerelease: false
260
+ version_requirements: !ruby/object:Gem::Requirement
261
+ requirements:
262
+ - - "~>"
263
+ - !ruby/object:Gem::Version
264
+ version: '3.1'
291
265
  - !ruby/object:Gem::Dependency
292
266
  name: nokogiri
293
267
  requirement: !ruby/object:Gem::Requirement
@@ -438,8 +412,6 @@ files:
438
412
  - lefthook.yml
439
413
  - lib/gitlab_quality/test_tooling.rb
440
414
  - lib/gitlab_quality/test_tooling/concerns/find_set_dri.rb
441
- - lib/gitlab_quality/test_tooling/concerns/influxdb_tools.rb
442
- - lib/gitlab_quality/test_tooling/concerns/test_metrics.rb
443
415
  - lib/gitlab_quality/test_tooling/failed_jobs_table.rb
444
416
  - lib/gitlab_quality/test_tooling/gitlab_client/branches_client.rb
445
417
  - lib/gitlab_quality/test_tooling/gitlab_client/branches_dry_client.rb
@@ -497,8 +469,12 @@ files:
497
469
  - lib/gitlab_quality/test_tooling/test_meta/processor/meta_processor.rb
498
470
  - lib/gitlab_quality/test_tooling/test_meta/test_meta_updater.rb
499
471
  - lib/gitlab_quality/test_tooling/test_metric/json_test_metric.rb
500
- - lib/gitlab_quality/test_tooling/test_metric/log_test_metrics.rb
501
472
  - lib/gitlab_quality/test_tooling/test_metrics/json_test_metric_collection.rb
473
+ - lib/gitlab_quality/test_tooling/test_metrics_exporter/config.rb
474
+ - lib/gitlab_quality/test_tooling/test_metrics_exporter/formatter.rb
475
+ - lib/gitlab_quality/test_tooling/test_metrics_exporter/influxdb_tools.rb
476
+ - lib/gitlab_quality/test_tooling/test_metrics_exporter/log_test_metrics.rb
477
+ - lib/gitlab_quality/test_tooling/test_metrics_exporter/test_metrics.rb
502
478
  - lib/gitlab_quality/test_tooling/test_result/base_test_result.rb
503
479
  - lib/gitlab_quality/test_tooling/test_result/j_unit_test_result.rb
504
480
  - lib/gitlab_quality/test_tooling/test_result/json_test_result.rb