mongo 1.8.3.rc0 → 1.8.3.rc1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: dec398480b1b7ced8276797d36e9257fecbc1707
4
+ data.tar.gz: 735c75e4d0877dc57cfede2016201a121737af4b
5
+ SHA512:
6
+ metadata.gz: fe1e61dcef314f5ea551c7e1f96ccbeae3aa7969d714c2774dd17a694912267b14f86a3f9c73ccea0d0a3f2b4e3ad72c319c46ab2c9a28001f7a005f7d1de87f
7
+ data.tar.gz: 37d440db17fd4820dabfecf12b4da396ec8912593ef15256fc86e8839a1e3e1952f12bb484165069e5a63dffd4cdcd3eff031393881867b3ce3fea73cb99cea3
Binary file
data.tar.gz.sig CHANGED
Binary file
data/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  [travis-img]: https://secure.travis-ci.org/mongodb/mongo-ruby-driver.png
4
4
  [travis-url]: http://travis-ci.org/mongodb/mongo-ruby-driver
5
- [codeclimate-img]: https://codeclimate.com/badge.png
5
+ [codeclimate-img]: https://codeclimate.com/github/mongodb/mongo-ruby-driver.png
6
6
  [codeclimate-url]: https://codeclimate.com/github/mongodb/mongo-ruby-driver
7
7
  [jenkins-img]: https://jenkins.10gen.com/job/mongo-ruby-driver/badge/icon
8
8
  [jenkins-url]: https://jenkins.10gen.com/job/mongo-ruby-driver/
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.8.3.rc0
1
+ 1.8.3.rc1
@@ -324,16 +324,11 @@ module Mongo
324
324
  message.put_int(1)
325
325
  message.put_long(@cursor_id)
326
326
  log(:debug, "Cursor#close #{@cursor_id}")
327
- begin
328
- socket = @pool.checkout
329
- @connection.send_message(
330
- Mongo::Constants::OP_KILL_CURSORS,
331
- message,
332
- :socket => socket
333
- )
334
- ensure
335
- socket.checkin
336
- end
327
+ @connection.send_message(
328
+ Mongo::Constants::OP_KILL_CURSORS,
329
+ message,
330
+ :pool => @pool
331
+ )
337
332
  end
338
333
  @cursor_id = 0
339
334
  @closed = true
@@ -516,7 +511,7 @@ module Mongo
516
511
  message.put_long(@cursor_id)
517
512
  log(:debug, "cursor.refresh() for cursor #{@cursor_id}") if @logger
518
513
 
519
- socket = checkout_socket_from_connection
514
+ socket = @pool.checkout
520
515
 
521
516
  begin
