Example #1
0
    def test_literal_filenode(self):
        DATA = "I am a short file."
        u = uri.LiteralFileURI(data=DATA)
        fn1 = LiteralFileNode(u)
        fn2 = LiteralFileNode(u)
        self.failUnlessEqual(fn1, fn2)
        self.failIfEqual(fn1, "I am not a filenode")
        self.failIfEqual(fn1, NotANode())
        self.failUnlessEqual(fn1.get_uri(), u.to_string())
        self.failUnlessEqual(fn1.get_cap(), u)
        self.failUnlessEqual(fn1.get_readcap(), u)
        self.failUnless(fn1.is_readonly())
        self.failIf(fn1.is_mutable())
        self.failIf(fn1.is_unknown())
        self.failUnless(fn1.is_allowed_in_immutable_directory())
        self.failUnlessEqual(fn1.get_write_uri(), None)
        self.failUnlessEqual(fn1.get_readonly_uri(), u.to_string())
        self.failUnlessEqual(fn1.get_size(), len(DATA))
        self.failUnlessEqual(fn1.get_storage_index(), None)
        fn1.raise_error()
        fn2.raise_error()
        d = {}
        d[fn1] = 1 # exercise __hash__

        v = fn1.get_verify_cap()
        self.failUnlessEqual(v, None)
        self.failUnlessEqual(fn1.get_repair_cap(), None)

        d = download_to_data(fn1)
        def _check(res):
            self.failUnlessEqual(res, DATA)
        d.addCallback(_check)

        d.addCallback(lambda res: download_to_data(fn1, 1, 5))
        def _check_segment(res):
            self.failUnlessEqual(res, DATA[1:1+5])
        d.addCallback(_check_segment)
        d.addCallback(lambda ignored: fn1.get_best_readable_version())
        d.addCallback(lambda fn2: self.failUnlessEqual(fn1, fn2))
        d.addCallback(lambda ignored:
            fn1.get_size_of_best_version())
        d.addCallback(lambda size:
            self.failUnlessEqual(size, len(DATA)))
        d.addCallback(lambda ignored:
            fn1.download_to_data())
        d.addCallback(lambda data:
            self.failUnlessEqual(data, DATA))
        d.addCallback(lambda ignored:
            fn1.download_best_version())
        d.addCallback(lambda data:
            self.failUnlessEqual(data, DATA))

        return d