File tree Expand file tree Collapse file tree 3 files changed +101
-0
lines changed
test/redis_client/cluster/concurrent_worker Expand file tree Collapse file tree 3 files changed +101
-0
lines changed Original file line number Diff line number Diff line change
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
Original file line number Diff line number Diff line change
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
Original file line number Diff line number Diff line change
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
You can’t perform that action at this time.
0 commit comments