def update(self, changed_workflows, reindex_security=True, savepoints=None): types = self.get_suspected_types(changed_workflows) objects = SavepointIterator.build(self.lookup_objects(types), savepoints) for obj in objects: if self.obj_has_workflow(obj, changed_workflows): update_security_for(obj, reindex_security=reindex_security)
def objects(self, catalog_query, message, logger=None, savepoints=None): """Queries the catalog (unrestricted) and an iterator with full objects. The iterator configures and calls a ``ProgressLogger`` with the passed ``message``. """ objects = self.catalog_unrestricted_search(catalog_query, full_objects=True) objects = SavepointIterator.build(objects, savepoints, logger) return ProgressLogger(message, objects, logger=logger)
def objects(self, catalog_query, message, logger=None, savepoints=None): """Queries the catalog (unrestricted) and an iterator with full objects. The iterator configures and calls a ``ProgressLogger`` with the passed ``message``. """ objects = self.catalog_unrestricted_search( catalog_query, full_objects=True) objects = SavepointIterator.build(objects, savepoints, logger) return ProgressLogger(message, objects, logger=logger)
def test_creates_savepoints(self): self.assertEqual( 0, self.txn._savepoint_index, 'A new transaction should not have any savepoints yet') iterator = SavepointIterator.build(self.iterable, threshold=5) # Consume entire iterator result = list(iterator) self.assertEqual(self.iterable, result, 'Iterator should yield every item of `iterable`') self.assertEqual(1, self.txn._savepoint_index, 'One savepoint should have been created')
def test_doesnt_create_savepoints_with_threshold_0(self): self.assertEqual( 0, self.txn._savepoint_index, 'A new transaction should not have any savepoints yet') iterator = SavepointIterator.build(self.iterable, threshold=0) # Consume entire iterator result = list(iterator) self.assertEqual(self.iterable, result, 'Iterator should yield every item of `iterable`') self.assertEqual(0, self.txn._savepoint_index, 'threshold=0 should never create any savepoints')
def test_doesnt_create_savepoints_with_threshold_0(self): self.assertEquals( 0, self.txn._savepoint_index, 'A new transaction should not have any savepoints yet') iterator = SavepointIterator.build(self.iterable, threshold=0) # Consume entire iterator result = list(iterator) self.assertEquals( self.iterable, result, 'Iterator should yield every item of `iterable`') self.assertEquals( 0, self.txn._savepoint_index, 'threshold=0 should never create any savepoints')
def test_creates_savepoints(self): self.assertEquals( 0, self.txn._savepoint_index, 'A new transaction should not have any savepoints yet') iterator = SavepointIterator.build(self.iterable, threshold=5) # Consume entire iterator result = list(iterator) self.assertEquals( self.iterable, result, 'Iterator should yield every item of `iterable`') self.assertEquals( 1, self.txn._savepoint_index, 'One savepoint should have been created')
def test_invalid_default_thresold_configuration(self): os.environ['UPGRADE_SAVEPOINT_THRESHOLD'] = 'foo' with self.assertRaises(ValueError) as cm: SavepointIterator.get_default_threshold() self.assertEqual("Invalid savepoint threshold 'foo'", str(cm.exception))
def test_disable_default_threshold_with_environ_variable(self): os.environ['UPGRADE_SAVEPOINT_THRESHOLD'] = 'None' self.assertIsNone(SavepointIterator.get_default_threshold()) os.environ['UPGRADE_SAVEPOINT_THRESHOLD'] = 'none' self.assertIsNone(SavepointIterator.get_default_threshold())
def test_configure_default_threshold_with_environ_variable(self): os.environ['UPGRADE_SAVEPOINT_THRESHOLD'] = '333' self.assertEqual(333, SavepointIterator.get_default_threshold())
def test_default_threshold_is_1000(self): # 1000 is the application default. self.assertEqual(1000, SavepointIterator.get_default_threshold())
def test_instanciating_iterator_with_nonzero_threshold_raises(self): with self.assertRaises(ValueError): SavepointIterator(self.iterable, threshold=0) with self.assertRaises(ValueError): SavepointIterator(self.iterable, threshold=None)
def test_invalid_default_thresold_configuration(self): os.environ['UPGRADE_SAVEPOINT_THRESHOLD'] = 'foo' with self.assertRaises(ValueError) as cm: SavepointIterator.get_default_threshold() self.assertEquals("Invalid savepoint threshold 'foo'", str(cm.exception))
def test_configure_default_threshold_with_environ_variable(self): os.environ['UPGRADE_SAVEPOINT_THRESHOLD'] = '333' self.assertEquals(333, SavepointIterator.get_default_threshold())
def test_default_threshold_is_1000(self): # 1000 is the application default. self.assertEquals(1000, SavepointIterator.get_default_threshold())