ci-queue 0.22.0 → 0.22.1
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 +4 -4
- data/ci-queue.gemspec +1 -1
- data/lib/ci/queue/redis/base.rb +6 -6
- data/lib/ci/queue/redis/build_record.rb +15 -15
- data/lib/ci/queue/redis/grind_record.rb +7 -7
- data/lib/ci/queue/redis/test_time_record.rb +8 -11
- data/lib/ci/queue/redis/worker.rb +4 -4
- data/lib/ci/queue/version.rb +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2847d2cc56c64030f51a65ef6b9262d04b647b15b6d6ef846cf76adb90715e44
|
4
|
+
data.tar.gz: bf4f65911c9f39c2e6049abc6006f853f8de1aa444dfe8d5c7237cd698d0a59f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b7c62dd52f53069dd2aad2b51724334e7ea2e8fc2cdc8f19f022b6dfd926bb7323437c3f6d1c4ffe7071316c07cde6b924671be07a2e7b402e2d528becd16acf
|
7
|
+
data.tar.gz: 056b3a585d95b88479f79448dd204eef72e16635c0c2df5c619ad78be2caf3b97a6e52c15edf09f2a2dcccf80afa3ea0018cfe9361114f6d03914383ab080efb
|
data/ci-queue.gemspec
CHANGED
@@ -32,7 +32,7 @@ Gem::Specification.new do |spec|
|
|
32
32
|
spec.add_development_dependency 'bundler'
|
33
33
|
spec.add_development_dependency 'rake'
|
34
34
|
spec.add_development_dependency 'minitest', ENV.fetch('MINITEST_VERSION', '~> 5.11')
|
35
|
-
spec.add_development_dependency 'rspec', '~> 3.
|
35
|
+
spec.add_development_dependency 'rspec', '~> 3.10'
|
36
36
|
spec.add_development_dependency 'redis'
|
37
37
|
spec.add_development_dependency 'simplecov', '~> 0.12'
|
38
38
|
spec.add_development_dependency 'minitest-reporters', '~> 1.1'
|
data/lib/ci/queue/redis/base.rb
CHANGED
@@ -21,16 +21,16 @@ module CI
|
|
21
21
|
end
|
22
22
|
|
23
23
|
def size
|
24
|
-
redis.multi do
|
25
|
-
|
26
|
-
|
24
|
+
redis.multi do |transaction|
|
25
|
+
transaction.llen(key('queue'))
|
26
|
+
transaction.zcard(key('running'))
|
27
27
|
end.inject(:+)
|
28
28
|
end
|
29
29
|
|
30
30
|
def to_a
|
31
|
-
redis.multi do
|
32
|
-
|
33
|
-
|
31
|
+
redis.multi do |transaction|
|
32
|
+
transaction.lrange(key('queue'), 0, -1)
|
33
|
+
transaction.zrange(key('running'), 0, -1)
|
34
34
|
end.flatten.reverse.map { |k| index.fetch(k) }
|
35
35
|
end
|
36
36
|
|
@@ -22,9 +22,9 @@ module CI
|
|
22
22
|
end
|
23
23
|
|
24
24
|
def pop_warnings
|
25
|
-
warnings = redis.multi do
|
26
|
-
|
27
|
-
|
25
|
+
warnings = redis.multi do |transaction|
|
26
|
+
transaction.lrange(key('warnings'), 0, -1)
|
27
|
+
transaction.del(key('warnings'))
|
28
28
|
end.first
|
29
29
|
|
30
30
|
warnings.map { |p| Marshal.load(p) }
|
@@ -35,21 +35,21 @@ module CI
|
|
35
35
|
end
|
36
36
|
|
37
37
|
def record_error(id, payload, stats: nil)
|
38
|
-
redis.pipelined do
|
39
|
-
|
38
|
+
redis.pipelined do |pipeline|
|
39
|
+
pipeline.hset(
|
40
40
|
key('error-reports'),
|
41
41
|
id.dup.force_encoding(Encoding::BINARY),
|
42
42
|
payload.dup.force_encoding(Encoding::BINARY),
|
43
43
|
)
|
44
|
-
record_stats(stats)
|
44
|
+
record_stats(stats, pipeline: pipeline)
|
45
45
|
end
|
46
46
|
nil
|
47
47
|
end
|
48
48
|
|
49
49
|
def record_success(id, stats: nil)
|
50
|
-
redis.pipelined do
|
51
|
-
|
52
|
-
record_stats(stats)
|
50
|
+
redis.pipelined do |pipeline|
|
51
|
+
pipeline.hdel(key('error-reports'), id.dup.force_encoding(Encoding::BINARY))
|
52
|
+
record_stats(stats, pipeline: pipeline)
|
53
53
|
end
|
54
54
|
nil
|
55
55
|
end
|
@@ -65,8 +65,8 @@ module CI
|
|
65
65
|
end
|
66
66
|
|
67
67
|
def fetch_stats(stat_names)
|
68
|
-
counts = redis.pipelined do
|
69
|
-
stat_names.each { |c|
|
68
|
+
counts = redis.pipelined do |pipeline|
|
69
|
+
stat_names.each { |c| pipeline.hvals(key(c)) }
|
70
70
|
end
|
71
71
|
sum_counts = counts.map do |values|
|
72
72
|
values.map(&:to_f).inject(:+).to_f
|
@@ -75,9 +75,9 @@ module CI
|
|
75
75
|
end
|
76
76
|
|
77
77
|
def reset_stats(stat_names)
|
78
|
-
redis.pipelined do
|
78
|
+
redis.pipelined do |pipeline|
|
79
79
|
stat_names.each do |stat_name|
|
80
|
-
|
80
|
+
pipeline.hdel(key(stat_name), config.worker_id)
|
81
81
|
end
|
82
82
|
end
|
83
83
|
end
|
@@ -86,10 +86,10 @@ module CI
|
|
86
86
|
|
87
87
|
attr_reader :config, :redis
|
88
88
|
|
89
|
-
def record_stats(stats)
|
89
|
+
def record_stats(stats, pipeline: redis)
|
90
90
|
return unless stats
|
91
91
|
stats.each do |stat_name, stat_value|
|
92
|
-
|
92
|
+
pipeline.hset(key(stat_name), config.worker_id, stat_value)
|
93
93
|
end
|
94
94
|
end
|
95
95
|
|
@@ -11,12 +11,12 @@ module CI
|
|
11
11
|
end
|
12
12
|
|
13
13
|
def record_error(payload, stats: nil)
|
14
|
-
redis.pipelined do
|
15
|
-
|
14
|
+
redis.pipelined do |pipeline|
|
15
|
+
pipeline.lpush(
|
16
16
|
key('error-reports'),
|
17
17
|
payload.force_encoding(Encoding::BINARY),
|
18
18
|
)
|
19
|
-
record_stats(stats)
|
19
|
+
record_stats(stats, pipeline: pipeline)
|
20
20
|
end
|
21
21
|
nil
|
22
22
|
end
|
@@ -34,8 +34,8 @@ module CI
|
|
34
34
|
end
|
35
35
|
|
36
36
|
def fetch_stats(stat_names)
|
37
|
-
counts = redis.pipelined do
|
38
|
-
stat_names.each { |c|
|
37
|
+
counts = redis.pipelined do |pipeline|
|
38
|
+
stat_names.each { |c| pipeline.hvals(key(c)) }
|
39
39
|
end
|
40
40
|
stat_names.zip(counts.map { |values| values.map(&:to_f).inject(:+).to_f }).to_h
|
41
41
|
end
|
@@ -54,10 +54,10 @@ module CI
|
|
54
54
|
['build', config.build_id, *args].join(':')
|
55
55
|
end
|
56
56
|
|
57
|
-
def record_stats(stats)
|
57
|
+
def record_stats(stats, pipeline: redis)
|
58
58
|
return unless stats
|
59
59
|
stats.each do |stat_name, stat_value|
|
60
|
-
|
60
|
+
pipeline.hset(key(stat_name), config.worker_id, stat_value)
|
61
61
|
end
|
62
62
|
end
|
63
63
|
end
|
@@ -19,8 +19,8 @@ module CI
|
|
19
19
|
attr_reader :redis
|
20
20
|
|
21
21
|
def record_test_time(test_name, duration)
|
22
|
-
redis.pipelined do
|
23
|
-
|
22
|
+
redis.pipelined do |pipeline|
|
23
|
+
pipeline.lpush(
|
24
24
|
test_time_key(test_name),
|
25
25
|
duration.to_s.force_encoding(Encoding::BINARY),
|
26
26
|
)
|
@@ -29,8 +29,8 @@ module CI
|
|
29
29
|
end
|
30
30
|
|
31
31
|
def record_test_name(test_name)
|
32
|
-
redis.pipelined do
|
33
|
-
|
32
|
+
redis.pipelined do |pipeline|
|
33
|
+
pipeline.lpush(
|
34
34
|
all_test_names_key,
|
35
35
|
test_name.dup.force_encoding(Encoding::BINARY),
|
36
36
|
)
|
@@ -39,18 +39,15 @@ module CI
|
|
39
39
|
end
|
40
40
|
|
41
41
|
def fetch_all_test_names
|
42
|
-
values = redis.pipelined do
|
43
|
-
|
42
|
+
values = redis.pipelined do |pipeline|
|
43
|
+
pipeline.lrange(all_test_names_key, 0, -1)
|
44
44
|
end
|
45
45
|
values.flatten.map(&:to_s)
|
46
46
|
end
|
47
47
|
|
48
48
|
def fetch_test_time(test_name)
|
49
|
-
|
50
|
-
|
51
|
-
redis.lrange(key, 0, -1)
|
52
|
-
end
|
53
|
-
values.flatten.map(&:to_f)
|
49
|
+
key = test_time_key(test_name)
|
50
|
+
redis.lrange(key, 0, -1).map(&:to_f)
|
54
51
|
end
|
55
52
|
|
56
53
|
def all_test_names_key
|
@@ -194,10 +194,10 @@ module CI
|
|
194
194
|
@total = tests.size
|
195
195
|
|
196
196
|
if @master = redis.setnx(key('master-status'), 'setup')
|
197
|
-
redis.multi do
|
198
|
-
|
199
|
-
|
200
|
-
|
197
|
+
redis.multi do |transaction|
|
198
|
+
transaction.lpush(key('queue'), tests) unless tests.empty?
|
199
|
+
transaction.set(key('total'), @total)
|
200
|
+
transaction.set(key('master-status'), 'ready')
|
201
201
|
end
|
202
202
|
end
|
203
203
|
register
|
data/lib/ci/queue/version.rb
CHANGED
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.22.
|
4
|
+
version: 0.22.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jean Boussier
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-01-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -58,14 +58,14 @@ dependencies:
|
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: 3.
|
61
|
+
version: '3.10'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: 3.
|
68
|
+
version: '3.10'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: redis
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|