Exemplo n.º 1
0
 def test_equality(self):
     """LiteralFileNodes are equal iff they have the same URI."""
     uri1 = uri.LiteralFileURI(b"1")
     uri2 = uri.LiteralFileURI(b"2")
     lfn1 = LiteralFileNode(uri1)
     lfn1b = LiteralFileNode(uri1)
     lfn2 = LiteralFileNode(uri2)
     self.assertTrue(lfn1 == lfn1b)
     self.assertFalse(lfn1 != lfn1b)
     self.assertTrue(lfn1 != lfn2)
     self.assertFalse(lfn1 == lfn2)
     self.assertTrue(lfn1 != 300)
     self.assertFalse(lfn1 == 300)
Exemplo n.º 2
0
    def _help_test(self, data):
        u = uri.LiteralFileURI(data)
        self.failUnless(IURI.providedBy(u))
        self.failUnless(IFileURI.providedBy(u))
        self.failIf(IDirnodeURI.providedBy(u))
        self.failUnlessReallyEqual(u.data, data)
        self.failUnlessReallyEqual(u.get_size(), len(data))
        self.failUnless(u.is_readonly())
        self.failIf(u.is_mutable())

        u2 = uri.from_string(u.to_string())
        self.failUnless(IURI.providedBy(u2))
        self.failUnless(IFileURI.providedBy(u2))
        self.failIf(IDirnodeURI.providedBy(u2))
        self.failUnlessReallyEqual(u2.data, data)
        self.failUnlessReallyEqual(u2.get_size(), len(data))
        self.failUnless(u2.is_readonly())
        self.failIf(u2.is_mutable())

        u2i = uri.from_string(u.to_string(), deep_immutable=True)
        self.failUnless(IFileURI.providedBy(u2i))
        self.failIf(IDirnodeURI.providedBy(u2i))
        self.failUnlessReallyEqual(u2i.data, data)
        self.failUnlessReallyEqual(u2i.get_size(), len(data))
        self.failUnless(u2i.is_readonly())
        self.failIf(u2i.is_mutable())

        u3 = u.get_readonly()
        self.failUnlessIdentical(u, u3)
        self.failUnlessReallyEqual(u.get_verify_cap(), None)
Exemplo n.º 3
0
 def test_is_literal_file_uri(self):
     lit1 = uri.LiteralFileURI("some data").to_string()
     self.failUnless(uri.is_literal_file_uri(lit1))
     self.failIf(uri.is_literal_file_uri(None))
     self.failIf(uri.is_literal_file_uri("foo"))
     self.failIf(uri.is_literal_file_uri("ro.foo"))
     self.failIf(uri.is_literal_file_uri("URI:LITfoo"))
     self.failUnless(uri.is_literal_file_uri("ro.URI:LIT:foo"))
     self.failUnless(uri.is_literal_file_uri("imm.URI:LIT:foo"))
Exemplo n.º 4
0
 def test_compare(self):
     lit1 = uri.LiteralFileURI("some data")
     fileURI = 'URI:CHK:f5ahxa25t4qkktywz6teyfvcx4:opuioq7tj2y6idzfp6cazehtmgs5fdcebcz3cygrxyydvcozrmeq:3:10:345834'
     chk1 = uri.CHKFileURI.init_from_string(fileURI)
     chk2 = uri.CHKFileURI.init_from_string(fileURI)
     unk = uri.UnknownURI("lafs://from_the_future")
     self.failIfEqual(lit1, chk1)
     self.failUnlessReallyEqual(chk1, chk2)
     self.failIfEqual(chk1, "not actually a URI")
     # these should be hashable too
     s = set([lit1, chk1, chk2, unk])
     self.failUnlessReallyEqual(len(s), 3)  # since chk1==chk2
Exemplo n.º 5
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
Exemplo n.º 6
0
 def test_literal(self):
     u0 = uri.LiteralFileURI("data")
     u1 = uri.LiteralDirectoryURI(u0)
     self.failUnless(str(u1))
     self.failUnlessReallyEqual(u1.to_string(), "URI:DIR2-LIT:mrqxiyi")
     self.failUnless(u1.is_readonly())
     self.failIf(u1.is_mutable())
     self.failUnless(IURI.providedBy(u1))
     self.failIf(IFileURI.providedBy(u1))
     self.failUnless(IDirnodeURI.providedBy(u1))
     self.failUnlessReallyEqual(u1.get_verify_cap(), None)
     self.failUnlessReallyEqual(u1.get_storage_index(), None)
     self.failUnlessReallyEqual(u1.abbrev_si(), "<LIT>")
Exemplo n.º 7
0
    def test_literal_filenode(self):
        DATA = "I am a short file."
        u = uri.LiteralFileURI(data=DATA)
        fn1 = LiteralFileNode(u)

        d = fn1.check(Monitor())
        def _check_checker_results(cr):
            self.failUnlessEqual(cr, None)
        d.addCallback(_check_checker_results)

        d.addCallback(lambda res: fn1.check(Monitor(), verify=True))
        d.addCallback(_check_checker_results)

        return d
Exemplo n.º 8
0
def calc(filesize, params=(3, 7, 10), segsize=DEFAULT_MAX_SEGMENT_SIZE):
    num_shares = params[2]
    if filesize <= upload.Uploader.URI_LIT_SIZE_THRESHOLD:
        urisize = len(uri.LiteralFileURI("A" * filesize).to_string())
        sharesize = 0
        sharespace = 0
    else:
        u = upload.FileUploader(None)  # XXX changed
        u.set_params(params)
        # unfortunately, Encoder doesn't currently lend itself to answering
        # this question without measuring a filesize, so we have to give it a
        # fake one
        data = BigFakeString(filesize)
        u.set_filehandle(data)
        u.set_encryption_key("a" * 16)
        sharesize, blocksize = u.setup_encoder()
        # how much overhead?
        #  0x20 bytes of offsets
        #  0x04 bytes of extension length
        #  0x1ad bytes of extension (=429)
        # total is 465 bytes
        num_segments = mathutil.div_ceil(filesize, segsize)
        num_share_hashes = int(
            math.log(mathutil.next_power_of_k(num_shares, 2), 2)) + 1
        sharesize = storage.allocated_size(sharesize, num_segments,
                                           num_share_hashes, 429)
        sharespace = num_shares * roundup(sharesize)
        urisize = len(
            uri.pack_uri(storage_index="a" * 32,
                         key="a" * 16,
                         uri_extension_hash="a" * 32,
                         needed_shares=params[0],
                         total_shares=params[2],
                         size=filesize))

    return urisize, sharesize, sharespace
Exemplo n.º 9
0
 def test_is_uri(self):
     lit1 = uri.LiteralFileURI("some data").to_string()
     self.failUnless(uri.is_uri(lit1))
     self.failIf(uri.is_uri(None))