Skip to content

Commit 66b9deb

Browse files
authored
test: add unit test cases for concurrent worker (#269)
1 parent 18035dc commit 66b9deb

File tree

3 files changed

+101
-0
lines changed

3 files changed

+101
-0
lines changed
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
# frozen_string_literal: true
2+
3+
class RedisClient
4+
class Cluster
5+
module ConcurrentWorker
6+
module Mixin
7+
def setup
8+
@worker = ::RedisClient::Cluster::ConcurrentWorker.create(model: model)
9+
end
10+
11+
def test_work_group
12+
size = 10
13+
group = @worker.new_group(size: size)
14+
15+
size.times do |i|
16+
group.push(i, i) do |n|
17+
sleep 0.001
18+
n * 2
19+
end
20+
end
21+
22+
want = Array.new(size) { |i| i * 2 }
23+
got = []
24+
25+
group.each do |_, v|
26+
got << v
27+
end
28+
29+
group.close
30+
31+
assert_equal(want, got.sort)
32+
end
33+
34+
def test_too_many_tasks
35+
group = @worker.new_group(size: 5)
36+
5.times { |i| group.push(i, i) { |n| n } }
37+
assert_raises(InvalidNumberOfTasks) { group.push(5, 5) { |n| n } }
38+
sum = 0
39+
group.each { |_, v| sum += v }
40+
assert_equal(10, sum)
41+
group.close
42+
end
43+
44+
def test_fewer_tasks
45+
group = @worker.new_group(size: 5)
46+
4.times { |i| group.push(i, i) { |n| n } }
47+
sum = 0
48+
assert_raises(InvalidNumberOfTasks) { group.each { |_, v| sum += v } }
49+
group.push(4, 4) { |n| n }
50+
group.each { |_, v| sum += v }
51+
assert_equal(10, sum)
52+
group.close
53+
end
54+
55+
def teardown
56+
@worker.close
57+
end
58+
end
59+
end
60+
end
61+
end
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# frozen_string_literal: true
2+
3+
require 'testing_helper'
4+
require 'redis_client/cluster/concurrent_worker/mixin'
5+
6+
class RedisClient
7+
class Cluster
8+
module ConcurrentWorker
9+
class TestOnDemand < TestingWrapper
10+
include Mixin
11+
12+
private
13+
14+
def model
15+
:on_demand
16+
end
17+
end
18+
end
19+
end
20+
end
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# frozen_string_literal: true
2+
3+
require 'testing_helper'
4+
require 'redis_client/cluster/concurrent_worker/mixin'
5+
6+
class RedisClient
7+
class Cluster
8+
module ConcurrentWorker
9+
class TestPooled < TestingWrapper
10+
include Mixin
11+
12+
private
13+
14+
def model
15+
:pooled
16+
end
17+
end
18+
end
19+
end
20+
end

0 commit comments

Comments
 (0)