Beispiel #1
0
def test_call_set_should_capture_backtrace_only_once():
    callset = NPlusOneCallSet()
    callset.update(SQL, CALL_COUNT_THRESHOLD, DURATION_THRESHOLD)
    assert callset.should_capture_backtrace(SQL)
    assert not callset.should_capture_backtrace(SQL)
    callset.update(SQL, CALL_COUNT_THRESHOLD // 2, DURATION_THRESHOLD / 2)
    assert not callset.should_capture_backtrace(SQL)
def test_should_capture_backtrace():
    sql = "SELECT * from test"
    callset = NPlusOneCallSet()
    callset.update(sql, NPlusOneCallSetItem.CALL_COUNT_THRESHOLD - 1,
                   NPlusOneCallSetItem.DURATION_THRESHOLD - 1)
    assert (callset.should_capture_backtrace(sql) is False)
    callset.update(sql, 1, 1)
    assert (callset.should_capture_backtrace(sql) is True)
Beispiel #3
0
def test_call_set_update_no_longer_increments_call_count_and_duration_after_capture(
):
    callset = NPlusOneCallSet()
    callset.update(SQL, CALL_COUNT_THRESHOLD, DURATION_THRESHOLD)
    callset.should_capture_backtrace(SQL)
    callset.update(SQL, CALL_COUNT_THRESHOLD // 2, DURATION_THRESHOLD // 2)
    item = callset.find_for(SQL)
    assert item.call_count == CALL_COUNT_THRESHOLD
    assert item.call_duration == DURATION_THRESHOLD
def test_no_capture_if_already_captured():
    sql = "SELECT * from test"
    callset = NPlusOneCallSet()
    callset.update(sql, NPlusOneCallSetItem.CALL_COUNT_THRESHOLD,
                   NPlusOneCallSetItem.DURATION_THRESHOLD)
    assert (callset.should_capture_backtrace(sql) is True)
    # Subsequent calls should return False
    assert (callset.should_capture_backtrace(sql) is False)
    callset.update(sql, 1, 1)
    assert (callset.should_capture_backtrace(sql) is False)