Remove dependency on old test module

This commit is contained in:
Oleg Zhurakousky
2022-03-31 21:27:45 +02:00
parent a951837e4e
commit 0ff2a4ad6a
6 changed files with 176 additions and 27 deletions

View File

@@ -50,6 +50,13 @@
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>

View File

@@ -9,11 +9,6 @@
<artifactId>spring-cloud-stream-binder-rabbit-test-support</artifactId>
<description>Rabbit related test classes</description>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-stream-test-support-internal</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
@@ -23,5 +18,15 @@
<artifactId>spring-boot-starter-amqp</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<scope>compile</scope>
</dependency>
</dependencies>
</project>

View File

@@ -0,0 +1,159 @@
/*
* Copyright 2013-2022 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.stream.binder.test.junit.rabbit;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.junit.jupiter.api.extension.BeforeEachCallback;
import org.junit.jupiter.api.extension.ExtensionContext;
import org.springframework.util.Assert;
import static org.junit.jupiter.api.Assertions.fail;
/**
* Abstract base class for JUnit {@link Rule}s that detect the presence of some external
* resource. If the resource is indeed present, it will be available during the test
* lifecycle through {@link #getResource()}. If it is not, tests will either fail or be
* skipped, depending on the value of system property
* {@value #SCS_EXTERNAL_SERVERS_REQUIRED}.
*
* @param <R> resource type
* @author Eric Bottard
* @author Gary Russell
*/
public abstract class AbstractExternalResourceTestSupport<R> implements BeforeEachCallback {
/**
* SCS external servers required environment variable.
*/
public static final String SCS_EXTERNAL_SERVERS_REQUIRED = "SCS_EXTERNAL_SERVERS_REQUIRED";
protected final Log logger = LogFactory.getLog(getClass());
protected R resource;
private String resourceDescription;
protected AbstractExternalResourceTestSupport(String resourceDescription) {
Assert.hasText(resourceDescription, "resourceDescription is required");
this.resourceDescription = resourceDescription;
}
@Override
public void beforeEach(ExtensionContext context) throws Exception {
try {
obtainResource();
}
catch (Exception e) {
maybeCleanup();
// failOrSkip(e);
fail();
}
}
// @Override
// public Statement apply(final Statement base, Description description) {
// try {
// obtainResource();
// }
// catch (Exception e) {
// maybeCleanup();
//
// return failOrSkip(e);
// }
//
// return new Statement() {
//
// @Override
// public void evaluate() throws Throwable {
// try {
// base.evaluate();
// }
// finally {
// try {
// cleanupResource();
// }
// catch (Exception ignored) {
// AbstractExternalResourceTestSupport.this.logger.warn(
// "Exception while trying to cleanup proper resource",
// ignored);
// }
// }
// }
//
// };
// }
// private Statement failOrSkip(final Exception e) {
// String serversRequired = System.getenv(SCS_EXTERNAL_SERVERS_REQUIRED);
// if ("true".equalsIgnoreCase(serversRequired)) {
// this.logger.error(this.resourceDescription + " IS REQUIRED BUT NOT AVAILABLE",
// e);
// fail(this.resourceDescription + " IS NOT AVAILABLE");
// // Never reached, here to satisfy method signature
// return null;
// }
// else {
// this.logger.error(
// this.resourceDescription + " IS NOT AVAILABLE, SKIPPING TESTS", e);
// return new Statement() {
//
// @Override
// public void evaluate() throws Throwable {
// Assume.assumeTrue("Skipping test due to "
// + AbstractExternalResourceTestSupport.this.resourceDescription
// + " not being available " + e, false);
// }
// };
// }
// }
private void maybeCleanup() {
if (this.resource != null) {
try {
cleanupResource();
}
catch (Exception ignored) {
this.logger.warn("Exception while trying to cleanup failed resource",
ignored);
}
}
}
public R getResource() {
return this.resource;
}
/**
* Perform cleanup of the {@link #resource} field, which is guaranteed to be non null.
* @throws Exception any exception thrown by this method will be logged and swallowed
*/
protected abstract void cleanupResource() throws Exception;
/**
* Try to obtain and validate a resource. Implementors should either set the
* {@link #resource} field with a valid resource and return normally, or throw an
* exception.
* @throws Exception when resource couldn't be obtained
*/
protected abstract void obtainResource() throws Exception;
}

View File

@@ -31,7 +31,6 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.amqp.rabbit.connection.CachingConnectionFactory;
import org.springframework.cloud.stream.test.junit.AbstractExternalResourceTestSupport;
/**
* JUnit {@link org.junit.Rule} that detects the fact that RabbitMQ is available on

View File

@@ -80,11 +80,6 @@
<artifactId>spring-cloud-stream-binder-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-stream-test-support-internal</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-stream-binder-rabbit-test-support</artifactId>
@@ -102,15 +97,4 @@
<artifactId>httpclient</artifactId>
</dependency>
</dependencies>
<!-- <build>-->
<!-- <plugins>-->
<!-- <plugin>-->
<!-- <groupId>org.springframework.boot</groupId>-->
<!-- <artifactId>spring-boot-maven-plugin</artifactId>-->
<!-- <configuration>-->
<!-- <classifier>exec</classifier>-->
<!-- </configuration>-->
<!-- </plugin>-->
<!-- </plugins>-->
<!-- </build>-->
</project>

View File

@@ -47,11 +47,6 @@
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-stream-test-support-internal</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-actuator</artifactId>