Отключить Spring Cloud Sleuth при запуске интеграционных тестов?
Когда используешь org.springframework.cloud:spring-cloud-gcp-starter-trace:1.0.0.RELEASE
и выполняя мои интеграционные тесты локально, я получаю это сообщение об ошибке:
org.springframework.beans.factory.BeanCreationException: Ошибка при создании компонента с именем 'stackdriverSender', определенным в ресурсе пути к классу [org/springframework/cloud/gcp/autoconfigure/trace/StackdriverTraceAutoConfiguration.class]: сбой создания экземпляра компонента с помощью метода фабрики; вложенное исключение - org.springframework.beans.BeanInstantiationException: не удалось создать экземпляр [zipkin2.reporter.Sender]: фабричный метод 'stackdriverSender' вызвал исключение; Вложенное исключение - java.io.IOException: учетные данные приложения по умолчанию недоступны. Они доступны, если работают в Google Compute Engine. В противном случае переменная среды GOOGLE_APPLICATION_CREDENTIALS должна быть указана, указывая на файл, определяющий учетные данные. См. https://developers.google.com/accounts/docs/application-default-credentials для получения дополнительной информации.
Это вполне понятно, поскольку эта переменная окружения отсутствует локально, и я не хочу использовать трассировку Sleuth/Stackdriver при выполнении тестов. Я посмотрел в справочной документации, но я могу только найти информацию о том, как отключить Sleuth для определенных точек интеграции, таких как RxJava, RestTemplate и т. Д. Но как я могу полностью отключить Sleuth?
Я пытался установить spring.sleuth.enabled=false
но это, похоже, не имеет никакого значения.
3 ответа
Как: отключить все тесты для реализации Webflux Sleuth с помощью Zipkin
Если у вас есть эти зависимости:
implementation 'org.springframework.cloud:spring-cloud-starter-sleuth'
implementation 'org.springframework.cloud:spring-cloud-sleuth-zipkin'
Затем полностью отключите Sleuth / Zipkin для ваших интеграционных тестов, добавив application.yml в папку test / resources с помощью:
spring:
sleuth: # All sleuth features disabled for integration tests
enabled: false
reactor:
enabled: false
web:
enabled: false
async:
enabled: false
client:
template:
enabled: false
zipkin: # All zipkin features disabled for integration tests
enabled: false
Я действительно нашел ответ, посмотрев на источник для класса StackdriverTraceAutoConfiguration. Чтобы решить эту проблему, используя GCP, нужно установить spring.cloud.gcp.trace.enabled=false
, Это отключает трассировку для всех точек интеграции.
Вы можете отключить отслеживание, ведение журнала и установить поддельный идентификатор проекта следующим образом:
spring.cloud.gcp.project-id=fake-project-id
spring.cloud.gcp.logging.enabled=false
spring.cloud.gcp.trace.enabled=false