ci-queue 0.44.0 → 0.45.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: 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