def test_basic(self): """Compare sha1sum of a few strings""" sfile = StringIO.StringIO(self.s1) fw = hash.FileWrapper(sfile) assert fw.read() == self.s1 report = fw.close() assert report.sha1_digest == self.s1_hash, report.sha1_digest sfile2 = StringIO.StringIO(self.s1) fw2 = hash.FileWrapper(sfile2) assert fw2.read(5) == self.s1[:5] assert fw2.read() == self.s1[5:] report2 = fw2.close() assert report2.sha1_digest == self.s1_hash, report2.sha1_digest
def test_basic(self): """Compare sha1sum of a few strings""" b1 = self.s1.encode() sfile = io.BytesIO(b1) fw = hash.FileWrapper(sfile) self.assertEqual(fw.read(), b1) report = fw.close() self.assertEqual(report.sha1_digest, self.s1_hash) sfile2 = io.BytesIO(b1) fw2 = hash.FileWrapper(sfile2) self.assertEqual(fw2.read(5), b1[:5]) self.assertEqual(fw2.read(), b1[5:]) report2 = fw2.close() self.assertEqual(report2.sha1_digest, self.s1_hash)
def test_basic(self): """Compare sha1sum of a few strings""" b1 = self.s1.encode() sfile = io.BytesIO(b1) fw = hash.FileWrapper(sfile) assert fw.read() == b1 report = fw.close() assert report.sha1_digest == self.s1_hash, report.sha1_digest sfile2 = io.BytesIO(b1) fw2 = hash.FileWrapper(sfile2) assert fw2.read(5) == b1[:5] assert fw2.read() == b1[5:] report2 = fw2.close() assert report2.sha1_digest == self.s1_hash, report2.sha1_digest
def attach_snapshot(diff_rorp, src_rp): """Attach file of snapshot to diff_rorp, w/ error checking""" fileobj = robust.check_common_error( error_handler, rpath.RPath.open, (src_rp, "rb")) if fileobj: diff_rorp.setfile(hash.FileWrapper(fileobj)) else: diff_rorp.zero() diff_rorp.set_attached_filetype('snapshot')
def test_rorpiter_xfer(self): """Test if hashes are transferred in files, rorpiter""" Globals.security_level = 'override' conn = SetConnections.init_connection( b'%b %b/server.py' % (os.fsencode(sys.executable), abs_testing_dir)) assert conn.reval("lambda x: x+1", 4) == 5 # connection sanity check fp = hash.FileWrapper(io.BytesIO(self.s1.encode())) conn.Globals.set('tmp_file', fp) fp_remote = conn.Globals.get('tmp_file') assert fp_remote.read() == self.s1.encode() assert fp_remote.close().sha1_digest == self.s1_hash # Tested xfer of file, now test xfer of files in rorpiter root = MakeOutputDir() rp1 = root.append('s1') rp1.write_string(self.s1) rp2 = root.append('s2') rp2.write_string(self.s2) rp1.setfile(hash.FileWrapper(rp1.open('rb'))) rp2.setfile(hash.FileWrapper(rp2.open('rb'))) rpiter = iter([rp1, rp2]) conn.Globals.set('tmp_conn_iter', rpiter) remote_iter = conn.Globals.get('tmp_conn_iter') rorp1 = next(remote_iter) fp = hash.FileWrapper(rorp1.open('rb')) read_s1 = fp.read().decode() assert read_s1 == self.s1, "Read string 1 %s isn't the same as written string %s" % ( read_s1, self.s1) ret_val = fp.close() assert isinstance(ret_val, hash.Report), ret_val assert ret_val.sha1_digest == self.s1_hash rorp2 = next(remote_iter) fp2 = hash.FileWrapper(rorp2.open('rb')) read_s2 = fp2.read().decode() assert read_s2 == self.s2, "Read string 2 %s isn't the same as written string %s" % ( read_s2, self.s2) assert fp2.close().sha1_digest == self.s2_hash conn.quit()
def test_rorpiter_xfer(self): """Test if hashes are transferred in files, rorpiter""" Security._security_level = "override" conn = SetConnections._init_connection( b'%b %b/server.py' % (os.fsencode(sys.executable), abs_testing_dir)) # make a connection sanity check self.assertEqual(conn.reval("lambda x: x+1", 4), 5) fp = hash.FileWrapper(io.BytesIO(self.s1.encode())) conn.Globals.set('tmp_file', fp) fp_remote = conn.Globals.get('tmp_file') self.assertEqual(fp_remote.read(), self.s1.encode()) self.assertEqual(fp_remote.close().sha1_digest, self.s1_hash) # Tested xfer of file, now test xfer of files in rorpiter root = MakeOutputDir() rp1 = root.append('s1') rp1.write_string(self.s1) rp2 = root.append('s2') rp2.write_string(self.s2) rp1.setfile(hash.FileWrapper(rp1.open('rb'))) rp2.setfile(hash.FileWrapper(rp2.open('rb'))) rpiter = iter([rp1, rp2]) conn.Globals.set('tmp_conn_iter', rpiter) remote_iter = conn.Globals.get('tmp_conn_iter') rorp1 = next(remote_iter) fp = hash.FileWrapper(rorp1.open('rb')) read_s1 = fp.read().decode() self.assertEqual(read_s1, self.s1) ret_val = fp.close() self.assertIsInstance(ret_val, hash.Report) self.assertEqual(ret_val.sha1_digest, self.s1_hash) rorp2 = next(remote_iter) fp2 = hash.FileWrapper(rorp2.open('rb')) read_s2 = fp2.read().decode() self.assertEqual(read_s2, self.s2) self.assertEqual(fp2.close().sha1_digest, self.s2_hash) conn.quit()
def test_rorpiter_xfer(self): """Test if hashes are transferred in files, rorpiter""" #log.Log.setverbosity(5) Globals.security_level = 'override' conn = SetConnections.init_connection('python ./server.py .') assert conn.reval("lambda x: x+1", 4) == 5 # connection sanity check fp = hash.FileWrapper(StringIO.StringIO(self.s1)) conn.Globals.set('tmp_file', fp) fp_remote = conn.Globals.get('tmp_file') assert fp_remote.read() == self.s1 assert fp_remote.close().sha1_digest == self.s1_hash # Tested xfer of file, now test xfer of files in rorpiter root = MakeOutputDir() rp1 = root.append('s1') rp1.write_string(self.s1) rp2 = root.append('s2') rp2.write_string(self.s2) rp1.setfile(hash.FileWrapper(rp1.open('rb'))) rp2.setfile(hash.FileWrapper(rp2.open('rb'))) rpiter = iter([rp1, rp2]) conn.Globals.set('tmp_conn_iter', rpiter) remote_iter = conn.Globals.get('tmp_conn_iter') rorp1 = remote_iter.next() fp = rorp1.open('rb') assert fp.read() == self.s1, fp.read() ret_val = fp.close() assert isinstance(ret_val, hash.Report), ret_val assert ret_val.sha1_digest == self.s1_hash rorp2 = remote_iter.next() fp2 = rorp1.open('rb') assert fp2.close().sha1_digest == self.s2_hash conn.quit()
def get_delta_sigrp_hash(rp_signature, rp_new): """Like above but also calculate hash of new as close() value""" log.Log("Getting delta (with hash) of file {fi} with signature {si}".format( fi=rp_new, si=rp_signature), log.DEBUG) return librsync.DeltaFile( rp_signature.open("rb"), hash.FileWrapper(rp_new.open("rb")))