Пример #1
0
    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")
Пример #2
0
    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))
Пример #3
0
    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")
Пример #4
0
 def test_encode_with_lookahead_sz2(self):
     encoded = heatshrink.encode(b'abcde', lookahead_sz2=3)
     self.assertEqual(encoded, b'\xb0\xd8\xacvK(')
Пример #5
0
 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(')
Пример #6
0
 def setUp(self):
     self.encoded = heatshrink.encode(b'abcde')
Пример #7
0
 def test_with_a_paragraph(self):
     encoded = heatshrink.encode(TEXT)
     self.assertEqual(heatshrink.decode(encoded), TEXT)
Пример #8
0
 def test_round_trip(self):
     encoded = heatshrink.encode(b'a string')
     self.assertEqual(heatshrink.decode(encoded), 'a string')
Пример #9
0
 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))