コード例 #1
0
ファイル: test.py プロジェクト: jamesaimonetti/disco
 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())
コード例 #2
0
ファイル: test.py プロジェクト: jamesaimonetti/disco
class TestMetaDBSerializationProtocol(unittest.TestCase):
    numkeys = 1000

    def setUp(self):
        datadb = DiscoDB(k_vs_iter(self.numkeys))
        metadb = DiscoDB(k_vs_iter(self.numkeys, max_values=self.numkeys))
        self.metadb = MetaDB(datadb, metadb)

    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())
コード例 #3
0
ファイル: scheme_metadb.py プロジェクト: christofd/disco
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")
コード例 #4
0
ファイル: test.py プロジェクト: jamesaimonetti/disco
 def setUp(self):
     datadb = DiscoDB(k_vs_iter(self.numkeys))
     metadb = DiscoDB(k_vs_iter(self.numkeys, max_values=self.numkeys))
     self.metadb = MetaDB(datadb, metadb)