Skip to content

Commit 922165d

Browse files
author
A. Jesse Jiryu Davis
committed
More reliable test_primary_stepdown
1 parent 460c8be commit 922165d

File tree

1 file changed

+17
-11
lines changed

1 file changed

+17
-11
lines changed

test/high_availability/test_ha.py

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -360,18 +360,24 @@ def test_primary_stepdown(self):
360360
self.seed, replicaSet=self.name, use_greenlets=use_greenlets)
361361
self.assertTrue(bool(len(c.secondaries)))
362362
primary = c.primary
363-
secondaries = c.secondaries.copy()
364-
365-
def primary_changed():
366-
for _ in xrange(30):
367-
if c.primary != primary:
368-
return True
369-
sleep(1)
370-
return False
371-
372363
ha_tools.stepdown_primary()
373-
self.assertTrue(primary_changed())
374-
self.assertNotEqual(secondaries, c.secondaries)
364+
365+
# Wait for new primary
366+
patience_seconds = 30
367+
for _ in xrange(patience_seconds):
368+
sleep(1)
369+
rs_state = c._MongoReplicaSetClient__rs_state
370+
if rs_state.writer and rs_state.writer != primary:
371+
# New primary stepped up
372+
new_primary = _partition_node(ha_tools.get_primary())
373+
self.assertEqual(new_primary, rs_state.writer)
374+
new_secondaries = partition_nodes(ha_tools.get_secondaries())
375+
self.assertEqual(set(new_secondaries), rs_state.secondaries)
376+
break
377+
else:
378+
self.fail(
379+
"No new primary after %s seconds. Old primary was %s, current"
380+
" is %s" % (patience_seconds, primary, ha_tools.get_primary()))
375381

376382

377383
class TestWritesWithFailover(HATestCase):

0 commit comments

Comments
 (0)