mongo 1.7.1 → 1.8.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
-
|