mirror of
https://github.com/internetarchive/warcprox.git
synced 2025-01-18 13:22:09 +01:00
support array slice notation https://rethinkdb.com/api/python/slice/
This commit is contained in:
parent
5ed8a7a050
commit
24edeb3247
@ -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):
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user