예제 #1
0
 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)
예제 #2
0
 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)
예제 #3
0
    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)
예제 #4
0
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)

예제 #5
0
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))