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