Esempio n. 1
0
 def test_flatten_considers_files(self):
     unflattened_chunks = [
         {'filenum': 0, 'begin': 200, 'end': 300, 't': 10.0, 'peeraddr': 'A'},
         {'filenum': 1, 'begin': 300, 'end': 400, 't': 10.0, 'peeraddr': 'A'}
         ]
     expected_result = unflattened_chunks
     log = TrLog()
     log.chunks = unflattened_chunks
     log.flatten()
     self.assertEquals(expected_result, log.chunks)
Esempio n. 2
0
 def test_flatten_handles_interwoven_peers(self):
     unflattened_chunks = [
         {'filenum': 0, 'begin': 200, 'end': 300, 't': 10.0, 'peeraddr': 'A'},
         {'filenum': 0, 'begin': 500, 'end': 600, 't': 10.0, 'peeraddr': 'B'},
         {'filenum': 0, 'begin': 300, 'end': 400, 't': 10.0, 'peeraddr': 'A'},
         {'filenum': 0, 'begin': 600, 'end': 700, 't': 10.0, 'peeraddr': 'B'},
         ]
     expected_result = [
         {'filenum': 0, 'begin': 200, 'end': 400, 't': 10.0, 'peeraddr': 'A'},
         {'filenum': 0, 'begin': 500, 'end': 700, 't': 10.0, 'peeraddr': 'B'},
         ]
     log = TrLog()
     log.chunks = unflattened_chunks
     log.flatten()
     self.assertEquals(expected_result, log.chunks)
Esempio n. 3
0
 def test_reduce_max_passivity(self):
     non_reduced_chunks = [
         {'filenum': 0, 'begin': 100, 'end': 200, 't': 0.0, 'peeraddr': 'A'},
         {'filenum': 0, 'begin': 200, 'end': 300, 't': 1.0, 'peeraddr': 'A'},
         {'filenum': 0, 'begin': 300, 'end': 400, 't': 20.0, 'peeraddr': 'A'},
         {'filenum': 0, 'begin': 400, 'end': 500, 't': 22.0, 'peeraddr': 'A'}
         ]
     expected_result = [
         {'filenum': 0, 'begin': 100, 'end': 200, 't': 0.0, 'peeraddr': 'A'},
         {'filenum': 0, 'begin': 200, 'end': 300, 't': 1.0, 'peeraddr': 'A'},
         {'filenum': 0, 'begin': 300, 'end': 400, 't': 2.5, 'peeraddr': 'A'},
         {'filenum': 0, 'begin': 400, 'end': 500, 't': 4.0, 'peeraddr': 'A'}
         ]
     log = TrLog()
     actual_result = log._reduce_max_passivity(non_reduced_chunks, 1.5)
     self.assertEquals(expected_result, actual_result)
Esempio n. 4
0
 def test_ignore_non_downloaded_files(self):
     log = TrLog()
     log.files = [
         {'offset': 0,    'length': 1000, 'exists_on_disk': False},
         {'offset': 1000, 'length': 1000, 'exists_on_disk': True},
         {'offset': 2000, 'length': 1000, 'exists_on_disk': False},
         {'offset': 3000, 'length': 1000, 'exists_on_disk': True}, # no chunks in log
         {'offset': 4000, 'length': 1000, 'exists_on_disk': True},
         ]
     log.chunks = [
         {'filenum': 0, 'begin': 500, 'end': 600},
         {'filenum': 1, 'begin': 1200, 'end': 1300},
         {'filenum': 1, 'begin': 1400, 'end': 1500},
         {'filenum': 4, 'begin': 4200, 'end': 4300},
         {'filenum': 4, 'begin': 4400, 'end': 4500},
         {'filenum': 2, 'begin': 2500, 'end': 2600},
         ]
     expected_result = [
         {'filenum': 0, 'begin':  200, 'end':  300},
         {'filenum': 0, 'begin':  400, 'end':  500},
         {'filenum': 1, 'begin': 1200, 'end': 1300},
         {'filenum': 1, 'begin': 1400, 'end': 1500}
         ]
     def exists(f):
         return f['exists_on_disk']
     log._file_exists = exists
     log._ignore_non_downloaded_files()
     self.assertEquals(expected_result, log.chunks)
     self.assertEquals(2000, log.total_file_size())
Esempio n. 5
0
    def test_select_files(self):
        log = TrLog()
        log.files = [
            {'offset': 0,    'length': 1000},
            {'offset': 1000, 'length': 2000}, # selected
            {'offset': 3000, 'length': 3000},
            {'offset': 6000, 'length': 4000}, # selected
            ]
        log.chunks = [
            {'filenum': 1, 'begin': 1200, 'end': 1300},
            {'filenum': 1, 'begin': 1400, 'end': 1500},
            {'filenum': 2, 'begin': 3200, 'end': 3300},
            {'filenum': 3, 'begin': 6200, 'end': 6300},
            {'filenum': 3, 'begin': 6400, 'end': 6500},
            ]

        log.select_files([1, 3])
        expected_files = [
            {'offset': 0,    'length': 2000},
            {'offset': 2000, 'length': 4000},
            ]
        expected_chunks = [
            {'filenum': 0, 'begin': 200, 'end': 300},
            {'filenum': 0, 'begin': 400, 'end': 500},
            {'filenum': 1, 'begin': 2200, 'end': 2300},
            {'filenum': 1, 'begin': 2400, 'end': 2500},
            ]
        self.assertEquals(expected_files, log.files)
        self.assertEquals(expected_chunks, log.chunks)
        self.assertEquals(6000, log.total_file_size())