buildkite-test_collector 2.1.0 → 2.3.0

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: 62d15c76f63986e5fbef7b57ef7319d4e13dbfe0224d7359f056c5be3d1a6016
4
- data.tar.gz: 2e80852362308fb6a3b7e36f3ab2c9b7927386a446bead51d8d7dc799efef051
3
+ metadata.gz: cecd9e001e4e3ead60507d46635e48fbe2468c183e215896ae4c92e69d207aee
4
+ data.tar.gz: da88dde37e16f1ef279f05f84434fdefe1edc8488e864b669cba0741cc0799ca
5
5
  SHA512:
6
- metadata.gz: 0cffd41ec45351cde0532bcb79e26e24fbeed39bec9528189fed439bb82e69b8a5f1addd164d0d1e6c75e3915d48bbf0647c354ec3fdf68edc92e34e3dd995de
7
- data.tar.gz: 6fe2ff7e9832bbe3c666882710c7609f90562c6e32072a70fd7833cf0e46999affa1bb34c47e7251cd00d3a283fe9f21443831b4f4dfcb5a047fe8571b54213e
6
+ metadata.gz: 7d8a965f5a1897a0ddce0ac3a03a527fbfb8d2683ce9555961ef1ba597742e7070cdd187d48f97b8e3111769e837eca69e1b65b52708515b7c87357811bc2c8f
7
+ data.tar.gz: 00caaf80206b97b39d4f4f0e67c15e1b8b77ee5f7df85f74b4a569bff3cb0ec1e4f2a248eda5c0d302277e0fe44421c52a32d65e114d162334971af9fad03e75
data/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## v2.3.0
4
+ - Stop sending execution id and safeguard SecureRandom.uuid #192 - @niceking
5
+ - Rescue from StandardError when sending upload request #191 - @niceking
6
+ - Fix nil pointer #188 - @ChrisBr
7
+
8
+ ## v2.2.0
9
+ - Gzip payload of request to Upload API #183 - @niceking
10
+
3
11
  ## v2.1.0
4
12
  - Major change: deprecates websocket connection in favour of sending HTTP requests to the Upload API. In future, websocket support will be completely removed from Buildkite and only version 2.1+ of this gem will continue to work.
5
13
 
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- buildkite-test_collector (2.1.0)
4
+ buildkite-test_collector (2.3.0)
5
5
  activesupport (>= 4.2)
6
6
 
7
7
  GEM
@@ -14,7 +14,7 @@ GEM
14
14
  tzinfo (~> 2.0)
15
15
  concurrent-ruby (1.2.2)
16
16
  diff-lcs (1.4.4)
17
- i18n (1.12.0)
17
+ i18n (1.13.0)
18
18
  concurrent-ruby (~> 1.0)
19
19
  minitest (5.18.0)
20
20
  rake (13.0.6)
data/buildkite.yaml CHANGED
@@ -5,4 +5,4 @@ steps:
5
5
  - "bundle exec rake"
6
6
  plugins:
7
7
  - docker#v3.7.0:
8
- image: ruby:latest
8
+ image: 445615400570.dkr.ecr.us-east-1.amazonaws.com/ecr-public/docker/library/ruby:3.1.4
@@ -21,7 +21,7 @@ class Buildkite::TestCollector::CI
21
21
 
22
22
  {
23
23
  "CI" => nil,
24
- "key" => SecureRandom.uuid,
24
+ "key" => Buildkite::TestCollector::UUID.call,
25
25
  }
26
26
  end
27
27
 
@@ -44,7 +44,7 @@ class Buildkite::TestCollector::CI
44
44
  def generic
45
45
  {
46
46
  "CI" => "generic",
47
- "key" => SecureRandom.uuid,
47
+ "key" => Buildkite::TestCollector::UUID.call,
48
48
  }
49
49
  end
50
50
 
@@ -19,16 +19,25 @@ module Buildkite::TestCollector
19
19
  contact = Net::HTTP::Post.new(contact_uri.path, {
20
20
  "Authorization" => authorization_header,
21
21
  "Content-Type" => "application/json",
22
+ "Content-Encoding" => "gzip",
22
23
  })
23
24
 
24
25
  data_set = data.map(&:as_hash)
25
26
 
