Beispiel #1
0
def test_error_from_exc(sdk):
    nsdk = get_nsdk(sdk)
    def check_exc(func):
        err_code, err_msg = exec_with_dummy_node(sdk, func).err_info
        assert err_code == ValueError.__module__ + '.ValueError'
        assert err_msg == 'test'

    def do_raise_auto(tracer):
        try:
            raise ValueError('test')
        except ValueError:
            util.error_from_exc(nsdk, tracer.handle)

    def do_raise_val_only(tracer):
        util.error_from_exc(nsdk, tracer.handle, ValueError('test'))

    def do_raise_val_ty(tracer):
        util.error_from_exc(nsdk, tracer.handle, ValueError('test'), ValueError)

    def do_raise_val_other_ty(tracer):
        util.error_from_exc(
            nsdk, tracer.handle, ValueError(), RuntimeError)

    check_exc(do_raise_auto)
    check_exc(do_raise_val_only)
    check_exc(do_raise_val_ty)
    err_code, err_msg = exec_with_dummy_node(
        sdk, do_raise_val_other_ty).err_info
    assert err_code == RuntimeError.__module__ + '.RuntimeError'
    assert err_msg == ''
def test_trace_in_remote_call(sdk):
    with sdk.trace_incoming_remote_call('a', 'b', 'c'):
        pass
    nsdk = get_nsdk(sdk)
    assert len(nsdk.finished_paths) == 1
    root = nsdk.finished_paths[0]
    assert isinstance(root, sdkmockiface.InRemoteCallHandle)
    assert root.vals == ('a', 'b', 'c')
Beispiel #3
0
    def test_error_from_unicode_exc(sdk):
        nsdk = get_nsdk(sdk)
        def check_exc(func):
            err_code, _ = exec_with_dummy_node(sdk, func).err_info
            assert err_code == __name__ + '.' + DifficultClass.__name__

        def do_raise(tracer):
            util.error_from_exc(nsdk, tracer.handle, DifficultClass('test'))

        check_exc(do_raise)
def test_trace_iwr_minimal(sdk):
    with sdk.create_web_application_info('a', 'b', '/b') as wapp:
        wreq = sdk.trace_incoming_web_request(wapp, DUMMY_URL, 'GET')
        with wreq:
            pass
    nsdk = get_nsdk(sdk)
    assert len(nsdk.finished_paths) == 1
    root = nsdk.finished_paths[0]
    assert isinstance(root, sdkmockiface.InWebReqHandle)
    assert root.vals[1:] == (DUMMY_URL, 'GET')
    assert root.vals[0].vals == ('a', 'b', '/b')
def test_threading(sdk):
    """Regression test for bug where the paththread local was only created on
    the thread where the constructor of the mock sdk was called."""
    err = []
    thread = threading.Thread(target=thread_worker, args=(err, sdk))
    thread.start()
    with create_dummy_entrypoint(sdk):
        pass
    thread.join()
    if err:
        raise RuntimeError('Exception on ' + thread.name + ': ' + err[0])

    assert len(get_nsdk(sdk).finished_paths) == 2
def test_trace_error(sdk):
    try:
        with sdk.trace_incoming_remote_call('a', 'b', 'c'):
            raise RuntimeError('bla')
    except RuntimeError:
        pass
    else:
        assert not 'Exception seems to have been swallowed!'
    nsdk = get_nsdk(sdk)
    assert len(nsdk.finished_paths) == 1
    root = nsdk.finished_paths[0]
    assert isinstance(root, sdkmockiface.InRemoteCallHandle)
    assert root.vals == ('a', 'b', 'c')
    assert root.err_info == (RTERR_QNAME, 'bla')