522
517
  results, @n_received, @cursor_id = @connection.receive_message(
@@ -532,7 +527,9 @@ module Mongo
532
527
 
533
528
  def checkout_socket_from_connection
534
529
  begin
535
- if @command && !Mongo::Support::secondary_ok?(@selector)
530
+ if @pool
531
+ socket = @pool.checkout
532
+ elsif @command && !Mongo::Support::secondary_ok?(@selector)
536
533
  socket = @connection.checkout_reader(:primary)
537
534
  else
538
535
  socket = @connection.checkout_reader(@read, @tag_sets, @acceptable_latency)
@@ -542,6 +539,7 @@ module Mongo
542
539
  raise ex
543
540
  end
544
541
  @pool = socket.pool
542
+ #puts "checkout_socket_from_connection caller:#{caller[0][/:in `([^']+)'/,1]} self:#{self.object_id} @pool.port:#{@pool.port}"
545
543
  socket
546
544
  end
547
545
 
@@ -26,10 +26,12 @@ module Mongo
26
26
  add_message_headers(message, operation)
27
27
  packed_message = message.to_s
28
28
 
29
- sock = opts.fetch(:socket, nil)
29
+ sock = nil
30
+ pool = opts.fetch(:pool, nil)
30
31
  begin
31
- if operation == Mongo::Constants::OP_KILL_CURSORS && @read != :primary
32
- sock ||= checkout_reader
32
+ if pool
33
+ #puts "send_message pool.port:#{pool.port}"
34
+ sock = pool.checkout
33
35
  else
34
36
  sock ||= checkout_writer
35
37
  end
@@ -58,6 +58,68 @@ class BSONTest < Test::Unit::TestCase
58
58
  assert_equal doc, @encoder.deserialize(bson)
59
59
  end
60
60
 
61
+ def test_interface
62
+ doc = { 'a' => 1 }
63
+ bson = BSON.serialize(doc)
64
+ assert_equal doc, BSON.deserialize(bson)
65
+ end
66
+
67
+ def test_read_bson_document
68
+ bson_file_data_h_star = ["21000000075f6964005115883c3d75c94d3aa18b63016100000000000000f03f00"]
69
+ strio = StringIO.new(bson_file_data_h_star.pack('H*'))
70
+ bson = BSON.read_bson_document(strio)
71
+ doc = {"_id"=>BSON::ObjectId('5115883c3d75c94d3aa18b63'), "a"=>1.0}
72
+ assert_equal doc, bson
73
+ end
74
+
75
+ def test_bson_ruby_interface
76
+ doc = { 'a' => 1 }
77
+ buf = BSON_RUBY.serialize(doc)
78
+ bson = BSON::BSON_RUBY.new
79
+ bson.instance_variable_set(:@buf, buf)
80
+ assert_equal [12, 0, 0, 0, 16, 97, 0, 1, 0, 0, 0, 0], bson.to_a
81
+ assert_equal "\f\x00\x00\x00\x10a\x00\x01\x00\x00\x00\x00", bson.to_s
82
+ assert_equal [12, 0, 0, 0, 16, 97, 0, 1, 0, 0, 0, 0], bson.unpack
83
+ end
84
+
85
+ def test_bson_ruby_hex_dump
86
+ doc = { 'a' => 1 }
87
+ buf = BSON_RUBY.serialize(doc)
88
+ bson = BSON_RUBY.new
89
+ bson.instance_variable_set(:@buf, buf)
90
+ doc_hex_dump = " 0: 0C 00 00 00 10 61 00 01\n 8: 00 00 00 00"
91
+ assert_equal doc_hex_dump, bson.hex_dump
92
+ end
93
+
94
+ def test_bson_ruby_dbref_not_used
95
+ buf = BSON::ByteBuffer.new
96
+ val = ns = 'namespace'
97
+
98
+ # Make a hole for the length
99
+ len_pos = buf.position
100
+ buf.put_int(0)
101
+
102
+ # Save the string
103
+ start_pos = buf.position
104
+ BSON::BSON_RUBY.serialize_cstr(buf, val)
105
+ end_pos = buf.position
106
+
107
+ # Put the string size in front
108
+ buf.put_int(end_pos - start_pos, len_pos)
109
+
110
+ # Go back to where we were
111
+ buf.position = end_pos
112
+
113
+ oid = ObjectId.new
114
+ buf.put_array(oid.to_a)
115
+ buf.rewind
116
+
117
+ bson = BSON::BSON_RUBY.new
118
+ bson.instance_variable_set(:@buf, buf)
119
+
120
+ assert_equal DBRef.new(ns, oid).to_s, bson.deserialize_dbref_data(buf).to_s
121
+ end
122
+
61
123
  def test_require_hash
62
124
  assert_raise_error InvalidDocument, "takes a Hash" do
63
125
  BSON.serialize('foo')
@@ -191,8 +253,14 @@ class BSONTest < Test::Unit::TestCase
191
253
  end
192
254
 
193
255
  def test_code
194
- doc = {'$where' => Code.new('this.a.b < this.b')}
256
+ code = Code.new('this.a.b < this.b')
257
+ assert_equal 17, code.length
258
+ assert_match /<BSON::Code:.*@data="this.a.b < this.b".*>/, code.inspect
259
+ doc = {'$where' => code}
195
260
  assert_doc_pass(doc)
261
+ code = 'this.c.d < this.e'.to_bson_code # core_ext.rb
262
+ assert_equal BSON::Code, code.class
263
+ assert_equal code, code.to_bson_code
196
264
  end
197
265
 
198
266
  def test_code_with_symbol
@@ -343,8 +411,11 @@ class BSONTest < Test::Unit::TestCase
343
411
 
344
412
  def test_dbref
345
413
  oid = ObjectId.new
414
+ ns = 'namespace'
346
415
  doc = {}
347
- doc['dbref'] = DBRef.new('namespace', oid)
416
+ dbref = DBRef.new(ns, oid)
417
+ assert_equal({"$id"=>oid, "$ns"=>ns}, dbref.to_hash)
418
+ doc['dbref'] = dbref
348
419
  bson = @encoder.serialize(doc)
349
420
  doc2 = @encoder.deserialize(bson)
350
421
 
@@ -15,6 +15,16 @@ class ByteBufferTest < Test::Unit::TestCase
15
15
  assert_equal 0, @buf.length
16
16
  end
17
17
 
18
+ def test_initialize_with_string_and_clear
19
+ @buf = ByteBuffer.new("a")
20
+ assert_equal 1, @buf.size
21
+ assert_equal 1, @buf.position
22
+ @buf.clear
23
+ assert_equal 0, @buf.position
24
+ assert_equal "", @buf.to_s
25
+ assert_equal 0, @buf.size
26
+ end
27
+
18
28
  def test_nil_get_returns_one_byte
19
29
  @buf.put_array([1, 2, 3, 4])
20
30
  @buf.rewind
@@ -202,5 +212,4 @@ class ByteBufferTest < Test::Unit::TestCase
202
212
  assert_not_equal @buf, 123
203
213
  assert_not_equal @buf, nil
204
214
  end
205
-
206
215
  end
@@ -2,6 +2,11 @@ require 'test_helper'
2
2
 
3
3
  class TimestampTest < Test::Unit::TestCase
4
4
 
5
+ def test_timestamp_to_s
6
+ t1 = Timestamp.new(5000, 200)
7
+ assert_equal "seconds: 5000, increment: 200", t1.to_s
8
+ end
9
+
5
10
  def test_timestamp_equality
6
11
  t1 = Timestamp.new(5000, 200)
7
12
  t2 = Timestamp.new(5000, 200)
@@ -840,7 +840,7 @@ class TestCollection < Test::Unit::TestCase
840
840
  r = Code.new("function(k,vals) { return 1; }")
841
841
  oh = BSON::OrderedHash.new
842
842
  oh[:replace] = 'foo'
843
- oh[:db] = 'somedb'
843
+ oh[:db] = MONGO_TEST_DB
844
844
  res = @@test.map_reduce(m, r, :out => (oh))
845
845
  assert res["result"]
846
846
  assert res["counts"]
@@ -3,24 +3,24 @@ require 'test_helper'
3
3
  class TestTimeout < Test::Unit::TestCase
4
4
  def test_op_timeout
5
5
  connection = standard_connection(:op_timeout => 1)
6
-
6
+
7
7
  admin = connection.db('admin')
8
8
 
9
9
  command = {:eval => "sleep(500)"}
10
10
  # Should not timeout
11
11
  assert admin.command(command)
12
-
12
+
13
13
  # Should timeout
14
14
  command = {:eval => "sleep(1500)"}
15
15
  assert_raise Mongo::OperationTimeout do
16
- admin.command(command)
16
+ admin.command(command)
17
17
  end
18
18
  end
19
19
 
20
20
  def test_external_timeout_does_not_leave_socket_in_bad_state
21
21
  client = Mongo::MongoClient.new
22
- db = client['testdb']
23
- coll = db['testcoll']
22
+ db = client[MONGO_TEST_DB]
23
+ coll = db['timeout-tests']
24
24
 
25
25
  # prepare the database
26
26
  coll.drop
@@ -43,14 +43,13 @@ class TestTimeout < Test::Unit::TestCase
43
43
  =begin
44
44
  def test_ssl_op_timeout
45
45
  connection = standard_connection(:op_timeout => 1, :ssl => true)
46
-
46
+
47
47
  coll = connection.db(MONGO_TEST_DB).collection("test")
48
48
  coll.insert({:a => 1})
49
-
50
49
  # Should not timeout
51
50
  assert coll.find_one({"$where" => "sleep(100); return true;"})
52
51
 
53
- # Should timeout
52
+ # Should timeout
54
53
  assert_raise Mongo::OperationTimeout do
55
54
  coll.find_one({"$where" => "sleep(5 * 1000); return true;"})
56
55
  end
@@ -65,9 +65,8 @@ class BasicTest < Test::Unit::TestCase
65
65
  assert_equal @rs.primary_name, [client.host, client.port].join(':')
66
66
  assert_equal client.host, client.primary_pool.host
67
67
  assert_equal client.port, client.primary_pool.port
68
- assert_equal 1, client.secondaries.length
69
- assert_equal 1, client.arbiters.length
70
- assert_equal 1, client.secondary_pools.length
68
+ assert_equal 2, client.secondaries.length
69
+ assert_equal 2, client.secondary_pools.length
71
70
  assert_equal @rs.repl_set_name, client.replica_set_name
72
71
  assert client.secondary_pools.include?(client.read_pool(:secondary))
73
72
  assert_equal 90, client.refresh_interval
@@ -48,7 +48,7 @@ class ClientTest < Test::Unit::TestCase
48
48
 
49
49
  def test_connect_with_primary_stepped_down
50
50
  @client = MongoReplicaSetClient.new @rs.repl_set_seeds
51
- @client[MONGO_TEST_DB]['bar'].save({:a => 1}, {:w => 2})
51
+ @client[MONGO_TEST_DB]['bar'].save({:a => 1}, {:w => 3})
52
52
  assert @client[MONGO_TEST_DB]['bar'].find_one
53
53
 
54
54
  primary = Mongo::MongoClient.new(*@client.primary)
@@ -66,7 +66,7 @@ class ClientTest < Test::Unit::TestCase
66
66
  def test_connect_with_primary_killed
67
67
  @client = MongoReplicaSetClient.new @rs.repl_set_seeds
68
68
  assert @client.connected?
69
- @client[MONGO_TEST_DB]['bar'].save({:a => 1}, {:w => 2})
69
+ @client[MONGO_TEST_DB]['bar'].save({:a => 1}, {:w => 3})
70
70
  assert @client[MONGO_TEST_DB]['bar'].find_one
71
71
 
72
72
  @rs.primary.kill(Signal.list['KILL'])
@@ -96,7 +96,7 @@ class ClientTest < Test::Unit::TestCase
96
96
 
97
97
  #def test_connect_with_first_node_removed
98
98
  # @client = MongoReplicaSetClient.new @rs.repl_set_seeds
99
- # @client[MONGO_TEST_DB]['bar'].save({:a => 1}, {:w => 2})
99
+ # @client[MONGO_TEST_DB]['bar'].save({:a => 1}, {:w => 3})
100
100
  #
101
101
  # old_primary = [@client.primary_pool.host, @client.primary_pool.port]
102
102
  # old_primary_conn = Mongo::MongoClient.new(*old_primary)
@@ -48,11 +48,13 @@ class ConnectionTest < Test::Unit::TestCase
48
48
  ENV['MONGODB_URI'] = "mongodb://#{@rs.repl_set_seeds_uri}?replicaset=#{@rs.repl_set_name}"
49
49
  @connection = ReplSetConnection.new
50
50
  assert !@connection.nil?
51
- assert_equal 2, @connection.seeds.length
51
+ assert_equal 3, @connection.seeds.length
52
52
  assert_equal @rs.replicas[0].host, @connection.seeds[0][0]
53
53
  assert_equal @rs.replicas[1].host, @connection.seeds[1][0]
54
+ assert_equal @rs.replicas[2].host, @connection.seeds[2][0]
54
55
  assert_equal @rs.replicas[0].port, @connection.seeds[0][1]
55
56
  assert_equal @rs.replicas[1].port, @connection.seeds[1][1]
57
+ assert_equal @rs.replicas[2].port, @connection.seeds[2][1]
56
58
  assert_equal @rs.repl_set_name, @connection.replica_set_name
57
59
  assert @connection.connected?
58
60
  end
@@ -61,11 +63,13 @@ class ConnectionTest < Test::Unit::TestCase
61
63
  ENV['MONGODB_URI'] = "mongodb://#{@rs.repl_set_seeds_uri}?replicaset=#{@rs.repl_set_name}"
62
64
  @connection = Connection.from_uri
63
65
  assert !@connection.nil?
64
- assert_equal 2, @connection.seeds.length
66
+ assert_equal 3, @connection.seeds.length
65
67
  assert_equal @rs.replicas[0].host, @connection.seeds[0][0]
66
68
  assert_equal @rs.replicas[1].host, @connection.seeds[1][0]
69
+ assert_equal @rs.replicas[2].host, @connection.seeds[2][0]
67
70
  assert_equal @rs.replicas[0].port, @connection.seeds[0][1]
68
71
  assert_equal @rs.replicas[1].port, @connection.seeds[1][1]
72
+ assert_equal @rs.replicas[2].port, @connection.seeds[2][1]
69
73
  assert_equal @rs.repl_set_name, @connection.replica_set_name
70
74
  assert @connection.connected?
71
75
  end
@@ -17,7 +17,7 @@ class ReplicaSetCountTest < Test::Unit::TestCase
17
17
  end
18
18
 
19
19
  def test_correct_count_after_insertion_reconnect
20
- @coll.insert({:a => 20}, :w => 2, :wtimeout => 10000)
20
+ @coll.insert({:a => 20}, :w => 3, :wtimeout => 10000)
21
21
  assert_equal 1, @coll.count
22
22
 
23
23
  # Kill the current master node
@@ -32,7 +32,7 @@ class ReplicaSetCountTest < Test::Unit::TestCase
32
32
  end
33
33
 
34
34
  def test_count_command_sent_to_primary
35
- @coll.insert({:a => 20}, :w => 2, :wtimeout => 10000)
35
+ @coll.insert({:a => 20}, :w => 3, :wtimeout => 10000)
36
36
  count_before = @primary['admin'].command({:serverStatus => 1})['opcounters']['command']
37
37
  assert_equal 1, @coll.count
38
38
  count_after = @primary['admin'].command({:serverStatus => 1})['opcounters']['command']
@@ -40,7 +40,7 @@ class ReplicaSetCountTest < Test::Unit::TestCase
40
40
  end
41
41
 
42
42
  def test_count_with_read
43
- @coll.insert({:a => 20}, :w => 2, :wtimeout => 10000)
43
+ @coll.insert({:a => 20}, :w => 3, :wtimeout => 10000)
44
44
  count_before = @primary['admin'].command({:serverStatus => 1})['opcounters']['command']
45
45
  assert_equal 1, @coll.count(:read => :secondary)
46
46
  assert_equal 1, @coll.find({}, :read => :secondary).count()
@@ -6,24 +6,44 @@ class ReplicaSetCursorTest < Test::Unit::TestCase
6
6
  ensure_cluster(:rs)
7
7
  end
8
8
 
9
+ def test_get_more_primary
10
+ setup_client(:primary)
11
+ cursor_get_more_test(:primary)
12
+ end
13
+
14
+ def test_get_more_secondary
15
+ setup_client(:secondary)
16
+ cursor_get_more_test(:secondary)
17
+ end
18
+
19
+ def test_close_primary
20
+ setup_client(:primary)
21
+ kill_cursor_test(:primary)
22
+ end
23
+
24
+ def test_close_secondary
25
+ setup_client(:secondary)
26
+ kill_cursor_test(:secondary)
27
+ end
28
+
9
29
  def test_cursors_get_closed
10
30
  setup_client
11
- assert_cursor_count
31
+ assert_cursors_on_members
12
32
  end
13
33
 
14
34
  def test_cursors_get_closed_secondary
15
35
  setup_client(:secondary)
16
- assert_cursor_count(:secondary)
36
+ assert_cursors_on_members(:secondary)
17
37
  end
18
38
 
19
- def test_cusors_get_closed_secondary_query
20
- setup_client(:primary, :secondary)
21
- assert_cursor_count(:secondary)
39
+ def test_cursors_get_closed_secondary_query
40
+ setup_client(:primary)
41
+ assert_cursors_on_members(:secondary)
22
42
  end
23
43
 
24
44
  private
25
45
 
26
- def setup_client(read=:primary, route_read=nil)
46
+ def setup_client(read=:primary)
27
47
  route_read ||= read
28
48
  # Setup ReplicaSet Connection
29
49
  @client = MongoReplicaSetClient.new(@rs.repl_set_seeds, :read => read)
@@ -31,41 +51,122 @@ class ReplicaSetCursorTest < Test::Unit::TestCase
31
51
  @db = @client.db(MONGO_TEST_DB)
32
52
  @db.drop_collection("cursor_tests")
33
53
  @coll = @db.collection("cursor_tests")
34
-
35
- @coll.insert({:a => 1}, :w => 2)
36
- @coll.insert({:b => 2}, :w => 2)
37
- @coll.insert({:c => 3}, :w => 2)
38
-
39
- # Pin reader
40
- @coll.find_one
54
+ insert_docs
41
55
 
42
56
  # Setup Direct Connections
43
57
  @primary = Mongo::MongoClient.new(*@client.manager.primary)
44
- @read = Mongo::MongoClient.new(*@client.manager.read_pool(route_read).host_port)
45
58
  end
46
59
 
47
- def cursor_count(client)
48
- client['cursor_tests'].command({:cursorInfo => 1})['totalOpen']
60
+ def insert_docs
61
+ @n_docs = 102 # batch size is 101
62
+ @n_docs.times do |i|
63
+ @coll.insert({ "x" => i }, :w => 3)
64
+ end
49
65
  end
50
66
 
51
- def query_count(client)
52
- client['admin'].command({:serverStatus => 1})['opcounters']['query']
67
+ def set_read_client_and_tag(read)
68
+ read_opts = {:read => read}
69
+ @tag = (0...3).map{|i|i.to_s}.detect do |tag|
70
+ begin
71
+ read_opts[:tag_sets] = [{:node => tag}] unless read == :primary
72
+ cursor = @coll.find({}, read_opts)
73
+ cursor.next
74
+ pool = cursor.instance_variable_get(:@pool)
75
+ cursor.close
76
+ @read = Mongo::MongoClient.new(pool.host, pool.port, :slave_ok => true)
77
+ tag
78
+ rescue Mongo::ConnectionFailure
79
+ false
80
+ end
81
+ end
53
82
  end
54
83
 
55
- def assert_cursor_count(read=:primary)
56
- before_primary_cursor = cursor_count(@primary)
57
- before_read_cursor = cursor_count(@read)
58
- before_read_query = query_count(@read)
59
-
60
- @coll.find({}, :read => read).limit(2).to_a
84
+ def route_query(read)
85
+ read_opts = {:read => read}
86
+ read_opts[:tag_sets] = [{:node => @tag}] unless read == :primary
87
+ object_id = BSON::ObjectId.new
88
+ read_opts[:comment] = object_id
89
+
90
+ # set profiling level to 2 on client and member to which the query will be routed
91
+ @client.db(MONGO_TEST_DB).profiling_level = :all
92
+ @client.secondaries.each do |node|
93
+ node = Mongo::MongoClient.new(node[0], node[1], :slave_ok => true)
94
+ node.db(MONGO_TEST_DB).profiling_level = :all
95
+ end
96
+
97
+ @cursor = @coll.find({}, read_opts)
98
+ @cursor.next
99
+
100
+ # on client and other members set profiling level to 0
101
+ @client.db(MONGO_TEST_DB).profiling_level = :off
102
+ @client.secondaries.each do |node|
103
+ node = Mongo::MongoClient.new(node[0], node[1], :slave_ok => true)
104
+ node.db(MONGO_TEST_DB).profiling_level = :off
105
+ end
106
+ # do a query on system.profile of the reader to see if it was used for the query
107
+ profiled_queries = @read.db(MONGO_TEST_DB).collection('system.profile').find({
108
+ 'ns' => "#{MONGO_TEST_DB}.cursor_tests", "query.$comment" => object_id })
109
+
110
+ assert_equal 1, profiled_queries.count
111
+ end
61
112
 
62
- after_primary_cursor = cursor_count(@primary)
63
- after_read_cursor = cursor_count(@read)
64
- after_read_query = query_count(@read)
113
+ # batch from send_initial_query is 101 documents
114
+ # check that you get n_docs back from the query, with the same port
115
+ def cursor_get_more_test(read=:primary)
116
+ set_read_client_and_tag(read)
117
+ 10.times do
118
+ # assert that the query went to the correct member
119
+ route_query(read)
120
+ docs_count = 1
121
+ port = @cursor.instance_variable_get(:@pool).port
122
+ assert @cursor.alive?
123
+ while @cursor.has_next?
124
+ docs_count += 1
125
+ @cursor.next
126
+ assert_equal port, @cursor.instance_variable_get(:@pool).port
127
+ end
128
+ assert !@cursor.alive?
129
+ assert_equal @n_docs, docs_count
130
+ @cursor.close #cursor is already closed
131
+ end
132
+ end
65
133
 
66
- assert_equal before_primary_cursor, after_primary_cursor
67
- assert_equal before_read_cursor, after_read_cursor
68
- assert_equal 1, after_read_query - before_read_query
134
+ # batch from get_more can be huge, so close after send_initial_query
135
+ def kill_cursor_test(read=:primary)
136
+ set_read_client_and_tag(read)
137
+ 10.times do
138
+ # assert that the query went to the correct member
139
+ route_query(read)
140
+ cursor_id = @cursor.cursor_id
141
+ cursor_clone = @cursor.clone
142
+ assert_equal cursor_id, cursor_clone.cursor_id
143
+ assert @cursor.instance_variable_get(:@pool)
144
+ # .next was called once already and leave one for get more
145
+ (@n_docs-2).times { @cursor.next }
146
+ @cursor.close
147
+ # an exception confirms the cursor has indeed been closed
148
+ assert_raise Mongo::OperationFailure do
149
+ cursor_clone.next
150
+ end
151
+ end
69
152
  end
70
153
 
71
- end
154
+ def assert_cursors_on_members(read=:primary)
155
+ set_read_client_and_tag(read)
156
+ # assert that the query went to the correct member
157
+ route_query(read)
158
+ cursor_id = @cursor.cursor_id
159
+ cursor_clone = @cursor.clone
160
+ assert_equal cursor_id, cursor_clone.cursor_id
161
+ assert @cursor.instance_variable_get(:@pool)
162
+ port = @cursor.instance_variable_get(:@pool).port
163
+ while @cursor.has_next?
164
+ @cursor.next
165
+ assert_equal port, @cursor.instance_variable_get(:@pool).port
166
+ end
167
+ # an exception confirms the cursor has indeed been closed after query
168
+ assert_raise Mongo::OperationFailure do
169
+ cursor_clone.next
170
+ end
171
+ end
172
+ end
@@ -15,7 +15,7 @@ class ReplicaSetInsertTest < Test::Unit::TestCase
15
15
  end
16
16
 
17
17
  def test_insert
18
- @coll.save({:a => 20}, :w => 2)
18
+ @coll.save({:a => 20}, :w => 3)
19
19
 
20
20
  @rs.primary.stop
21
21
 
@@ -40,7 +40,7 @@ class ReplicaSetInsertTest < Test::Unit::TestCase
40
40
  end
41
41
  end
42
42
 
43
- @coll.save({:a => 80}, :w => 2)
43
+ @coll.save({:a => 80}, :w => 3)
44
44
  @coll.find.each {|r| results << r}
45
45
  [20, 30, 40, 50, 60, 70, 80].each do |a|
46
46
  assert results.any? {|r| r['a'] == a}, "Could not find record for a => #{a} on second find"
@@ -15,9 +15,9 @@ class ReplicaSetQueryTest < Test::Unit::TestCase
15
15
  end
16
16
 
17
17
  def test_query
18
- @coll.save({:a => 20}, :w => 2)
19
- @coll.save({:a => 30}, :w => 2)
20
- @coll.save({:a => 40}, :w => 2)
18
+ @coll.save({:a => 20}, :w => 3)
19
+ @coll.save({:a => 30}, :w => 3)
20
+ @coll.save({:a => 40}, :w => 3)
21
21
  results = []
22
22
  @coll.find.each {|r| results << r}
23
23
  [20, 30, 40].each do |a|
@@ -43,7 +43,7 @@ class ReplicaSetQueryTest < Test::Unit::TestCase
43
43
  # primary, where it does not exist.
44
44
  # def test_secondary_getmore
45
45
  # 200.times do |i|
46
- # @coll.save({:a => i}, :w => 2)
46
+ # @coll.save({:a => i}, :w => 3)
47
47
  # end
48
48
  # as = []
49
49
  # # Set an explicit batch size, in case the default ever changes.
@@ -8,40 +8,51 @@ class ReplicaSetRefreshTest < Test::Unit::TestCase
8
8
  end
9
9
 
10
10
  def test_connect_and_manual_refresh_with_secondaries_down
11
- @rs.secondaries.each{|s| s.stop}
11
+ num_secondaries = @rs.secondaries.size
12
12
  client = MongoReplicaSetClient.new(@rs.repl_set_seeds, :refresh_mode => false)
13
13
 
14
- assert_equal Set.new, client.secondaries
14
+ assert_equal num_secondaries, client.secondaries.size
15
15
  assert client.connected?
16
16
  assert_equal client.read_pool, client.primary_pool
17
17
 
18
- # Refresh with no change to set
18
+ @rs.secondaries.each {|s| s.stop}
19
+
19
20
  client.refresh
20
- assert_equal Set.new, client.secondaries
21
+ assert client.secondaries.empty?
21
22
  assert client.connected?
22
23
  assert_equal client.read_pool, client.primary_pool
23
24
 
24
25
  # Test no changes after restart until manual refresh
25
26
  @rs.restart
26
- assert_equal Set.new, client.secondaries
27
+ assert client.secondaries.empty?
27
28
  assert client.connected?
28
29
  assert_equal client.read_pool, client.primary_pool
29
30
 
30
31
  # Refresh and ensure state
31
32
  client.refresh
32
33
  assert_equal client.read_pool, client.primary_pool
33
- assert_equal 1, client.secondaries.length
34
+ assert_equal num_secondaries, client.secondaries.size
34
35
  end
35
36
 
36
37
  def test_automated_refresh_with_secondaries_down
37
- @rs.secondaries.each{|s| s.stop}
38
+ num_secondaries = @rs.secondaries.size
38
39
  client = MongoReplicaSetClient.new(@rs.repl_set_seeds,
39
40
  :refresh_interval => 1, :refresh_mode => :sync, :read => :secondary_preferred)
40
41
 
41
42
  # Ensure secondaries not available and read from primary
42
- assert_equal Set.new, client.secondaries
43
+ assert_equal num_secondaries, client.secondaries.size
43
44
  assert client.connected?
44
- assert client.manager.pools.member?(client.manager.read_pool)
45
+ assert client.secondary_pools.include?(client.read_pool)
46
+
47
+ @rs.secondaries.each{|s| s.stop}
48
+ sleep(2)
49
+
50
+ client['foo']['bar'].find_one
51
+
52
+ assert client.secondaries.empty?
53
+ assert client.connected?
54
+ assert_equal client.read_pool, client.primary_pool
55
+
45
56
  old_refresh_version = client.refresh_version
46
57
 
47
58
  # Restart nodes and ensure refresh interval has passed
@@ -56,7 +67,7 @@ class ReplicaSetRefreshTest < Test::Unit::TestCase
56
67
 
57
68
  assert client.refresh_version > old_refresh_version,
58
69
  "Refresh version hasn't changed."
59
- assert client.secondaries.length == 1,
70
+ assert_equal num_secondaries, client.secondaries.size
60
71
  "No secondaries have been added."
61
72
  assert client.manager.read_pool != client.manager.primary,
62
73
  "Read pool and primary pool are identical."
@@ -66,11 +77,11 @@ class ReplicaSetRefreshTest < Test::Unit::TestCase
66
77
  client = MongoReplicaSetClient.new(@rs.repl_set_seeds,
67
78
  :refresh_interval => 1, :refresh_mode => :sync)
68
79
 
69
- num_secondaries = client.secondary_pools.length
80
+ num_secondaries = client.secondary_pools.size
70
81
  old_refresh_version = client.refresh_version
71
82
 
72
- @rs.kill_secondary
73
- sleep(1)
83
+ @rs.stop_secondary
84
+ sleep(2)
74
85
 
75
86
  assert client.refresh_version == old_refresh_version,
76
87
  "Refresh version has changed."
@@ -79,16 +90,16 @@ class ReplicaSetRefreshTest < Test::Unit::TestCase
79
90
 
80
91
  assert client.refresh_version > old_refresh_version,
81
92
  "Refresh version hasn't changed."
82
- assert_equal num_secondaries - 1, client.secondaries.length
83
- assert_equal num_secondaries - 1, client.secondary_pools.length
93
+ assert_equal num_secondaries - 1, client.secondaries.size
94
+ assert_equal num_secondaries - 1, client.secondary_pools.size
84
95
 
85
- @rs.start
96
+ @rs.restart
86
97
  sleep(2)
87
98
 
88
99
  client['foo']['bar'].find_one
89
100
 
90
- assert_equal num_secondaries, client.secondaries.length
91
- assert_equal num_secondaries, client.secondary_pools.length
101
+ assert_equal num_secondaries, client.secondaries.size
102
+ assert_equal num_secondaries, client.secondary_pools.size
92
103
  end
93
104
  =begin
94
105
  def test_automated_refresh_with_removed_node
@@ -23,13 +23,13 @@ class ReplicaSetAckTest < Test::Unit::TestCase
23
23
 
24
24
  def test_safe_mode_with_w_failure
25
25
  assert_raise_error OperationFailure, "timeout" do
26
- @col.insert({:foo => 1}, :w => 3, :wtimeout => 1, :fsync => true)
26
+ @col.insert({:foo => 1}, :w => 4, :wtimeout => 1, :fsync => true)
27
27
  end
28
28
  assert_raise_error OperationFailure, "timeout" do
29
- @col.update({:foo => 1}, {:foo => 2}, :w => 3, :wtimeout => 1, :fsync => true)
29
+ @col.update({:foo => 1}, {:foo => 2}, :w => 4, :wtimeout => 1, :fsync => true)
30
30
  end
31
31
  assert_raise_error OperationFailure, "timeout" do
32
- @col.remove({:foo => 2}, :w => 3, :wtimeout => 1, :fsync => true)
32
+ @col.remove({:foo => 2}, :w => 4, :wtimeout => 1, :fsync => true)
33
33
  end
34
34
  assert_raise_error OperationFailure do
35
35
  @col.insert({:foo => 3}, :w => "test-tag")
@@ -37,35 +37,35 @@ class ReplicaSetAckTest < Test::Unit::TestCase
37
37
  end
38
38
 
39
39
  def test_safe_mode_replication_ack
40
- @col.insert({:baz => "bar"}, :w => 2, :wtimeout => 5000)
40
+ @col.insert({:baz => "bar"}, :w => 3, :wtimeout => 5000)
41
41
 
42
- assert @col.insert({:foo => "0" * 5000}, :w => 2, :wtimeout => 5000)
42
+ assert @col.insert({:foo => "0" * 5000}, :w => 3, :wtimeout => 5000)
43
43
  assert_equal 2, @slave1[MONGO_TEST_DB]["test-sets"].count
44
44
 
45
- assert @col.update({:baz => "bar"}, {:baz => "foo"}, :w => 2, :wtimeout => 5000)
45
+ assert @col.update({:baz => "bar"}, {:baz => "foo"}, :w => 3, :wtimeout => 5000)
46
46
  assert @slave1[MONGO_TEST_DB]["test-sets"].find_one({:baz => "foo"})
47
47
 
48
48
  assert @col.insert({:foo => "bar"}, :w => "majority")
49
49
 
50
50
  assert @col.insert({:bar => "baz"}, :w => :majority)
51
51
 
52
- assert @col.remove({}, :w => 2, :wtimeout => 5000)
52
+ assert @col.remove({}, :w => 3, :wtimeout => 5000)
53
53
  assert_equal 0, @slave1[MONGO_TEST_DB]["test-sets"].count
54
54
  end
55
55
 
56
56
  def test_last_error_responses
57
57
  20.times { @col.insert({:baz => "bar"}) }
58
- response = @db.get_last_error(:w => 2, :wtimeout => 5000)
58
+ response = @db.get_last_error(:w => 3, :wtimeout => 5000)
59
59
  assert response['ok'] == 1
60
60
  assert response['lastOp']
61
61
 
62
62
  @col.update({}, {:baz => "foo"})
63
- response = @db.get_last_error(:w => 2, :wtimeout => 5000)
63
+ response = @db.get_last_error(:w => 3, :wtimeout => 5000)
64
64
  assert response['ok'] == 1
65
65
  assert response['lastOp']
66
66
 
67
67
  @col.remove({})
68
- response = @db.get_last_error(:w => 2, :wtimeout => 5000)
68
+ response = @db.get_last_error(:w => 3, :wtimeout => 5000)
69
69
  assert response['ok'] == 1
70
70
  assert response['n'] == 20
71
71
  assert response['lastOp']
@@ -7,6 +7,8 @@ if RUBY_VERSION >= '1.9.0' && RUBY_ENGINE == 'ruby'
7
7
  add_group "Mongo", 'lib/mongo'
8
8
  add_group "BSON", 'lib/bson'
9
9
  add_filter "/test/"
10
+ merge_timeout 3600
11
+ command_name ENV['SIMPLECOV_COMMAND_NAME'] if ENV.has_key?('SIMPLECOV_COMMAND_NAME')
10
12
  end
11
13
  end
12
14
  end
@@ -25,7 +25,7 @@ end
25
25
  module Mongo
26
26
  class Config
27
27
  DEFAULT_BASE_OPTS = { :host => 'localhost', :dbpath => 'data', :logpath => 'data/log'}
28
- DEFAULT_REPLICA_SET = DEFAULT_BASE_OPTS.merge( :replicas => 2, :arbiters => 1 )
28
+ DEFAULT_REPLICA_SET = DEFAULT_BASE_OPTS.merge( :replicas => 3, :arbiters => 0 )
29
29
  DEFAULT_SHARDED_SIMPLE = DEFAULT_BASE_OPTS.merge( :shards => 2, :configs => 1, :routers => 4 )
30
30
  DEFAULT_SHARDED_REPLICA = DEFAULT_SHARDED_SIMPLE.merge( :replicas => 3, :arbiters => 0)
31
31
 
@@ -354,7 +354,7 @@ module Mongo
354
354
 
355
355
  def repl_set_config
356
356
  members = []
357
- @config[:replicas].each{|s| members << { :_id => s[:_id], :host => "#{s[:host]}:#{s[:port]}" } }
357
+ @config[:replicas].each{|s| members << { :_id => s[:_id], :host => "#{s[:host]}:#{s[:port]}", :tags => { :node => s[:_id].to_s } } }
358
358
  @config[:arbiters].each{|s| members << { :_id => s[:_id], :host => "#{s[:host]}:#{s[:port]}", :arbiterOnly => true } }
359
359
  {
360
360
  :_id => @config[:replicas].first[:replSet],
@@ -442,12 +442,12 @@ module Mongo
442
442
  members_by_name(secondary_names)
443
443
  end
444
444
 
445
- def kill_primary
446
- primary.kill
445
+ def stop_primary
446
+ primary.stop
447
447
  end
448
448
 
449
- def kill_secondary
450
- secondaries[rand(secondaries.length)].kill
449
+ def stop_secondary
450
+ secondaries[rand(secondaries.length)].stop
451
451
  end
452
452
 
453
453
  def replicas
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mongo
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.3.rc0
5
- prerelease: 6
4
+ version: 1.8.3.rc1
6
5
  platform: ruby
7
6
  authors:
8
7
  - Tyler Brock
@@ -13,52 +12,43 @@ authors:
13
12
  autorequire:
14
13
  bindir: bin
15
14
  cert_chain:
16
- - !binary |-
17
- LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURPRENDQWlDZ0F3SUJB
18
- Z0lCQURBTkJna3Foa2lHOXcwQkFRVUZBREJDTVJRd0VnWURWUVFEREF0a2Nt
19
- bDIKWlhJdGNuVmllVEVWTUJNR0NnbVNKb21UOGl4a0FSa1dCVEV3WjJWdU1S
20
- TXdFUVlLQ1pJbWlaUHlMR1FCR1JZRApZMjl0TUI0WERURXpNREl3TVRFME1U
21
- RXpOMW9YRFRFME1ESXdNVEUwTVRFek4xb3dRakVVTUJJR0ExVUVBd3dMClpI
22
- SnBkbVZ5TFhKMVlua3hGVEFUQmdvSmtpYUprL0lzWkFFWkZnVXhNR2RsYmpF
23
- VE1CRUdDZ21TSm9tVDhpeGsKQVJrV0EyTnZiVENDQVNJd0RRWUpLb1pJaHZj
24
- TkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFORmRTQWE4ZlJtMQpiQU05emE2
25
- WjBmQUg0ZzAyYnFNMU5Hbnc4ekpRckUvUEZyRmZZNklGQ1QyQXNMZk93cjFt
26
- YVZtN2lVMStrZFZJCklRK2lJLzkrRStBckorcmJHVjNkRFBRK1NMbDNtTFQr
27
- dlhqZmpjeE1xSTJJVzZVdVZ0dDJVM1J4ZDRRVTBrZFQKSnhtY1BZczVmRE42
28
- QmdZYzZYWGdVankzbStLd2hhMnBHY3RkY2lVT3dFZk9aNFJtTlJsRVpLQ01M
29
- UkhkRlA4ago0V1RuSlNHZlhEaXVvWElDSmI1eU9QT1pQdWFhcFBTTlhwOTNR
30
- a1Vkc3FkS0MzMkkrS01wS0tZR0JRNnlpc2ZBCjVNeVZQUEN6TFIxbFA1cVhW
31
- R0pQbk9xVUFrdkVVZkNhaGc3RVA5dEkyMHF4aVhyUjZUU0VyYVloSUZYTDBF
32
- R1kKdThLQWNQSG01S2tDQXdFQUFhTTVNRGN3Q1FZRFZSMFRCQUl3QURBZEJn
33
- TlZIUTRFRmdRVVczZFpzWDcwbWxTTQpDaVByWnhBR0ExdndmTmN3Q3dZRFZS
34
- MFBCQVFEQWdTd01BMEdDU3FHU0liM0RRRUJCUVVBQTRJQkFRQ0lhL1k2CnhT
35
- N1lXQnhrbjlXUDBFTW5KM3BZOXZlZjlEVG1MU2kvMmp6OFB6d2xLUTg5ek5U
36
- cnFTVUQ4TG9RWm1CcUNKQnQKZEtTUS9SVW5hSEp1eGg4SFd2V3ViUDhFQllU
37
- dWYrSTFERm5SdjY0OElGM01SMXRDUXVtVkwwWGNZTXZaY3hCagphL3ArOERv
38
- bVdUUXFVZE5iTm9HeXd3anRWQldmRGR3RlY4UG8xWGNOL0F0cElMT0pRZDlK
39
- NzdJTklHR0NIeFpvCjZTT0hIYU5rbmxFOUgwdzZxMFNWeFpLWkk4LysyYzQ0
40
- N1YwTnJISXcxUWhlMHRBR0o5VjF1M2t5OGd5eGUwU00KOHY3ekxGMlhsaVli
41
- ZnVyWUl3a2NYczh5UG44Z2dBcEJJeTliWDZWSnhScy9sMitVdnF6YUhJRmFG
42
- eS9GOC9HUApSTlR1WHNWRzVOREFDbzdRCi0tLS0tRU5EIENFUlRJRklDQVRF
43
- LS0tLS0K
44
- date: 2013-02-14 00:00:00.000000000 Z
15
+ - |
16
+ -----BEGIN CERTIFICATE-----
17
+ MIIDODCCAiCgAwIBAgIBADANBgkqhkiG9w0BAQUFADBCMRQwEgYDVQQDDAtkcml2
18
+ ZXItcnVieTEVMBMGCgmSJomT8ixkARkWBTEwZ2VuMRMwEQYKCZImiZPyLGQBGRYD
19
+ Y29tMB4XDTEzMDIwMTE0MTEzN1oXDTE0MDIwMTE0MTEzN1owQjEUMBIGA1UEAwwL
20
+ ZHJpdmVyLXJ1YnkxFTATBgoJkiaJk/IsZAEZFgUxMGdlbjETMBEGCgmSJomT8ixk
21
+ ARkWA2NvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANFdSAa8fRm1
22
+ bAM9za6Z0fAH4g02bqM1NGnw8zJQrE/PFrFfY6IFCT2AsLfOwr1maVm7iU1+kdVI
23
+ IQ+iI/9+E+ArJ+rbGV3dDPQ+SLl3mLT+vXjfjcxMqI2IW6UuVtt2U3Rxd4QU0kdT
24
+ JxmcPYs5fDN6BgYc6XXgUjy3m+Kwha2pGctdciUOwEfOZ4RmNRlEZKCMLRHdFP8j
25
+ 4WTnJSGfXDiuoXICJb5yOPOZPuaapPSNXp93QkUdsqdKC32I+KMpKKYGBQ6yisfA
26
+ 5MyVPPCzLR1lP5qXVGJPnOqUAkvEUfCahg7EP9tI20qxiXrR6TSEraYhIFXL0EGY
27
+ u8KAcPHm5KkCAwEAAaM5MDcwCQYDVR0TBAIwADAdBgNVHQ4EFgQUW3dZsX70mlSM
28
+ CiPrZxAGA1vwfNcwCwYDVR0PBAQDAgSwMA0GCSqGSIb3DQEBBQUAA4IBAQCIa/Y6
29
+ xS7YWBxkn9WP0EMnJ3pY9vef9DTmLSi/2jz8PzwlKQ89zNTrqSUD8LoQZmBqCJBt
30
+ dKSQ/RUnaHJuxh8HWvWubP8EBYTuf+I1DFnRv648IF3MR1tCQumVL0XcYMvZcxBj
31
+ a/p+8DomWTQqUdNbNoGywwjtVBWfDdwFV8Po1XcN/AtpILOJQd9J77INIGGCHxZo
32
+ 6SOHHaNknlE9H0w6q0SVxZKZI8/+2c447V0NrHIw1Qhe0tAGJ9V1u3ky8gyxe0SM
33
+ 8v7zLF2XliYbfurYIwkcXs8yPn8ggApBIy9bX6VJxRs/l2+UvqzaHIFaFy/F8/GP
34
+ RNTuXsVG5NDACo7Q
35
+ -----END CERTIFICATE-----
36
+ date: 2013-02-27 00:00:00.000000000 Z
45
37
  dependencies:
46
38
  - !ruby/object:Gem::Dependency
47
39
  name: bson
48
40
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
41
  requirements:
51
42
  - - ~>
52
43
  - !ruby/object:Gem::Version
53
- version: 1.8.3.rc0
44
+ version: 1.8.3.rc1
54
45
  type: :runtime
55
46
  prerelease: false
56
47
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
48
  requirements:
59
49
  - - ~>
60
50
  - !ruby/object:Gem::Version
61
- version: 1.8.3.rc0
51
+ version: 1.8.3.rc1
62
52
  description: A Ruby driver for MongoDB. For more information about Mongo, see http://www.mongodb.org.
63
53
  email: mongodb-dev@googlegroups.com
64
54
  executables:
@@ -149,7 +139,6 @@ files:
149
139
  - test/replica_set/read_preference_test.rb
150
140
  - test/replica_set/refresh_test.rb
151
141
  - test/replica_set/replication_ack_test.rb
152
- - test/replica_set/z_cluster_shutdown.rb
153
142
  - test/sharded_cluster/basic_test.rb
154
143
  - test/test_helper.rb
155
144
  - test/threading/basic_test.rb
@@ -172,27 +161,26 @@ files:
172
161
  - test/unit/write_concern_test.rb
173
162
  homepage: http://www.mongodb.org
174
163
  licenses: []
164
+ metadata: {}
175
165
  post_install_message:
176
166
  rdoc_options: []
177
167
  require_paths:
178
168
  - lib
179
169
  required_ruby_version: !ruby/object:Gem::Requirement
180
- none: false
181
170
  requirements:
182
- - - ! '>='
171
+ - - '>='
183
172
  - !ruby/object:Gem::Version
184
173
  version: '0'
185
174
  required_rubygems_version: !ruby/object:Gem::Requirement
186
- none: false
187
175
  requirements:
188
- - - ! '>'
176
+ - - '>'
189
177
  - !ruby/object:Gem::Version
190
178
  version: 1.3.1
191
179
  requirements: []
192
180
  rubyforge_project: mongo
193
- rubygems_version: 1.8.23
181
+ rubygems_version: 2.0.0
194
182
  signing_key:
195
- specification_version: 3
183
+ specification_version: 4
196
184
  summary: Ruby driver for MongoDB
197
185
  test_files:
198
186
  - test/auxillary/1.4_feature_test.rb
@@ -241,7 +229,6 @@ test_files:
241
229
  - test/replica_set/read_preference_test.rb
242
230
  - test/replica_set/refresh_test.rb
243
231
  - test/replica_set/replication_ack_test.rb
244
- - test/replica_set/z_cluster_shutdown.rb
245
232
  - test/sharded_cluster/basic_test.rb
246
233
  - test/test_helper.rb
247
234
  - test/threading/basic_test.rb
metadata.gz.sig CHANGED
Binary file
@@ -1,13 +0,0 @@
1
- require 'test_helper'
2
-
3
- # mock test case to shutdown cluster for rake test:replica_set, must be last by file name sort order
4
- class ZClusterShutdownTest < Test::Unit::TestCase
5
- def setup
6
- ensure_cluster(:rs)
7
- end
8
-
9
- def test_cluster_shutdown
10
- @@force_shutdown = true
11
- end
12
- end
13
-