This commit is contained in:
Noah Levitt 2015-09-29 22:07:50 +00:00
parent 5ed8a7a050
commit 24edeb3247
2 changed files with 23 additions and 3 deletions

View File

@ -15,6 +15,9 @@ class RethinkerWrapper(object):
delegate = getattr(self.wrapped, name)
return self.rethinker.wrap(delegate)
def __getitem__(self, key):
return self.rethinker.wrap(self.wrapped.__getitem__)(key)
def __repr__(self):
return "<RethinkerWrapper{}>".format(repr(self.wrapped))
@ -73,7 +76,7 @@ class Rethinker(object):
except ValueError:
return r.connect(host=server)
except Exception as e:
self.logger.error('will keep trying to get a connection after failure connecting to %s', server, exc_info=True)
self.logger.error('will keep trying to get a connection after failure connecting to %s: %s', server, e)
time.sleep(0.5)
def wrap(self, delegate):

View File

@ -18,18 +18,22 @@ class RethinkerForTesting(rethinkstuff.Rethinker):
# logging.info("self.last_conn=%s", self.last_conn)
return self.last_conn
def test_rethinker():
@pytest.fixture(scope="module")
def r():
r = RethinkerForTesting()
result = r.db_create("my_db").run()
assert not r.last_conn.is_open()
assert result["dbs_created"] == 1
return RethinkerForTesting(db="my_db")
r = RethinkerForTesting(db="my_db")
@pytest.fixture(scope="module")
def my_table(r):
assert r.table_list().run() == []
result = r.table_create("my_table").run()
assert not r.last_conn.is_open()
assert result["tables_created"] == 1
def test_rethinker(r, my_table):
assert r.table("my_table").index_create("foo").run() == {"created": 1}
assert not r.last_conn.is_open()
@ -66,8 +70,21 @@ def test_rethinker():
# connection should be closed after result is garbage-collected
assert not r.last_conn.is_open()
def test_too_many_errors(r):
with pytest.raises(rethinkdb.errors.ReqlOpFailedError):
r.table_create("too_many_replicas", replicas=99).run()
with pytest.raises(rethinkdb.errors.ReqlOpFailedError):
r.table_create("too_many_shards", shards=99).run()
def test_slice(r, my_table):
"""Tests RethinkerWrapper.__getitem__()"""
result = r.table("my_table")[5:10].run()
assert r.last_conn.is_open() # should still be open this time
assert isinstance(result, types.GeneratorType)
n = 0
for x in result:
n += 1
pass
# connection should be closed after finished iterating over results
assert not r.last_conn.is_open()
assert n == 5