More structural changes to samples repo

Remove CF Acceptance tests
Convert local sample tests as e2e tests for the various sample apps
Polishing
This commit is contained in:
Soby Chacko
2018-08-17 21:02:30 -04:00
parent 1dabe82fc9
commit e2111652fd
48 changed files with 34 additions and 1416 deletions

View File

@@ -1,20 +0,0 @@
---
applications:
- name: ticktock-log-sink
host: ticktock-log-sink
memory: 2G
disk_quota: 2G
instances: 1
path: /tmp/ticktock-log-sink.jar
env:
# LOGGING_FILE: ticktocklog.log
# MANAGEMENT_ENDPOINTS_WEB_EXPOSURE_INCLUDE: logfile
# ENDPOINTS_LOGFILE_SENSITIVE: false
# SPRING_CLOUD_STREAM_BINDINGS_INPUT_DESTINATION: ticktock
logging.file: ticktocklog.log
endpoints.logfile.sensitive: false
spring.cloud.stream.bindings.input.destination: ticktock
#LOG_EXPRESSION: "'TICKTOCK - TIMESTAMP: '.concat(payload)"
log.expression: "'TICKTOCK - TIMESTAMP: '.concat(payload)"
services:
- scst-rabbit

View File

@@ -1,14 +0,0 @@
---
applications:
- name: partitioning-consumer1
host: partitioning-consumer1
memory: 2G
disk_quota: 2G
instances: 1
path: ../../partitioning-samples/partitioning-consumer-rabbit/target/partitioning-consumer-rabbit-0.0.1-SNAPSHOT.jar
env:
SPRING_APPLICATION_JSON: '{"maven": { "remote-repositories": { "repo1": { "url": "https://repo.spring.io/libs-snapshot"} } } }'
LOGGING_FILE: partconsumer1.log
MANAGEMENT_ENDPOINTS_WEB_EXPOSURE_INCLUDE: logfile
services:
- scst-rabbit

View File

@@ -1,15 +0,0 @@
---
applications:
- name: partitioning-consumer2
host: partitioning-consumer2
memory: 2G
disk_quota: 2G
instances: 1
path: ../../partitioning-samples/partitioning-consumer-rabbit/target/partitioning-consumer-rabbit-0.0.1-SNAPSHOT.jar
env:
SPRING_APPLICATION_JSON: '{"maven": { "remote-repositories": { "repo1": { "url": "https://repo.spring.io/libs-snapshot"} } } }'
LOGGING_FILE: partconsumer2.log
MANAGEMENT_ENDPOINTS_WEB_EXPOSURE_INCLUDE: logfile
SPRING_CLOUD_STREAM_BINDINGS_INPUT_CONSUMER_INSTANCEINDEX: 1
services:
- scst-rabbit

View File

@@ -1,15 +0,0 @@
---
applications:
- name: partitioning-consumer3
host: partitioning-consumer3
memory: 2G
disk_quota: 2G
instances: 1
path: ../../partitioning-samples/partitioning-consumer-rabbit/target/partitioning-consumer-rabbit-0.0.1-SNAPSHOT.jar
env:
SPRING_APPLICATION_JSON: '{"maven": { "remote-repositories": { "repo1": { "url": "https://repo.spring.io/libs-snapshot"} } } }'
LOGGING_FILE: partconsumer3.log
MANAGEMENT_ENDPOINTS_WEB_EXPOSURE_INCLUDE: logfile
SPRING_CLOUD_STREAM_BINDINGS_INPUT_CONSUMER_INSTANCEINDEX: 2
services:
- scst-rabbit

View File

@@ -1,15 +0,0 @@
---
applications:
- name: partitioning-consumer4
host: partitioning-consumer4
memory: 2G
disk_quota: 2G
instances: 1
path: ../../partitioning-samples/partitioning-consumer-rabbit/target/partitioning-consumer-rabbit-0.0.1-SNAPSHOT.jar
env:
SPRING_APPLICATION_JSON: '{"maven": { "remote-repositories": { "repo1": { "url": "https://repo.spring.io/libs-snapshot"} } } }'
LOGGING_FILE: partconsumer4.log
MANAGEMENT_ENDPOINTS_WEB_EXPOSURE_INCLUDE: logfile
SPRING_CLOUD_STREAM_BINDINGS_INPUT_CONSUMER_INSTANCEINDEX: 3
services:
- scst-rabbit

View File

@@ -1,14 +0,0 @@
---
applications:
- name: partitioning-producer
host: partitioning-producer
memory: 2G
disk_quota: 2G
instances: 1
path: ../../partitioning-samples/partitioning-producer/target/partitioning-producer-0.0.1-SNAPSHOT.jar
env:
SPRING_APPLICATION_JSON: '{"maven": { "remote-repositories": { "repo1": { "url": "https://repo.spring.io/libs-snapshot"} } } }'
LOGGING_FILE: partproducer.log
MANAGEMENT_ENDPOINTS_WEB_EXPOSURE_INCLUDE: logfile
services:
- scst-rabbit

View File

@@ -1,18 +0,0 @@
---
applications:
- name: ticktock-time-source
host: ticktock-time-source
memory: 2G
disk_quota: 2G
instances: 1
path: /tmp/ticktock-time-source.jar
env:
# LOGGING_FILE: ticktocktime.log
# MANAGEMENT_ENDPOINTS_WEB_EXPOSURE_INCLUDE: logfile
# ENDPOINTS_LOGFILE_SENSITIVE: false
logging.file: ticktocklog.log
endpoints.logfile.sensitive: false
#SPRING_CLOUD_STREAM_BINDINGS_OUTPUT_DESTINATION: ticktock
spring.cloud.stream.bindings.output.destination: ticktock
services:
- scst-rabbit

View File

@@ -1,14 +0,0 @@
---
applications:
- name: uppercase-transformer
host: uppercase-transformer
memory: 2G
disk_quota: 2G
instances: 1
path: ../../processor-samples/uppercase-transformer/target/uppercase-transformer-0.0.1-SNAPSHOT.jar
env:
SPRING_APPLICATION_JSON: '{"maven": { "remote-repositories": { "repo1": { "url": "https://repo.spring.io/libs-snapshot"} } } }'
LOGGING_FILE: uppercase.log
MANAGEMENT_ENDPOINTS_WEB_EXPOSURE_INCLUDE: logfile
services:
- scst-rabbit

View File

@@ -1,34 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>cf-acceptance-tests</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>cf-acceptance-tests</name>
<description>Collection of Spring Cloud Stream Aggregate Samples</description>
<parent>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-build</artifactId>
<version>2.0.0.BUILD-SNAPSHOT</version>
</parent>
<properties>
<maven.test.skip>true</maven.test.skip>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
</project>

View File

