added tests for purging stale services and minimal tests for command line tool

This commit is contained in:
James Kafader 2017-10-03 14:38:31 -07:00
parent dd5b2122cf
commit df7c0b8e32
3 changed files with 36 additions and 4 deletions

View File

@ -54,4 +54,5 @@ def purge_stale_services(argv=None):
rethinker = doublethink.Rethinker(servers=args.servers, db=args.database)
registry = doublethink.services.ServiceRegistry(rethinker)
registry.purge_stale_services()
registry.purge_stale_services()
sys.exit(0)

View File

@ -17,14 +17,25 @@ limitations under the License.
'''
import doublethink
import doublethink.cli
import logging
import sys
import pytest
import rethinkdb as r
import pkg_resources
logging.basicConfig(stream=sys.stderr, level=logging.INFO,
format="%(asctime)s %(process)d %(levelname)s %(threadName)s %(name)s.%(funcName)s(%(filename)s:%(lineno)d) %(message)s")
class RethinkerForTesting(doublethink.Rethinker):
def __init__(self, *args, **kwargs):
super(RethinkerForTesting, self).__init__(*args, **kwargs)
def _random_server_connection(self):
self.last_conn = super(RethinkerForTesting, self)._random_server_connection()
# logging.info("self.last_conn=%s", self.last_conn)
return self.last_conn
@pytest.fixture(scope="module")
def rr():
rr = RethinkerForTesting()
@ -37,6 +48,16 @@ def rr():
assert result["dbs_created"] == 1
return RethinkerForTesting(db="doublethink_test_db")
def test_cli(rr):
print(rr)
doublethink.cli.purge_stale_services(['test'])
def test_cli(capsys, rr):
entrypoint = pkg_resources.get_entry_map(
'doublethink')['console_scripts']['purge-stale-services']
callable = entrypoint.resolve()
with pytest.raises(SystemExit) as exit:
callable(['purge-stale-services'])
print(dir(exit))
assert exit.value.code != 0
out, err = capsys.readouterr()
with pytest.raises(SystemExit) as exit:
callable(['purge-stale-services', '-d', 'test'])
assert exit.value.code == 0
out, err = capsys.readouterr()

View File

@ -258,3 +258,13 @@ def test_svcreg_heartbeat_server_down(rr):
assert not 'host' in svc0
assert not 'pid' in svc0
def test_purge_stale_services(rr):
rr.table('services').delete().run()
rr.table('services').insert({ 'id': 'old-service', "last_heartbeat": r.now(), 'ttl': 0.4 }).run()
time.sleep(1)
rr.table('services').insert({ 'id': 'new-service', "last_heartbeat": r.now(), 'ttl': 0.4 }).run()
svcreg = doublethink.ServiceRegistry(rr)
assert rr.table('services').count().run() == 2
svcreg.purge_stale_services()
assert rr.table('services').count().run() == 1
rr.table('services').delete().run()