Пример #1
0
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()
Пример #2
0
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()
Пример #3
0
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
Пример #4
0
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
Пример #5
0
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
Пример #6
0
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