@@ -1,225 +0,0 @@
#!/bin/bash
# First argument is CF URL ($1)
# Second argument is CF User ($2)
# Third argument is CF Passwrod ($3)
# Fourth argument is CF Org ($4)
# Fifth argument is CF Space ($5)
# Optional sixth argument to skip ssl validation: skip-ssl-validation (No double hiphens (--) in the front)
pushd () {
command pushd "$@" > /dev/null
}
popd () {
command popd "$@" > /dev/null
}
function prepare_ticktock_with_rabbit_binder() {
wget -O /tmp/ticktock-time-source.jar http://repo.spring.io/release/org/springframework/cloud/stream/app/time-source-rabbit/1.3.1.RELEASE/time-source-rabbit-1.3.1.RELEASE.jar
wget -O /tmp/ticktock-log-sink.jar http://repo.spring.io/release/org/springframework/cloud/stream/app/log-sink-rabbit/1.3.1.RELEASE/log-sink-rabbit-1.3.1.RELEASE.jar
if [ $6 == "skip-ssl-validation" ]
then
cf login -a $1 --skip-ssl-validation -u $2 -p $3 -o $4 -s $5
else
cf login -a $1 -u $2 -p $3 -o $4 -s $5
fi
cf push -f ./manifests/time-source-manifest.yml
cf app ticktock-time-source > /tmp/ticktock-time-source-route.txt
TICKTOCK_TIME_SOURCE_ROUTE=`grep routes /tmp/ticktock-time-source-route.txt | awk '{ print $2 }'`
FULL_TICKTOCK_TIME_SOURCE_ROUTE=http://$TICKTOCK_TIME_SOURCE_ROUTE
cf push -f ./manifests/log-sink-manifest.yml
cf app ticktock-log-sink > /tmp/ticktock-log-sink-route.txt
TICKTOCK_LOG_SINK_ROUTE=`grep routes /tmp/ticktock-log-sink-route.txt | awk '{ print $2 }'`
FULL_TICKTOCK_LOG_SINK_ROUTE=http://$TICKTOCK_LOG_SINK_ROUTE
}
function prepare_uppercase_transformer_with_rabbit_binder() {
pushd ../processor-samples/uppercase-transformer
./mvnw clean package -P rabbit-binder -DskipTests
popd
if [ $6 == "skip-ssl-validation" ]
then
cf login -a $1 --skip-ssl-validation -u $2 -p $3 -o $4 -s $5
else
cf login -a $1 -u $2 -p $3 -o $4 -s $5
fi
cf push -f ./manifests/uppercase-processor-manifest.yml
cf app uppercase-transformer > /tmp/uppercase-route.txt
UPPERCASE_PROCESSOR_ROUTE=`grep routes /tmp/uppercase-route.txt | awk '{ print $2 }'`
FULL_UPPERCASE_ROUTE=http://$UPPERCASE_PROCESSOR_ROUTE
}
function prepare_partitioning_test_with_rabbit_binder() {
pushd ../partitioning-samples
./mvnw clean package -DskipTests -P rabbit-binder -pl :partitioning-producer,partitioning-consumer-rabbit
popd
if [ $6 == "skip-ssl-validation" ]
then
cf login -a $1 --skip-ssl-validation -u $2 -p $3 -o $4 -s $5
else
cf login -a $1 -u $2 -p $3 -o $4 -s $5
fi
cf push -f ./manifests/partitioning-producer-manifest.yml
cf app partitioning-producer > /tmp/part-producer-route.txt
PARTITIONING_PRODUCER_ROUTE=`grep routes /tmp/part-producer-route.txt | awk '{ print $2 }'`
FULL_PARTITIONING_PRODUCER_ROUTE=http://$PARTITIONING_PRODUCER_ROUTE
# consumer 1
cf push -f ./manifests/partitioning-consumer1-manifest.yml
cf app partitioning-consumer1 > /tmp/part-consumer1-route.txt
PARTITIONING_CONSUMER1_ROUTE=`grep routes /tmp/part-consumer1-route.txt | awk '{ print $2 }'`
FULL_PARTITIONING_CONSUMER1_ROUTE=http://$PARTITIONING_CONSUMER1_ROUTE
#consumer 2
cf push -f ./manifests/partitioning-consumer2-manifest.yml
cf app partitioning-consumer2 > /tmp/part-consumer2-route.txt
PARTITIONING_CONSUMER2_ROUTE=`grep routes /tmp/part-consumer2-route.txt | awk '{ print $2 }'`
FULL_PARTITIONING_CONSUMER2_ROUTE=http://$PARTITIONING_CONSUMER2_ROUTE
#consumer 3
cf push -f ./manifests/partitioning-consumer3-manifest.yml
cf app partitioning-consumer3 > /tmp/part-consumer3-route.txt
PARTITIONING_CONSUMER3_ROUTE=`grep routes /tmp/part-consumer3-route.txt | awk '{ print $2 }'`
FULL_PARTITIONING_CONSUMER3_ROUTE=http://$PARTITIONING_CONSUMER3_ROUTE
#consumer 4
cf push -f ./manifests/partitioning-consumer4-manifest.yml
cf app partitioning-consumer4 > /tmp/part-consumer4-route.txt
PARTITIONING_CONSUMER4_ROUTE=`grep routes /tmp/part-consumer4-route.txt | awk '{ print $2 }'`
FULL_PARTITIONING_CONSUMER4_ROUTE=http://$PARTITIONING_CONSUMER4_ROUTE
}
#Main script starting
SECONDS=0
echo "Prepare artifacts for ticktock testing"
prepare_ticktock_with_rabbit_binder $1 $2 $3 $4 $5 $6
./mvnw clean package -Dtest=TickTockAcceptanceTests -Dmaven.test.skip=false -Dtime.source.route=$FULL_TICKTOCK_TIME_SOURCE_ROUTE -Dlog.sink.route=$FULL_TICKTOCK_LOG_SINK_ROUTE
BUILD_RETURN_VALUE=$?
cf stop ticktock-time-source
cf stop ticktock-log-sink
cf delete ticktock-time-source -f
cf delete ticktock-log-sink -f
cf logout
rm /tmp/ticktock-time-source-route.txt
rm /tmp/ticktock-log-sink-route.txt
if [ "$BUILD_RETURN_VALUE" != 0 ]
then
echo "Early exit due to test failure in ticktock tests"
duration=$SECONDS
echo "Total time: Build took $(($duration / 60)) minutes and $(($duration % 60)) seconds to complete."
exit $BUILD_RETURN_VALUE
fi
echo "Prepare artifacts for uppercase transformer testing"
prepare_uppercase_transformer_with_rabbit_binder $1 $2 $3 $4 $5 $6
./mvnw clean package -Dtest=SimpleProcessorTests -Dmaven.test.skip=false -Duppercase.processor.route=$FULL_UPPERCASE_ROUTE
BUILD_RETURN_VALUE=$?
cf stop uppercase-transformer
cf delete uppercase-transformer -f
cf logout
rm /tmp/uppercase-route.txt
if [ "$BUILD_RETURN_VALUE" != 0 ]
then
echo "Early exit due to test failure in uppercase transformer"
duration=$SECONDS
echo "Total time: Build took $(($duration / 60)) minutes and $(($duration % 60)) seconds to complete."
exit $BUILD_RETURN_VALUE
fi
echo "Prepare artifacts for partitions testing"
prepare_partitioning_test_with_rabbit_binder $1 $2 $3 $4 $5 $6
./mvnw clean package -Dtest=PartitionAcceptanceTests -Dmaven.test.skip=false -Duppercase.processor.route=$FULL_UPPERCASE_ROUTE -Dpartitioning.producer.route=$FULL_PARTITIONING_PRODUCER_ROUTE -Dpartitioning.consumer1.route=$FULL_PARTITIONING_CONSUMER1_ROUTE -Dpartitioning.consumer2.route=$FULL_PARTITIONING_CONSUMER2_ROUTE -Dpartitioning.consumer3.route=$FULL_PARTITIONING_CONSUMER3_ROUTE -Dpartitioning.consumer4.route=$FULL_PARTITIONING_CONSUMER4_ROUTE
BUILD_RETURN_VALUE=$?
cf stop partitioning-producer
cf stop partitioning-consumer1
cf stop partitioning-consumer2
cf stop partitioning-consumer3
cf stop partitioning-consumer4
cf delete partitioning-producer -f
cf delete partitioning-consumer1 -f
cf delete partitioning-consumer2 -f
cf delete partitioning-consumer3 -f
cf delete partitioning-consumer4 -f
cf logout
rm /tmp/part-producer-route.txt
rm /tmp/part-consumer1-route.txt
rm /tmp/part-consumer2-route.txt
rm /tmp/part-consumer3-route.txt
rm /tmp/part-consumer4-route.txt
duration=$SECONDS
echo "Cumulative Build Time Across All Tests: Build took $(($duration / 60)) minutes and $(($duration % 60)) seconds to complete."
exit $BUILD_RETURN_VALUE

