Improved Integration tests.
This commit is contained in:
@@ -16,7 +16,7 @@
|
||||
<description>Integration Tests for stream applications</description>
|
||||
|
||||
<properties>
|
||||
<mariadb-client.version>2.6.2</mariadb-client.version>
|
||||
<mariadb-client.version>3.1.2</mariadb-client.version>
|
||||
<wiremock.version>2.27.1</wiremock.version>
|
||||
<mysql-connector-java.version>8.0.28</mysql-connector-java.version>
|
||||
</properties>
|
||||
|
||||
@@ -29,7 +29,7 @@ public abstract class Configuration {
|
||||
/**
|
||||
* Duration.
|
||||
*/
|
||||
public static final Duration DEFAULT_DURATION = Duration.ofMinutes(1);
|
||||
public static final Duration DEFAULT_DURATION = Duration.ofSeconds(90);
|
||||
|
||||
private static final String SPRING_CLOUD_STREAM_APPLICATIONS_VERSION = "spring.cloud.stream.applications.version";
|
||||
|
||||
|
||||
@@ -27,6 +27,8 @@ import org.junit.jupiter.api.AfterAll;
|
||||
import org.junit.jupiter.api.BeforeAll;
|
||||
import org.junit.jupiter.api.Tag;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.cloud.stream.app.test.integration.OutputMatcher;
|
||||
@@ -41,7 +43,7 @@ import static org.springframework.cloud.stream.app.test.integration.AppLog.appLo
|
||||
|
||||
@Tag("integration")
|
||||
abstract class HttpRequestProcessorTests {
|
||||
|
||||
private final static Logger logger = LoggerFactory.getLogger(HttpRequestProcessorTests.class);
|
||||
private static MockWebServer server;
|
||||
|
||||
private static int serverPort;
|
||||
@@ -81,7 +83,11 @@ abstract class HttpRequestProcessorTests {
|
||||
});
|
||||
testTopicSender.send(processor.getInputDestination(), "ping");
|
||||
await().atMost(DEFAULT_DURATION)
|
||||
.until(outputMatcher.messageMatches(message -> message.getPayload().equals("{\"response\":\"ping\"}")));
|
||||
.until(outputMatcher.messageMatches(message -> {
|
||||
Object payload = message.getPayload();
|
||||
logger.info("payload:{}", payload);
|
||||
return payload.equals("{\"response\":\"ping\"}");
|
||||
}));
|
||||
// See https://github.com/spring-cloud/spring-cloud-stream/issues/2190 .This condition is no longer true.
|
||||
// && message.getHeaders().get(MessageHeaders.CONTENT_TYPE)
|
||||
// .equals(MediaType.APPLICATION_JSON_VALUE)));
|
||||
|
||||
@@ -72,7 +72,7 @@ public abstract class JdbcSinkTests {
|
||||
.withEnv("SPRING_DATASOURCE_PASSWORD", "secret")
|
||||
.withEnv("SPRING_DATASOURCE_DRIVER_CLASS_NAME", "org.mariadb.jdbc.Driver")
|
||||
.withEnv("SPRING_DATASOURCE_URL",
|
||||
"jdbc:mariadb://mysql-for-sink:3306/test")
|
||||
"jdbc:mysql://mysql-for-sink:3306/test?permitMysqlScheme")
|
||||
.waitingFor(Wait.forLogMessage(".*Started JdbcSink.*", 1));
|
||||
startSink();
|
||||
}
|
||||
@@ -83,7 +83,7 @@ public abstract class JdbcSinkTests {
|
||||
dataSource.setDriverClassName("org.mariadb.jdbc.Driver");
|
||||
dataSource.setUsername(mySQL.getUsername());
|
||||
dataSource.setPassword(mySQL.getPassword());
|
||||
dataSource.setJdbcUrl("jdbc:mysql://localhost:" + mySQL.getMappedPort(3306) + "/test");
|
||||
dataSource.setJdbcUrl(mySQL.getJdbcUrl() + "?permitMysqlScheme");
|
||||
jdbcTemplate = new JdbcTemplate(dataSource);
|
||||
jdbcTemplate.execute("DELETE FROM People");
|
||||
await().atMost(DEFAULT_DURATION)
|
||||
|
||||
@@ -67,11 +67,13 @@ abstract class TcpSinkTests {
|
||||
sink.start();
|
||||
}
|
||||
|
||||
@SuppressWarnings("resource")
|
||||
static void startTcpServer() {
|
||||
socketReady.set(false);
|
||||
new Thread(() -> {
|
||||
try {
|
||||
socket = new ServerSocket(tcpPort, 50, InetAddress.getLocalHost()).accept();
|
||||
socket = new ServerSocket(tcpPort, 16, InetAddress.getLocalHost())
|
||||
.accept();
|
||||
socketReady.set(true);
|
||||
}
|
||||
catch (IOException e) {
|
||||
|
||||
@@ -67,7 +67,7 @@ abstract class JdbcSourceTests {
|
||||
.withEnv("SPRING_DATASOURCE_USERNAME", "test")
|
||||
.withEnv("SPRING_DATASOURCE_PASSWORD", "secret")
|
||||
.withEnv("SPRING_DATASOURCE_DRIVER_CLASS_NAME", "org.mariadb.jdbc.Driver")
|
||||
.withEnv("SPRING_DATASOURCE_URL", "jdbc:mariadb://mysql-for-source:3306/test");
|
||||
.withEnv("SPRING_DATASOURCE_URL", "jdbc:mysql://mysql-for-source:3306/test?permitMysqlScheme");
|
||||
startSource();
|
||||
}
|
||||
|
||||
|
||||
@@ -95,7 +95,7 @@ abstract class TimeSourceTests {
|
||||
webClient.get()
|
||||
.uri("http://" + source.getHost() + ":" + source.getMappedPort(8080) + "/actuator/env")
|
||||
.exchangeToMono(response -> {
|
||||
assertThat(response.statusCode()).isEqualTo(HttpStatus.NOT_FOUND);
|
||||
assertThat(response.statusCode()).isEqualTo(HttpStatus.UNAUTHORIZED);
|
||||
return response.toBodilessEntity();
|
||||
}).block();
|
||||
}
|
||||
|
||||
@@ -81,7 +81,7 @@ public class KafkaJdbcLogStreamTests {
|
||||
.withEnv("SPRING_DATASOURCE_USERNAME", "test")
|
||||
.withEnv("SPRING_DATASOURCE_DRIVER_CLASS_NAME", "org.mariadb.jdbc.Driver")
|
||||
.withEnv("SPRING_DATASOURCE_URL",
|
||||
"jdbc:mariadb://mysql-for-stream:3306/test"))
|
||||
"jdbc:mysql://mysql-for-stream:3306/test?permitMysqlScheme"))
|
||||
.withSinkContainer(
|
||||
new KafkaStreamAppContainer(StreamAppContainerTestUtils.imageName(
|
||||
"log-sink-kafka", VERSION)).withLogConsumer(logMatcher))
|
||||
|
||||
17
run-ITs.sh
17
run-ITs.sh
@@ -10,5 +10,18 @@ VERSION=$1
|
||||
if [ "$VERSION" == "" ]; then
|
||||
VERSION=$($SCDIR/mvn-get-version.sh)
|
||||
fi
|
||||
$SCDIR/mvnw $MVN_OPT -pl applications/stream-applications-integration-tests -am install -DskipTests
|
||||
$SCDIR/mvnw $MVN_OPT -pl applications/stream-applications-integration-tests verify -Pintegration -Psnapshot -Dspring.cloud.stream.applications.version=$VERSION
|
||||
shift
|
||||
CONTAINERS="s3-source sftp-source http-request-processor log-sink jdbc-source time-source http-source tcp-sink mongodb-sink"
|
||||
BROKERS="rabbit kafka"
|
||||
for container in $CONTAINERS; do
|
||||
for broker in $BROKERS; do
|
||||
echo "Pulling springcloudstream/${container}-${broker}:$VERSION"
|
||||
docker pull "springcloudstream/${container}-${broker}:$VERSION"
|
||||
docker tag "springcloudstream/${container}-${broker}:$VERSION" "springcloudstream/${container}-${broker}:latest"
|
||||
done
|
||||
done
|
||||
echo "Using version:$VERSION"
|
||||
$SCDIR/mvnw $MVN_OPT -pl :stream-applications-integration-tests -am install -DskipTests
|
||||
$SCDIR/mvnw $MVN_OPT $@ -pl :stream-applications-integration-tests -Pintegration -Psnapshot test integration-test -Dspring.cloud.stream.applications.version=$VERSION
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user