def test_unhandle_handled(self): handler = ObjectId() c1 = commit.Commit(handled_by=handler) c1.save(self.database) c1.unhandle_handled(self.database, c1._id, handler) self.sync() assert self.find_one({'_id': c1._id}, self.database.commits) c2 = commit.Commit(handled_by=handler) # c1 is intentional. Ensure c2 isn't saved in any form c1.unhandle_handled(self.database, c2._id, handler) c2.unhandle_handled(self.database, c2._id, handler) self.sync() assert not self.find_one({'_id': c2._id}, self.database.commits)
def test_fromquery(self): handler = ObjectId() c1 = commit.Commit(handled_by=handler) c1.save(self.database) self.sync() c2 = commit.Commit.fromquery(self.database, {'handled_by': handler}) assert c1._id == c2._id
def test_delete(self): class Op(object): def __init__(self, blobs): self.blobs = blobs def blobVals(self): return self.blobs c = commit.Commit() added = BlobVal('added') deleted = BlobVal('deleted') opval = BlobVal('op') added.addref(c._id) deleted.addref(c._id) opval.addref(c._id) result = BlobVal('result') result.addref(c._id) ops = [Op([opval])] c.results = [result] c.addedBlobVals = {'a': [added]} c.deletedBlobVals = {'b': [deleted]} c.save(self.database) self.sync() assert self.find_one({'_id': c._id}, self.database.commits) c.operations = ops # Not BSONable c.delete(self.database) self.sync() assert not self.find_one({'_id': c._id}, self.database.commits) assert added.references == set() assert deleted.references == set() assert ops[0].blobs[0].references == set() assert result.references == set()
def test_save(self): c = commit.Commit() c.save(self.database) self.sync() result = self.find_one({'_id': c._id}, self.database.commits) expect = c.get_doc() assert result == expect
def test_unhandle(self): handler = ObjectId() c = commit.Commit(handled_by=handler) c.unhandle(self.database, handler) self.sync() cdoc = self.find_one({'_id': c._id}, self.database.commits) assert 'handled_by' not in cdoc
def test_done_not_interested(self): c = commit.Commit() result = BlobVal('result') c.results = [result] c.newTois = {'a': 'b'} c.done(self.database) assert result.references == set() result = self.find_one({'_id': c._id}, self.database.commits) assert not result
def test_handlers_running(self): self.set_primary() handler = ObjectId() c = commit.Commit(handled_by=handler) c.save(self.database) assert c.handlers_running(self.database) c.unhandle(self.database, handler) assert not c.handlers_running(self.database)
def test_save_gridfs(self): resstr = 'random string' * 24 * 2**10 c1 = commit.Commit(results=[resstr]) c1.save(self.database) self.sync() result = self.find_one({'_id': c1._id}, self.database.commits) gridfile = result['_griddata'] assert isinstance(gridfile, BlobVal) assert isinstance(gridfile.value, gridfs.GridOut) c2 = commit.Commit.fromdoc(self.database, result) assert c2.results == [resstr]
def test_handle(self): handler = ObjectId() c1 = commit.Commit() c1.save(self.database) expected = c1.get_doc() expected['handled_by'] = handler c2 = commit.Commit.handle(self.database, handler) assert c2.get_doc() == expected c3 = commit.Commit.handle(self.database, handler) assert c3 is None
def test_get_doc(self): c = commit.Commit() result = c.get_doc() expected = { '_id': c._id, 'user': None, 'interested': None, 'error': None, 'traceback': None, 'state': 'new', 'generation': 0 } assert result == expected
def runCommit(ops, interested=None): self.sync() state = self._getState() # link must have been saved before we process commit assert state == 'processing' self.ops = ops self.interested = interested cmt = commit.Commit(handled_by=interested, state='done', interested=interested, results=self.results, error=self.error) cmt.done(self.database)
def test_delete_gridfs(self): c = commit.Commit(results=['foo bar baz' * 24 * 2**10]) doc = c.get_doc() blobval = doc['_griddata'] c.save(self.database) self.sync() assert self.find_one({'_id': c._id}, self.database.commits) assert self.find_one({'metadata.references.value': c._id}, self.database.blobvals.files) c.delete(self.database) self.sync() assert not self.find_one({'_id': c._id}, self.database.commits) assert not self.find_one({'metadata.references.value': c._id}, self.database.blobvals.files) # Make sure that ALL generated blobvals get decref()'d assert blobval.references == set()
def test_attributes(self): c = commit.Commit() assert isinstance(c._id, ObjectId) assert c.user == None assert c.interested == None assert c.handled_by == None assert c.operations == [] assert c.newTois == [] assert c.changedTois == [] assert c.deletedTois == [] assert c.addedBlobVals == {} assert c.deletedBlobVals == {} assert c.indexData == [] assert c.results == [] assert c.error == None assert c.traceback == None assert c.state == 'new' assert c.generation == 0
def test_done(self): c = commit.Commit(interested='interested') result = BlobVal('result') c.results = [result] c.newTois = {'a': 'b'} c.done(self.database) self.sync() assert result.references == {c._id} result = self.find_one({'_id': c._id}, self.database.commits) expect = { '_id': c._id, 'error': None, 'handled_by': 'interested', 'interested': 'interested', 'results': c.results, 'state': 'done' } assert result == expect