Ejemplo n.º 1
0
    def test_basic(self, noisy=VERBOSE):
        tempdir = fileutil.NamedTemporaryDirectory(cleanup=True)
        fo = tempdir.file("test.data", "w+b")
        fo.write("WHEHWHJEKWAHDLJAWDHWALKDHA")

        import sys
        realargv = sys.argv
        try:
            DEFAULT_M=8
            DEFAULT_K=3
            sys.argv = ["zfec", os.path.join(tempdir.name, "test.data"),]

            retcode = zfec.cmdline_zfec.main()
            assert retcode == 0, retcode

            RE=re.compile(zfec.filefec.RE_FORMAT % ('test.data', ".fec",))
            fns = os.listdir(tempdir.name)
            assert len(fns) >= DEFAULT_M, (fns, DEFAULT_M, tempdir, tempdir.name,)
            sharefns = [ os.path.join(tempdir.name, fn) for fn in fns if RE.match(fn) ]
            random.shuffle(sharefns)
            del sharefns[DEFAULT_K:]

            sys.argv = ["zunfec",]
            sys.argv.extend(sharefns)
            sys.argv.extend(['-o', os.path.join(tempdir.name, 'test.data-recovered'),])

            retcode = zfec.cmdline_zunfec.main()
            assert retcode == 0, retcode
            import filecmp
            assert filecmp.cmp(os.path.join(tempdir.name, 'test.data'), os.path.join(tempdir.name, 'test.data-recovered'))
        finally:
            sys.argv = realargv
Ejemplo n.º 2
0
    def _help_test_filefec(self, teststr, k, m, numshs=None):
        if numshs == None:
            numshs = m

        TESTFNAME = "testfile.txt"
        PREFIX = "test"
        SUFFIX = ".fec"

        fsize = len(teststr)

        tempdir = fileutil.NamedTemporaryDirectory(cleanup=True)
        try:
            tempf = tempdir.file(TESTFNAME, 'w+b')
            tempf.write(teststr)
            tempf.flush()
            tempf.seek(0)

            # encode the file
            zfec.filefec.encode_to_files(tempf,
                                         fsize,
                                         tempdir.name,
                                         PREFIX,
                                         k,
                                         m,
                                         SUFFIX,
                                         verbose=VERBOSE)

            # select some share files
            RE = re.compile(zfec.filefec.RE_FORMAT % (
                PREFIX,
                SUFFIX,
            ))
            fns = os.listdir(tempdir.name)
            assert len(fns) >= m, (
                fns,
                tempdir,
                tempdir.name,
            )
            sharefs = [
                open(os.path.join(tempdir.name, fn), "rb") for fn in fns
                if RE.match(fn)
            ]
            for sharef in sharefs:
                tempdir.register_file(sharef)
            random.shuffle(sharefs)
            del sharefs[numshs:]

            # decode from the share files
            outf = tempdir.file('recovered-testfile.txt', 'w+b')
            zfec.filefec.decode_from_files(outf, sharefs, verbose=VERBOSE)
            outf.flush()
            outf.seek(0)
            recovereddata = outf.read()
            assert recovereddata == teststr, (
                ab(recovereddata),
                ab(teststr),
            )
        finally:
            tempdir.shutdown()
Ejemplo n.º 3
0
        def test_save_now(self):
            """
            This test should create a lazy save object, save it with no delay and check if the file exists.
            """
            tempdir = fileutil.NamedTemporaryDirectory()

            fname = os.path.join(tempdir.name, "picklesavertest")
            self._test_save_now(fname)
            self.failUnless(os.path.isfile(fname), "The file [%s] does not exist." %(fname,))

            tempdir.shutdown()
Ejemplo n.º 4
0
    def setUp(self):
        self.tempdir = fileutil.NamedTemporaryDirectory(cleanup=True)
        self.fo = self.tempdir.file("test.data", "w+b")
        self.fo.write(b"WHEHWHJEKWAHDLJAWDHWALKDHA")
        self.realargv = sys.argv

        self.DEFAULT_M = 8
        self.DEFAULT_K = 3
        self.RE = re.compile(zfec.filefec.RE_FORMAT % (
            'test.data',
            ".fec",
        ))