def log_return_value(name, return_value): if return_value == SATISFIABLE: result = "SAT" elif return_value == UNSATISFIABLE: result = "UNSAT" elif return_value == UNKNOWN: result = "UNKNOWN" else: result = str(return_value) log_progress(result)
def print_stats(): global failed print('\nStatistics:') for name in testcases: if name not in testcase_result: continue # for x, (testcase_name, config, expected, result, return_value, seconds, memory) in sorted(testcase_result.iteritems(), key=lambda (k,v): (v,k)): testcase_name, config, expected, result, return_value, seconds, memory = testcase_result[name] print_result(testcase_name,config,expected,result,return_value,seconds,memory) print('Printed {} results in total'.format(len(testcase_result))) log_progress(green( 'SUCCESS: ') + "{}\n".format(SUCCESSES)) log_progress(red( 'FAILED: ') + "{}\n".format(FAILEDS)) log_progress(yellow('TIMEOUT: ') + "{}\n".format(TIMEOUTS)) log_progress(cyan( 'UNKNOWN: ') + "{}\n".format(UNKNOWNS))
def print_stats(): global failed print('\nStatistics:') i = 0 for name in testcases: if name not in testcase_result: continue i += 1 result, return_value = testcase_result[name] seconds = None memory = None if name in benchmark_results: seconds, memory = compute_average(benchmark_results[name]) print_result(name, result, return_value, seconds, memory) print('Printed {} results in total'.format(i)) log_progress(green('SUCCESS: ') + "{}\n".format(SUCCESSES)) log_progress(red('FAILED: ') + "{}\n".format(FAILEDS)) log_progress(yellow('TIMEOUT: ') + "{}\n".format(TIMEOUTS)) log_progress(cyan('UNKNOWN: ') + "{}\n".format(UNKNOWNS))
def print_result(name, config, expected, result, return_value, seconds, memory): if return_value == SATISFIABLE: return_value = "SAT" elif return_value == UNSATISFIABLE: return_value = "UNSAT" else: return_value = str(return_value) if result == TEST_FAILED: failed = True log_progress(red('FAILED: ')) elif result == TEST_TIMEOUT: log_progress(yellow('TIMEOUT: ')) else: if result == TEST_UNKNOWN: log_progress(cyan('UNKNOWN: ')) else: log_progress(green('SUCCESS: ')) if seconds != None and memory != None: log_progress('[{:.2f}s, {:.1f}MB] '.format(seconds, memory)) log_progress(name + ' ' + config) log_progress('\n')
def run_jobs(jobs, timeout, threads=1, manage_certificate=False): global interrupted job_queue = mp.Queue() result_queue = mp.Queue() # holds names of jobs that just finished results = {} # holds all results for job_name, (job, expected_result) in jobs.items(): job_queue.put((job_name, job, expected_result)) workers = [] for i in range(threads): tmp = mp.Process(target=worker_loop, args=(job_queue, results, result_queue, i, timeout, manage_certificate)) tmp.start() workers.append(tmp) FAILEDS = 0 SUCCESSES = 0 TIMEOUTS = 0 UNKNOWNS = 0 for i in range(len(jobs)): try: job_name, job, expected, result = result_queue.get(block=True) results[job_name] = result seconds = result['seconds'] memory = result['memory'] return_value = result['return_value'] if seconds is None: log_progress(yellow('TIMEOUT: ')) TIMEOUTS += 1 elif return_value == 30: log_progress(cyan('UNKNOWN: ')) UNKNOWNS += 1 elif return_value == expected or expected == 30 and return_value in [10, 20]: log_progress(green('SUCCESS: ')) SUCCESSES += 1 else: log_progress(red('FAILED: ') + job_name) FAILEDS += 1 if seconds != None and memory != None: log_progress('[{:.2f}s, {:.1f}MB] '.format(seconds, memory)) log_progress(job_name) log_progress('\n') except KeyboardInterrupt: print('\nTerminating all workers') interrupted = True for worker in workers: worker.terminate() worker.join() return for worker in workers: worker.terminate() worker.join() print('\nStatistics:') print(f'Printed {len(jobs)} results in total') log_progress(green( 'SUCCESS: ') + "{}\n".format(SUCCESSES)) log_progress(red( 'FAILED: ') + "{}\n".format(FAILEDS)) log_progress(yellow('TIMEOUT: ') + "{}\n".format(TIMEOUTS)) log_progress(cyan( 'UNKNOWN: ') + "{}\n".format(UNKNOWNS)) return results