def test_gc_diagnosis_cpu_time(): diag = GCDiagnosis(warn_over_frac=0.75) diag.N_SAMPLES = 3 # shorten tests with enable_gc_diagnosis_and_log(diag, level="WARN") as sio: # Spend some CPU time doing only full GCs for i in range(diag.N_SAMPLES): gc.collect() assert not sio.getvalue() gc.collect() lines = sio.getvalue().splitlines() assert len(lines) == 1 # Between 80% and 100% assert re.match( r"full garbage collections took (100|[89][0-9])% " r"CPU time recently", lines[0], ) with enable_gc_diagnosis_and_log(diag, level="WARN") as sio: # Spend half the CPU time doing full GCs for i in range(diag.N_SAMPLES + 1): t1 = thread_time() gc.collect() dt = thread_time() - t1 run_for(dt, timer=thread_time) # Less than 75% so nothing printed assert not sio.getvalue()
def test_gc_diagnosis_cpu_time(): diag = GCDiagnosis(warn_over_frac=0.75) diag.N_SAMPLES = 3 # shorten tests with enable_gc_diagnosis_and_log(diag, level='WARN') as sio: # Spend some CPU time doing only full GCs for i in range(diag.N_SAMPLES): gc.collect() assert not sio.getvalue() gc.collect() lines = sio.getvalue().splitlines() assert len(lines) == 1 # Between 80% and 100% assert re.match(r"full garbage collections took (100|[89][0-9])% " r"CPU time recently", lines[0]) with enable_gc_diagnosis_and_log(diag, level='WARN') as sio: # Spend half the CPU time doing full GCs for i in range(diag.N_SAMPLES + 1): t1 = thread_time() gc.collect() dt = thread_time() - t1 run_for(dt, timer=thread_time) # Less than 75% so nothing printed assert not sio.getvalue()
def test_process_time(): start = metrics.process_time() run_for(0.05) dt = metrics.process_time() - start assert 0.03 <= dt <= 0.2 # All threads counted t = threading.Thread(target=run_for, args=(0.1, )) start = metrics.process_time() t.start() t.join() dt = metrics.process_time() - start assert dt >= 0.05 # Sleep time not counted start = metrics.process_time() time.sleep(0.1) dt = metrics.process_time() - start assert dt <= 0.05
def test_thread_time(): start = metrics.thread_time() run_for(0.05) dt = metrics.thread_time() - start assert 0.03 <= dt <= 0.2 # Sleep time not counted start = metrics.thread_time() time.sleep(0.1) dt = metrics.thread_time() - start assert dt <= 0.05 if sys.platform == "linux": # Always per-thread on Linux t = threading.Thread(target=run_for, args=(0.1, )) start = metrics.thread_time() t.start() t.join() dt = metrics.thread_time() - start assert dt <= 0.05
def test_process_time(): start = metrics.process_time() run_for(0.05) dt = metrics.process_time() - start assert 0.03 <= dt <= 0.2 # All threads counted t = threading.Thread(target=run_for, args=(0.1,)) start = metrics.process_time() t.start() t.join() dt = metrics.process_time() - start assert dt >= 0.05 if PY3: # Sleep time not counted start = metrics.process_time() time.sleep(0.1) dt = metrics.process_time() - start assert dt <= 0.05
def test_thread_time(): start = metrics.thread_time() run_for(0.05) dt = metrics.thread_time() - start assert 0.03 <= dt <= 0.2 if PY3: # Sleep time not counted start = metrics.thread_time() time.sleep(0.1) dt = metrics.thread_time() - start assert dt <= 0.05 if sys.platform == 'linux': # Always per-thread on Linux t = threading.Thread(target=run_for, args=(0.1,)) start = metrics.thread_time() t.start() t.join() dt = metrics.thread_time() - start assert dt <= 0.05