def copy(self, filename, dest_filename, compression, dummy): self.connect() compression_support = heatshrink_exists and self.compression['algorithm'] == 'heatshrink' and compression if compression and (not heatshrink_exists or not self.compression['algorithm'] == 'heatshrink'): print("Compression not supported by client") #compression_support = False data = open(filename, "rb").read() filesize = len(data) self.open(dest_filename, compression_support, dummy) block_size = self.protocol.block_size if compression_support: data = heatshrink.encode(data, window_sz2=self.compression['window'], lookahead_sz2=self.compression['lookahead']) cratio = filesize / len(data) blocks = math.floor((len(data) + block_size - 1) / block_size) kibs = 0 dump_pctg = 0 start_time = millis() for i in range(blocks): start = block_size * i end = start + block_size self.write(data[start:end]) kibs = (( (i+1) * block_size) / 1024) / (millis() + 1 - start_time) * 1000 if (i / blocks) >= dump_pctg: print("\r{0:2.2f}% {1:4.2f}KiB/s {2} Errors: {3}".format((i / blocks) * 100, kibs, "[{0:4.2f}KiB/s]".format(kibs * cratio) if compression_support else "", self.protocol.errors), end='') dump_pctg += 0.1 print("\r{0:2.2f}% {1:4.2f}KiB/s {2} Errors: {3}".format(100, kibs, "[{0:4.2f}KiB/s]".format(kibs * cratio) if compression_support else "", self.protocol.errors)) # no one likes transfers finishing at 99.8% self.close() print("Transfer complete")
def test_with_large_strings(self): test_sizes = [1000, 10000, 100000] for size in test_sizes: contents = random_string(size) decoded = heatshrink.decode(heatshrink.encode(contents)) # Check whole file, but don't use assertEqual as it will # print all the data if decoded != contents: msg = ('Decoded and original file contents ' 'do not match for size: {}') self.fail(msg.format(size))
def copy(self, filename, dest_filename, compression, dummy): self.connect() compression_support = self.compression[ 'algorithm'] == 'heatshrink' and compression if compression and not self.compression['algorithm'] == 'heatshrink': self.logger.warning("Compression not supported by client") data = open(filename, "rb").read() filesize = len(data) self.open(dest_filename, compression_support, dummy) block_size = self.protocol.block_size if compression_support: data = heatshrink.encode( data, window_sz2=self.compression['window'], lookahead_sz2=self.compression['lookahead']) cratio = filesize / len(data) # int() ensures compat with python 2 blocks = int(math.floor((len(data) + block_size - 1) / block_size)) kibs = 0 start_time = _millis() for i in range(blocks): start = block_size * i end = start + block_size self.write(data[start:end]) kibs = (((i + 1) * block_size) / 1024) / (_millis() + 1 - start_time) * 1000 self.logger.info( "PROGRESS: {0:2.2f}% {1:4.2f}KiB/s {2} Errors: {3}".format( (i / blocks) * 100, kibs, "[{0:4.2f}KiB/s]".format(kibs * cratio) if compression_support else "", self.protocol.errors)) self.logger.info( "PROGRESS: {0:2.2f}% {1:4.2f}KiB/s {2} Errors: {3}".format( 100, kibs, "[{0:4.2f}KiB/s]".format(kibs * cratio) if compression_support else "", self.protocol.errors )) # no one likes transfers finishing at 99.8% self.close() self.logger.info("Transfer complete")
def test_encode_with_lookahead_sz2(self): encoded = heatshrink.encode(b'abcde', lookahead_sz2=3) self.assertEqual(encoded, b'\xb0\xd8\xacvK(')
def test_encode_with_window_sz2(self): encoded = heatshrink.encode(b'abcde', window_sz2=8) # FIXME: Prove that this setting changes output self.assertEqual(encoded, b'\xb0\xd8\xacvK(')
def setUp(self): self.encoded = heatshrink.encode(b'abcde')
def test_with_a_paragraph(self): encoded = heatshrink.encode(TEXT) self.assertEqual(heatshrink.decode(encoded), TEXT)
def test_round_trip(self): encoded = heatshrink.encode(b'a string') self.assertEqual(heatshrink.decode(encoded), 'a string')
def test_different_params_yield_different_output(self): string = b'A string with stuff in it' self.assertNotEqual(heatshrink.encode(string, window_sz2=8), heatshrink.encode(string, window_sz2=11)) self.assertNotEqual(heatshrink.encode(string, lookahead_sz2=4), heatshrink.encode(string, lookahead_sz2=8))