mongo 1.7.1 → 1.8.0
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.
- data/{LICENSE.txt → LICENSE} +0 -0
- data/README.md +124 -111
- data/Rakefile +9 -325
- data/VERSION +1 -0
- data/bin/mongo_console +4 -4
- data/examples/admin.rb +43 -0
- data/examples/capped.rb +22 -0
- data/examples/cursor.rb +48 -0
- data/examples/gridfs.rb +44 -0
- data/examples/index_test.rb +126 -0
- data/examples/info.rb +31 -0
- data/examples/queries.rb +74 -0
- data/examples/replica_set.rb +26 -0
- data/examples/simple.rb +25 -0
- data/examples/strict.rb +35 -0
- data/examples/types.rb +36 -0
- data/{test/load → examples/web}/thin/load.rb +3 -1
- data/{test/load → examples/web}/unicorn/load.rb +5 -3
- data/lib/mongo.rb +8 -10
- data/lib/mongo/collection.rb +134 -114
- data/lib/mongo/cursor.rb +21 -14
- data/lib/mongo/db.rb +30 -28
- data/lib/mongo/exceptions.rb +1 -1
- data/lib/mongo/gridfs/grid.rb +8 -7
- data/lib/mongo/gridfs/grid_ext.rb +1 -1
- data/lib/mongo/gridfs/grid_file_system.rb +6 -5
- data/lib/mongo/gridfs/grid_io.rb +22 -19
- data/lib/mongo/legacy.rb +82 -0
- data/lib/mongo/{connection.rb → mongo_client.rb} +82 -61
- data/lib/mongo/{repl_set_connection.rb → mongo_replica_set_client.rb} +54 -39
- data/lib/mongo/{sharded_connection.rb → mongo_sharded_client.rb} +9 -9
- data/lib/mongo/networking.rb +25 -20
- data/lib/mongo/util/conversions.rb +1 -1
- data/lib/mongo/util/core_ext.rb +1 -1
- data/lib/mongo/util/logging.rb +20 -4
- data/lib/mongo/util/node.rb +16 -16
- data/lib/mongo/util/pool.rb +56 -27
- data/lib/mongo/util/pool_manager.rb +28 -27
- data/lib/mongo/util/server_version.rb +1 -1
- data/lib/mongo/util/sharding_pool_manager.rb +8 -8
- data/lib/mongo/util/ssl_socket.rb +1 -5
- data/lib/mongo/util/support.rb +24 -8
- data/lib/mongo/util/tcp_socket.rb +0 -4
- data/lib/mongo/util/uri_parser.rb +54 -38
- data/lib/mongo/util/write_concern.rb +67 -0
- data/mongo.gemspec +21 -32
- data/test/auxillary/{1.4_features.rb → 1.4_feature_test.rb} +4 -5
- data/test/auxillary/authentication_test.rb +18 -20
- data/test/auxillary/autoreconnect_test.rb +3 -5
- data/test/auxillary/fork_test.rb +5 -7
- data/test/auxillary/repl_set_auth_test.rb +13 -15
- data/test/auxillary/slave_connection_test.rb +8 -7
- data/test/auxillary/threaded_authentication_test.rb +15 -17
- data/test/bson/binary_test.rb +1 -1
- data/test/bson/bson_test.rb +60 -36
- data/test/bson/byte_buffer_test.rb +1 -1
- data/test/bson/hash_with_indifferent_access_test.rb +2 -2
- data/test/bson/json_test.rb +1 -2
- data/test/bson/object_id_test.rb +1 -2
- data/test/bson/ordered_hash_test.rb +1 -1
- data/test/bson/timestamp_test.rb +1 -1
- data/test/{collection_test.rb → functional/collection_test.rb} +57 -57
- data/test/{connection_test.rb → functional/connection_test.rb} +75 -89
- data/test/{conversions_test.rb → functional/conversions_test.rb} +1 -1
- data/test/{cursor_fail_test.rb → functional/cursor_fail_test.rb} +3 -29
- data/test/{cursor_message_test.rb → functional/cursor_message_test.rb} +1 -1
- data/test/{cursor_test.rb → functional/cursor_test.rb} +5 -1
- data/test/{db_api_test.rb → functional/db_api_test.rb} +8 -9
- data/test/{db_connection_test.rb → functional/db_connection_test.rb} +3 -5
- data/test/{db_test.rb → functional/db_test.rb} +13 -13
- data/test/{grid_file_system_test.rb → functional/grid_file_system_test.rb} +2 -2
- data/test/{grid_io_test.rb → functional/grid_io_test.rb} +6 -6
- data/test/{grid_test.rb → functional/grid_test.rb} +4 -10
- data/test/{pool_test.rb → functional/pool_test.rb} +1 -1
- data/test/functional/safe_test.rb +84 -0
- data/test/{support_test.rb → functional/support_test.rb} +1 -1
- data/test/{threading_test.rb → functional/threading_test.rb} +9 -9
- data/test/{timeout_test.rb → functional/timeout_test.rb} +1 -1
- data/test/{uri_test.rb → functional/uri_test.rb} +1 -1
- data/test/functional/write_concern_test.rb +104 -0
- data/test/replica_set/basic_test.rb +139 -0
- data/test/replica_set/client_test.rb +255 -0
- data/test/replica_set/complex_connect_test.rb +62 -0
- data/test/replica_set/connection_test.rb +255 -0
- data/test/{replica_sets → replica_set}/count_test.rb +17 -14
- data/test/replica_set/cursor_test.rb +75 -0
- data/test/{replica_sets → replica_set}/insert_test.rb +19 -16
- data/test/replica_set/query_test.rb +64 -0
- data/test/replica_set/refresh_test.rb +153 -0
- data/test/{replica_sets → replica_set}/replication_ack_test.rb +21 -17
- data/test/sharded_cluster/basic_test.rb +31 -50
- data/test/support/hash_with_indifferent_access.rb +1 -1
- data/test/test_helper.rb +56 -9
- data/test/threading/threading_with_large_pool_test.rb +8 -8
- data/test/tools/mongo_config.rb +270 -58
- data/test/tools/mongo_config_test.rb +146 -0
- data/test/unit/client_test.rb +230 -0
- data/test/unit/collection_test.rb +45 -32
- data/test/unit/connection_test.rb +82 -74
- data/test/unit/cursor_test.rb +14 -6
- data/test/unit/db_test.rb +8 -8
- data/test/unit/grid_test.rb +11 -11
- data/test/unit/node_test.rb +24 -24
- data/test/unit/pool_manager_test.rb +13 -13
- data/test/unit/pool_test.rb +1 -1
- data/test/unit/read_test.rb +21 -26
- data/test/unit/safe_test.rb +52 -33
- data/test/unit/util_test.rb +55 -0
- data/test/unit/write_concern_test.rb +161 -0
- metadata +158 -171
- data/docs/CREDITS.md +0 -123
- data/docs/FAQ.md +0 -116
- data/docs/GRID_FS.md +0 -158
- data/docs/HISTORY.md +0 -392
- data/docs/READ_PREFERENCE.md +0 -99
- data/docs/RELEASES.md +0 -54
- data/docs/REPLICA_SETS.md +0 -113
- data/docs/TAILABLE_CURSORS.md +0 -51
- data/docs/TUTORIAL.md +0 -356
- data/docs/WRITE_CONCERN.md +0 -31
- data/lib/mongo/gridfs/grid_io_fix.rb +0 -38
- data/lib/mongo/version.rb +0 -3
- data/test/bson/test_helper.rb +0 -30
- data/test/replica_sets/basic_test.rb +0 -119
- data/test/replica_sets/complex_connect_test.rb +0 -57
- data/test/replica_sets/complex_read_preference_test.rb +0 -237
- data/test/replica_sets/connect_test.rb +0 -156
- data/test/replica_sets/cursor_test.rb +0 -70
- data/test/replica_sets/pooled_insert_test.rb +0 -57
- data/test/replica_sets/query_test.rb +0 -50
- data/test/replica_sets/read_preference_test.rb +0 -234
- data/test/replica_sets/refresh_test.rb +0 -156
- data/test/replica_sets/refresh_with_threads_test.rb +0 -60
- data/test/replica_sets/rs_test_helper.rb +0 -39
- data/test/safe_test.rb +0 -68
- data/test/sharded_cluster/mongo_config_test.rb +0 -126
- data/test/sharded_cluster/sc_test_helper.rb +0 -39
- data/test/tools/repl_set_manager.rb +0 -418
@@ -1,156 +0,0 @@
|
|
1
|
-
$:.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
2
|
-
require './test/replica_sets/rs_test_helper'
|
3
|
-
require 'benchmark'
|
4
|
-
|
5
|
-
class ReplicaSetRefreshTest < Test::Unit::TestCase
|
6
|
-
|
7
|
-
def setup
|
8
|
-
ensure_rs
|
9
|
-
end
|
10
|
-
|
11
|
-
def teardown
|
12
|
-
@rs.restart_killed_nodes
|
13
|
-
@conn.close if defined?(@conn)
|
14
|
-
end
|
15
|
-
|
16
|
-
=begin
|
17
|
-
def test_connect_speed
|
18
|
-
Benchmark.bm do |x|
|
19
|
-
x.report("Connect") do
|
20
|
-
10.times do
|
21
|
-
ReplSetConnection.new(build_seeds(3), :refresh_mode => false)
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
@con = ReplSetConnection.new(build_seeds(3), :refresh_mode => false)
|
26
|
-
|
27
|
-
x.report("manager") do
|
28
|
-
man = Mongo::PoolManager.new(@con, @con.seeds)
|
29
|
-
10.times do
|
30
|
-
man.connect
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
35
|
-
=end
|
36
|
-
|
37
|
-
def test_connect_and_manual_refresh_with_secondaries_down
|
38
|
-
@rs.kill_all_secondaries
|
39
|
-
sleep(4)
|
40
|
-
|
41
|
-
rescue_connection_failure do
|
42
|
-
@conn = ReplSetConnection.new(build_seeds(3), :refresh_mode => false)
|
43
|
-
end
|
44
|
-
|
45
|
-
assert_equal [], @conn.secondaries
|
46
|
-
assert @conn.connected?
|
47
|
-
assert_equal @conn.read_pool, @conn.primary_pool
|
48
|
-
|
49
|
-
# Refresh with no change to set
|
50
|
-
@conn.refresh
|
51
|
-
assert_equal [], @conn.secondaries
|
52
|
-
assert @conn.connected?
|
53
|
-
assert_equal @conn.read_pool, @conn.primary_pool
|
54
|
-
|
55
|
-
@rs.restart_killed_nodes
|
56
|
-
assert_equal [], @conn.secondaries
|
57
|
-
assert @conn.connected?
|
58
|
-
assert_equal @conn.read_pool, @conn.primary_pool
|
59
|
-
|
60
|
-
# Refresh with everything up
|
61
|
-
@conn.refresh
|
62
|
-
assert @conn.read_pool
|
63
|
-
assert @conn.secondaries.length > 0
|
64
|
-
end
|
65
|
-
|
66
|
-
def test_automated_refresh_with_secondaries_down
|
67
|
-
@rs.kill_all_secondaries
|
68
|
-
sleep(4)
|
69
|
-
|
70
|
-
rescue_connection_failure do
|
71
|
-
@conn = ReplSetConnection.new(build_seeds(3),
|
72
|
-
:refresh_interval => 2, :refresh_mode => :sync, :read => :secondary_preferred)
|
73
|
-
end
|
74
|
-
|
75
|
-
assert_equal [], @conn.secondaries
|
76
|
-
assert @conn.connected?
|
77
|
-
assert_equal @conn.manager.read, @conn.manager.primary
|
78
|
-
old_refresh_version = @conn.refresh_version
|
79
|
-
|
80
|
-
@rs.restart_killed_nodes
|
81
|
-
sleep(4)
|
82
|
-
@conn['foo']['bar'].find_one
|
83
|
-
@conn['foo']['bar'].insert({:a => 1})
|
84
|
-
|
85
|
-
assert @conn.refresh_version > old_refresh_version,
|
86
|
-
"Refresh version hasn't changed."
|
87
|
-
assert @conn.secondaries.length > 0,
|
88
|
-
"No secondaries have been added."
|
89
|
-
assert @conn.manager.read != @conn.manager.primary,
|
90
|
-
"Read pool and primary pool are identical."
|
91
|
-
end
|
92
|
-
|
93
|
-
def test_automated_refresh_when_secondary_goes_down
|
94
|
-
@conn = ReplSetConnection.new(build_seeds(3),
|
95
|
-
:refresh_interval => 2, :refresh_mode => :sync)
|
96
|
-
|
97
|
-
num_secondaries = @conn.secondary_pools.length
|
98
|
-
old_refresh_version = @conn.refresh_version
|
99
|
-
|
100
|
-
@rs.kill_secondary
|
101
|
-
sleep(4)
|
102
|
-
@conn['foo']['bar'].find_one
|
103
|
-
|
104
|
-
assert @conn.refresh_version > old_refresh_version,
|
105
|
-
"Refresh version hasn't changed."
|
106
|
-
assert_equal num_secondaries - 1, @conn.secondaries.length
|
107
|
-
assert_equal num_secondaries - 1, @conn.secondary_pools.length
|
108
|
-
|
109
|
-
@rs.restart_killed_nodes
|
110
|
-
end
|
111
|
-
|
112
|
-
def test_automated_refresh_with_removed_node
|
113
|
-
@conn = ReplSetConnection.new(build_seeds(3),
|
114
|
-
:refresh_interval => 2, :refresh_mode => :sync)
|
115
|
-
|
116
|
-
num_secondaries = @conn.secondary_pools.length
|
117
|
-
old_refresh_version = @conn.refresh_version
|
118
|
-
|
119
|
-
n = @rs.remove_secondary_node
|
120
|
-
sleep(4)
|
121
|
-
@conn['foo']['bar'].find_one
|
122
|
-
|
123
|
-
assert @conn.refresh_version > old_refresh_version,
|
124
|
-
"Refresh version hasn't changed."
|
125
|
-
assert_equal num_secondaries - 1, @conn.secondaries.length
|
126
|
-
assert_equal num_secondaries - 1, @conn.secondary_pools.length
|
127
|
-
|
128
|
-
@rs.add_node(n)
|
129
|
-
end
|
130
|
-
|
131
|
-
def test_adding_and_removing_nodes
|
132
|
-
@conn = ReplSetConnection.new(build_seeds(3),
|
133
|
-
:refresh_interval => 2, :refresh_mode => :sync)
|
134
|
-
|
135
|
-
@rs.add_node
|
136
|
-
sleep(4)
|
137
|
-
@conn['foo']['bar'].find_one
|
138
|
-
|
139
|
-
@conn2 = ReplSetConnection.new(build_seeds(3),
|
140
|
-
:refresh_interval => 2, :refresh_mode => :sync)
|
141
|
-
|
142
|
-
assert @conn2.secondaries.sort == @conn.secondaries.sort,
|
143
|
-
"Second connection secondaries not equal to first."
|
144
|
-
assert_equal 3, @conn.secondary_pools.length
|
145
|
-
assert_equal 3, @conn.secondaries.length
|
146
|
-
|
147
|
-
config = @conn['admin'].command({:ismaster => 1})
|
148
|
-
|
149
|
-
@rs.remove_secondary_node
|
150
|
-
sleep(4)
|
151
|
-
config = @conn['admin'].command({:ismaster => 1})
|
152
|
-
|
153
|
-
assert_equal 2, @conn.secondary_pools.length
|
154
|
-
assert_equal 2, @conn.secondaries.length
|
155
|
-
end
|
156
|
-
end
|
@@ -1,60 +0,0 @@
|
|
1
|
-
$:.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
2
|
-
require './test/replica_sets/rs_test_helper'
|
3
|
-
require 'benchmark'
|
4
|
-
|
5
|
-
class ReplicaSetRefreshWithThreadsTest < Test::Unit::TestCase
|
6
|
-
|
7
|
-
def setup
|
8
|
-
ensure_rs
|
9
|
-
@conn = nil
|
10
|
-
end
|
11
|
-
|
12
|
-
def teardown
|
13
|
-
@conn.close if @conn
|
14
|
-
end
|
15
|
-
|
16
|
-
def test_read_write_load_with_added_nodes
|
17
|
-
# MongoDB < 2.0 will disconnect clients on rs.reconfig()
|
18
|
-
return true if @rs.version < "2"
|
19
|
-
|
20
|
-
seeds = build_seeds(3)
|
21
|
-
args = {
|
22
|
-
:refresh_interval => 5,
|
23
|
-
:refresh_mode => :sync,
|
24
|
-
:read => :secondary_preferred
|
25
|
-
}
|
26
|
-
@conn = ReplSetConnection.new(seeds, args)
|
27
|
-
@duplicate = @conn[MONGO_TEST_DB]['duplicate']
|
28
|
-
@unique = @conn[MONGO_TEST_DB]['unique']
|
29
|
-
@duplicate.insert("test" => "insert")
|
30
|
-
@duplicate.insert("test" => "update")
|
31
|
-
@unique.insert("test" => "insert")
|
32
|
-
@unique.insert("test" => "update")
|
33
|
-
@unique.create_index("test", :unique => true)
|
34
|
-
|
35
|
-
threads = []
|
36
|
-
10.times do
|
37
|
-
threads << Thread.new do
|
38
|
-
1000.times do |i|
|
39
|
-
if i % 2 == 0
|
40
|
-
assert_raise Mongo::OperationFailure do
|
41
|
-
@unique.insert({"test" => "insert"}, :safe => true)
|
42
|
-
end
|
43
|
-
else
|
44
|
-
@duplicate.insert({"test" => "insert"}, :safe => true)
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
@rs.add_node
|
51
|
-
threads.each {|t| t.join }
|
52
|
-
|
53
|
-
sleep(1)
|
54
|
-
|
55
|
-
@conn['admin'].command({:ismaster => 1})
|
56
|
-
|
57
|
-
assert_equal 3, @conn.secondary_pools.length
|
58
|
-
assert_equal 3, @conn.secondaries.length
|
59
|
-
end
|
60
|
-
end
|
@@ -1,39 +0,0 @@
|
|
1
|
-
$:.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
2
|
-
require File.expand_path("../../test_helper", __FILE__)
|
3
|
-
require './test/tools/repl_set_manager'
|
4
|
-
|
5
|
-
class Test::Unit::TestCase
|
6
|
-
# Ensure replica set is available as an instance variable and that
|
7
|
-
# a new set is spun up for each TestCase class
|
8
|
-
def ensure_rs(opts={})
|
9
|
-
unless defined?(@@current_class) and @@current_class == self.class
|
10
|
-
@@current_class = self.class
|
11
|
-
@@rs = ReplSetManager.new(opts)
|
12
|
-
@@rs.start_set
|
13
|
-
end
|
14
|
-
@rs = @@rs
|
15
|
-
end
|
16
|
-
|
17
|
-
# Generic code for rescuing connection failures and retrying operations.
|
18
|
-
# This could be combined with some timeout functionality.
|
19
|
-
def rescue_connection_failure(max_retries=30)
|
20
|
-
retries = 0
|
21
|
-
begin
|
22
|
-
yield
|
23
|
-
rescue Mongo::ConnectionFailure => ex
|
24
|
-
#puts "Rescue attempt #{retries}: from #{ex}"
|
25
|
-
retries += 1
|
26
|
-
raise ex if retries > max_retries
|
27
|
-
sleep(2)
|
28
|
-
retry
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
def build_seeds(num_hosts)
|
33
|
-
seeds = []
|
34
|
-
num_hosts.times do |n|
|
35
|
-
seeds << "#{@rs.host}:#{@rs.ports[n]}"
|
36
|
-
end
|
37
|
-
seeds
|
38
|
-
end
|
39
|
-
end
|
data/test/safe_test.rb
DELETED
@@ -1,68 +0,0 @@
|
|
1
|
-
require File.expand_path("../test_helper", __FILE__)
|
2
|
-
include Mongo
|
3
|
-
|
4
|
-
class SafeTest < Test::Unit::TestCase
|
5
|
-
context "Safe mode propogation: " do
|
6
|
-
setup do
|
7
|
-
@con = standard_connection(:safe => {:w => 1})
|
8
|
-
@db = @con[MONGO_TEST_DB]
|
9
|
-
@col = @db['test-safe']
|
10
|
-
@col.create_index([[:a, 1]], :unique => true)
|
11
|
-
@col.remove
|
12
|
-
end
|
13
|
-
|
14
|
-
should "propogate safe option on insert" do
|
15
|
-
@col.insert({:a => 1})
|
16
|
-
|
17
|
-
assert_raise_error(OperationFailure, "duplicate key") do
|
18
|
-
@col.insert({:a => 1})
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
should "allow safe override on insert" do
|
23
|
-
@col.insert({:a => 1})
|
24
|
-
@col.insert({:a => 1}, :safe => false)
|
25
|
-
end
|
26
|
-
|
27
|
-
should "propogate safe option on update" do
|
28
|
-
@col.insert({:a => 1})
|
29
|
-
@col.insert({:a => 2})
|
30
|
-
|
31
|
-
assert_raise_error(OperationFailure, "duplicate key") do
|
32
|
-
@col.update({:a => 2}, {:a => 1})
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
should "allow safe override on update" do
|
37
|
-
@col.insert({:a => 1})
|
38
|
-
@col.insert({:a => 2})
|
39
|
-
@col.update({:a => 2}, {:a => 1}, :safe => false)
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
context "Safe error objects" do
|
44
|
-
setup do
|
45
|
-
@con = standard_connection
|
46
|
-
@db = @con[MONGO_TEST_DB]
|
47
|
-
@col = @db['test']
|
48
|
-
@col.remove
|
49
|
-
@col.insert({:a => 1})
|
50
|
-
@col.insert({:a => 1})
|
51
|
-
@col.insert({:a => 1})
|
52
|
-
end
|
53
|
-
|
54
|
-
should "return object on update" do
|
55
|
-
response = @col.update({:a => 1}, {"$set" => {:a => 2}},
|
56
|
-
:multi => true, :safe => true)
|
57
|
-
|
58
|
-
assert response['updatedExisting']
|
59
|
-
assert_equal 3, response['n']
|
60
|
-
end
|
61
|
-
|
62
|
-
should "return object on remove" do
|
63
|
-
response = @col.remove({}, :safe => true)
|
64
|
-
assert_equal 3, response['n']
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
|
-
end
|
@@ -1,126 +0,0 @@
|
|
1
|
-
$:.unshift(File.expand_path('../../lib', File.dirname(__FILE__))).unshift(File.expand_path('../..', File.dirname(__FILE__)))
|
2
|
-
require 'test-unit'
|
3
|
-
require 'test/tools/mongo_config'
|
4
|
-
|
5
|
-
class MongoConfig < Test::Unit::TestCase
|
6
|
-
|
7
|
-
def self.suite
|
8
|
-
s = super
|
9
|
-
def s.setup
|
10
|
-
|
11
|
-
end
|
12
|
-
def s.teardown
|
13
|
-
|
14
|
-
end
|
15
|
-
def s.run(*args)
|
16
|
-
setup
|
17
|
-
super
|
18
|
-
teardown
|
19
|
-
end
|
20
|
-
s
|
21
|
-
end
|
22
|
-
|
23
|
-
test "config defaults" do
|
24
|
-
[ Mongo::Config::DEFAULT_BASE_OPTS,
|
25
|
-
Mongo::Config::DEFAULT_REPLICA_SET,
|
26
|
-
Mongo::Config::DEFAULT_SHARDED_SIMPLE,
|
27
|
-
Mongo::Config::DEFAULT_SHARDED_REPLICA
|
28
|
-
].each do |params|
|
29
|
-
config = Mongo::Config.cluster(params)
|
30
|
-
assert(config.size > 0)
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
test "get available port" do
|
35
|
-
assert_not_nil(Mongo::Config.get_available_port)
|
36
|
-
end
|
37
|
-
|
38
|
-
test "SysProc start" do
|
39
|
-
cmd = "true"
|
40
|
-
sys_proc = Mongo::Config::SysProc.new(cmd)
|
41
|
-
assert_equal(cmd, sys_proc.cmd)
|
42
|
-
assert_nil(sys_proc.pid)
|
43
|
-
assert_not_nil(sys_proc.start(0))
|
44
|
-
assert_not_nil(sys_proc.pid)
|
45
|
-
end
|
46
|
-
|
47
|
-
test "SysProc wait" do
|
48
|
-
sys_proc = Mongo::Config::SysProc.new("true")
|
49
|
-
assert_not_nil(sys_proc.start(0))
|
50
|
-
assert(sys_proc.running?)
|
51
|
-
sys_proc.wait
|
52
|
-
assert(!sys_proc.running?)
|
53
|
-
end
|
54
|
-
|
55
|
-
test "SysProc kill" do
|
56
|
-
sys_proc = Mongo::Config::SysProc.new("true")
|
57
|
-
assert_not_nil(sys_proc.start(0))
|
58
|
-
sys_proc.kill
|
59
|
-
sys_proc.wait
|
60
|
-
assert(!sys_proc.running?)
|
61
|
-
end
|
62
|
-
|
63
|
-
test "SysProc stop" do
|
64
|
-
sys_proc = Mongo::Config::SysProc.new("true")
|
65
|
-
assert_not_nil(sys_proc.start(0))
|
66
|
-
sys_proc.stop
|
67
|
-
assert(!sys_proc.running?)
|
68
|
-
end
|
69
|
-
|
70
|
-
test "Server" do
|
71
|
-
server = Mongo::Config::Server.new('a cmd', 'host', 1234)
|
72
|
-
assert_equal('a cmd', server.cmd)
|
73
|
-
assert_equal('host', server.host)
|
74
|
-
assert_equal(1234, server.port)
|
75
|
-
end
|
76
|
-
|
77
|
-
test "DbServer" do
|
78
|
-
config = Mongo::Config::DEFAULT_BASE_OPTS
|
79
|
-
server = Mongo::Config::DbServer.new(config)
|
80
|
-
assert_equal(config, server.config)
|
81
|
-
assert_equal("mongod --logpath data/log --dbpath data", server.cmd)
|
82
|
-
assert_equal(config[:host], server.host)
|
83
|
-
assert_equal(config[:port], server.port)
|
84
|
-
end
|
85
|
-
|
86
|
-
def cluster_test(opts)
|
87
|
-
#debug 1, opts.inspect
|
88
|
-
config = Mongo::Config.cluster(opts)
|
89
|
-
#debug 1, config.inspect
|
90
|
-
manager = Mongo::Config::ClusterManager.new(config)
|
91
|
-
assert_equal(config, manager.config)
|
92
|
-
manager.start
|
93
|
-
manager.servers.each{|s| p s}
|
94
|
-
manager.stop
|
95
|
-
manager.servers.each{|s| assert_equal(false, s.running?)}
|
96
|
-
manager.clobber
|
97
|
-
end
|
98
|
-
|
99
|
-
test "cluster manager base" do
|
100
|
-
#cluster_test(Mongo::Config::DEFAULT_BASE_OPTS)
|
101
|
-
end
|
102
|
-
|
103
|
-
test "cluster manager replica set" do
|
104
|
-
#cluster_test(Mongo::Config::DEFAULT_REPLICA_SET)
|
105
|
-
end
|
106
|
-
|
107
|
-
test "cluster manager sharded simple" do
|
108
|
-
#manager = Mongo::Config::ClusterManager.new(Mongo::Config.cluster(Mongo::Config::DEFAULT_SHARDED_SIMPLE)).start
|
109
|
-
opts = Mongo::Config::DEFAULT_SHARDED_SIMPLE
|
110
|
-
#debug 1, opts.inspect
|
111
|
-
config = Mongo::Config.cluster(opts)
|
112
|
-
#debug 1, config.inspect
|
113
|
-
manager = Mongo::Config::ClusterManager.new(config)
|
114
|
-
assert_equal(config, manager.config)
|
115
|
-
manager.start
|
116
|
-
#debug 1, manager.ismaster
|
117
|
-
#debug 1, manager.mongos_discover
|
118
|
-
manager.stop.clobber
|
119
|
-
end
|
120
|
-
|
121
|
-
test "cluster manager sharded replica" do
|
122
|
-
#cluster_test(Mongo::Config::DEFAULT_SHARDED_REPLICA)
|
123
|
-
end
|
124
|
-
|
125
|
-
end
|
126
|
-
|