View File

@@ -1,90 +0,0 @@
/*
* Copyright 2018 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
*
* http://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 sample.acceptance.tests;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.StringUtils;
import org.springframework.web.client.HttpClientErrorException;
import org.springframework.web.client.RestTemplate;
import java.util.stream.Stream;
/**
* @author Soby Chacko
*/
abstract class AbstractSampleTests {
private static final Logger logger = LoggerFactory.getLogger(AbstractSampleTests.class);
boolean waitForLogEntry(boolean noBoot2, String app, String route, String... entries) {
return waitForLogEntryInResource(noBoot2, app, route, entries);
}
boolean waitForLogEntry(String app, String route, String... entries) {
return waitForLogEntryInResource(false, app, route, entries);
}
private String getLog(String url) {
RestTemplate restTemplate = new RestTemplate();
String logFileUrl = String.format("%s/logfile", url);
String log = null;
try {
log = restTemplate.getForObject(logFileUrl, String.class);
if (log == null) {
logger.info("Unable to retrieve logfile from '" + logFileUrl);
} else {
logger.info("Retrieved logfile from '" + logFileUrl);
}
} catch (HttpClientErrorException e) {
logger.info("Failed to access logfile from '" + logFileUrl + "' due to : " + e.getMessage());
} catch (Exception e) {
logger.warn("Error while trying to access logfile from '" + logFileUrl + "' due to : " + e);
}
return log;
}
private boolean waitForLogEntryInResource(boolean noBoot2, String app, String route, String... entries) {
logger.info("Looking for '" + StringUtils.arrayToCommaDelimitedString(entries) + "' in logfile for " + app + " - " + route);
long timeout = System.currentTimeMillis() + (30 * 1000);
boolean exists = false;
while (!exists && System.currentTimeMillis() < timeout) {
try {
Thread.sleep(7 * 1000);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
throw new IllegalStateException(e.getMessage(), e);
}
logger.info("Polling to get log file. Remaining poll time = "
+ (timeout - System.currentTimeMillis() + " ms."));
String log = noBoot2 ? getLog(route) : getLog(route + "/actuator");
if (log != null) {
if (Stream.of(entries).allMatch(s -> log.contains(s))) {
exists = true;
}
}
}
if (exists) {
logger.info("Matched all '" + StringUtils.arrayToCommaDelimitedString(entries) + "' in logfile for app " + app);
} else {
logger.error("ERROR: Couldn't find all '" + StringUtils.arrayToCommaDelimitedString(entries) + "' in logfile for " + app);
}
return exists;
}
}

View File

@@ -1,104 +0,0 @@
/*
* Copyright 2018 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
*
* http://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 sample.acceptance.tests;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import static org.junit.Assert.fail;
/**
* Do not run these tests as part of an IDE build or individually.
* These are acceptance tests for the spring cloud stream samples.
* The recommended way to run these tests are using the runAcceptanceTests.sh script in this module.
* More about running that script can be found in the README.
*
* @author Soby Chacko
*/
public class PartitionAcceptanceTests extends AbstractSampleTests {
private static final Logger logger = LoggerFactory.getLogger(PartitionAcceptanceTests.class);
@Test
public void testPartitioningWith4ConsumersRabbit() throws Exception {
Thread.sleep(10_000);
String prodUrl = System.getProperty("partitioning.producer.route");
boolean foundLogs = waitForLogEntry("Partitioning producer", prodUrl, "Started PartProducerApplication in");
if(!foundLogs) {
fail("Did not find the logging messages.");
}
String consumer1Url = System.getProperty("partitioning.consumer1.route");
String consumer2Url = System.getProperty("partitioning.consumer2.route");
String consumer3Url = System.getProperty("partitioning.consumer3.route");
String consumer4Url = System.getProperty("partitioning.consumer4.route");
Future<?> future1 = verifyPartitions("Partitioning Consumer-1", consumer1Url,
"f received from partition partitioned.destination.myGroup-0",
"g received from partition partitioned.destination.myGroup-0",
"h received from partition partitioned.destination.myGroup-0");
Future<?> future2 = verifyPartitions("Partitioning Consumer-2", consumer2Url,
"fo received from partition partitioned.destination.myGroup-1",
"go received from partition partitioned.destination.myGroup-1",
"ho received from partition partitioned.destination.myGroup-1");
Future<?> future3 = verifyPartitions("Partitioning Consumer-3",consumer3Url,
"foo received from partition partitioned.destination.myGroup-2",
"goo received from partition partitioned.destination.myGroup-2",
"hoo received from partition partitioned.destination.myGroup-2");
Future<?> future4 = verifyPartitions("Partitioning Consumer-4",consumer4Url,
"fooz received from partition partitioned.destination.myGroup-3",
"gooz received from partition partitioned.destination.myGroup-3",
"hooz received from partition partitioned.destination.myGroup-3");
verifyResults(future1, future2, future3, future4);
}
private Future<?> verifyPartitions(String consumer1Msg, String consumerRoute,
String... entries) {
ExecutorService executorService = Executors.newSingleThreadExecutor();
Future<?> submit = executorService.submit(() -> {
boolean found = waitForLogEntry(consumer1Msg, consumerRoute, entries);
if (!found) {
fail("Could not find the test data in the logs");
}
});
executorService.shutdown();
return submit;
}
private void verifyResults(Future<?>... futures) throws Exception {
for (Future<?> future : futures) {
try {
future.get();
}
catch (Exception e) {
throw e;
}
}
}
}

