Beispiel #1
0
def test_merge_rust_info():
    event = get_event(STACKTRACE)
    exc_info = get_exc_info(STACKTRACE)

    merge_rust_info_frames(event, {"exc_info": exc_info})

    assert event["platform"] == "native"
    assert event["logentry"]["formatted"] == "invalid debug identifier"

    exception = event["exception"]["values"][0]
    assert exception["value"] == "invalid debug identifier"

    frames = exception["stacktrace"]["frames"]
    assert len(frames) == 8
    assert frames[0]["platform"] == "python"

    # Top frame
    assert frames[7]["instruction_addr"] == "0x11163e27c"
    assert frames[7][
        "function"] == "<failure::error::Error as core::convert::From<F>>::from"
    assert frames[7]["package"] == "failure"
    assert frames[7]["in_app"] is False
    assert frames[7]["filename"] == "mod.rs"
    assert frames[7]["lineno"] == 36

    # Inlined frame, same address
    assert frames[7]["instruction_addr"] == "0x11163e27c"
    assert frames[6]["function"] == "<T as core::convert::Into<U>>::into"
    assert frames[6]["package"] == "core"
    assert frames[6]["in_app"] is False
    assert frames[6]["filename"] == "convert.rs"
    assert frames[6]["lineno"] == 456
Beispiel #2
0
def test_without_exception():
    event = get_event(STACKTRACE)
    exc_info = get_exc_info(STACKTRACE)

    del event["exception"]
    merge_rust_info_frames(event, {"exc_info": exc_info})
    assert event["platform"] == "python"
Beispiel #3
0
def test_merge_rust_info():
    event = get_event(STACKTRACE)
    exc_info = get_exc_info(STACKTRACE)

    merge_rust_info_frames(event, {'exc_info': exc_info})

    assert event['platform'] == 'native'
    assert event['logentry']['formatted'] == 'invalid debug identifier'

    exception = event['exception']['values'][0]
    assert exception['value'] == 'invalid debug identifier'

    frames = exception['stacktrace']['frames']
    assert len(frames) == 8
    assert frames[0]['platform'] == 'python'

    # Top frame
    assert frames[7]['instruction_addr'] == '0x11163e27c'
    assert frames[7]['function'] == '<failure::error::Error as core::convert::From<F>>::from'
    assert frames[7]['package'] == 'failure'
    assert frames[7]['in_app'] is False
    assert frames[7]['filename'] == 'mod.rs'
    assert frames[7]['lineno'] == 36

    # Inlined frame, same address
    assert frames[7]['instruction_addr'] == '0x11163e27c'
    assert frames[6]['function'] == '<T as core::convert::Into<U>>::into'
    assert frames[6]['package'] == 'core'
    assert frames[6]['in_app'] is False
    assert frames[6]['filename'] == 'convert.rs'
    assert frames[6]['lineno'] == 456
Beispiel #4
0
def test_without_exception():
    event = get_event(STACKTRACE)
    exc_info = get_exc_info(STACKTRACE)

    del event['exception']
    merge_rust_info_frames(event, {'exc_info': exc_info})
    assert event['platform'] == 'python'
Beispiel #5
0
def test_without_stacktrace():
    stacktrace = "stacktrace: stack backtrace:\n\n"
    event = get_event(stacktrace)
    exc_info = get_exc_info(stacktrace)

    merge_rust_info_frames(event, {"exc_info": exc_info})

    assert event["platform"] == "native"
    assert event["logentry"]["formatted"] == "invalid debug identifier"

    exception = event["exception"]["values"][0]
    assert exception["value"] == "invalid debug identifier"

    frames = exception["stacktrace"]["frames"]
    assert len(frames) == 1
Beispiel #6
0
def test_without_stacktrace():
    stacktrace = 'stacktrace: stack backtrace:\n\n'
    event = get_event(stacktrace)
    exc_info = get_exc_info(stacktrace)

    merge_rust_info_frames(event, {'exc_info': exc_info})

    assert event['platform'] == 'native'
    assert event['logentry']['formatted'] == 'invalid debug identifier'

    exception = event['exception']['values'][0]
    assert exception['value'] == 'invalid debug identifier'

    frames = exception['stacktrace']['frames']
    assert len(frames) == 1
Beispiel #7
0
def test_merge_rust_info_linux():
    event = get_event(STACKTRACE_SEMAPHORE_LINUX)
    exc_info = get_exc_info(STACKTRACE_SEMAPHORE_LINUX)

    merge_rust_info_frames(event, {"exc_info": exc_info})

    assert event["platform"] == "native"
    assert event["logentry"]["formatted"] == "invalid debug identifier"

    exception = event["exception"]["values"][0]
    assert exception["value"] == "invalid debug identifier"

    frames = exception["stacktrace"]["frames"]
    assert len(frames) == 4
    assert frames[0]["platform"] == "python"

    # Top frame
    assert frames[-1]["instruction_addr"] == "0x7f2d0b06e999"
    assert frames[-1][
        "function"] == "semaphore::processing::semaphore_test_panic::{{closure}}"

    # Inlined frame, same address
    assert frames[-2]["instruction_addr"] == "0x7f2d0b03c59a"
    assert frames[-2]["function"] == "std::panic::catch_unwind"
Beispiel #8
0
def test_without_exc_info():
    event = get_event(STACKTRACE)
    merge_rust_info_frames(event, {})
    assert event["platform"] == "python"
Beispiel #9
0
def test_without_exc_info():
    event = get_event(STACKTRACE)
    merge_rust_info_frames(event, {})
    assert event['platform'] == 'python'