buildkite-test_collector 2.5.0 → 2.6.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: '096d9a186b77909ac11460179d43bb4e57fd76ebea603f0d35d105264ae65793'
4
- data.tar.gz: cc16f83917301ec0e20640545a985a800064777e549f434dfb56f9152efd2482
3
+ metadata.gz: 0e8ff4ceff4d825291a8878bf19a912362d45c36d6750c5e14628f446cec0bbd
4
+ data.tar.gz: 215441296a3c91547b0c43b062893239fbe5bae5ca2e1a80cca7b2ec65277e77
5
5
  SHA512:
6
- metadata.gz: 58375f6b3c26113dc18d5af87b785a891b70045c657621450baaa959120ae36923732cb8992942148c0cfe2eaf199ae9e5e675e7199000f8e39aa6ed4717ab3e
7
- data.tar.gz: b4bd0aa37da33506ae7bfe297497230a9d87e36aea074ad3e456d32aa2f13eaf76000dc4070fd6ab6ae6dfae00faeb39680c0945b1ffc1c1d9344d93cd82de1a
6
+ metadata.gz: d31e59e76f2dc92ef5951f9d97663f14cb84d9ba1256c8586931146151222c7ce3769a8913517910312d0a75a7cafb3488f0b9690257c4fc6686fbf37cbed9ee
7
+ data.tar.gz: 995fc9e592b74a41385058c4eac868e9639f6ef9bfb2ba9068cd156fd6ab5d90bf40aca86a9ab9c8560cf7c9ba80c4f172747a948e4e219976c680d035eae0af
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## v2.6.0
4
+
5
+ - Trace spans can be filtered by minimum duration #215 - @pda
6
+
3
7
  ## v2.5.0
4
8
 
5
9
  - Remove ActiveSupport as a primary dependancy #212 - @pat
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- buildkite-test_collector (2.5.0)
4
+ buildkite-test_collector (2.6.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -40,6 +40,7 @@ class Buildkite::TestCollector::CI
40
40
  "language_version" => RUBY_VERSION,
41
41
  "version" => Buildkite::TestCollector::VERSION,
42
42
  "collector" => "ruby-#{Buildkite::TestCollector::NAME}",
43
+ "trace_min_duration" => Buildkite::TestCollector.trace_min_duration&.to_s,
43
44
  }.select { |_, value| !value.nil? }
44
45
  end
45
46
 
@@ -16,7 +16,9 @@ RSpec.configure do |config|
16
16
  end
17
17
 
18
18
  config.around(:each) do |example|
19
- tracer = Buildkite::TestCollector::Tracer.new
19
+ tracer = Buildkite::TestCollector::Tracer.new(
20
+ min_duration: Buildkite::TestCollector.trace_min_duration,
21
+ )
20
22
 
21
23
  # The _buildkite prefix here is added as a safeguard against name collisions
22
24
  # as we are in the main thread
@@ -9,7 +9,11 @@ require_relative "minitest_plugin/trace"
9
9
  module Buildkite::TestCollector::MinitestPlugin
10
10
  def before_setup
11
11
  super
12
- tracer = Buildkite::TestCollector::Tracer.new
12
+
13
+ tracer = Buildkite::TestCollector::Tracer.new(
14
+ min_duration: Buildkite::TestCollector.trace_min_duration,
15
+ )
16
+
13
17
  # The _buildkite prefix here is added as a safeguard against name collisions
14
18
  # as we are in the main thread
15
19
  Thread.current[:_buildkite_tracer] = tracer
@@ -35,21 +35,30 @@ module Buildkite::TestCollector
35
35
  @children = []
36
36
  end
37
37
 
38
+ def duration
39
+ raise IncompleteSpan if end_at.nil?
40
+
41
+ end_at - start_at
42
+ end
43
+
38
44
  def as_hash
39
45
  {
40
46
  section: section,
41
47
  start_at: start_at,
42
48
  end_at: end_at,
43
- duration: end_at - start_at,
49
+ duration: duration,
44
50
  detail: detail,
45
51
  children: children.map(&:as_hash),
46
52
  }
47
53
  end
54
+
55
+ class IncompleteSpan < StandardError; end
48
56
  end
49
57
 
50
- def initialize
58
+ def initialize(min_duration: nil)
51
59
  @top = Span.new(:top, MonotonicTime.call, nil, {})
52
60
  @stack = [@top]
61
+ @min_duration = min_duration
53
62
  end
54
63
 
55
64
  def enter(section, **detail)
@@ -60,11 +69,16 @@ module Buildkite::TestCollector
60
69
 
61
70
  def leave
62
71
  current_span.end_at = MonotonicTime.call
72
+ duration = current_span.duration
63
73
  @stack.pop
74
+ current_span.children.pop if @min_duration && duration < @min_duration
75
+ nil # avoid ambiguous return type/value
64
76
  end
65
77
 
66
78
  def backfill(section, duration, **detail)
67
- new_entry = Span.new(section, MonotonicTime.call - duration, MonotonicTime.call, detail)
79
+ return if @min_duration && duration < @min_duration
80
+ now = MonotonicTime.call
81
+ new_entry = Span.new(section, now - duration, now, detail)
68
82
  current_span.children << new_entry
69
83
  end
70
84
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Buildkite
4
4
  module TestCollector
5
- VERSION = "2.5.0"
5
+ VERSION = "2.6.0"
6
6
  NAME = "buildkite-test_collector"
7
7
  end
8
8
  end
@@ -38,6 +38,7 @@ module Buildkite
38
38
  attr_accessor :artifact_path
39
39
  attr_accessor :env
40
40
  attr_accessor :batch_size
41
+ attr_accessor :trace_min_duration
41
42
  end
42
43
 
43
44
  def self.configure(hook:, token: nil, url: nil, tracing_enabled: true, artifact_path: nil, env: {})
@@ -47,6 +48,12 @@ module Buildkite
47
48
  self.artifact_path = artifact_path
48
49
  self.env = env
49
50
  self.batch_size = ENV.fetch("BUILDKITE_ANALYTICS_UPLOAD_BATCH_SIZE") { DEFAULT_UPLOAD_BATCH_SIZE }.to_i
51
+
52
+ trace_min_ms_string = ENV["BUILDKITE_ANALYTICS_TRACE_MIN_MS"]
53
+ self.trace_min_duration = if trace_min_ms_string && !trace_min_ms_string.empty?
54
+ Float(trace_min_ms_string) / 1000
55
+ end
56
+
50
57
  self.hook_into(hook)
51
58
  end
52
59
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: buildkite-test_collector
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.5.0
4
+ version: 2.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Buildkite
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-02-21 00:00:00.000000000 Z
11
+ date: 2024-03-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -52,7 +52,7 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '3.10'
55
- description:
55
+ description:
56
56
  email:
57
57
  - support+analytics@buildkite.com
58
58
  executables: []
@@ -100,7 +100,7 @@ licenses:
100
100
  metadata:
101
101
  homepage_uri: https://github.com/buildkite/test-collector-ruby
102
102
  source_code_uri: https://github.com/buildkite/test-collector-ruby
103
- post_install_message:
103
+ post_install_message:
104
104
  rdoc_options: []
105
105
  require_paths:
106
106
  - lib
@@ -115,8 +115,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
115
115
  - !ruby/object:Gem::Version
116
116
  version: '0'
117
117
  requirements: []
118
- rubygems_version: 3.1.6
119
- signing_key:
118
+ rubygems_version: 3.4.10
119
+ signing_key:
120
120
  specification_version: 4
121
121
  summary: Track test executions and report to Buildkite Test Analytics
122
122
  test_files: []