diff options
author | ThibG <thib@sitedethib.com> | 2019-07-07 22:26:10 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-07-07 22:26:10 +0200 |
commit | fce885f271f8651702d606406e21677280071e40 (patch) | |
tree | 2ebb76c77088edf0662ef333523ef0f0a03b6c4e /spec/lib/connection_pool/shared_timed_stack_spec.rb | |
parent | e5f4d83e60305e2f502f18f507ad79d8fbccfe77 (diff) | |
parent | 5ff9970c8d4acfb69b4696a3b5ce8e2a9580e370 (diff) |
Merge pull request #1152 from ThibG/glitch-soc/merge-upstream
Merge upstream changes
Diffstat (limited to 'spec/lib/connection_pool/shared_timed_stack_spec.rb')
-rw-r--r-- | spec/lib/connection_pool/shared_timed_stack_spec.rb | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/spec/lib/connection_pool/shared_timed_stack_spec.rb b/spec/lib/connection_pool/shared_timed_stack_spec.rb new file mode 100644 index 000000000..f680c5966 --- /dev/null +++ b/spec/lib/connection_pool/shared_timed_stack_spec.rb @@ -0,0 +1,61 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe ConnectionPool::SharedTimedStack do + class MiniConnection + attr_reader :site + + def initialize(site) + @site = site + end + end + + subject { described_class.new(5) { |site| MiniConnection.new(site) } } + + describe '#push' do + it 'keeps the connection in the stack' do + subject.push(MiniConnection.new('foo')) + expect(subject.size).to eq 1 + end + end + + describe '#pop' do + it 'returns a connection' do + expect(subject.pop('foo')).to be_a MiniConnection + end + + it 'returns the same connection that was pushed in' do + connection = MiniConnection.new('foo') + subject.push(connection) + expect(subject.pop('foo')).to be connection + end + + it 'does not create more than maximum amount of connections' do + expect { 6.times { subject.pop('foo', 0) } }.to raise_error Timeout::Error + end + + it 'repurposes a connection for a different site when maximum amount is reached' do + 5.times { subject.push(MiniConnection.new('foo')) } + expect(subject.pop('bar')).to be_a MiniConnection + end + end + + describe '#empty?' do + it 'returns true when no connections on the stack' do + expect(subject.empty?).to be true + end + + it 'returns false when there are connections on the stack' do + subject.push(MiniConnection.new('foo')) + expect(subject.empty?).to be false + end + end + + describe '#size' do + it 'returns the number of connections on the stack' do + 2.times { subject.push(MiniConnection.new('foo')) } + expect(subject.size).to eq 2 + end + end +end |