View File

@@ -1,48 +0,0 @@
/*
* Copyright 2018 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
*
* http://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 sample.acceptance.tests;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import static org.junit.Assert.fail;
/**
* Do not run these tests as part of an IDE build or individually.
* These are acceptance tests for the spring cloud stream samples.
* The recommended way to run these tests are using the runAcceptanceTests.sh script in this module.
* More about running that script can be found in the README.
*
* @author Soby Chacko
*/
public class SimpleProcessorTests extends AbstractSampleTests {
private static final Logger logger = LoggerFactory.getLogger(SimpleProcessorTests.class);
@Test
public void testUppercaseTransformerRabbit() {
String url = System.getProperty("uppercase.processor.route");
boolean foundLogs = waitForLogEntry("Uppercase Transformer", url, "Started UppercaseTransformerApplication in",
"Data received: FOO", "Data received: BAR");
if(!foundLogs) {
fail("Did not find the logging messages.");
}
}
}

View File

@@ -1,50 +0,0 @@
/*
* Copyright 2018 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
*
* http://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 sample.acceptance.tests;
import org.junit.Test;
import static org.junit.Assert.fail;
/**
* @author Soby Chacko
*/
public class TickTockAcceptanceTests extends AbstractSampleTests {
@Test
public void testTickTockRabbit() {
String timeSourceUrl = System.getProperty("time.source.route");
String logSinkUrl = System.getProperty("log.sink.route");
boolean foundLogs = waitForLogEntry(true, "Time Source", timeSourceUrl, "Started TimeSource");
if(!foundLogs) {
fail("Did not find the time source started logging message.");
}
foundLogs = waitForLogEntry(true,"Log Sink", logSinkUrl, "Started LogSink");
if(!foundLogs) {
fail("Did not find the log sink started logging message.");
}
foundLogs = waitForLogEntry(true,"Log Sink", logSinkUrl, "TICKTOCK - TIMESTAMP:");
if(!foundLogs) {
fail("Did not find the ticktock messages in log sink");
}
}
}

View File

@@ -20,16 +20,4 @@
<module>kafka-streams-aggregate</module>
</modules>
<distributionManagement>
<repository>
<id>repo.spring.io</id>
<name>Spring Snapshot Repository</name>
<url>https://repo.spring.io/libs-snapshot-local</url>
</repository>
<snapshotRepository>
<id>repo.spring.io</id>
<name>Spring Snapshot Repository</name>
<url>https://repo.spring.io/libs-snapshot-local</url>
</snapshotRepository>
</distributionManagement>
</project>

View File

@@ -12,16 +12,4 @@
<module>kinesis-produce-consume</module>
</modules>
<distributionManagement>
<repository>
<id>repo.spring.io</id>
<name>Spring Snapshot Repository</name>
<url>https://repo.spring.io/libs-snapshot-local</url>
</repository>
<snapshotRepository>
<id>repo.spring.io</id>
<name>Spring Snapshot Repository</name>
<url>https://repo.spring.io/libs-snapshot-local</url>
</snapshotRepository>
</distributionManagement>
</project>

View File

@@ -12,16 +12,4 @@
<module>multi-io</module>
</modules>
<distributionManagement>
<repository>
<id>repo.spring.io</id>
<name>Spring Snapshot Repository</name>
<url>https://repo.spring.io/libs-snapshot-local</url>
</repository>
<snapshotRepository>
<id>repo.spring.io</id>
<name>Spring Snapshot Repository</name>
<url>https://repo.spring.io/libs-snapshot-local</url>
</snapshotRepository>
</distributionManagement>
</project>

View File

@@ -13,16 +13,4 @@
<module>multibinder-two-kafka-clusters</module>
</modules>
<distributionManagement>
<repository>
<id>repo.spring.io</id>
<name>Spring Snapshot Repository</name>
<url>https://repo.spring.io/libs-snapshot-local</url>
</repository>
<snapshotRepository>
<id>repo.spring.io</id>
<name>Spring Snapshot Repository</name>
<url>https://repo.spring.io/libs-snapshot-local</url>
</snapshotRepository>
</distributionManagement>
</project>

View File

@@ -49,34 +49,6 @@
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>io.fabric8</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.14.2</version>
<configuration>
<images>
<image>
<name>springcloudstream/${project.artifactId}</name>
<build>
<from>anapsix/alpine-java:8</from>
<volumes>
<volume>/tmp</volume>
</volumes>
<entryPoint>
<exec>
<arg>java</arg>
<arg>-jar</arg>
<arg>/maven/partitioning-consumer-sample-kafka.jar</arg>
</exec>
</entryPoint>
<assembly>
<descriptor>assembly-kafka.xml</descriptor>
</assembly>
</build>
</image>
</images>
</configuration>
</plugin>
</plugins>
</build>
</project>

View File

@@ -49,34 +49,6 @@
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>io.fabric8</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.14.2</version>
<configuration>
<images>
<image>
<name>springcloudstream/${project.artifactId}</name>
<build>
<from>anapsix/alpine-java:8</from>
<volumes>
<volume>/tmp</volume>
</volumes>
<entryPoint>
<exec>
<arg>java</arg>
<arg>-jar</arg>
<arg>/maven/partitioning-consumer-sample-rabbit.jar</arg>
</exec>
</entryPoint>
<assembly>
<descriptor>assembly-rabbit.xml</descriptor>
</assembly>
</build>
</image>
</images>
</configuration>
</plugin>
</plugins>
</build>
</project>

View File

@@ -49,34 +49,6 @@
<classifier>kafka</classifier>
</configuration>
</plugin>
<plugin>
<groupId>io.fabric8</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.14.2</version>
<configuration>
<images>
<image>
<name>springcloudstream/${project.artifactId}-kafka</name>
<build>
<from>anapsix/alpine-java:8</from>
<volumes>
<volume>/tmp</volume>
</volumes>
<entryPoint>
<exec>
<arg>java</arg>
<arg>-jar</arg>
<arg>/maven/partitioning-producer-sample-kafka.jar</arg>
</exec>
</entryPoint>
<assembly>
<descriptor>assembly-kafka.xml</descriptor>
</assembly>
</build>
</image>
</images>
</configuration>
</plugin>
</plugins>
</build>
</profile>
@@ -97,34 +69,6 @@
<classifier>rabbit</classifier>
</configuration>
</plugin>
<plugin>
<groupId>io.fabric8</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.14.2</version>
<configuration>
<images>
<image>
<name>springcloudstream/${project.artifactId}-rabbit</name>
<build>
<from>anapsix/alpine-java:8</from>
<volumes>
<volume>/tmp</volume>
</volumes>
<entryPoint>
<exec>
<arg>java</arg>
<arg>-jar</arg>
<arg>/maven/partitioning-producer-sample-rabbit.jar</arg>
</exec>
</entryPoint>
<assembly>
<descriptor>assembly-rabbit.xml</descriptor>
</assembly>
</build>
</image>
</images>
</configuration>
</plugin>
</plugins>
</build>
</profile>

