Check an odd corner of Read Prefs spec: a PRIMARY read followed by SECONDARY_PREFERRED goes to secondary and vice versa.

This commit is contained in:
A. Jesse Jiryu Davis 2012-10-26 16:40:47 -04:00
parent 97c6fe1a54
commit 1c69bb5fd5

View File

@ -778,10 +778,18 @@ class TestConnection(TestConnectionReplicaSetBase):
self.assertTrue(host in conn.secondaries)
assertReadFrom(self, conn, host, ReadPreference.SECONDARY)
# Oddly, we expect PRIMARY_PREFERRED to keep reading from secondary,
# since the secondary is pinned and "matches" the preference.
assertReadFrom(self, conn, host, ReadPreference.PRIMARY_PREFERRED)
# Repin
primary = read_from_which_host(conn, ReadPreference.PRIMARY)
self.assertEqual(conn.primary, primary)
assertReadFrom(self, conn, primary, ReadPreference.NEAREST)
assertReadFrom(self, conn, primary, ReadPreference.PRIMARY_PREFERRED)
# Since the we're pinned to primary we still use it
assertReadFrom(self, conn, primary, ReadPreference.SECONDARY_PREFERRED)
# Repin again
host = read_from_which_host(conn, ReadPreference.SECONDARY)