Exemple #1
0
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)
Exemple #2
0
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))
Exemple #3
0
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))
Exemple #4
0
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')
Exemple #5
0
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