selective-ruby-core 0.2.2-aarch64-linux → 0.2.3-aarch64-linux

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: dce8983e6c53ad56dc5d7829282ca44f413f7b5cf86c29929810c4c893e5a6a9
4
- data.tar.gz: 51142c78c87a1de76ca42368e8d2259c7c564c92ef25aa55a0126a9b8f12a522
3
+ metadata.gz: b3b115bee67367e37746da4c15d29e358b8f77e7a47e386432eb7eaa29de6a6f
4
+ data.tar.gz: beb621522ad74a6042871ab16a02c8210204913ff7f2675460a94f640ddc32b9
5
5
  SHA512:
6
- metadata.gz: ff8ae6e7d6350bbe66b95d4898f043ce70c29212982a8b586d97b50c55361a467dcbb4cd4fd79f6b7a07af7a59b4c8d5de3e6c588efd4d4f40254c2462b4b8eb
7
- data.tar.gz: ebeda0af47053f8766bd207f5bf8933f94b6afce83939f0361f510d1a5d362b106eaca3d0fa40a41701d02e55688bd56e79424e5d2026c3a24c555882f296d1d
6
+ metadata.gz: ffbf6e69fee59cbc9df19072831ef1da95e3e134ef084fc38412ecabc34dccdff8a05647dad500377920c4f6606804f68cbc6908205c91cd70f52fc67c011ebb
7
+ data.tar.gz: e5c98a6e1a757a42aecd72dde84da4a80d236d5ed938a228474af51bb187d531cf2c612456f949dbb6769e919672c86ac36b3b5cd1cec246b1725b8da70aa6ee
@@ -8,6 +8,7 @@ module Selective
8
8
  class Controller
9
9
  include Helper
10
10
  @@selective_suppress_reporting = false
11
+ @@report_at_finish = {}
11
12
 