26
- contact.body = {
27
+ body = {
27
28
  run_env: Buildkite::TestCollector::CI.env,
28
29
  format: "json",
29
30
  data: data_set
30
31
  }.to_json
31
32
 
33
+ compressed_body = StringIO.new
34
+
35
+ writer = Zlib::GzipWriter.new(compressed_body)
36
+ writer.write(body)
37
+ writer.close
38
+
39
+ contact.body = compressed_body.string
40
+
32
41
  http.request(contact)
33
42
  end
34
43
 
@@ -30,7 +30,7 @@ RSpec.configure do |config|
30
30
 
31
31
  config.after(:suite) do
32
32
  if Buildkite::TestCollector.artifact_path
33
- filename = File.join(Buildkite::TestCollector.artifact_path, "buildkite-test-collector-rspec-#{SecureRandom.uuid}.json.gz")
33
+ filename = File.join(Buildkite::TestCollector.artifact_path, "buildkite-test-collector-rspec-#{Buildkite::TestCollector::UUID.call}.json.gz")
34
34
  data_set = { results: Buildkite::TestCollector.uploader.traces.values.map(&:as_hash) }
35
35
  File.open(filename, "wb") do |f|
36
36
  gz = Zlib::GzipWriter.new(f)
@@ -21,8 +21,10 @@ module Buildkite::TestCollector::MinitestPlugin
21
21
  def report
22
22
  super
23
23
 
24
- Buildkite::TestCollector.session.send_remaining_data
25
- Buildkite::TestCollector.session.close
24
+ if Buildkite::TestCollector.session
25
+ Buildkite::TestCollector.session.send_remaining_data
26
+ Buildkite::TestCollector.session.close
27
+ end
26
28
  end
27
29
  end
28
30
  end
@@ -4,7 +4,7 @@ module Buildkite::TestCollector::MinitestPlugin
4
4
  class Trace
5
5
  attr_accessor :example
6
6
  attr_writer :failure_reason, :failure_expanded
7
- attr_reader :id, :history
7
+ attr_reader :history
8
8
 
9
9
  RESULT_CODES = {
10
10
  '.' => 'passed',
@@ -16,7 +16,6 @@ module Buildkite::TestCollector::MinitestPlugin
16
16
  FILE_PATH_REGEX = /^(.*?\.(rb|feature))/
17
17
 
18
18
  def initialize(example, history:)
19
- @id = SecureRandom.uuid
20
19
  @example = example
21
20
  @history = history
22
21
  end
@@ -31,7 +30,6 @@ module Buildkite::TestCollector::MinitestPlugin
31
30
 
32
31
  def as_hash
33
32
  strip_invalid_utf8_chars(
34
- id: id,
35
33
  scope: example.class.name,
36
34
  name: example.name,
37
35
  location: location,
@@ -3,12 +3,11 @@
3
3
  module Buildkite::TestCollector::RSpecPlugin
4
4
  class Trace
5
5
  attr_accessor :example, :failure_reason, :failure_expanded
6
- attr_reader :id, :history
6
+ attr_reader :history
7
7
 
8
8
  FILE_PATH_REGEX = /^(.*?\.(rb|feature))/
9
9
 
10
10
  def initialize(example, history:, failure_reason: nil, failure_expanded: [])
11
- @id = SecureRandom.uuid
12
11
  @example = example
13
12
  @history = history
14
13
  @failure_reason = failure_reason
@@ -25,7 +24,6 @@ module Buildkite::TestCollector::RSpecPlugin
25
24
 
26
25
  def as_hash
27
26
  strip_invalid_utf8_chars(
28
- id: id,
29
27
  scope: example.example_group.metadata[:full_description],
30
28
  name: example.description,
31
29
  location: example.location,
@@ -24,7 +24,8 @@ module Buildkite::TestCollector
24
24
  Net::OpenTimeout,
25
25
  OpenSSL::SSL::SSLError,
26
26
  OpenSSL::SSL::SSLErrorWaitReadable,
27
- EOFError
27
+ EOFError,
28
+ Errno::ETIMEDOUT
28
29
  ]
29
30
 
30
31
  def self.tracer
@@ -44,6 +45,8 @@ module Buildkite::TestCollector
44
45
  if (upload_attempts += 1) < MAX_UPLOAD_ATTEMPTS
45
46
  retry
46
47
  end
48
+ rescue StandardError => e
49
+ $stderr.puts "#{Buildkite::TestCollector::NAME} #{Buildkite::TestCollector::VERSION} experienced an error when sending your data, you may be missing some executions for this run."
47
50
  end
48
51
  end
49
52
  end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "securerandom"
4
+
5
+ class Buildkite::TestCollector::UUID
6
+ GET_UUID = SecureRandom.method(:uuid)
7
+ private_constant :GET_UUID
8
+
9
+ def self.call
10
+ GET_UUID.call
11
+ end
12
+ end
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Buildkite
4
4
  module TestCollector
5
- VERSION = "2.1.0"
5
+ VERSION = "2.3.0"
6
6
  NAME = "buildkite-test_collector"
7
7
  end
8
8
  end
@@ -11,7 +11,6 @@ require "net/http"
11
11
  require "time"
12
12
  require "timeout"
13
13
  require "tmpdir"
14
- require "securerandom"
15
14
 
16
15
  require "active_support/core_ext/object/blank"
17
16
  require "active_support/core_ext/hash/indifferent_access"
@@ -26,6 +25,7 @@ require_relative "test_collector/network"
26
25
  require_relative "test_collector/object"
27
26
  require_relative "test_collector/tracer"
28
27
  require_relative "test_collector/session"
28
+ require_relative "test_collector/uuid"
29
29
 
30
30
  module Buildkite
31
31
  module TestCollector
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.1.0
4
+ version: 2.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Buildkite
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-04-05 00:00:00.000000000 Z
11
+ date: 2023-05-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -90,6 +90,7 @@ files:
90
90
  - lib/buildkite/test_collector/session.rb
91
91
  - lib/buildkite/test_collector/tracer.rb
92
92
  - lib/buildkite/test_collector/uploader.rb
93
+ - lib/buildkite/test_collector/uuid.rb
93
94
  - lib/buildkite/test_collector/version.rb
94
95
  - lib/minitest/buildkite_collector_plugin.rb
95
96
  homepage: https://github.com/buildkite/test-collector-ruby