def test_dump_load(self): from tempfile import NamedTemporaryFile handle = NamedTemporaryFile() self.metadb.dump(handle) def metavaldict(metavals): return dict((k, list(v)) for k, v in metavals) handle.seek(0) metadb = MetaDB.load(handle) assert metavaldict(metadb.values()) == metavaldict(self.metadb.values()) handle.seek(0) metadb = MetaDB.load(handle.name) assert metavaldict(metadb.values()) == metavaldict(self.metadb.values())
def input_stream(fd, size, url, params): scheme, netloc, rest = util.urlsplit(url) if netloc[0] == Task.netloc[0]: path, rest = rest.split('!', 1) if '!' in rest else (rest, '') discodb = MetaDB.load(os.path.join(Task.root, path)) if rest: method, arg = rest.split('/', 1) if method in ('metadb', 'datadb'): discodb = getattr(discodb, method) method, arg = arg.split('/', 1) if method == 'query': if hasattr(params, 'discodb_query'): return discodb.query(params.discodb_query), size, url return discodb.query(Q.urlscan(arg)), size, url return getattr(discodb, method)(), size, url return discodb, size, url raise core.DiscoError("Scheme 'metadb' can only be used with force_local=True")