ci-queue 0.44.0 → 0.45.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: d358486ed352600dfd7852ac73bb78eadb6b1a16590ff9b8a325cac8d6d7eecc
4
- data.tar.gz: 616effbd0c5f6e838a0213d73e9ea3e5ad874c617c7dd5af37150476dc057369
3
+ metadata.gz: 539eadbd8b17fe11ab9904ec15717ac4e5c0f5259afe755c41ab6717ca695d31
4
+ data.tar.gz: 7cbb23ab1c89433ac9087b69fbfd908594779051d13658a3cd60222dc9621286
5
5
  SHA512:
6
- metadata.gz: 024057c3cd9e5c3448e6378013d46edd86898f40a582c07736f204aa93d6c233715ff784ecb8c5f9e4917c6267d827dc12e9455e071af0198a377d33c932913b
7
- data.tar.gz: 84bea6fbdb4e8a54ced3a7d42c7a6fe963dd2d1b20cc0281d87d78332944af126275e9200d073de5d6e4caa9b20d787b7afc870315a739b9af0ef921e69a5586
6
+ metadata.gz: 4e42b44a3c0bb756f941bd7b4204719ad539db163c43c59dff470a78c334e7e166e71966db5ba553fd131b329b92c2febdbc705c5579872201d0fcd1d20248f6
7
+ data.tar.gz: 2e827a12d0ec96ca85bdff6f829a805b4eeb5fe4af26fd549b28f56f69649d3de6e17f7fbc60185d01b5c1ed62a77e7aea19f1a80efc50569e64899aaaa3cb2b
@@ -118,6 +118,14 @@ module CI
118
118
  end.inject(:+)
119
119
  end
120
120
 
121
+ def remaining
122
+ redis.llen(key('queue'))
123
+ end
124
+
125
+ def running
126
+ redis.zcard(key('running'))
127
+ end
128
+
121
129
  def to_a
122
130
  redis.multi do |transaction|
123
131
  transaction.lrange(key('queue'), 0, -1)
@@ -78,6 +78,14 @@ module CI
78
78
  @queue.size
79
79
  end
80
80
 
81
+ def remaining
82
+ @queue.size
83
+ end
84
+
85
+ def running
86
+ 1
87
+ end
88
+
81
89
  def poll
82
90
  while !@shutdown && config.circuit_breakers.none?(&:open?) && !max_test_failed? && test = @queue.shift
83
91
  yield index.fetch(test)
@@ -2,7 +2,7 @@
2
2
 
3
3
  module CI
4
4
  module Queue
5
- VERSION = '0.44.0'
5
+ VERSION = '0.45.0'
6
6
  DEV_SCRIPTS_ROOT = ::File.expand_path('../../../../../redis', __FILE__)
7
7
  RELEASE_SCRIPTS_ROOT = ::File.expand_path('../redis', __FILE__)
8
8
  end
@@ -86,8 +86,23 @@ module Minitest
86
86
  if queue.rescue_connection_errors { queue.exhausted? }
87
87
  puts green('All tests were ran already')
88
88
  else
89
- load_tests
90
- populate_queue
89
+ # If the job gets (automatically) retried and there are still workers running but not many tests left
90
+ # in the queue, we assume by the time the application is booted the queue is empty and it's faster to no-op.
91
+ if retry?
92
+ remaining = queue.rescue_connection_errors { queue.remaining }.to_i
93
+ running = queue.rescue_connection_errors { queue.running }.to_i
94
+
95
+ puts "#{remaining} tests left and #{running} workers running."
96
+ if remaining <= running
97
+ puts green("Queue almost empty, exiting early...")
98
+ else
99
+ load_tests
100
+ populate_queue
101
+ end
102
+ else
103
+ load_tests
104
+ populate_queue
105
+ end
91
106
  end
92
107
 
93
108
  at_exit {
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ci-queue
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.44.0
4
+ version: 0.45.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jean Boussier
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-01-30 00:00:00.000000000 Z
11
+ date: 2024-02-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler