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)
|
delegate = getattr(self.wrapped, name)
|
||||||
return self.rethinker.wrap(delegate)
|
return self.rethinker.wrap(delegate)
|
||||||
|
|
||||||
|
def __getitem__(self, key):
|
||||||
|
return self.rethinker.wrap(self.wrapped.__getitem__)(key)
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return "<RethinkerWrapper{}>".format(repr(self.wrapped))
|
return "<RethinkerWrapper{}>".format(repr(self.wrapped))
|
||||||
|
|
||||||
@ -73,7 +76,7 @@ class Rethinker(object):
|
|||||||
except ValueError:
|
except ValueError:
|
||||||
return r.connect(host=server)
|
return r.connect(host=server)
|
||||||
except Exception as e:
|
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)
|
time.sleep(0.5)
|
||||||
|
|
||||||
def wrap(self, delegate):
|
def wrap(self, delegate):
|
||||||
|
@ -18,18 +18,22 @@ class RethinkerForTesting(rethinkstuff.Rethinker):
|
|||||||
# logging.info("self.last_conn=%s", self.last_conn)
|
# logging.info("self.last_conn=%s", self.last_conn)
|
||||||
return self.last_conn
|
return self.last_conn
|
||||||
|
|
||||||
def test_rethinker():
|
@pytest.fixture(scope="module")
|
||||||
|
def r():
|
||||||
r = RethinkerForTesting()
|
r = RethinkerForTesting()
|
||||||
result = r.db_create("my_db").run()
|
result = r.db_create("my_db").run()
|
||||||
assert not r.last_conn.is_open()
|
assert not r.last_conn.is_open()
|
||||||
assert result["dbs_created"] == 1
|
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() == []
|
assert r.table_list().run() == []
|
||||||
result = r.table_create("my_table").run()
|
result = r.table_create("my_table").run()
|
||||||
assert not r.last_conn.is_open()
|
assert not r.last_conn.is_open()
|
||||||
assert result["tables_created"] == 1
|
assert result["tables_created"] == 1
|
||||||
|
|
||||||
|
def test_rethinker(r, my_table):
|
||||||
assert r.table("my_table").index_create("foo").run() == {"created": 1}
|
assert r.table("my_table").index_create("foo").run() == {"created": 1}
|
||||||
assert not r.last_conn.is_open()
|
assert not r.last_conn.is_open()
|
||||||
|
|
||||||
@ -66,8 +70,21 @@ def test_rethinker():
|
|||||||
# connection should be closed after result is garbage-collected
|
# connection should be closed after result is garbage-collected
|
||||||
assert not r.last_conn.is_open()
|
assert not r.last_conn.is_open()
|
||||||
|
|
||||||
|
def test_too_many_errors(r):
|
||||||
with pytest.raises(rethinkdb.errors.ReqlOpFailedError):
|
with pytest.raises(rethinkdb.errors.ReqlOpFailedError):
|
||||||
r.table_create("too_many_replicas", replicas=99).run()
|
r.table_create("too_many_replicas", replicas=99).run()
|
||||||
with pytest.raises(rethinkdb.errors.ReqlOpFailedError):
|
with pytest.raises(rethinkdb.errors.ReqlOpFailedError):
|
||||||
r.table_create("too_many_shards", shards=99).run()
|
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