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
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()
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()
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", ))