Sha256: 9611e930877665c9fe29a63536bf376fa98ac1946bfd34f4e7ca4708a0fab9a1

Contents?: true

Size: 1.48 KB

Versions: 3

Compression:

Stored size: 1.48 KB

Contents

$:.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
require './test/replica_sets/rs_test_helper'
require 'benchmark'

class ReplicaSetRefreshWithThreadsTest < Test::Unit::TestCase

  def setup
    ensure_rs
    @conn = nil
  end

  def teardown
    @conn.close if @conn
  end

  def test_read_write_load_with_added_nodes
    # MongoDB < 2.0 will disconnect clients on rs.reconfig()
    return true if @rs.version < "2"

    seeds = build_seeds(3)
    args = {
      :refresh_interval => 5,
      :refresh_mode => :sync,
      :read => :secondary_preferred
    }
    @conn = ReplSetConnection.new(seeds, args)
    @duplicate = @conn[MONGO_TEST_DB]['duplicate']
    @unique    = @conn[MONGO_TEST_DB]['unique']
    @duplicate.insert("test" => "insert")
    @duplicate.insert("test" => "update")
    @unique.insert("test" => "insert")
    @unique.insert("test" => "update")
    @unique.create_index("test", :unique => true)

    threads = []
    10.times do
      threads << Thread.new do
        1000.times do |i|
          if i % 2 == 0
            assert_raise Mongo::OperationFailure do
              @unique.insert({"test" => "insert"}, :safe => true)
            end
          else
            @duplicate.insert({"test" => "insert"}, :safe => true)
          end
        end
      end
    end

    @rs.add_node
    threads.each {|t| t.join }

    sleep(1)
    
    @conn['admin'].command({:ismaster => 1})

    assert_equal 3, @conn.secondary_pools.length
    assert_equal 3, @conn.secondaries.length
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
mongo-1.7.1 test/replica_sets/refresh_with_threads_test.rb
mongo-1.7.0 test/replica_sets/refresh_with_threads_test.rb
mongo-1.7.0.rc0 test/replica_sets/refresh_with_threads_test.rb