Permalink
Browse files

failing test for github issue #476

  • Loading branch information...
1 parent 10db883 commit 67f4e58fe0d2bd7013b3b35a931291878dd6c683 @the8472 committed Jan 3, 2013
Showing with 31 additions and 0 deletions.
  1. +31 −0 spec/regression/GH-476_ivar_concurrency_spec.rb
@@ -0,0 +1,31 @@
+require 'rspec'
+
+describe 'Accessing instance variables' do
+ it 'should not lose concurrent writes under growth operations' do
+ lost_writes = false
+
+ (0..1000).each do |i|
+ clazz = Class.new
+ object = clazz.new
+
+ # probing thread
+ t1 = Thread.new do
+ (0..10000).each do |i|
+ object.instance_variable_set(:@foo, i)
+ lost_writes = true if object.instance_variable_get(:@foo) != i
+ end
+
+ end
+
+ # mutating thread
+ t2 = Thread.new{(0..10000).each{object.instance_variable_set(:"@bar_#{rand(100000)}",1)}}
+
+ t1.join
+ t2.join
+
+ break if lost_writes
+ end
+
+ lost_writes.should be_false
+ end
+end

0 comments on commit 67f4e58

Please sign in to comment.