Sha256: ea97187d1675735497ec314d2359b5bb1f8cc5cd36e8cde586f7d7f4bf9639de

Contents?: true

Size: 917 Bytes

Versions: 5

Compression:

Stored size: 917 Bytes

Contents

shared_examples_for 'is thread-safe' do
  it "is safe to use one-by-one" do
    upsert = Upsert.new connection, :pets
    assert_creates(Pet, [{:name => 'Jerry', :gender => 'neutered'}]) do
      ts = []
      10.times do
        ts << Thread.new do
          sleep 0.2
          upsert.row({:name => 'Jerry'}, :gender => 'male')
          upsert.row({:name => 'Jerry'}, :gender => 'neutered')
        end
        ts.each { |t| t.join }
      end
    end
  end
  it "is safe to use batch" do
    assert_creates(Pet, [{:name => 'Jerry', :gender => 'neutered'}]) do
      Upsert.batch(connection, :pets) do |upsert|
        ts = []
        10.times do
          ts << Thread.new do
            sleep 0.2
            upsert.row({:name => 'Jerry'}, :gender => 'male')
            upsert.row({:name => 'Jerry'}, :gender => 'neutered')
          end
          ts.each { |t| t.join }
        end
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
upsert-0.3.4 test/shared/threaded.rb
upsert-0.3.3 test/shared/threaded.rb
upsert-0.3.2 test/shared/threaded.rb
upsert-0.3.1 test/shared/threaded.rb
upsert-0.3.0 test/shared/threaded.rb