def _rerun_previous_statements(self): """ Helper to run all the remembered statements from the last transaction. """ for statement in self._statements: res_iter, retried_checksum = self.run_statement(statement, retried=True) # executing all the completed statements if statement != self._statements[-1]: for res in res_iter: retried_checksum.consume_result(res) _compare_checksums(statement.checksum, retried_checksum) # executing the failed statement else: # streaming up to the failed result or # to the end of the streaming iterator while len(retried_checksum) < len(statement.checksum): try: res = next(iter(res_iter)) retried_checksum.consume_result(res) except StopIteration: break _compare_checksums(statement.checksum, retried_checksum)
def test_less_results(self): from google.cloud.spanner_dbapi.checksum import _compare_checksums from google.cloud.spanner_dbapi.checksum import ResultsChecksum from google.cloud.spanner_dbapi.exceptions import RetryAborted original = ResultsChecksum() original.consume_result(5) retried = ResultsChecksum() with self.assertRaises(RetryAborted): _compare_checksums(original, retried)
def test_equal(self): from google.cloud.spanner_dbapi.checksum import _compare_checksums from google.cloud.spanner_dbapi.checksum import ResultsChecksum original = ResultsChecksum() original.consume_result(5) retried = ResultsChecksum() retried.consume_result(5) self.assertIsNone(_compare_checksums(original, retried))
def _rerun_previous_statements(self): """ Helper to run all the remembered statements from the last transaction. """ for statement in self._statements: if isinstance(statement, list): statements, checksum = statement transaction = self.transaction_checkout() status, res = transaction.batch_update(statements) if status.code == ABORTED: self.connection._transaction = None raise Aborted(status.details) retried_checksum = ResultsChecksum() retried_checksum.consume_result(res) retried_checksum.consume_result(status.code) _compare_checksums(checksum, retried_checksum) else: res_iter, retried_checksum = self.run_statement(statement, retried=True) # executing all the completed statements if statement != self._statements[-1]: for res in res_iter: retried_checksum.consume_result(res) _compare_checksums(statement.checksum, retried_checksum) # executing the failed statement else: # streaming up to the failed result or # to the end of the streaming iterator while len(retried_checksum) < len(statement.checksum): try: res = next(iter(res_iter)) retried_checksum.consume_result(res) except StopIteration: break _compare_checksums(statement.checksum, retried_checksum)