Merge branch 'sdk-4.0' into sdk-4/documentation-update

This commit is contained in:
Jose Luis Osorno
2019-01-11 11:10:38 +01:00
11 changed files with 168 additions and 22 deletions

View File

@@ -3,6 +3,14 @@
SET COMPOSE_FILE_PATH=%CD%\target\classes\docker\docker-compose.yml
IF [%M2_HOME%]==[] (
SET MVN_EXEC=mvn
)
IF NOT [%M2_HOME%]==[] (
SET MVN_EXEC=%M2_HOME%\bin\mvn
)
IF [%1]==[] (
echo "Usage: %0 {build_start|start|stop|purge|tail|reload_share|reload_acs|build_test|test}"
GOTO END
@@ -50,6 +58,7 @@ IF %1==build_test (
CALL :build
CALL :start
CALL :test
CALL :tail_all
CALL :down
GOTO END
)
@@ -79,25 +88,28 @@ EXIT /B 0
:build
docker rmi alfresco-content-services-${rootArtifactId}:development
docker rmi alfresco-share-${rootArtifactId}:development
call mvn clean install -DskipTests
call %MVN_EXEC% clean install -DskipTests
EXIT /B 0
:build_share
docker-compose -f "%COMPOSE_FILE_PATH%" kill ${rootArtifactId}-share
docker-compose -f "%COMPOSE_FILE_PATH%" rm -f ${rootArtifactId}-share
docker rmi alfresco-share-${rootArtifactId}:development
call mvn clean install -DskipTests -pl ${rootArtifactId}-share-jar
call %MVN_EXEC% clean install -DskipTests -pl ${rootArtifactId}-share-jar
EXIT /B 0
:build_acs
docker-compose -f "%COMPOSE_FILE_PATH%" kill ${rootArtifactId}-acs
docker-compose -f "%COMPOSE_FILE_PATH%" rm -f ${rootArtifactId}-acs
docker rmi alfresco-content-services-${rootArtifactId}:development
call mvn clean install -DskipTests -pl ${rootArtifactId}-platform-jar
call %MVN_EXEC% clean install -DskipTests -pl ${rootArtifactId}-platform-jar
EXIT /B 0
:tail
docker-compose -f "%COMPOSE_FILE_PATH%" logs -f
EXIT /B 0
:tail_all
docker-compose -f "%COMPOSE_FILE_PATH%" logs --tail="all"
EXIT /B 0
:test
call mvn verify -pl integration-tests
call %MVN_EXEC% verify -pl integration-tests
EXIT /B 0
:purge
docker volume rm ${rootArtifactId}-acs-volume

View File

@@ -3,6 +3,12 @@
export COMPOSE_FILE_PATH=${symbol_dollar}{PWD}/target/classes/docker/docker-compose.yml
if [ -z "${symbol_dollar}{M2_HOME}" ]; then
export MVN_EXEC="mvn"
else
export MVN_EXEC="${symbol_dollar}{M2_HOME}/bin/mvn"
fi
start() {
docker volume create ${rootArtifactId}-acs-volume
docker volume create ${rootArtifactId}-db-volume
@@ -31,29 +37,33 @@ purge() {
build() {
docker rmi alfresco-content-services-${rootArtifactId}:development
docker rmi alfresco-share-${rootArtifactId}:development
mvn clean install -DskipTests=true
${symbol_dollar}MVN_EXEC clean install -DskipTests=true
}
build_share() {
docker-compose -f ${symbol_dollar}COMPOSE_FILE_PATH kill ${rootArtifactId}-share
yes | docker-compose -f ${symbol_dollar}COMPOSE_FILE_PATH rm -f ${rootArtifactId}-share
docker rmi alfresco-share-${rootArtifactId}:development
mvn clean install -DskipTests=true -pl ${rootArtifactId}-share-jar
${symbol_dollar}MVN_EXEC clean install -DskipTests=true -pl ${rootArtifactId}-share-jar
}
build_acs() {
docker-compose -f ${symbol_dollar}COMPOSE_FILE_PATH kill ${rootArtifactId}-acs
yes | docker-compose -f ${symbol_dollar}COMPOSE_FILE_PATH rm -f ${rootArtifactId}-acs
docker rmi alfresco-content-services-${rootArtifactId}:development
mvn clean install -DskipTests=true -pl ${rootArtifactId}-platform-jar
${symbol_dollar}MVN_EXEC clean install -DskipTests=true -pl ${rootArtifactId}-platform-jar
}
tail() {
docker-compose -f ${symbol_dollar}COMPOSE_FILE_PATH logs -f
}
tail_all() {
docker-compose -f ${symbol_dollar}COMPOSE_FILE_PATH logs --tail="all"
}
test() {
mvn verify -pl integration-tests
${symbol_dollar}MVN_EXEC verify -pl integration-tests
}
case "${symbol_dollar}1" in
@@ -92,6 +102,7 @@ case "${symbol_dollar}1" in
build
start
test
tail_all
down
;;
test)

View File

@@ -3,6 +3,14 @@
SET COMPOSE_FILE_PATH=%CD%\target\classes\docker\docker-compose.yml
IF [%M2_HOME%]==[] (
SET MVN_EXEC=mvn
)
IF NOT [%M2_HOME%]==[] (
SET MVN_EXEC=%M2_HOME%\bin\mvn
)
IF [%1]==[] (
echo "Usage: %0 {build_start|start|stop|purge|tail|build_test|test}"
GOTO END
@@ -38,6 +46,7 @@ IF %1==build_test (
CALL :build
CALL :start
CALL :test
CALL :tail_all
CALL :down
GOTO END
)
@@ -60,13 +69,16 @@ EXIT /B 0
EXIT /B 0
:build
docker rmi alfresco-content-services-${rootArtifactId}:development
call mvn clean install -DskipTests
call %MVN_EXEC% clean install -DskipTests
EXIT /B 0
:tail
docker-compose -f "%COMPOSE_FILE_PATH%" logs -f
EXIT /B 0
:tail_all
docker-compose -f "%COMPOSE_FILE_PATH%" logs --tail="all"
EXIT /B 0
:test
call mvn verify
call %MVN_EXEC% verify
EXIT /B 0
:purge
docker volume rm ${rootArtifactId}-acs-volume

View File

@@ -3,6 +3,12 @@
export COMPOSE_FILE_PATH=${symbol_dollar}{PWD}/target/classes/docker/docker-compose.yml
if [ -z "${symbol_dollar}{M2_HOME}" ]; then
export MVN_EXEC="mvn"
else
export MVN_EXEC="${symbol_dollar}{M2_HOME}/bin/mvn"
fi
start() {
docker volume create ${rootArtifactId}-acs-volume
docker volume create ${rootArtifactId}-db-volume
@@ -22,15 +28,19 @@ purge() {
build() {
docker rmi alfresco-content-services-${rootArtifactId}:development
mvn clean install -DskipTests=true
${symbol_dollar}MVN_EXEC clean install -DskipTests=true
}
tail() {
docker-compose -f ${symbol_dollar}COMPOSE_FILE_PATH logs -f
}
tail_all() {
docker-compose -f ${symbol_dollar}COMPOSE_FILE_PATH logs --tail="all"
}
test() {
mvn verify
${symbol_dollar}MVN_EXEC verify
}
case "${symbol_dollar}1" in
@@ -59,6 +69,7 @@ case "${symbol_dollar}1" in
build
start
test
tail_all
down
;;
test)

View File

@@ -3,6 +3,14 @@
SET COMPOSE_FILE_PATH=%CD%\target\classes\docker\docker-compose.yml
IF [%M2_HOME%]==[] (
SET MVN_EXEC=mvn
)
IF NOT [%M2_HOME%]==[] (
SET MVN_EXEC=%M2_HOME%\bin\mvn
)
IF [%1]==[] (
echo "Usage: %0 {build_start|start|stop|purge|tail|reload_share|build_test|test}"
GOTO END
@@ -44,6 +52,7 @@ IF %1==build_test (
CALL :build
CALL :start
CALL :test
CALL :tail_all
CALL :down
GOTO END
)
@@ -70,19 +79,22 @@ EXIT /B 0
:build
docker rmi alfresco-content-services-${rootArtifactId}:development
docker rmi alfresco-share-${rootArtifactId}:development
call mvn clean install -DskipTests
call %MVN_EXEC% clean install -DskipTests
EXIT /B 0
:build_share
docker-compose -f "%COMPOSE_FILE_PATH%" kill ${rootArtifactId}-share
docker-compose -f "%COMPOSE_FILE_PATH%" rm -f ${rootArtifactId}-share
docker rmi alfresco-share-${rootArtifactId}:development
call mvn clean install -DskipTests
call %MVN_EXEC% clean install -DskipTests
EXIT /B 0
:tail
docker-compose -f "%COMPOSE_FILE_PATH%" logs -f
EXIT /B 0
:tail_all
docker-compose -f "%COMPOSE_FILE_PATH%" logs --tail="all"
EXIT /B 0
:test
call mvn verify
call %MVN_EXEC% verify
EXIT /B 0
:purge
docker volume rm ${rootArtifactId}-acs-volume

View File

@@ -3,6 +3,12 @@
export COMPOSE_FILE_PATH=${symbol_dollar}{PWD}/target/classes/docker/docker-compose.yml
if [ -z "${symbol_dollar}{M2_HOME}" ]; then
export MVN_EXEC="mvn"
else
export MVN_EXEC="${symbol_dollar}{M2_HOME}/bin/mvn"
fi
start() {
docker volume create ${rootArtifactId}-acs-volume
docker volume create ${rootArtifactId}-db-volume
@@ -26,22 +32,26 @@ purge() {
build() {
docker rmi alfresco-share-${rootArtifactId}:development
mvn clean install -DskipTests=true
${symbol_dollar}MVN_EXEC clean install -DskipTests=true
}
build_share() {
docker-compose -f ${symbol_dollar}COMPOSE_FILE_PATH kill ${rootArtifactId}-share
yes | docker-compose -f ${symbol_dollar}COMPOSE_FILE_PATH rm -f ${rootArtifactId}-share
docker rmi alfresco-share-${rootArtifactId}:development
mvn clean install -DskipTests=true
${symbol_dollar}MVN_EXEC clean install -DskipTests=true
}
tail() {
docker-compose -f ${symbol_dollar}COMPOSE_FILE_PATH logs -f
}
tail_all() {
docker-compose -f ${symbol_dollar}COMPOSE_FILE_PATH logs --tail="all"
}
test() {
mvn verify
${symbol_dollar}MVN_EXEC verify
}
case "${symbol_dollar}1" in
@@ -75,6 +85,7 @@ case "${symbol_dollar}1" in
build
start
test
tail_all
down
;;
test)

View File

@@ -9,6 +9,12 @@
<name>Archetypes IT</name>
<description>Archetypes Integration Tests</description>
<properties>
<slf4j.version>1.7.12</slf4j.version>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<parent>
<groupId>org.alfresco.maven</groupId>
<artifactId>alfresco-sdk-aggregator</artifactId>
@@ -29,6 +35,18 @@
<version>4.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>${slf4j.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
@@ -55,6 +73,14 @@
</goals>
</execution>
</executions>
<configuration>
<systemPropertyVariables>
<org.slf4j.simpleLogger.defaultLogLevel>DEBUG</org.slf4j.simpleLogger.defaultLogLevel>
<org.slf4j.simpleLogger.showDateTime>false</org.slf4j.simpleLogger.showDateTime>
<org.slf4j.simpleLogger.showThreadName>false</org.slf4j.simpleLogger.showThreadName>
<org.slf4j.simpleLogger.showLogName>false</org.slf4j.simpleLogger.showLogName>
</systemPropertyVariables>
</configuration>
</plugin>
</plugins>
</build>

View File

@@ -3,6 +3,8 @@ package org.alfresco.maven.archetype;
import org.apache.maven.it.VerificationException;
import org.apache.maven.it.Verifier;
import org.junit.Before;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.File;
import java.io.IOException;
@@ -14,6 +16,8 @@ import java.io.IOException;
*/
public abstract class AbstractArchetypeIT {
private static final Logger LOG = LoggerFactory.getLogger(AbstractArchetypeIT.class);
protected static final File ROOT = new File("target/test-classes/");
protected static final String LOG_FILENAME = "log.txt";
protected static final String ERROR_FILENAME = "error.txt";
@@ -46,11 +50,16 @@ public abstract class AbstractArchetypeIT {
/**
* Generate a new project from an archetype and verify the generation was successful.
*/
protected void generateProjectFromArchetype() throws Exception {
protected void generateProjectFromArchetype(final Logger logger) throws Exception {
LOG.info("---------------------------------------------------------------------");
LOG.info("Generating a new project from the archetype {}:{}:{}", archetypeProperties.getArchetypeGroupId(), archetypeProperties.getArchetypeArtifactId(),
archetypeProperties.getArchetypeVersion());
LOG.info("---------------------------------------------------------------------");
Verifier verifier = new Verifier(ROOT.getAbsolutePath());
verifier.setSystemProperties(archetypeProperties.getSystemProperties());
verifier.setAutoclean(false);
verifier.executeGoal("archetype:generate");
printVerifierLog("PROJECT GENERATION", verifier, logger);
verifier.verifyErrorFreeLog();
}
@@ -62,12 +71,27 @@ public abstract class AbstractArchetypeIT {
*/
protected ProcessBuilder getProcessBuilder(final String goalToExecute) {
ProcessBuilder pb = new ProcessBuilder(getCommand(), goalToExecute);
LOG.trace("ProcessBuilder environment: {}", pb.environment().toString());
pb.directory(new File(projectPath));
pb.redirectOutput(new File(projectPath + File.separator + LOG_FILENAME));
pb.redirectError(new File(projectPath + File.separator + ERROR_FILENAME));
return pb;
}
/**
* Print the content of the log file of a {@link Verifier} into a specific {@link Logger}.
*
* @param prefix the prefix to print before each line
* @param verifier the {@link Verifier} to print its log file content
* @param logger the {@link Logger} to print the log content
*/
protected void printVerifierLog(final String prefix, final Verifier verifier, final Logger logger) throws Exception {
logger.info("[{}] - {}", prefix, "Standard output");
verifier.loadFile(verifier.getBasedir(), verifier.getLogFileName(), false).forEach(line -> logger.info("[{}] - {}", prefix, line));
logger.info("[{}] - {}", prefix, "Error output");
verifier.loadFile(verifier.getBasedir(), ERROR_FILENAME, false).forEach(line -> logger.info("[{}] - {}", prefix, line));
}
private String getCommand() {
return projectPath + File.separator + (System.getProperty("os.name").startsWith("Windows") ? WINDOWS_EXEC : LINUX_EXEC);
}

View File

@@ -2,12 +2,16 @@ package org.alfresco.maven.archetype;
import org.apache.maven.it.Verifier;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Integration tests for the all-in-one archetype.
*/
public class AllInOneArchetypeIT extends AbstractArchetypeIT {
private static final Logger LOGGER = LoggerFactory.getLogger(AllInOneArchetypeIT.class);
@Override
protected ArchetypeProperties createArchetypeProperties() {
return ArchetypeProperties.builder()
@@ -23,7 +27,11 @@ public class AllInOneArchetypeIT extends AbstractArchetypeIT {
@Test
public void whenGenerateProjectFromArchetypeThenAProperProjectIsCreated() throws Exception {
generateProjectFromArchetype();
generateProjectFromArchetype(LOGGER);
LOGGER.info("---------------------------------------------------------------------");
LOGGER.info("Building the generated project {}", archetypeProperties.getProjectArtifactId());
LOGGER.info("---------------------------------------------------------------------");
// Since creating the archetype was successful, we now want to actually build the generated project executing the integration tests
// Execute a purge to ensure old data don't make the test fail
@@ -36,6 +44,7 @@ public class AllInOneArchetypeIT extends AbstractArchetypeIT {
Verifier verifier = new Verifier(projectPath);
verifier.setAutoclean(false);
verifier.setLogFileName(LOG_FILENAME);
printVerifierLog("PROJECT BUILD", verifier, LOGGER);
verifier.verifyErrorFreeLog();
verifier.verifyTextInLog("Tests run: 5, Failures: 0, Errors: 0, Skipped: 0");
}

View File

@@ -2,12 +2,16 @@ package org.alfresco.maven.archetype;
import org.apache.maven.it.Verifier;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Integration tests for the platform jar archetype.
*/
public class PlatformJarArchetypeIT extends AbstractArchetypeIT {
private static final Logger LOGGER = LoggerFactory.getLogger(PlatformJarArchetypeIT.class);
@Override
protected ArchetypeProperties createArchetypeProperties() {
return ArchetypeProperties.builder()
@@ -22,12 +26,17 @@ public class PlatformJarArchetypeIT extends AbstractArchetypeIT {
@Test
public void whenGenerateProjectFromArchetypeThenAProperProjectIsCreated() throws Exception {
generateProjectFromArchetype();
generateProjectFromArchetype(LOGGER);
LOGGER.info("---------------------------------------------------------------------");
LOGGER.info("Building the generated project {}", archetypeProperties.getProjectArtifactId());
LOGGER.info("---------------------------------------------------------------------");
// Since creating the archetype was successful, we now want to actually build the generated project
Verifier verifier = new Verifier(projectPath);
verifier.setAutoclean(false);
verifier.executeGoal("install");
printVerifierLog("PROJECT BUILD", verifier, LOGGER);
verifier.verifyErrorFreeLog();
}
}

View File

@@ -2,12 +2,16 @@ package org.alfresco.maven.archetype;
import org.apache.maven.it.Verifier;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Integration tests for the share jar archetype.
*/
public class ShareJarArchetypeIT extends AbstractArchetypeIT {
private static final Logger LOGGER = LoggerFactory.getLogger(ShareJarArchetypeIT.class);
@Override
protected ArchetypeProperties createArchetypeProperties() {
return ArchetypeProperties.builder()
@@ -22,12 +26,17 @@ public class ShareJarArchetypeIT extends AbstractArchetypeIT {
@Test
public void whenGenerateProjectFromArchetypeThenAProperProjectIsCreated() throws Exception {
generateProjectFromArchetype();
generateProjectFromArchetype(LOGGER);
LOGGER.info("---------------------------------------------------------------------");
LOGGER.info("Building the generated project {}", archetypeProperties.getProjectArtifactId());
LOGGER.info("---------------------------------------------------------------------");
// Since creating the archetype was successful, we now want to actually build the generated project
Verifier verifier = new Verifier(projectPath);
verifier.setAutoclean(false);
verifier.executeGoal("install");
printVerifierLog("PROJECT BUILD", verifier, LOGGER);
verifier.verifyErrorFreeLog();
}
}