@@ -106,6 +106,37 @@ class PoolManagerUnitTest < Test::Unit::TestCase
106106 assert_equal [ [ 'localhost' , 27020 ] ] , manager . arbiters
107107 end
108108
109+ should "return clones of pool lists" do
110+
111+ @db . stubs ( :command ) . returns (
112+ # First call to get a socket.
113+ @ismaster . merge ( { 'ismaster' => true } ) ,
114+
115+ # Subsequent calls to configure pools.
116+ @ismaster . merge ( { 'ismaster' => true } ) ,
117+ @ismaster . merge ( { 'secondary' => true , 'maxBsonObjectSize' => 500 } ) ,
118+ @ismaster . merge ( { 'secondary' => true , 'maxMessageSizeBytes' => 700 } ) ,
119+ @ismaster . merge ( { 'arbiterOnly' => true } )
120+ )
121+
122+ seeds = [ [ 'localhost' , 27017 ] , [ 'localhost' , 27018 ] ]
123+ manager = Mongo ::PoolManager . new ( @client , seeds )
124+ @client . stubs ( :local_manager ) . returns ( manager )
125+ manager . connect
126+
127+ assert_not_equal manager . instance_variable_get ( :@arbiters ) . object_id , manager . arbiters . object_id
128+ assert_not_equal manager . instance_variable_get ( :@secondaries ) . object_id , manager . secondaries . object_id
129+ assert_not_equal manager . instance_variable_get ( :@secondary_pools ) . object_id , manager . secondary_pools . object_id
130+ assert_not_equal manager . instance_variable_get ( :@hosts ) . object_id , manager . hosts . object_id
131+ assert_not_equal manager . instance_variable_get ( :@pools ) . object_id , manager . pools . object_id
132+
133+ assert_not_equal manager . instance_variable_get ( :@arbiters ) . object_id , manager . state_snapshot [ :arbiters ] . object_id
134+ assert_not_equal manager . instance_variable_get ( :@secondaries ) . object_id , manager . state_snapshot [ :secondaries ] . object_id
135+ assert_not_equal manager . instance_variable_get ( :@secondary_pools ) . object_id , manager . state_snapshot [ :secondary_pools ] . object_id
136+ assert_not_equal manager . instance_variable_get ( :@hosts ) . object_id , manager . state_snapshot [ :hosts ] . object_id
137+ assert_not_equal manager . instance_variable_get ( :@pools ) . object_id , manager . state_snapshot [ :pools ] . object_id
138+ end
139+
109140 end
110141
111142end
0 commit comments