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)
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)