From f7be52f63af7a0d4c21a020726d4958e5357c989 Mon Sep 17 00:00:00 2001 From: Alexander Kukushkin Date: Tue, 23 Jun 2015 17:15:37 +0200 Subject: [PATCH] real_ttl method will return -1 when expiration is not defined --- helpers/etcd.py | 2 +- helpers/utils.py | 6 ++++++ tests/test_etcd.py | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/helpers/etcd.py b/helpers/etcd.py index 0a1f7cb7..495046f1 100644 --- a/helpers/etcd.py +++ b/helpers/etcd.py @@ -31,7 +31,7 @@ class Member(namedtuple('Member', 'name,conn_url,api_url,expiration,ttl')): return Member(node['key'].split('/')[-1], conn_url, api_url, expiration, ttl) def real_ttl(self): - return calculate_ttl(self.expiration) + return calculate_ttl(self.expiration) or -1 class Cluster(namedtuple('Cluster', 'initialize,leader,last_leader_operation,members')): diff --git a/helpers/utils.py b/helpers/utils.py index c12f389a..5f09490e 100644 --- a/helpers/utils.py +++ b/helpers/utils.py @@ -28,6 +28,12 @@ def parse_datetime(time_str): def calculate_ttl(expiration): + """ + >>> calculate_ttl(None) + >>> calculate_ttl('2015-06-10 12:56:30.552539016Z') + """ + if not expiration: + return None expiration = parse_datetime(expiration) if not expiration: return None diff --git a/tests/test_etcd.py b/tests/test_etcd.py index b9e88df7..09dac847 100644 --- a/tests/test_etcd.py +++ b/tests/test_etcd.py @@ -104,7 +104,7 @@ class TestMember(unittest.TestCase): now = datetime.datetime.utcnow() member = Member('a', 'b', 'c', (now + datetime.timedelta(seconds=2)).strftime('%Y-%m-%dT%H:%M:%S.%fZ'), None) self.assertLess(member.real_ttl(), 2) - self.assertIsNone(Member('a', 'b', 'c', '', None).real_ttl()) + self.assertEquals(Member('a', 'b', 'c', '', None).real_ttl(), -1) class TestClient(unittest.TestCase):