def METHOD_NAME(integration_tracing, integration_tracing_exhaustive, datadog_agent):
    def _get_config(key):
        return {
            'integration_tracing': str(integration_tracing).lower(),
            'integration_tracing_exhaustive': str(integration_tracing_exhaustive).lower(),
        }.get(key, None)
    with mock.patch.object(datadog_agent, 'get_config', _get_config), mock.patch('ddtrace.tracer') as tracer:
        with traced_mock_classes():
            check = DummyCheck('dummy', {}, [{}])
            check.run()
        if integration_tracing:
            called_services = {c.kwargs['service'] for c in tracer.trace.mock_calls if 'service' in c.kwargs}
            called_methods = {c.args[0] for c in tracer.trace.mock_calls if c.args}
            assert called_services == {INTEGRATION_TRACING_SERVICE_NAME}
            for m in AGENT_CHECK_DEFAULT_TRACED_METHODS:
                assert m in called_methods
            warning_span_tag_calls = tracer.trace().__enter__().set_tag.call_args_list
            assert mock.call('_dd.origin', INTEGRATION_TRACING_SERVICE_NAME) in warning_span_tag_calls
            assert mock.call(ERROR_MSG, 'whoops oh no') in warning_span_tag_calls
            assert mock.call(ERROR_TYPE, 'AgentCheck.warning') in warning_span_tag_calls
            exhaustive_only_methods = {'__init__', 'dummy_method'}
            if integration_tracing_exhaustive:
                for m in exhaustive_only_methods:
                    assert m in called_methods
            else:
                for m in exhaustive_only_methods:
                    assert m not in called_methods
        else:
            tracer.trace.assert_not_called()