def testWorkerThreadExecutesJob(self): work_data = [1.111111] * 5 test_job = Job(0, 0, work_data) job_queue = Queue() job_queue.put(test_job) launcher = MockLauncher() worker_thread = WorkerThread(job_queue, launcher) worker_thread.run() while worker_thread.is_alive(): pass assert math.fabs(test_job.work_data[0] - 1.111111 * 1001) < 1 assert math.fabs(test_job.work_data[-1] - 1.111111 * 1001) < 1
def testHardwareMonitorCpuUsageDecreasesWithThrottling(self): work_data_1 = [1.111111] * 10000 work_data_2 = [1.111111] * 10000 test_jobs = [Job(0, 0, work_data_1), Job(0, 0, work_data_2)] job_queue = Queue() job_queue.put(test_jobs[0]) job_queue.put(test_jobs[1]) launcher = MockLauncher() worker_thread = WorkerThread(job_queue, launcher) monitor = HardwareMonitor(worker_thread) monitor.start() try: worker_thread.run() except: pass while worker_thread.is_alive(): pass full_cpu_usage = monitor.get_cpu_usage() monitor.stop() work_data_1 = [1.111111] * 10000 work_data_2 = [1.111111] * 10000 test_jobs = [Job(0, 0, work_data_1), Job(0, 0, work_data_2)] job_queue = Queue() job_queue.put(test_jobs[0]) job_queue.put(test_jobs[1]) launcher = MockLauncher() worker_thread = WorkerThread(job_queue, launcher) worker_thread.throttling = 20 monitor.start() try: worker_thread.run() except: pass while worker_thread.is_alive(): pass throttled_cpu_usage = monitor.get_cpu_usage() monitor.stop() assert throttled_cpu_usage < full_cpu_usage
def testWorkerThreadThrottleIncreasesExecutionTime(self): work_data_1 = [1.111111] * 100 work_data_2 = [1.111111] * 100 test_jobs = [Job(0, 0, work_data_1), Job(0, 0, work_data_2)] job_queue = Queue() job_queue.put(test_jobs[0]) job_queue.put(test_jobs[1]) launcher = MockLauncher() worker_thread = WorkerThread(job_queue, launcher) start_time = time.time() try: worker_thread.run() except: pass while worker_thread.is_alive(): pass unthrottled_execution_time = time.time() - start_time work_data_1 = [1.111111] * 100 work_data_2 = [1.111111] * 100 test_jobs = [Job(0, 0, work_data_1), Job(0, 0, work_data_2)] job_queue = Queue() job_queue.put(test_jobs[0]) job_queue.put(test_jobs[1]) launcher = MockLauncher() worker_thread = WorkerThread(job_queue, launcher) worker_thread.throttling = 50 start_time = time.time() try: worker_thread.run() except: pass while worker_thread.is_alive(): pass throttled_execution_time = time.time() - start_time assert unthrottled_execution_time < throttled_execution_time
def testWorkerThreadExecutesSequentialJobs(self): work_data_1 = [1.111111] * 5 work_data_2 = [0] * 5 test_jobs = [Job(0, 0, work_data_1), Job(0, 0, work_data_2)] job_queue = Queue() job_queue.put(test_jobs[0]) job_queue.put(test_jobs[1]) launcher = MockLauncher() worker_thread = WorkerThread(job_queue, launcher) try: worker_thread.run() except: pass while worker_thread.is_alive(): pass self.assertEqual(int(test_jobs[0].work_data[0]), 1112) self.assertEqual(int(test_jobs[1].work_data[0]), 1111)
def testHardwareMonitorCpuUsageIncreasesWithWorkload(self): work_data = [1.111111] * 10000 test_job = Job(0, 0, work_data) job_queue = Queue() job_queue.put(test_job) launcher = MockLauncher() worker_thread = WorkerThread(job_queue, launcher) monitor = HardwareMonitor(worker_thread) monitor.start() time.sleep(0.5) clean_cpu_usage = monitor.get_cpu_usage() worker_thread.run() while worker_thread.is_alive(): pass dirty_cpu_usage = monitor.get_cpu_usage() monitor.stop() assert dirty_cpu_usage > clean_cpu_usage