Skip to content

Commit c7890ba

Browse files
authored
Fix heartbeat test that fails on Windows (#142)
* Fix heartbeat test that fails on Windows * open connection to member directly instead of using a membership listener
1 parent c372db7 commit c7890ba

File tree

2 files changed

+24
-31
lines changed

2 files changed

+24
-31
lines changed

tests/heartbeat_test.py

Lines changed: 16 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
from hazelcast.core import Address
33
from tests.base import HazelcastTestCase
44
from hazelcast.config import ClientConfig, ClientProperties
5-
from tests.util import configure_logging
5+
from tests.util import configure_logging, open_connection_to_address
66

77

88
class HeartbeatTest(HazelcastTestCase):
@@ -31,46 +31,31 @@ def tearDown(self):
3131

3232
def test_heartbeat_stopped(self):
3333

34-
def member_added_func(m):
35-
def connection_callback(f):
36-
conn = f.result()
37-
self.simulate_heartbeat_lost(self.client, Address(conn._address[0], conn._address[1]), 2)
38-
39-
self.client.connection_manager.get_or_connect(m.address).add_done_callback(connection_callback)
40-
41-
self.client.cluster.add_listener(member_added=member_added_func)
42-
43-
def heartbeat_stopped_collector():
44-
connections = []
45-
46-
def connection_collector(c):
47-
connections.append(c)
48-
49-
connection_collector.connections = connections
50-
return connection_collector
51-
52-
def heartbeat_restored_collector():
34+
def connection_collector():
5335
connections = []
5436

55-
def connection_collector(c):
37+
def collector(c):
5638
connections.append(c)
5739

58-
connection_collector.connections = connections
59-
return connection_collector
40+
collector.connections = connections
41+
return collector
6042

61-
stopped_collector = heartbeat_stopped_collector()
62-
restored_collector = heartbeat_restored_collector()
43+
heartbeat_stopped_collector = connection_collector()
44+
heartbeat_restored_collector = connection_collector()
6345

64-
self.client.heartbeat.add_listener(on_heartbeat_stopped=stopped_collector,
65-
on_heartbeat_restored=restored_collector)
46+
self.client.heartbeat.add_listener(on_heartbeat_stopped=heartbeat_stopped_collector,
47+
on_heartbeat_restored=heartbeat_restored_collector)
6648

6749
member2 = self.rc.startMember(self.cluster.id)
50+
addr = Address(member2.host, member2.port)
51+
open_connection_to_address(self.client, addr)
52+
self.simulate_heartbeat_lost(self.client, addr, 2)
6853

6954
def assert_heartbeat_stopped_and_restored():
70-
self.assertEqual(1, len(stopped_collector.connections))
71-
self.assertEqual(1, len(restored_collector.connections))
72-
connection_stopped = stopped_collector.connections[0]
73-
connection_restored = restored_collector.connections[0]
55+
self.assertEqual(1, len(heartbeat_stopped_collector.connections))
56+
self.assertEqual(1, len(heartbeat_restored_collector.connections))
57+
connection_stopped = heartbeat_stopped_collector.connections[0]
58+
connection_restored = heartbeat_restored_collector.connections[0]
7459
self.assertEqual(connection_stopped._address, (member2.host, member2.port))
7560
self.assertEqual(connection_restored._address, (member2.host, member2.port))
7661

tests/util.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,3 +74,11 @@ def wrap_ob(ob):
7474
return ob
7575

7676
return wrap_ob
77+
78+
79+
def open_connection_to_address(client, address):
80+
key = generate_key_owned_by_instance(client, address)
81+
m = client.get_map(random_string()).blocking()
82+
m.put(key, 0)
83+
m.destroy()
84+

0 commit comments

Comments
 (0)