Expose timeout capabilities and use them for tests
Change-Id: I5b6ee43e6a6b91859dacedb9791da74e247cd12b
This commit is contained in:
parent
4906e72416
commit
756d265232
|
@ -50,6 +50,13 @@ class Characteristics(enum.Enum):
|
|||
"""Coordinator components when used by multiple **hosts** work
|
||||
the same as if those components were only used by a single thread."""
|
||||
|
||||
NON_TIMEOUT_BASED = 'NON_TIMEOUT_BASED'
|
||||
"""The driver has the following property:
|
||||
|
||||
* Its operations are not based on the timeout of other clients, but on some
|
||||
other more robust mechanisms.
|
||||
"""
|
||||
|
||||
LINEARIZABLE = 'LINEARIZABLE'
|
||||
"""The driver has the following properties:
|
||||
|
||||
|
|
|
@ -205,6 +205,7 @@ class FileDriver(coordination._RunWatchersMixin,
|
|||
"""
|
||||
|
||||
CHARACTERISTICS = (
|
||||
coordination.Characteristics.NON_TIMEOUT_BASED,
|
||||
coordination.Characteristics.DISTRIBUTED_ACROSS_THREADS,
|
||||
coordination.Characteristics.DISTRIBUTED_ACROSS_PROCESSES,
|
||||
)
|
||||
|
|
|
@ -150,6 +150,7 @@ class IPCDriver(coordination.CoordinationDriver):
|
|||
"""
|
||||
|
||||
CHARACTERISTICS = (
|
||||
coordination.Characteristics.NON_TIMEOUT_BASED,
|
||||
coordination.Characteristics.DISTRIBUTED_ACROSS_THREADS,
|
||||
coordination.Characteristics.DISTRIBUTED_ACROSS_PROCESSES,
|
||||
)
|
||||
|
|
|
@ -105,6 +105,7 @@ class MySQLDriver(coordination.CoordinationDriver):
|
|||
"""
|
||||
|
||||
CHARACTERISTICS = (
|
||||
coordination.Characteristics.NON_TIMEOUT_BASED,
|
||||
coordination.Characteristics.DISTRIBUTED_ACROSS_THREADS,
|
||||
coordination.Characteristics.DISTRIBUTED_ACROSS_PROCESSES,
|
||||
coordination.Characteristics.DISTRIBUTED_ACROSS_HOSTS,
|
||||
|
|
|
@ -161,6 +161,7 @@ class PostgresDriver(coordination.CoordinationDriver):
|
|||
"""
|
||||
|
||||
CHARACTERISTICS = (
|
||||
coordination.Characteristics.NON_TIMEOUT_BASED,
|
||||
coordination.Characteristics.DISTRIBUTED_ACROSS_THREADS,
|
||||
coordination.Characteristics.DISTRIBUTED_ACROSS_PROCESSES,
|
||||
coordination.Characteristics.DISTRIBUTED_ACROSS_HOSTS,
|
||||
|
|
|
@ -33,6 +33,7 @@ class ZakeDriver(zookeeper.KazooDriver):
|
|||
"""
|
||||
|
||||
CHARACTERISTICS = (
|
||||
coordination.Characteristics.NON_TIMEOUT_BASED,
|
||||
coordination.Characteristics.DISTRIBUTED_ACROSS_THREADS,
|
||||
)
|
||||
"""
|
||||
|
|
|
@ -435,6 +435,7 @@ class KazooDriver(BaseZooKeeperDriver):
|
|||
"""
|
||||
|
||||
CHARACTERISTICS = (
|
||||
coordination.Characteristics.NON_TIMEOUT_BASED,
|
||||
coordination.Characteristics.DISTRIBUTED_ACROSS_THREADS,
|
||||
coordination.Characteristics.DISTRIBUTED_ACROSS_PROCESSES,
|
||||
coordination.Characteristics.DISTRIBUTED_ACROSS_HOSTS,
|
||||
|
|
|
@ -47,13 +47,11 @@ class TestAPI(testscenarios.TestWithScenarios,
|
|||
'bad_url': 'kazoo://localhost:1'}),
|
||||
('zake', {'url': 'zake://?timeout=5'}),
|
||||
('memcached', {'url': os.getenv("TOOZ_TEST_MEMCACHED_URL"),
|
||||
'bad_url': 'memcached://localhost:1',
|
||||
'timeout_capable': True}),
|
||||
'bad_url': 'memcached://localhost:1'}),
|
||||
('ipc', {'url': 'ipc://'}),
|
||||
('file', {'url': 'file:///tmp'}),
|
||||
('redis', {'url': os.getenv("TOOZ_TEST_REDIS_URL"),
|
||||
'bad_url': 'redis://localhost:1',
|
||||
'timeout_capable': True}),
|
||||
'bad_url': 'redis://localhost:1'}),
|
||||
('postgresql', {'url': os.getenv("TOOZ_TEST_POSTGRESQL_URL"),
|
||||
'bad_url': 'postgresql://localhost:1'}),
|
||||
('mysql', {'url': os.getenv("TOOZ_TEST_MYSQL_URL"),
|
||||
|
@ -377,8 +375,9 @@ class TestAPI(testscenarios.TestWithScenarios,
|
|||
self.assertTrue(member_id_test2 not in members_ids)
|
||||
|
||||
def test_timeout(self):
|
||||
if not getattr(self, "timeout_capable", False):
|
||||
self.skipTest("This test only works with timeout capable drivers")
|
||||
if (tooz.coordination.Characteristics.NON_TIMEOUT_BASED
|
||||
in self._coord.CHARACTERISTICS):
|
||||
self.skipTest("This driver is not based on timeout")
|
||||
self._coord.stop()
|
||||
if "?" in self.url:
|
||||
sep = "&"
|
||||
|
|
Loading…
Reference in New Issue