File tree Expand file tree Collapse file tree 3 files changed +25
-0
lines changed Expand file tree Collapse file tree 3 files changed +25
-0
lines changed Original file line number Diff line number Diff line change 176
176
end
177
177
end
178
178
179
+ context "clients connects and disconnect normally" do
180
+ let ( :processes ) { Helpers ::Pgcat . single_instance_setup ( "sharded_db" , 2 ) }
181
+
182
+ it 'shows the number same number of clients before and after' do
183
+ clients_before = clients_connected_to_pool ( processes : processes )
184
+ threads = [ ]
185
+ connections = Array . new ( 4 ) { PG ::connect ( "#{ pgcat_conn_str } ?application_name=one_query" ) }
186
+ connections . each do |c |
187
+ threads << Thread . new { c . async_exec ( "SELECT 1" ) }
188
+ end
189
+ clients_between = clients_connected_to_pool ( processes : processes )
190
+ expect ( clients_before ) . not_to eq ( clients_between )
191
+ connections . each ( &:close )
192
+ clients_after = clients_connected_to_pool ( processes : processes )
193
+ expect ( clients_before ) . to eq ( clients_after )
194
+ end
195
+ end
196
+
179
197
context "clients overwhelm server pools" do
180
198
let ( :processes ) { Helpers ::Pgcat . single_instance_setup ( "sharded_db" , 2 ) }
181
199
Original file line number Diff line number Diff line change @@ -19,3 +19,10 @@ def with_captured_stdout_stderr
19
19
STDOUT . reopen ( sout )
20
20
STDERR . reopen ( serr )
21
21
end
22
+
23
+ def clients_connected_to_pool ( pool_index : 0 , processes :)
24
+ admin_conn = PG ::connect ( processes . pgcat . admin_connection_string )
25
+ results = admin_conn . async_exec ( "SHOW POOLS" ) [ pool_index ]
26
+ admin_conn . close
27
+ results [ 'cl_idle' ] . to_i + results [ 'cl_active' ] . to_i + results [ 'cl_waiting' ] . to_i
28
+ end
You can’t perform that action at this time.
0 commit comments