def test_trace_iwr_autocount(sdk):
    with sdk.create_web_application_info('a', 'b', '/b') as wapp:
        wreq = sdk.trace_incoming_web_request(wapp,
                                              DUMMY_URL,
                                              'GET',
                                              headers=(['x',
                                                        'y'], ['xv', 'yv']))
        with wreq:
            wreq.add_response_headers(['u'], ['uv'])
    nsdk = get_nsdk(sdk)
    assert len(nsdk.finished_paths) == 1
    root = nsdk.finished_paths[0]
    assert root.req_hdrs == [('x', 'xv'), ('y', 'yv')]
    assert root.resp_hdrs == [('u', 'uv')]
def test_trace_sql_database_request(sdk):
    with create_dummy_entrypoint(sdk):
        dbi = sdk.create_database_info(
            'dbn', 'dbv', onesdk.Channel(onesdk.ChannelType.OTHER, 'ce'))
        hdbi = dbi.handle
        with dbi:
            tracer = sdk.trace_sql_database_request(dbi, DUMMY_SQL)
            with tracer:
                tracer.set_round_trip_count(1)
                tracer.set_rows_returned(42)
    nsdk = get_nsdk(sdk)
    assert len(nsdk.finished_paths) == 1
    _, root = nsdk.finished_paths[0].children[0]  # Strip dummy entrypoint
    assert isinstance(root, sdkmockiface.DbRequestHandle)
    assert root.vals[0] is hdbi
    assert root.vals[1] == DUMMY_SQL
    assert root.round_trip_count == 1
    assert root.returned_row_count == 42
def test_trace_out_remote_call(sdk):
    print('SDK:', sdk)
    with create_dummy_entrypoint(sdk):
        print('SDK2:', sdk)
        tracer = sdk.trace_outgoing_remote_call('a',
                                                'b',
                                                'c',
                                                onesdk.Channel(
                                                    onesdk.ChannelType.OTHER,
                                                    'e'),
                                                protocol_name='foo')
        tracer.start()
        tracer.end()
    nsdk = get_nsdk(sdk)
    assert len(nsdk.finished_paths) == 1
    _, root = nsdk.finished_paths[0].children[0]
    assert isinstance(root, sdkmockiface.OutRemoteCallHandle)
    assert root.vals == ('a', 'b', 'c', onesdk.ChannelType.OTHER, 'e')
    assert root.protocol_name == 'foo'
def test_trace_iwr_full(sdk):
    '''Tests an incoming web request with all optional properties (excluding
    tag) set.'''
    dummy_hdrs = {'X-MyHeader': 'my-value', 'X-MyOtherHeader': 'another value'}
    dummy_len = 2
    dummy_params = (
        ['username', 'password', 'csrf'],
        ('heinz', 'seb2009', 'dummy', 'overlong'),
        dummy_len  # Skip additional
    )
    dummy_params_x = (iter(dummy_params[0]), dummy_params[1], 2)
    with sdk.create_web_application_info('a', 'b', '/b') as wapp:
        wreq = sdk.trace_incoming_web_request(wapp,
                                              DUMMY_URL,
                                              'GET',
                                              headers=dummy_hdrs,
                                              remote_address='127.0.0.1')
        with wreq:
            wreq.add_parameters(*dummy_params)
            wreq.add_parameter('p2', 'vp2')
            wreq.add_response_header('Location', DUMMY_URL)
            wreq.add_response_headers(*dummy_params)
            wreq.set_status_code(200)
    nsdk = get_nsdk(sdk)
    assert len(nsdk.finished_paths) == 1
    root = nsdk.finished_paths[0]
    assert isinstance(root, sdkmockiface.InWebReqHandle)
    assert root.vals[1:] == (DUMMY_URL, 'GET')
    assert root.vals[0].vals == ('a', 'b', '/b')
    assert root.req_hdrs == list(dummy_hdrs.items())
    assert root.params == [('username', 'heinz'), ('password', 'seb2009'),
                           ('p2', 'vp2')]
    assert root.resp_hdrs == [('Location', DUMMY_URL), ('username', 'heinz'),
                              ('password', 'seb2009')]
    assert root.resp_code == 200
    assert root.remote_addr == '127.0.0.1'