INT-3155: Add Gradle Task 'testAll'

* Add to `LongRunningIntegrationTest` ability to read `System.properties`
Note, ENV property 'RUN_LONG_INTEGRATION_TESTS' has a preference in case of value `true`
* Add Gradle task `testAll`
* Upgrade to Gradle 1.7
* Improve build performance by adding 'inputs'/'outputs' to some tasks

JIRA: https://jira.springsource.org/browse/INT-3155

Polishing

Remove inputs/outputs.

Polish RouterConcurrencyTest.
This commit is contained in:
Artem Bilan
2013-09-29 15:05:33 +03:00
committed by Gary Russell
parent 7101120589
commit dd5c9cc18c
5 changed files with 45 additions and 21 deletions

View File

@@ -116,6 +116,13 @@ subprojects { subproject ->
jvmArgs "-javaagent:${configurations.jacoco.asPath}=destfile=${buildDir}/jacoco.exec,includes=org.springframework.integration.*" jvmArgs "-javaagent:${configurations.jacoco.asPath}=destfile=${buildDir}/jacoco.exec,includes=org.springframework.integration.*"
} }
task testAll() {
doFirst {
tasks.test.systemProperty 'RUN_LONG_INTEGRATION_TESTS', 'true'
}
finalizedBy test
}
task sourcesJar(type: Jar) { task sourcesJar(type: Jar) {
classifier = 'sources' classifier = 'sources'
from sourceSets.main.allJava from sourceSets.main.allJava
@@ -126,21 +133,23 @@ subprojects { subproject ->
from javadoc from javadoc
} }
task checkTestConfigs << { task checkTestConfigs {
def configFiles = [] doLast {
sourceSets.test.java.srcDirs.each { def configFiles = []
fileTree(it).include('**/*.xml').exclude('**/log4j.xml').each { configFile -> sourceSets.test.java.srcDirs.each {
def configXml = new XmlParser(false, false).parse(configFile) fileTree(it).include('**/*.xml').exclude('**/log4j.xml').each { configFile ->
def configXml = new XmlParser(false, false).parse(configFile)
if (configXml.@'xsi:schemaLocation' ==~ /.*spring-[a-z-]*\d\.\d\.xsd.*/) { if (configXml.@'xsi:schemaLocation' ==~ /.*spring-[a-z-]*\d\.\d\.xsd.*/) {
configFiles << configFile configFiles << configFile
}
} }
} }
} if (configFiles) {
if (configFiles) { throw new InvalidUserDataException('Hardcoded XSD version in the config files:\n' +
throw new InvalidUserDataException('Hardcoded XSD version in the config files:\n' + configFiles.collect {relativePath(it)}.join('\n') +
configFiles.collect {relativePath(it)}.join('\n') + '\nPlease, use versionless schemaLocations for Spring XSDs to avoid issues with builds on different versions of dependencies.')
'\nPlease, use versionless schemaLocations for Spring XSDs to avoid issues with builds on different versions of dependencies.') }
} }
} }
@@ -758,5 +767,5 @@ task dist(dependsOn: assemble) {
task wrapper(type: Wrapper) { task wrapper(type: Wrapper) {
description = 'Generates gradlew[.bat] scripts' description = 'Generates gradlew[.bat] scripts'
gradleVersion = '1.6' gradleVersion = '1.7'
} }

Binary file not shown.

View File

@@ -1,6 +1,6 @@
#Thu May 16 22:49:11 EDT 2013 #Sun Sep 29 12:56:14 EEST 2013
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists zipStorePath=wrapper/dists
distributionUrl=http\://services.gradle.org/distributions/gradle-1.6-bin.zip distributionUrl=http\://services.gradle.org/distributions/gradle-1.7-bin.zip

View File

@@ -15,13 +15,14 @@
*/ */
package org.springframework.integration.router; package org.springframework.integration.router;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.mock; import static org.mockito.Mockito.mock;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.concurrent.ExecutorService; import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors; import java.util.concurrent.Executors;
@@ -32,6 +33,7 @@ import java.util.concurrent.atomic.AtomicInteger;
import org.junit.Test; import org.junit.Test;
import org.mockito.invocation.InvocationOnMock; import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer; import org.mockito.stubbing.Answer;
import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.BeanFactory;
import org.springframework.core.convert.ConversionService; import org.springframework.core.convert.ConversionService;
import org.springframework.integration.Message; import org.springframework.integration.Message;
@@ -86,12 +88,12 @@ public class RouterConcurrencyTest {
router.setBeanFactory(beanFactory); router.setBeanFactory(beanFactory);
ExecutorService exec = Executors.newFixedThreadPool(2); ExecutorService exec = Executors.newFixedThreadPool(2);
final List<ConversionService> returns = new ArrayList<ConversionService>(); final List<ConversionService> returns = Collections.synchronizedList(
new ArrayList<ConversionService>());
Runnable runnable = new Runnable() { Runnable runnable = new Runnable() {
public void run() { public void run() {
ConversionService requiredConversionService = router.getRequiredConversionService(); ConversionService requiredConversionService = router.getRequiredConversionService();
System.out.println("Adding " + requiredConversionService);
returns.add(requiredConversionService); returns.add(requiredConversionService);
} }
}; };
@@ -99,7 +101,7 @@ public class RouterConcurrencyTest {
exec.execute(runnable); exec.execute(runnable);
exec.shutdown(); exec.shutdown();
exec.awaitTermination(10, TimeUnit.SECONDS); exec.awaitTermination(10, TimeUnit.SECONDS);
assertTrue(returns.size() == 2); assertEquals(2, returns.size());
assertNotNull(returns.get(0)); assertNotNull(returns.get(0));
assertNotNull(returns.get(1)); assertNotNull(returns.get(1));
} }

View File

@@ -27,6 +27,7 @@ import org.junit.runners.model.Statement;
* variable RUN_LONG_INTEGRATION_TESTS on a CI nightly build to ensure coverage. * variable RUN_LONG_INTEGRATION_TESTS on a CI nightly build to ensure coverage.
* *
* @author Gary Russell * @author Gary Russell
* @author Artem Bilan
* @since 3.0 * @since 3.0
* *
*/ */
@@ -34,10 +35,22 @@ public class LongRunningIntegrationTest extends TestWatcher {
private final static Log logger = LogFactory.getLog(LongRunningIntegrationTest.class); private final static Log logger = LogFactory.getLog(LongRunningIntegrationTest.class);
private static final String RUN_LONG_PROP = "RUN_LONG_INTEGRATION_TESTS";
private boolean shouldRun = false;
public LongRunningIntegrationTest() {
for(String value: new String[]{System.getenv(RUN_LONG_PROP), System.getProperty(RUN_LONG_PROP)}) {
if ("true".equalsIgnoreCase(value)) {
this.shouldRun = true;
break;
}
}
}
@Override @Override
public Statement apply(Statement base, Description description) { public Statement apply(Statement base, Description description) {
boolean shouldRun = "true".equalsIgnoreCase(System.getenv("RUN_LONG_INTEGRATION_TESTS")); if (!this.shouldRun) {
if (!shouldRun) {
logger.info("Skipping long running test " + description.getDisplayName()); logger.info("Skipping long running test " + description.getDisplayName());
return new Statement() { return new Statement() {