View File

@@ -14,16 +14,4 @@
<module>partitioning-consumer-sample-rabbit</module>
</modules>
<distributionManagement>
<repository>
<id>repo.spring.io</id>
<name>Spring Snapshot Repository</name>
<url>https://repo.spring.io/libs-snapshot-local</url>
</repository>
<snapshotRepository>
<id>repo.spring.io</id>
<name>Spring Snapshot Repository</name>
<url>https://repo.spring.io/libs-snapshot-local</url>
</snapshotRepository>
</distributionManagement>
</project>

View File

@@ -27,11 +27,10 @@
<module>kinesis-samples</module>
<module>multibinder-samples</module>
<module>schema-registry-samples</module>
<module>testing-samples</module>
<module>partitioning-samples</module>
<module>samples-acceptance-tests</module>
<module>cf-acceptance-tests</module>
<module>transaction-kafka-samples</module>
<module>transaction-kafka-samples</module>
<module>testing-samples</module>
<module>samples-e2e-tests</module>
</modules>
<properties>

View File

@@ -16,16 +16,4 @@
<module>uppercase-transformer</module>
</modules>
<distributionManagement>
<repository>
<id>repo.spring.io</id>
<name>Spring Snapshot Repository</name>
<url>https://repo.spring.io/libs-snapshot-local</url>
</repository>
<snapshotRepository>
<id>repo.spring.io</id>
<name>Spring Snapshot Repository</name>
<url>https://repo.spring.io/libs-snapshot-local</url>
</snapshotRepository>
</distributionManagement>
</project>

View File

@@ -49,34 +49,6 @@
<classifier>kafka</classifier>
</configuration>
</plugin>
<plugin>
<groupId>io.fabric8</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.14.2</version>
<configuration>
<images>
<image>
<name>springcloudstream/${project.artifactId}-kafka</name>
<build>
<from>anapsix/alpine-java:8</from>
<volumes>
<volume>/tmp</volume>
</volumes>
<entryPoint>
<exec>
<arg>java</arg>
<arg>-jar</arg>
<arg>/maven/uppercase-transformer-kafka.jar</arg>
</exec>
</entryPoint>
<assembly>
<descriptor>assembly-kafka.xml</descriptor>
</assembly>
</build>
</image>
</images>
</configuration>
</plugin>
</plugins>
</build>
</profile>
@@ -97,34 +69,6 @@
<classifier>rabbit</classifier>
</configuration>
</plugin>
<plugin>
<groupId>io.fabric8</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.14.2</version>
<configuration>
<images>
<image>
<name>springcloudstream/${project.artifactId}-rabbit</name>
<build>
<from>anapsix/alpine-java:8</from>
<volumes>
<volume>/tmp</volume>
</volumes>
<entryPoint>
<exec>
<arg>java</arg>
<arg>-jar</arg>
<arg>/maven/uppercase-transformer-rabbit.jar</arg>
</exec>
</entryPoint>
<assembly>
<descriptor>assembly-rabbit.xml</descriptor>
</assembly>
</build>
</image>
</images>
</configuration>
</plugin>
</plugins>
</build>
</profile>

View File

@@ -6,7 +6,7 @@
<dependencySets>
<dependencySet>
<includes>
<include>io.spring.cloud.stream.sample:uppercase-transformer</include>
<include>io.spring.cloud.stream.sample:uppercase-transformer-0.0.1-SNAPSHOT-kafka</include>
</includes>
<outputDirectory>.</outputDirectory>
<outputFileNameMapping>uppercase-transformer-kafka.jar</outputFileNameMapping>

View File

@@ -1 +0,0 @@
../.mvn

View File

@@ -1,10 +0,0 @@
=== Samples Acceptance Tests
This is an accptance test module for the samples in this repo.
The tests launch the Spring Cloud Stream samples as stand alone Spring Boot applications and then verify their correctness.
By default, these tests are not run as part of the normal build, as they are mainly intended for continuous integration testing with ongoing changes in the framework.
In order to run the tests, we recommend to run the script `./runAcceptanceTest.sh` in this directory.
The script will launch all the middleware and other components in docker containers first.
Then it builds the applications and run them.

View File

