def test_multiproc(self): processes_number = 12 dirpath = os.path.dirname(os.path.abspath(__file__)) files_list = [] for dirname, dirnames, filenames in os.walk(dirpath + '/files'): files_list = [os.path.join(dirname, filename) for filename in filenames] m = Manager() q = m.Queue() uploader = Uploader(files_list, processes_number, q) uploader.start() uploader.is_active() pids = [res['pid'] for res in uploader._result_list] assert(len(set(pids)) == processes_number)
def test_uploader(self): uploader = Uploader(self.files_list, 12, self.q) uploader.start() while uploader.is_active(): progress = self.q.get() print(progress.done, progress.error, progress.total) self.print_result(uploader.result)
def test_uploader_stop(self): uploader = Uploader(self.files_list, 12, self.q) uploader.start() dt = datetime.now() while uploader.is_active(): progress = self.q.get() print(progress.done, progress.error, progress.total) # check method to stop uploading and interrupt all uploading process. if (datetime.now() - dt).seconds >= 4: uploader.stop() self.print_result(uploader.result)
import queue from uploader import Uploader from pprint import pprint from datetime import datetime if __name__ == '__main__': files_list = ['file{:02d}.txt'.format(n) for n in range(1, 30)] q = queue.Queue() uploader = Uploader(files_list, 12, q) uploader.start() dt = datetime.now() while uploader.is_active(): progress = q.get() print(progress.done, progress.error, progress.total) # check method to stop uploading and interrupt all uploading process. if (datetime.now() - dt).seconds >= 2: uploader.stop() pprint(uploader.result)
class UploaderTest(unittest.TestCase): @classmethod def setUpClass(cls): cls.num_of_processes = 4 cls.files_to_upload = [] cls.path_for_files = os.path.dirname( os.path.abspath(__file__)) + '/files' if not os.path.exists(cls.path_for_files): os.makedirs(cls.path_for_files) for i in range(1, 15): file = open(f"{cls.path_for_files}/file_{i}.txt", 'w') cls.files_to_upload.append(file.name) file.close() @classmethod def tearDownClass(cls): shutil.rmtree(cls.path_for_files) def setUp(self): self.q = queue.Queue() self.uploader = Uploader(self.files_to_upload, self.num_of_processes, self.q) def test_uploader(self): self.uploader.start() try: while self.uploader.is_active(): progress = self.q.get() print(progress.done, progress._error, progress._total) except KeyboardInterrupt: self.uploader.stop() def test_check_path(self): self.assertIsInstance(self.uploader.PATH, str) def test_files_to_upload(self): self.assertIsInstance(self.uploader.files_list, list) def test_num_of_process(self): self.assertIsInstance(self.uploader.num_of_processes, int) self.assertGreater(self.uploader.num_of_processes, 0, 'Need more processes.') def test_progress(self): self.assertIsNotNone(self.uploader.progress) self.assertGreaterEqual(self.uploader.progress.done, 0) self.assertGreaterEqual(self.uploader.progress.error, 0) self.assertGreaterEqual(self.uploader.progress.total, 0) self.assertIsInstance(self.uploader.progress.done, int) self.assertIsInstance(self.uploader.progress.error, int) self.assertIsInstance(self.uploader.progress.total, int) def test_queue(self): self.assertIsNotNone(self.uploader.performance_tasks) self.assertIsNotNone(self.uploader.completed_tasks) self.assertIsNotNone(self.uploader.tasks_with_errors) def test_report(self): report = self.uploader.report(self.uploader.performance_tasks) self.assertIsInstance(report, str) def test_is_active(self): is_active = self.uploader.is_active() self.assertIn(is_active, (True, None))