(self)
| 149 | |
| 150 | def create_op_msg_read_mode_test(mode, operation): |
| 151 | def test(self): |
| 152 | pref = make_read_preference(read_pref_mode_from_name(mode), tag_sets=None) |
| 153 | |
| 154 | client = self.setup_client(read_preference=pref) |
| 155 | expected_pref: Any |
| 156 | if operation.op_type == "always-use-secondary": |
| 157 | expected_server = self.secondary |
| 158 | expected_pref = ReadPreference.SECONDARY |
| 159 | elif operation.op_type == "must-use-primary": |
| 160 | expected_server = self.primary |
| 161 | expected_pref = None |
| 162 | elif operation.op_type == "may-use-secondary": |
| 163 | if mode == "primary": |
| 164 | expected_server = self.primary |
| 165 | expected_pref = None |
| 166 | elif mode == "primaryPreferred": |
| 167 | expected_server = self.primary |
| 168 | expected_pref = pref |
| 169 | else: |
| 170 | expected_server = self.secondary |
| 171 | expected_pref = pref |
| 172 | else: |
| 173 | self.fail("unrecognized op_type %r" % operation.op_type) |
| 174 | # For single mongod we omit the read preference. |
| 175 | if self.single_mongod: |
| 176 | expected_pref = None |
| 177 | with going(operation.function, client): |
| 178 | request = expected_server.receive() |
| 179 | request.reply(operation.reply) |
| 180 | |
| 181 | actual_pref = request.doc.get("$readPreference") |
| 182 | if expected_pref: |
| 183 | self.assertEqual(expected_pref.document, actual_pref) |
| 184 | else: |
| 185 | self.assertIsNone(actual_pref) |
| 186 | self.assertNotIn("$query", request.doc) |
| 187 | |
| 188 | return test |
| 189 |
nothing calls this directly
no test coverage detected