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_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 thread_worker(err, sdk):
    try:
        with create_dummy_entrypoint(sdk):
            pass
    except Exception:  #pylint:disable=broad-except
        err.append(traceback.format_exc())