##// END OF EJS Templates
Adds a test for #6579....
Jean-Philippe Lang -
r13646:8ad326f1609c
parent child
Show More
@@ -27,6 +27,7 class IssueNestedSetConcurrencyTest < ActiveSupport::TestCase
27 27 self.use_transactional_fixtures = false
28 28
29 29 def setup
30 skip if sqlite?
30 31 CustomField.delete_all
31 32 end
32 33
@@ -35,8 +36,6 class IssueNestedSetConcurrencyTest < ActiveSupport::TestCase
35 36 end
36 37
37 38 def test_concurrency
38 skip if sqlite?
39 with_settings :notified_events => [] do
40 39 # Generates an issue and destroys it in order
41 40 # to load all needed classes before starting threads
42 41 i = Issue.generate!
@@ -44,11 +43,7 class IssueNestedSetConcurrencyTest < ActiveSupport::TestCase
44 43
45 44 root = Issue.generate!
46 45 assert_difference 'Issue.count', 60 do
47 threads = []
48 3.times do |i|
49 threads << Thread.new(i) do
50 ActiveRecord::Base.connection_pool.with_connection do
51 begin
46 threaded(3) do
52 47 10.times do
53 48 i = Issue.generate! :parent_issue_id => root.id
54 49 c1 = Issue.generate! :parent_issue_id => i.id
@@ -57,6 +52,35 class IssueNestedSetConcurrencyTest < ActiveSupport::TestCase
57 52 c2.reload.destroy
58 53 c1.reload.destroy
59 54 end
55 end
56 end
57 end
58
59 def test_concurrent_subtasks_creation
60 root = Issue.generate!
61 assert_difference 'Issue.count', 30 do
62 threaded(3) do
63 10.times do
64 Issue.generate! :parent_issue_id => root.id
65 end
66 end
67 end
68 root.reload
69 assert_equal [1, 62], [root.lft, root.rgt]
70 children_bounds = root.children.sort_by(&:lft).map {|c| [c.lft, c.rgt]}.flatten
71 assert_equal (2..61).to_a, children_bounds
72 end
73
74 private
75
76 def threaded(count, &block)
77 with_settings :notified_events => [] do
78 threads = []
79 count.times do |i|
80 threads << Thread.new(i) do
81 ActiveRecord::Base.connection_pool.with_connection do
82 begin
83 yield
60 84 rescue Exception => e
61 85 Thread.current[:exception] = e.message
62 86 end
@@ -70,4 +94,3 class IssueNestedSetConcurrencyTest < ActiveSupport::TestCase
70 94 end
71 95 end
72 96 end
73 end
General Comments 0
You need to be logged in to leave comments. Login now