12
13
  REQUIRED_CONFIGURATION = {
13
14
  "host" => "SELECTIVE_HOST",
@@ -33,7 +34,7 @@ module Selective
33
34
  handle_termination_signals(transport_pid)
34
35
  wait_for_connectivity
35
36
  run_main_loop
36
- rescue NamedPipe::PipeClosedError
37
+ rescue ConnectionLostError
37
38
  retry!
38
39
  rescue => e
39
40
  with_error_handling { raise e }
@@ -57,12 +58,16 @@ module Selective
57
58
  @@selective_suppress_reporting
58
59
  end
59
60
 
61
+ def self.report_at_finish
62
+ @@report_at_finish
63
+ end
64
+
60
65
  private
61
66
 
62
67
  attr_reader :runner, :pipe, :transport_pid, :retries, :logger, :runner_id, :diff
63
68
 
64
69
  def get_runner_id
65
- runner_id = build_env.delete("runner_id")
70
+ runner_id = build_env["runner_id"]
66
71
  return generate_runner_id if runner_id.nil? || runner_id.empty?
67
72
 
68
73
  runner_id
@@ -90,10 +95,10 @@ module Selective
90
95
  def retry!
91
96
  @retries += 1
92
97
 
93
- with_error_handling { raise "Too many retries" } if retries > 4
98
+ with_error_handling { raise "Too many retries" } if retries > 10
94
99
 
95
- puts("Retrying in #{retries} seconds...")
96
- sleep(retries)
100
+ puts("Retrying in #{retries} seconds...") if debug?
101
+ sleep(retries > 4 ? 4 : retries)
97
102
  kill_transport
98
103
 
99
104
  pipe.reset!
@@ -109,29 +114,30 @@ module Selective
109
114
  end
110
115
 
111
116
  def transport_url(reconnect: false)
112
- @transport_url ||= begin
113
- api_key = build_env.delete("api_key")
114
- host = build_env.delete("host")
115
- run_id = build_env.delete("run_id")
116
- run_attempt = build_env.delete("run_attempt")
117
+ base_transport_url_params[:reconnect] = true if reconnect
118
+ query_string = URI.encode_www_form(base_transport_url_params)
119
+ "#{build_env["host"]}/transport/websocket?#{query_string}"
120
+ end
121
+
122
+ def base_transport_url_params
123
+ @base_transport_url_params ||= begin
124
+ api_key = build_env["api_key"]
125
+ run_id = build_env["run_id"]
126
+ run_attempt = build_env["run_attempt"]
117
127
 
118
- params = {
128
+ metadata = build_env.reject { |k,v| %w(host runner_id api_key run_id run_attempt).include?(k) }
129
+
130
+ {
131
+ "api_key" => api_key,
119
132
  "run_id" => run_id,
120
133
  "run_attempt" => run_attempt,
121
- "api_key" => api_key,
122
134
  "runner_id" => runner_id,
123
135
  "language" => "ruby",
124
136
  "core_version" => Selective::Ruby::Core::VERSION,
125
137
  "framework" => runner.framework,
126
138
  "framework_version" => runner.framework_version,
127
139
  "framework_wrapper_version" => runner.wrapper_version,
128
- }.merge(metadata: build_env.to_json)
129
-
130
- prams[:reconnect] = true if reconnect
131
-
132
- query_string = URI.encode_www_form(params)
133
-
134
- "#{host}/transport/websocket?#{query_string}"
140
+ }.merge(metadata: metadata.to_json)
135
141
  end
136
142
  end
137
143
 
@@ -224,7 +230,7 @@ module Selective
224
230
 
225
231
  sleep(1)
226
232
  end
227
- rescue NamedPipe::PipeClosedError, IOError
233
+ rescue ConnectionLostError, IOError
228
234
  # If the pipe is close, move straight to killing
229
235
  # it forcefully.
230
236
  end
@@ -270,8 +276,11 @@ module Selective
270
276
  runner.run_test_cases(data[:test_case_ids])
271
277
  end
272
278
 
279
+ # Todo: Rename this command to match the method name
280
+ # on the runner wrapper. We should do something similar
281
+ # to normalize handle_print_notice and handle_print_message
273
282
  def handle_remove_failed_test_case_result(data)
274
- runner.remove_failed_test_case_result(data[:test_case_id])
283
+ runner.remove_test_case_result(data[:test_case_id])
275
284
  end
276
285
 
277
286
  def handle_print_message(data)
@@ -281,7 +290,13 @@ module Selective
281
290
  def handle_close(data)
282
291
  exit_status = data[:exit_status]
283
292
  self.class.restore_reporting!
284
- with_error_handling { runner.finish } unless exit_status.is_a?(Integer)
293
+
294
+ with_error_handling do
295
+ Selective::Ruby::Core::Controller.report_at_finish[:connection_retries] = @retries
296
+ write({type: "report_at_finish", data: Selective::Ruby::Core::Controller.report_at_finish})
297
+
298
+ runner.finish unless exit_status.is_a?(Integer)
299
+ end
285
300
 
286
301
  kill_transport
287
302
  pipe.delete_pipes
@@ -9,7 +9,7 @@ module Selective
9
9
  FILE_CORRELATION_COLLECTOR_PATH = File.join(ROOT_GEM_PATH, "lib", "bin", "file_correlation_collector.sh")
10
10
 
11
11
  def initialize(diff, num_commits, target_branch)
12
- @diff = diff
12
+ @diff = diff.reject {|f| f =~ /^spec\// }
13
13
  @num_commits = num_commits
14
14
  @target_branch = target_branch
15
15
  end
@@ -2,8 +2,6 @@ module Selective
2
2
  module Ruby
3
3
  module Core
4
4
  class NamedPipe
5
- class PipeClosedError < StandardError; end
6
-
7
5
  attr_reader :read_pipe_path, :write_pipe_path
8
6
 
9
7
  def initialize(read_pipe_path, write_pipe_path, skip_reset: false)
@@ -44,7 +42,7 @@ module Selective
44
42
  write_pipe.write("\n")
45
43
  write_pipe.flush
46
44
  rescue Errno::EPIPE
47
- raise PipeClosedError
45
+ raise ConnectionLostError
48
46
  end
49
47
  end
50
48
 
@@ -54,7 +52,7 @@ module Selective
54
52
  message = read_pipe.gets.chomp
55
53
  rescue NoMethodError => e
56
54
  if e.name == :chomp
57
- raise PipeClosedError
55
+ raise ConnectionLostError
58
56
  else
59
57
  raise e
60
58
  end
@@ -3,7 +3,7 @@
3
3
  module Selective
4
4
  module Ruby
5
5
  module Core
6
- VERSION = "0.2.2"
6
+ VERSION = "0.2.3"
7
7
  end
8
8
  end
9
9
  end
@@ -14,6 +14,7 @@ module Selective
14
14
  module Ruby
15
15
  module Core
16
16
  class Error < StandardError; end
17
+ class ConnectionLostError < StandardError; end
17
18
 
18
19
  ROOT_GEM_PATH = Gem.loaded_specs["selective-ruby-core"].full_gem_path
19
20
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: selective-ruby-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.2.3
5
5
  platform: aarch64-linux
6
6
  authors:
7
7
  - Benjamin Wood
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2024-01-26 00:00:00.000000000 Z
12
+ date: 2024-02-06 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: zeitwerk