/test/protocol/test_binary.rb
http://github.com/mperham/dalli · Ruby · 121 lines · 104 code · 16 blank · 1 comment · 0 complexity · a73bd269b64b4c967e930a49b9d190c0 MD5 · raw file
- # frozen_string_literal: true
- require 'ostruct'
- require_relative '../helper'
- describe Dalli::Protocol::Binary do
- describe 'hostname parsing' do
- it 'handles unix socket with no weight' do
- s = Dalli::Protocol::Binary.new('/var/run/memcached/sock')
- assert_equal '/var/run/memcached/sock', s.hostname
- assert_equal 1, s.weight
- assert_equal :unix, s.socket_type
- end
- it 'handles unix socket with a weight' do
- s = Dalli::Protocol::Binary.new('/var/run/memcached/sock:2')
- assert_equal '/var/run/memcached/sock', s.hostname
- assert_equal 2, s.weight
- assert_equal :unix, s.socket_type
- end
- it 'handles no port or weight' do
- s = Dalli::Protocol::Binary.new('localhost')
- assert_equal 'localhost', s.hostname
- assert_equal 11_211, s.port
- assert_equal 1, s.weight
- assert_equal :tcp, s.socket_type
- end
- it 'handles a port, but no weight' do
- s = Dalli::Protocol::Binary.new('localhost:11212')
- assert_equal 'localhost', s.hostname
- assert_equal 11_212, s.port
- assert_equal 1, s.weight
- assert_equal :tcp, s.socket_type
- end
- it 'handles a port and a weight' do
- s = Dalli::Protocol::Binary.new('localhost:11212:2')
- assert_equal 'localhost', s.hostname
- assert_equal 11_212, s.port
- assert_equal 2, s.weight
- assert_equal :tcp, s.socket_type
- end
- it 'handles ipv4 addresses' do
- s = Dalli::Protocol::Binary.new('127.0.0.1')
- assert_equal '127.0.0.1', s.hostname
- assert_equal 11_211, s.port
- assert_equal 1, s.weight
- assert_equal :tcp, s.socket_type
- end
- it 'handles ipv6 addresses' do
- s = Dalli::Protocol::Binary.new('[::1]')
- assert_equal '::1', s.hostname
- assert_equal 11_211, s.port
- assert_equal 1, s.weight
- assert_equal :tcp, s.socket_type
- end
- it 'handles ipv6 addresses with port' do
- s = Dalli::Protocol::Binary.new('[::1]:11212')
- assert_equal '::1', s.hostname
- assert_equal 11_212, s.port
- assert_equal 1, s.weight
- assert_equal :tcp, s.socket_type
- end
- it 'handles ipv6 addresses with port and weight' do
- s = Dalli::Protocol::Binary.new('[::1]:11212:2')
- assert_equal '::1', s.hostname
- assert_equal 11_212, s.port
- assert_equal 2, s.weight
- assert_equal :tcp, s.socket_type
- end
- it 'handles a FQDN' do
- s = Dalli::Protocol::Binary.new('my.fqdn.com')
- assert_equal 'my.fqdn.com', s.hostname
- assert_equal 11_211, s.port
- assert_equal 1, s.weight
- assert_equal :tcp, s.socket_type
- end
- it 'handles a FQDN with port and weight' do
- s = Dalli::Protocol::Binary.new('my.fqdn.com:11212:2')
- assert_equal 'my.fqdn.com', s.hostname
- assert_equal 11_212, s.port
- assert_equal 2, s.weight
- assert_equal :tcp, s.socket_type
- end
- it 'throws an exception if the hostname cannot be parsed' do
- expect(-> { Dalli::Protocol::Binary.new('[]') }).must_raise Dalli::DalliError
- expect(-> { Dalli::Protocol::Binary.new('my.fqdn.com:') }).must_raise Dalli::DalliError
- expect(-> { Dalli::Protocol::Binary.new('my.fqdn.com:11212,:2') }).must_raise Dalli::DalliError
- expect(-> { Dalli::Protocol::Binary.new('my.fqdn.com:11212:abc') }).must_raise Dalli::DalliError
- end
- end
- describe 'pipeline_next_responses' do
- subject { Dalli::Protocol::Binary.new('127.0.0.1') }
- it 'raises NetworkError when called before pipeline_response_setup' do
- assert_raises Dalli::NetworkError do
- subject.request(:pipelined_get, %w[a b])
- subject.pipeline_next_responses
- end
- end
- it 'raises NetworkError when called after pipeline_abort' do
- assert_raises Dalli::NetworkError do
- subject.request(:pipelined_get, %w[a b])
- subject.pipeline_response_setup
- subject.pipeline_abort
- subject.pipeline_next_responses
- end
- end
- end
- end