Browse Source

Adds a check for Sleuth with 2022 cloud (#1175)

pull/1176/head
Marcin Grzejszczak 2 years ago committed by GitHub
parent
commit
e98e315704
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 5
      spring-cloud-commons/src/main/java/org/springframework/cloud/configuration/CompatibilityVerifierAutoConfiguration.java
  2. 48
      spring-cloud-commons/src/main/java/org/springframework/cloud/configuration/SleuthPresentVerifier.java
  3. 49
      spring-cloud-commons/src/test/java/org/springframework/cloud/configuration/SleuthPresentVerifierTests.java

5
spring-cloud-commons/src/main/java/org/springframework/cloud/configuration/CompatibilityVerifierAutoConfiguration.java

@ -50,4 +50,9 @@ public class CompatibilityVerifierAutoConfiguration { @@ -50,4 +50,9 @@ public class CompatibilityVerifierAutoConfiguration {
return new SpringBootVersionVerifier(properties.getCompatibleBootVersions());
}
@Bean
SleuthPresentVerifier sleuthPresentVerifier() {
return new SleuthPresentVerifier();
}
}

48
spring-cloud-commons/src/main/java/org/springframework/cloud/configuration/SleuthPresentVerifier.java

@ -0,0 +1,48 @@ @@ -0,0 +1,48 @@
/*
* Copyright 2012-2020 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.cloud.configuration;
import org.springframework.util.ClassUtils;
/**
* Verifies if Spring Cloud Sleuth is present on the classpath.
*/
class SleuthPresentVerifier implements CompatibilityVerifier {
private static final String TRACER_CLASS = "org.springframework.cloud.sleuth.Tracer";
private static final String ERROR_DESCRIPTION = "Spring Cloud Sleuth is not compatible with this Spring Cloud release train";
private static final String ACTION = """
Migrate from Spring Cloud Sleuth to Micrometer Tracing .
You can check the Sleuth 3.1 Migration Guide over here [https://github.com/micrometer-metrics/tracing/wiki/Spring-Cloud-Sleuth-3.1-Migration-Guide].\s
If you want to disable this check, just set the property [spring.cloud.compatibility-verifier.enabled=false]""";
@Override
public VerificationResult verify() {
boolean present = sleuthPresent();
if (!present) {
return VerificationResult.compatible();
}
return VerificationResult.notCompatible(ERROR_DESCRIPTION, ACTION);
}
boolean sleuthPresent() {
return ClassUtils.isPresent(TRACER_CLASS, null);
}
}

49
spring-cloud-commons/src/test/java/org/springframework/cloud/configuration/SleuthPresentVerifierTests.java

@ -0,0 +1,49 @@ @@ -0,0 +1,49 @@
/*
* Copyright 2012-2020 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.cloud.configuration;
import org.assertj.core.api.BDDAssertions;
import org.junit.jupiter.api.Test;
class SleuthPresentVerifierTests {
@Test
void should_be_compatible_when_sleuth_is_not_on_the_classpath() {
VerificationResult verify = new SleuthPresentVerifier() {
@Override
boolean sleuthPresent() {
return false;
}
}.verify();
BDDAssertions.then(verify.isNotCompatible()).isFalse();
}
@Test
void should_not_be_compatible_when_sleuth_is_on_the_classpath() {
VerificationResult verify = new SleuthPresentVerifier() {
@Override
boolean sleuthPresent() {
return true;
}
}.verify();
BDDAssertions.then(verify.isNotCompatible()).isTrue();
}
}
Loading…
Cancel
Save