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 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 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 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 add_reverse_dependency_to(self, block_version, new_reverse_dep):
     block_version = LengthySerializedBlockVersion(block_version.block, block_version.time)
     new_reverse_dep = LengthySerializedBlockVersion(new_reverse_dep.block,
                                                     new_reverse_dep.time)
     dbcol = self.mongo_server_store.db[self.REVERSE_DEPENDENCIES_ST]
     try:
         tmp = {ReverseDependency.SERIAL_DEPS_ON_KEY: new_reverse_dep.serialize()}
         dbcol.update(block_version.serialize(), {"$addToSet": tmp})
     except Exception as e:
         logger.error(e)
         raise e