@@ -1,226 +0,0 @@
#!/bin/sh
# ----------------------------------------------------------------------------
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you 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
#
# http://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.
# ----------------------------------------------------------------------------
# ----------------------------------------------------------------------------
# Maven2 Start Up Batch script
#
# Required ENV vars:
# ------------------
# JAVA_HOME - location of a JDK home dir
#
# Optional ENV vars
# -----------------
# M2_HOME - location of maven2's installed home dir
# MAVEN_OPTS - parameters passed to the Java VM when running Maven
# e.g. to debug Maven itself, use
# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
# MAVEN_SKIP_RC - flag to disable loading of mavenrc files
# ----------------------------------------------------------------------------
if [ -z "$MAVEN_SKIP_RC" ] ; then
if [ -f /etc/mavenrc ] ; then
. /etc/mavenrc
fi
if [ -f "$HOME/.mavenrc" ] ; then
. "$HOME/.mavenrc"
fi
fi
# OS specific support. $var _must_ be set to either true or false.
cygwin=false;
darwin=false;
mingw=false
case "`uname`" in
CYGWIN*) cygwin=true ;;
MINGW*) mingw=true;;
Darwin*) darwin=true
# Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home
# See https://developer.apple.com/library/mac/qa/qa1170/_index.html
if [ -z "$JAVA_HOME" ]; then
if [ -x "/usr/libexec/java_home" ]; then
export JAVA_HOME="`/usr/libexec/java_home`"
else
export JAVA_HOME="/Library/Java/Home"
fi
fi
;;
esac
if [ -z "$JAVA_HOME" ] ; then
if [ -r /etc/gentoo-release ] ; then
JAVA_HOME=`java-config --jre-home`
fi
fi
if [ -z "$M2_HOME" ] ; then
## resolve links - $0 may be a link to maven's home
PRG="$0"
# need this for relative symlinks
while [ -h "$PRG" ] ; do
ls=`ls -ld "$PRG"`
link=`expr "$ls" : '.*-> \(.*\)$'`
if expr "$link" : '/.*' > /dev/null; then
PRG="$link"
else
PRG="`dirname "$PRG"`/$link"
fi
done
saveddir=`pwd`
M2_HOME=`dirname "$PRG"`/..
# make it fully qualified
M2_HOME=`cd "$M2_HOME" && pwd`
cd "$saveddir"
# echo Using m2 at $M2_HOME
fi
# For Cygwin, ensure paths are in UNIX format before anything is touched
if $cygwin ; then
[ -n "$M2_HOME" ] &&
M2_HOME=`cygpath --unix "$M2_HOME"`
[ -n "$JAVA_HOME" ] &&
JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
[ -n "$CLASSPATH" ] &&
CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
fi
# For Migwn, ensure paths are in UNIX format before anything is touched
if $mingw ; then
[ -n "$M2_HOME" ] &&
M2_HOME="`(cd "$M2_HOME"; pwd)`"
[ -n "$JAVA_HOME" ] &&
JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`"
# TODO classpath?
fi
if [ -z "$JAVA_HOME" ]; then
javaExecutable="`which javac`"
if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then
# readlink(1) is not available as standard on Solaris 10.
readLink=`which readlink`
if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then
if $darwin ; then
javaHome="`dirname \"$javaExecutable\"`"
javaExecutable="`cd \"$javaHome\" && pwd -P`/javac"
else
javaExecutable="`readlink -f \"$javaExecutable\"`"
fi
javaHome="`dirname \"$javaExecutable\"`"
javaHome=`expr "$javaHome" : '\(.*\)/bin'`
JAVA_HOME="$javaHome"
export JAVA_HOME
fi
fi
fi
if [ -z "$JAVACMD" ] ; then
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD="$JAVA_HOME/jre/sh/java"
else
JAVACMD="$JAVA_HOME/bin/java"
fi
else
JAVACMD="`which java`"
fi
fi
if [ ! -x "$JAVACMD" ] ; then
echo "Error: JAVA_HOME is not defined correctly." >&2
echo " We cannot execute $JAVACMD" >&2
exit 1
fi
if [ -z "$JAVA_HOME" ] ; then
echo "Warning: JAVA_HOME environment variable is not set."
fi
CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher
# traverses directory structure from process work directory to filesystem root
# first directory with .mvn subdirectory is considered project base directory
find_maven_basedir() {
if [ -z "$1" ]
then
echo "Path not specified to find_maven_basedir"
return 1
fi
basedir="$1"
wdir="$1"
while [ "$wdir" != '/' ] ; do
if [ -d "$wdir"/.mvn ] ; then
basedir=$wdir
break
fi
# workaround for JBEAP-8937 (on Solaris 10/Sparc)
if [ -d "${wdir}" ]; then
wdir=`cd "$wdir/.."; pwd`
fi
# end of workaround
done
echo "${basedir}"
}
# concatenates all lines of a file
concat_lines() {
if [ -f "$1" ]; then
echo "$(tr -s '\n' ' ' < "$1")"
fi
}
BASE_DIR=`find_maven_basedir "$(pwd)"`
if [ -z "$BASE_DIR" ]; then
exit 1;
fi
export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}
echo $MAVEN_PROJECTBASEDIR
MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"
# For Cygwin, switch paths to Windows format before running java
if $cygwin; then
[ -n "$M2_HOME" ] &&
M2_HOME=`cygpath --path --windows "$M2_HOME"`
[ -n "$JAVA_HOME" ] &&
JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
[ -n "$CLASSPATH" ] &&
CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
[ -n "$MAVEN_PROJECTBASEDIR" ] &&
MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"`
fi
WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
"$JAVACMD" \
$MAVEN_OPTS \
-classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \
"-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@"

View File

@@ -1,145 +0,0 @@
@REM ----------------------------------------------------------------------------
@REM Licensed to the Apache Software Foundation (ASF) under one
@REM or more contributor license agreements. See the NOTICE file
@REM distributed with this work for additional information
@REM regarding copyright ownership. The ASF licenses this file
@REM to you under the Apache License, Version 2.0 (the
@REM "License"); you may not use this file except in compliance
@REM with the License. You may obtain a copy of the License at
@REM
@REM http://www.apache.org/licenses/LICENSE-2.0
@REM
@REM Unless required by applicable law or agreed to in writing,
@REM software distributed under the License is distributed on an
@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@REM KIND, either express or implied. See the License for the
@REM specific language governing permissions and limitations
@REM under the License.
@REM ----------------------------------------------------------------------------
@REM ----------------------------------------------------------------------------
@REM Maven2 Start Up Batch script
@REM
@REM Required ENV vars:
@REM JAVA_HOME - location of a JDK home dir
@REM
@REM Optional ENV vars
@REM M2_HOME - location of maven2's installed home dir
@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a key stroke before ending
@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
@REM e.g. to debug Maven itself, use
@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
@REM ----------------------------------------------------------------------------
@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
@echo off
@REM enable echoing my setting MAVEN_BATCH_ECHO to 'on'
@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO%
@REM set %HOME% to equivalent of $HOME
if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")
@REM Execute a user defined script before this one
if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
@REM check for pre script, once with legacy .bat ending and once with .cmd ending
if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat"
if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd"
:skipRcPre
@setlocal
set ERROR_CODE=0
@REM To isolate internal variables from possible post scripts, we use another setlocal
@setlocal
@REM ==== START VALIDATION ====
if not "%JAVA_HOME%" == "" goto OkJHome
echo.
echo Error: JAVA_HOME not found in your environment. >&2
echo Please set the JAVA_HOME variable in your environment to match the >&2
echo location of your Java installation. >&2
echo.
goto error
:OkJHome
if exist "%JAVA_HOME%\bin\java.exe" goto init
echo.
echo Error: JAVA_HOME is set to an invalid directory. >&2
echo JAVA_HOME = "%JAVA_HOME%" >&2
echo Please set the JAVA_HOME variable in your environment to match the >&2
echo location of your Java installation. >&2
echo.
goto error
@REM ==== END VALIDATION ====
:init
set MAVEN_CMD_LINE_ARGS=%*
@REM Find the project base dir, i.e. the directory that contains the folder ".mvn".
@REM Fallback to current working directory if not found.
set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%
IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir
set EXEC_DIR=%CD%
set WDIR=%EXEC_DIR%
:findBaseDir
IF EXIST "%WDIR%"\.mvn goto baseDirFound
cd ..
IF "%WDIR%"=="%CD%" goto baseDirNotFound
set WDIR=%CD%
goto findBaseDir
:baseDirFound
set MAVEN_PROJECTBASEDIR=%WDIR%
cd "%EXEC_DIR%"
goto endDetectBaseDir
:baseDirNotFound
set MAVEN_PROJECTBASEDIR=%EXEC_DIR%
cd "%EXEC_DIR%"
:endDetectBaseDir
IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig
@setlocal EnableExtensions EnableDelayedExpansion
for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%
:endReadAdditionalConfig
SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
set WRAPPER_JAR="".\.mvn\wrapper\maven-wrapper.jar""
set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CMD_LINE_ARGS%
if ERRORLEVEL 1 goto error
goto end
:error
set ERROR_CODE=1
:end
@endlocal & set ERROR_CODE=%ERROR_CODE%
if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost
@REM check for post script, once with legacy .bat ending and once with .cmd ending
if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat"
if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd"
:skipRcPost
@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
if "%MAVEN_BATCH_PAUSE%" == "on" pause
if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE%
exit /B %ERROR_CODE%

