Browse Source

add tests for riakcached.pools.Urllib3Pool

master
Brett Langdon 12 years ago
parent
commit
cdef23801b
1 changed files with 100 additions and 0 deletions
  1. +100
    -0
      riakcached/tests/test_urllib3pool.py

+ 100
- 0
riakcached/tests/test_urllib3pool.py View File

@ -0,0 +1,100 @@
import mock
import unittest2
import urllib3.exceptions
from riakcached import exceptions
from riakcached.pools import Urllib3Pool
class TestUrllib3Pool(unittest2.TestCase):
def setUp(self):
self.patched_connection_from_url = mock.patch("urllib3.connection_from_url")
self.connection_from_url = self.patched_connection_from_url.start()
def tearDown(self):
self.connection_from_url = self.patched_connection_from_url.stop()
def test_connect_sets_up_pool(self):
pool = Urllib3Pool()
self.assertTrue(pool.pool)
self.connection_from_url.assert_called()
self.connection_from_url.assert_called_with("http://127.0.0.1:8098")
def test_connect_with_different_url(self):
pool = Urllib3Pool(base_url="http://example.org:8098")
self.assertEqual(pool.url, "http://example.org:8098")
self.connection_from_url.assert_called()
self.connection_from_url.assert_called_with("http://example.org:8098")
def test_connect_auto_connect_doesnt_call_connect(self):
Urllib3Pool(auto_connect=False)
self.connection_from_url.assert_not_called()
def test_close_calls_pool_close(self):
pool = Urllib3Pool()
pool.close()
pool.pool.assert_called()
def test_request_calls_pool_urlopen(self):
pool = Urllib3Pool()
result = mock.Mock()
result.status = 200
result.data = ""
result.getheaders = lambda: {}
pool.pool.urlopen.return_value = result
self.assertEqual(pool.request("GET", "http://127.0.0.1:8098/stats"), (200, "", {}))
pool.pool.urlopen.assert_called_with(
method="GET",
url="http://127.0.0.1:8098/stats",
body=None,
headers=None,
timeout=2,
redirect=False,
)
def test_request_urlopen_with_headers_and_body(self):
pool = Urllib3Pool()
result = mock.Mock()
result.status = 200
result.data = ""
result.getheaders = lambda: {}
pool.pool.urlopen.return_value = result
self.assertEqual(
pool.request(
"POST", "http://127.0.0.1:8098/stats", body="test",
headers={"Content-Type": "application/test"}
),
(200, "", {})
)
pool.pool.urlopen.assert_called_with(
method="POST",
url="http://127.0.0.1:8098/stats",
body="test",
headers={
"Content-Type": "application/test",
},
timeout=2,
redirect=False,
)
def test_request_raise_timeout_error(self):
pool = Urllib3Pool()
timeout_error = urllib3.exceptions.TimeoutError(pool.pool, "http://127.0.0.1:8098/stats", "timeout")
pool.pool.urlopen.side_effect = timeout_error
self.assertRaises(
exceptions.RiakcachedTimeout,
pool.request,
"GET",
"http://127.0.0.1:8098/stats",
)
def test_request_raise_connections_error(self):
pool = Urllib3Pool()
http_error = urllib3.exceptions.HTTPError(pool.pool, "http://127.0.0.1:8098/stats", "error")
pool.pool.urlopen.side_effect = http_error
self.assertRaises(
exceptions.RiakcachedConnectionError,
pool.request,
"GET",
"http://127.0.0.1:8098/stats",
)

Loading…
Cancel
Save