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