Skip to content

Commit b131bf2

Browse files
authored
RUBY-1494 Add server addresses to replica set topology summaries (#1067)
1 parent e6aef77 commit b131bf2

14 files changed

+102
-5
lines changed

lib/mongo/cluster/topology/replica_set_no_primary.rb

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,18 @@ def display_name
4646
# @api experimental
4747
# @since 2.7.0
4848
def summary
49-
"#{display_name.gsub(' ', '')}[name=#{replica_set_name},v=#{@max_set_version},e=#{@max_election_id && @max_election_id.to_s.sub(/^0+/, '')}]"
49+
details = server_descriptions.keys.join(',')
50+
if details != ''
51+
details << ','
52+
end
53+
details << "name=#{replica_set_name}"
54+
if max_set_version
55+
details << ",v=#{max_set_version}"
56+
end
57+
if max_election_id
58+
details << ",e=#{max_election_id && max_election_id.to_s.sub(/^0+/, '')}"
59+
end
60+
"#{display_name}[#{details}]"
5061
end
5162

5263
# Determine if the topology would select a readable server for the

lib/mongo/cluster/topology/sharded.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,8 @@ def display_name
4444
# @api experimental
4545
# @since 2.7.0
4646
def summary
47-
display_name.gsub(' ', '')
47+
details = server_descriptions.keys.join(',')
48+
"#{display_name}[#{details}]"
4849
end
4950

5051
# Determine if the topology would select a readable server for the

lib/mongo/cluster/topology/single.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,8 @@ def display_name
4444
# @api experimental
4545
# @since 2.7.0
4646
def summary
47-
display_name
47+
details = server_descriptions.keys.join(',')
48+
"#{display_name}[#{details}]"
4849
end
4950

5051
# Determine if the topology would select a readable server for the

lib/mongo/cluster/topology/unknown.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,8 @@ def display_name
4444
# @api experimental
4545
# @since 2.7.0
4646
def summary
47-
"#{display_name}[#{addresses.join(', ')}]"
47+
details = server_descriptions.keys.join(',')
48+
"#{display_name}[#{details}]"
4849
end
4950

5051
# Determine if the topology would select a readable server for the

spec/mongo/cluster/topology/replica_set_spec.rb

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -505,4 +505,34 @@
505505
end
506506
end
507507
end
508+
509+
describe '#summary' do
510+
let(:desc) do
511+
Mongo::Server::Description.new(Mongo::Address.new('127.0.0.2:27017'))
512+
end
513+
514+
let(:topology) do
515+
described_class.new({replica_set_name: 'foo'}, monitoring, temp_cluster)
516+
end
517+
518+
it 'renders correctly' do
519+
expect(topology).to receive(:server_descriptions).and_return({desc.address.to_s => desc})
520+
expect(topology.summary).to eq('ReplicaSetNoPrimary[127.0.0.2:27017,name=foo]')
521+
end
522+
523+
context 'with max set version and max election id' do
524+
let(:topology) do
525+
described_class.new({
526+
replica_set_name: 'foo',
527+
max_set_version: 5,
528+
max_election_id: BSON::ObjectId.from_string('7fffffff0000000000000042'),
529+
}, monitoring, temp_cluster)
530+
end
531+
532+
it 'renders correctly' do
533+
expect(topology).to receive(:server_descriptions).and_return({desc.address.to_s => desc})
534+
expect(topology.summary).to eq('ReplicaSetNoPrimary[127.0.0.2:27017,name=foo,v=5,e=7fffffff0000000000000042]')
535+
end
536+
end
537+
end
508538
end

spec/mongo/cluster/topology/sharded_spec.rb

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,4 +109,21 @@
109109
expect(topology).to have_writable_server(nil)
110110
end
111111
end
112+
113+
describe '#summary' do
114+
let(:desc1) do
115+
Mongo::Server::Description.new(Mongo::Address.new('127.0.0.2:27017'))
116+
end
117+
118+
let(:desc2) do
119+
Mongo::Server::Description.new(Mongo::Address.new('127.0.0.2:27027'))
120+
end
121+
122+
it 'renders correctly' do
123+
expect(topology).to receive(:server_descriptions).and_return({
124+
desc1.address.to_s => desc1, desc2.address.to_s => desc2,
125+
})
126+
expect(topology.summary).to eq('Sharded[127.0.0.2:27017,127.0.0.2:27027]')
127+
end
128+
end
112129
end

spec/mongo/cluster/topology/single_spec.rb

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,4 +114,15 @@
114114
expect(topology).to have_writable_server(nil)
115115
end
116116
end
117+
118+
describe '#summary' do
119+
let(:desc) do
120+
Mongo::Server::Description.new(Mongo::Address.new('127.0.0.2:27017'))
121+
end
122+
123+
it 'renders correctly' do
124+
expect(topology).to receive(:server_descriptions).and_return({desc.address.to_s => desc})
125+
expect(topology.summary).to eq('Single[127.0.0.2:27017]')
126+
end
127+
end
117128
end

spec/mongo/cluster/topology/unknown_spec.rb

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,4 +70,15 @@
7070
expect(topology).to_not have_writable_server(nil)
7171
end
7272
end
73+
74+
describe '#summary' do
75+
let(:desc) do
76+
Mongo::Server::Description.new(Mongo::Address.new('127.0.0.2:27017'))
77+
end
78+
79+
it 'renders correctly' do
80+
expect(topology).to receive(:server_descriptions).and_return({desc.address.to_s => desc})
81+
expect(topology.summary).to eq('Unknown[127.0.0.2:27017]')
82+
end
83+
end
7384
end

spec/mongo/monitoring/event/server_closed_spec.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@
2525

2626
describe '#summary' do
2727
it 'renders correctly' do
28+
expect(topology).to receive(:server_descriptions).and_return({
29+
'127.0.0.1:27017' => Mongo::Server::Description.new(Mongo::Address.new('127.0.0.1:27017'))})
2830
expect(event.summary).to eq('#<ServerClosed address=127.0.0.1:27017 topology=Unknown[127.0.0.1:27017]>')
2931
end
3032
end

spec/mongo/monitoring/event/server_description_changed_spec.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@
2828

2929
describe '#summary' do
3030
it 'renders correctly' do
31+
expect(topology).to receive(:server_descriptions).and_return({
32+
'127.0.0.1:27017' => Mongo::Server::Description.new(Mongo::Address.new('127.0.0.1:27017'))})
3133
expect(event.summary).to eq("#<ServerDescriptionChanged address=127.0.0.1:27017 topology=Unknown[127.0.0.1:27017] prev=#{previous_desc.inspect} new=#{updated_desc.inspect}>")
3234
end
3335
end

0 commit comments

Comments
 (0)