View File

@@ -1,10 +1,11 @@
=== Samples Acceptance Tests
This is an accptance test module for the samples in this repo.
This is an end to end test for the various samples in this repository.
The tests launch the Spring Cloud Stream samples as stand alone Spring Boot applications and then verify their correctness.
By default, these tests are not run as part of the normal build, as they are mainly intended for continuous integration testing with ongoing changes in the framework.
In order to run the tests, we recommend to run the script `./runAcceptanceTest.sh` in this directory.
In order to run the tests, we recommend to run the script `./runSamplesE2ETests.sh` in this directory.
The script will launch all the middleware and other components in docker containers first.
Then it builds the applications and run them.

View File

@@ -2,10 +2,10 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>samples-acceptance-tests</artifactId>
<artifactId>samples-e2e-tests</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>samples-acceptance-tests</name>
<name>samples-e2e-tests</name>
<description>Collection of Spring Cloud Stream Aggregate Samples</description>
<parent>

View File

@@ -13,11 +13,11 @@ function prepare_jdbc_source_with_kafka_and_rabbit_binders() {
pushd ../source-samples/jdbc-source
./mvnw clean package -U -DskipTests
cp target/jdbc-source-*-SNAPSHOT.jar /tmp/jdbc-source-kafka-sample.jar
cp target/sample-jdbc-source-*-SNAPSHOT-kafka.jar /tmp/jdbc-source-kafka-sample.jar
./mvnw clean package -U -P rabbit-binder -DskipTests
cp target/jdbc-source-*-SNAPSHOT.jar /tmp/jdbc-source-rabbit-sample.jar
cp target/sample-jdbc-source-*-SNAPSHOT-rabbit.jar /tmp/jdbc-source-rabbit-sample.jar
popd
@@ -27,11 +27,11 @@ function prepare_jdbc_sink_with_kafka_and_rabbit_binders() {
pushd ../sink-samples/jdbc-sink
./mvnw clean package -U -DskipTests
cp target/jdbc-sink-*-SNAPSHOT.jar /tmp/jdbc-sink-kafka-sample.jar
cp target/sample-jdbc-sink-*-SNAPSHOT-kafka.jar /tmp/jdbc-sink-kafka-sample.jar
./mvnw clean package -U -P rabbit-binder -DskipTests
cp target/jdbc-sink-*-SNAPSHOT.jar /tmp/jdbc-sink-rabbit-sample.jar
cp target/sample-jdbc-sink-*-SNAPSHOT-rabbit.jar /tmp/jdbc-sink-rabbit-sample.jar
popd
@@ -41,11 +41,11 @@ function prepare_dynamic_source_with_kafka_and_rabbit_binders() {
pushd ../source-samples/dynamic-destination-source
./mvnw clean package -U -DskipTests
cp target/dynamic-destination-source-*-SNAPSHOT.jar /tmp/dynamic-destination-source-kafka-sample.jar
cp target/dynamic-destination-source-*-SNAPSHOT-kafka.jar /tmp/dynamic-destination-source-kafka-sample.jar
./mvnw clean package -U -P rabbit-binder -DskipTests
cp target/dynamic-destination-source-*-SNAPSHOT.jar /tmp/dynamic-destination-source-rabbit-sample.jar
cp target/dynamic-destination-source-*-SNAPSHOT-rabbit.jar /tmp/dynamic-destination-source-rabbit-sample.jar
popd
@@ -85,11 +85,11 @@ function prepare_streamlistener_basic_with_kafka_rabbit_binders() {
pushd ../processor-samples/streamlistener-basic
./mvnw clean package -U -DskipTests
cp target/streamlistener-basic-*-SNAPSHOT.jar /tmp/streamlistener-basic-kafka-sample.jar
cp target/streamlistener-basic-*-SNAPSHOT-kafka.jar /tmp/streamlistener-basic-kafka-sample.jar
./mvnw clean package -U -P rabbit-binder -DskipTests
cp target/streamlistener-basic-*-SNAPSHOT.jar /tmp/streamlistener-basic-rabbit-sample.jar
cp target/streamlistener-basic-*-SNAPSHOT-rabbit.jar /tmp/streamlistener-basic-rabbit-sample.jar
popd
@@ -99,11 +99,11 @@ function prepare_reactive_processor_with_kafka_rabbit_binders() {
pushd ../processor-samples/reactive-processor
./mvnw clean package -U -DskipTests
cp target/reactive-processor-*-SNAPSHOT.jar /tmp/reactive-processor-kafka-sample.jar
cp target/reactive-processor-*-SNAPSHOT-kafka.jar /tmp/reactive-processor-kafka-sample.jar
./mvnw clean package -U -P rabbit-binder -DskipTests
cp target/reactive-processor-*-SNAPSHOT.jar /tmp/reactive-processor-rabbit-sample.jar
cp target/reactive-processor-*-SNAPSHOT-rabbit.jar /tmp/reactive-processor-rabbit-sample.jar
popd
@@ -113,11 +113,11 @@ function prepare_sensor_average_reactive_with_kafka_rabbit_binders() {
pushd ../processor-samples/sensor-average-reactive
./mvnw clean package -U -DskipTests
cp target/sensor-average-reactive-*-SNAPSHOT.jar /tmp/sensor-average-reactive-kafka-sample.jar
cp target/sensor-average-reactive-*-SNAPSHOT-kafka.jar /tmp/sensor-average-reactive-kafka-sample.jar
./mvnw clean package -U -P rabbit-binder -DskipTests
cp target/sensor-average-reactive-*-SNAPSHOT.jar /tmp/sensor-average-reactive-rabbit-sample.jar
cp target/sensor-average-reactive-*-SNAPSHOT-rabbit.jar /tmp/sensor-average-reactive-rabbit-sample.jar
popd
@@ -127,17 +127,17 @@ function prepare_schema_registry_vanilla_with_kafka_rabbit_binders() {
pushd ../schema-registry-samples/schema-registry-vanilla
./mvnw clean package -U -DskipTests
cp registry/target/registry-*-SNAPSHOT.jar /tmp/schema-registry-vanilla-registry-kafka.jar
cp consumer/target/consumer-*-SNAPSHOT.jar /tmp/schema-registry-vanilla-consumer-kafka.jar
cp producer1/target/producer1-*-SNAPSHOT.jar /tmp/schema-registry-vanilla-producer1-kafka.jar
cp producer2/target/producer2-*-SNAPSHOT.jar /tmp/schema-registry-vanilla-producer2-kafka.jar
cp schema-registry-vanilla-server/target/schema-registry-vanilla-server-*-SNAPSHOT.jar /tmp/schema-registry-vanilla-registry-kafka.jar
cp schema-registry-vanilla-consumer/target/schema-registry-vanilla-consumer-*-kafka.jar /tmp/schema-registry-vanilla-consumer-kafka.jar
cp schema-registry-vanilla-producer1/target/schema-registry-vanilla-producer1-*-kafka.jar /tmp/schema-registry-vanilla-producer1-kafka.jar
cp schema-registry-vanilla-producer2/target/schema-registry-vanilla-producer2-*-kafka.jar /tmp/schema-registry-vanilla-producer2-kafka.jar
./mvnw clean package -U -P rabbit-binder -DskipTests
cp registry/target/registry-*-SNAPSHOT.jar /tmp/schema-registry-vanilla-registry-rabbit.jar
cp consumer/target/consumer-*-SNAPSHOT.jar /tmp/schema-registry-vanilla-consumer-rabbit.jar
cp producer1/target/producer1-*-SNAPSHOT.jar /tmp/schema-registry-vanilla-producer1-rabbit.jar
cp producer2/target/producer2-*-SNAPSHOT.jar /tmp/schema-registry-vanilla-producer2-rabbit.jar
cp schema-registry-vanilla-server/target/schema-registry-vanilla-server-*-SNAPSHOT.jar /tmp/schema-registry-vanilla-registry-rabbit.jar
cp schema-registry-vanilla-consumer/target/schema-registry-vanilla-consumer-*-rabbit.jar /tmp/schema-registry-vanilla-consumer-rabbit.jar
cp schema-registry-vanilla-producer1/target/schema-registry-vanilla-producer1-*-rabbit.jar /tmp/schema-registry-vanilla-producer1-rabbit.jar
cp schema-registry-vanilla-producer2/target/schema-registry-vanilla-producer2-*-rabbit.jar /tmp/schema-registry-vanilla-producer2-rabbit.jar
popd
@@ -147,13 +147,13 @@ function prepare_partitioning_with_kafka_rabbit_binders() {
pushd ../partitioning-samples
./mvnw clean package -U -DskipTests
cp partitioning-producer/target/partitioning-producer-*-SNAPSHOT.jar /tmp/partitioning-producer-kafka.jar
cp partitioning-consumer-kafka/target/partitioning-consumer-kafka-*-SNAPSHOT.jar /tmp/partitioning-consumer-kafka.jar
cp partitioning-producer-sample/target/partitioning-producer-sample-*-kafka.jar /tmp/partitioning-producer-kafka.jar
cp partitioning-consumer-sample-kafka/target/partitioning-consumer-sample-kafka-*-SNAPSHOT.jar /tmp/partitioning-consumer-kafka.jar
./mvnw clean package -U -DskipTests -P rabbit-binder -pl :partitioning-producer
./mvnw clean package -U -DskipTests -P rabbit-binder -pl :partitioning-producer-sample
cp partitioning-producer/target/partitioning-producer-*-SNAPSHOT.jar /tmp/partitioning-producer-rabbit.jar
cp partitioning-consumer-rabbit/target/partitioning-consumer-rabbit-*-SNAPSHOT.jar /tmp/partitioning-consumer-rabbit.jar
cp partitioning-producer-sample/target/partitioning-producer-sample-*-rabbit.jar /tmp/partitioning-producer-rabbit.jar
cp partitioning-consumer-sample-rabbit/target/partitioning-consumer-sample-rabbit-*-SNAPSHOT.jar /tmp/partitioning-consumer-rabbit.jar
popd

View File

@@ -13,16 +13,4 @@
<module>schema-registry-confluent</module>
</modules>
<distributionManagement>
<repository>
<id>repo.spring.io</id>
<name>Spring Snapshot Repository</name>
<url>https://repo.spring.io/libs-snapshot-local</url>
</repository>
<snapshotRepository>
<id>repo.spring.io</id>
<name>Spring Snapshot Repository</name>
<url>https://repo.spring.io/libs-snapshot-local</url>
</snapshotRepository>
</distributionManagement>
</project>

View File

@@ -14,16 +14,4 @@
<module>schema-registry-confluent-consumer</module>
</modules>
<distributionManagement>
<repository>
<id>repo.spring.io</id>
<name>Spring Snapshot Repository</name>
<url>https://repo.spring.io/libs-snapshot-local</url>
</repository>
<snapshotRepository>
<id>repo.spring.io</id>
<name>Spring Snapshot Repository</name>
<url>https://repo.spring.io/libs-snapshot-local</url>
</snapshotRepository>
</distributionManagement>
</project>

View File

@@ -15,16 +15,4 @@
<module>schema-registry-vanilla-server</module>
</modules>
<distributionManagement>
<repository>
<id>repo.spring.io</id>
<name>Spring Snapshot Repository</name>
<url>https://repo.spring.io/libs-snapshot-local</url>
</repository>
<snapshotRepository>
<id>repo.spring.io</id>
<name>Spring Snapshot Repository</name>
<url>https://repo.spring.io/libs-snapshot-local</url>
</snapshotRepository>
</distributionManagement>
</project>

View File

@@ -12,16 +12,4 @@
<module>jdbc-sink</module>
</modules>
<distributionManagement>
<repository>
<id>repo.spring.io</id>
<name>Spring Snapshot Repository</name>
<url>https://repo.spring.io/libs-snapshot-local</url>
</repository>
<snapshotRepository>
<id>repo.spring.io</id>
<name>Spring Snapshot Repository</name>
<url>https://repo.spring.io/libs-snapshot-local</url>
</snapshotRepository>
</distributionManagement>
</project>

View File

@@ -13,16 +13,4 @@
<module>dynamic-destination-source</module>
</modules>
<distributionManagement>
<repository>
<id>repo.spring.io</id>
<name>Spring Snapshot Repository</name>
<url>https://repo.spring.io/libs-snapshot-local</url>
</repository>
<snapshotRepository>
<id>repo.spring.io</id>
<name>Spring Snapshot Repository</name>
<url>https://repo.spring.io/libs-snapshot-local</url>
</snapshotRepository>
</distributionManagement>
</project>

View File

@@ -13,16 +13,4 @@
<module>test-embedded-kafka</module>
</modules>
<distributionManagement>
<repository>
<id>repo.spring.io</id>
<name>Spring Snapshot Repository</name>
<url>https://repo.spring.io/libs-snapshot-local</url>
</repository>
<snapshotRepository>
<id>repo.spring.io</id>
<name>Spring Snapshot Repository</name>
<url>https://repo.spring.io/libs-snapshot-local</url>
</snapshotRepository>
</distributionManagement>
</project>

View File

@@ -14,16 +14,4 @@
<module>transaction-logger-sink</module>
</modules>
<distributionManagement>
<repository>
<id>repo.spring.io</id>
<name>Spring Snapshot Repository</name>
<url>https://repo.spring.io/libs-snapshot-local</url>
</repository>
<snapshotRepository>
<id>repo.spring.io</id>
<name>Spring Snapshot Repository</name>
<url>https://repo.spring.io/libs-snapshot-local</url>
</snapshotRepository>
</distributionManagement>
</project>