def read_direct_reverse_deps_for_owner(self, brl_user): dbcol = self.mongo_server_store.db[self.REVERSE_DEPENDENCIES_ST] # all brl_user deps (for all his blocks) docs = dbcol.find({LengthySerializedBlockVersion.SERIAL_OWNER_KEY: brl_user}) for doc in docs: obj = ReverseDependency.deserialize(doc) yield obj
def read_direct_reverse_deps_for_brl_block(self, brl_block): block_version = LengthySerializedBlockVersion(brl_block, -1) dbcol = self.mongo_server_store.db[self.REVERSE_DEPENDENCIES_ST] tmp = block_version.serialize() # remove time key from query del tmp[LengthySerializedBlockVersion.SERIAL_VERSION_KEY] docs = dbcol.find(tmp) for doc in docs: obj = ReverseDependency.deserialize(doc) yield obj
def serialize_and_deserialize_test(self): tmp = LengthySerializedBlockVersion.loads("creator/block(owner/branch):2") serial = tmp.serialize() tmp2 = LengthySerializedBlockVersion.deserialize(serial) self.assertEquals(tmp, tmp2) tmp = ReverseDependency(tmp, [tmp2, tmp]) serial = tmp.serialize() self.assertEquals(serial[ReverseDependency.SERIAL_DEPS_ON_KEY][0] \ [LengthySerializedBlockVersion.SERIAL_NAME_KEY], "block") tmp2 = ReverseDependency.deserialize(serial) self.assertEquals(tmp, tmp2) self.assertIsInstance(tmp2.depends_on_version[0], LengthySerializedBlockVersion)
def read_direct_reverse_dependencies(self, block_version): block_version = LengthySerializedBlockVersion(block_version.block, block_version.time) dbcol = self.mongo_server_store.db[self.REVERSE_DEPENDENCIES_ST] doc = dbcol.find_one(block_version.serialize()) if not doc: raise NotInStoreException("No %s found with _id = %s" % (self.REVERSE_DEPENDENCIES_ST, block_version)) obj = ReverseDependency.deserialize(doc) return obj
def setUp(self): self.store = MongoServerStore(self.conn, self.__class__.__name__) self.store = ReverseDependencyMongoStore(self.store) bver = BlockVersion.loads("creator/block(owner/branch):2") self.bv2 = BlockVersion.loads("creator2/block(owner2/branch):2") self.bv3 = BlockVersion.loads("creator3/block(owner3/branch):3") self.reverse = ReverseDependency(bver) self.reverse.add_dependant_version(self.bv2) self.reverse.add_dependant_version(self.bv3) self.store.upsert_reverse_dependencies(self.reverse) # Other version of same block bver2 = BlockVersion.loads("creator/block(owner/branch):3") self.reverse2 = ReverseDependency(bver2) self.reverse2.add_dependant_version(self.bv2) self.reverse2.add_dependant_version(self.bv3) self.store.upsert_reverse_dependencies(self.reverse2)
def serialize_and_deserialize_test(self): tmp = LengthySerializedBlockVersion.loads( "creator/block(owner/branch):2") serial = tmp.serialize() tmp2 = LengthySerializedBlockVersion.deserialize(serial) self.assertEquals(tmp, tmp2) tmp = ReverseDependency(tmp, [tmp2, tmp]) serial = tmp.serialize() self.assertEquals(serial[ReverseDependency.SERIAL_DEPS_ON_KEY][0] \ [LengthySerializedBlockVersion.SERIAL_NAME_KEY], "block") tmp2 = ReverseDependency.deserialize(serial) self.assertEquals(tmp, tmp2) self.assertIsInstance(tmp2.depends_on_version[0], LengthySerializedBlockVersion)
class ReverseDependencyMongoStoreTest(TestWithMongo): def setUp(self): self.store = MongoServerStore(self.conn, self.__class__.__name__) self.store = ReverseDependencyMongoStore(self.store) bver = BlockVersion.loads("creator/block(owner/branch):2") self.bv2 = BlockVersion.loads("creator2/block(owner2/branch):2") self.bv3 = BlockVersion.loads("creator3/block(owner3/branch):3") self.reverse = ReverseDependency(bver) self.reverse.add_dependant_version(self.bv2) self.reverse.add_dependant_version(self.bv3) self.store.upsert_reverse_dependencies(self.reverse) # Other version of same block bver2 = BlockVersion.loads("creator/block(owner/branch):3") self.reverse2 = ReverseDependency(bver2) self.reverse2.add_dependant_version(self.bv2) self.reverse2.add_dependant_version(self.bv3) self.store.upsert_reverse_dependencies(self.reverse2) def test_read_and_upsert_reverse_dependencies(self): reverse_readed = self.store.read_direct_reverse_dependencies( self.reverse.version) self.assertEquals(self.reverse, reverse_readed) # Now add directly to mongo a new dependency new_ver = BlockVersion.loads("creator3/block3(owner3/branch3):3") self.store.add_reverse_dependency_to(self.reverse.version, new_ver) reverse_readed = self.store.read_direct_reverse_dependencies( self.reverse.version) self.reverse.add_dependant_version(new_ver) self.assertEquals(self.reverse, reverse_readed)
class ReverseDependencyMongoStoreTest(TestWithMongo): def setUp(self): self.store = MongoServerStore(self.conn, self.__class__.__name__) self.store = ReverseDependencyMongoStore(self.store) bver = BlockVersion.loads("creator/block(owner/branch):2") self.bv2 = BlockVersion.loads("creator2/block(owner2/branch):2") self.bv3 = BlockVersion.loads("creator3/block(owner3/branch):3") self.reverse = ReverseDependency(bver) self.reverse.add_dependant_version(self.bv2) self.reverse.add_dependant_version(self.bv3) self.store.upsert_reverse_dependencies(self.reverse) # Other version of same block bver2 = BlockVersion.loads("creator/block(owner/branch):3") self.reverse2 = ReverseDependency(bver2) self.reverse2.add_dependant_version(self.bv2) self.reverse2.add_dependant_version(self.bv3) self.store.upsert_reverse_dependencies(self.reverse2) def test_read_and_upsert_reverse_dependencies(self): reverse_readed = self.store.read_direct_reverse_dependencies(self.reverse.version) self.assertEquals(self.reverse, reverse_readed) # Now add directly to mongo a new dependency new_ver = BlockVersion.loads("creator3/block3(owner3/branch3):3") self.store.add_reverse_dependency_to(self.reverse.version, new_ver) reverse_readed = self.store.read_direct_reverse_dependencies(self.reverse.version) self.reverse.add_dependant_version(new_ver) self.assertEquals(self.reverse, reverse_readed)