Skip to content
Open
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,62 @@ public void buildDistro_shouldBuildFromDistroPropertiesInCurrentDirectory() thro
assertSuccess();
}

@Test
public void buildDistro_shouldBuildModuleBasedDistroFromDetectedModuleProject() throws Exception {
Path sourcePath = testResourceDir.resolve(TEST_DIRECTORY).resolve("moduleBasedDistroIT");
FileUtils.copyDirectory(sourcePath.toFile(), testDirectory);
addTaskParam("dir", "target/docker");
executeTask("build-distro");

assertFilePresent("target/docker/docker-compose.yml");
assertFilePresent("target/docker/docker-compose.override.yml");
assertFilePresent("target/docker/docker-compose.prod.yml");
assertFilePresent("target/docker/.env");
assertFilePresent("target/docker/web/Dockerfile");
assertFilePresent("target/docker/web/openmrs_modules");
assertFilePresent("target/docker/web/openmrs_modules/example-1.0.0-SNAPSHOT.omod");
assertFilePresent("target/docker/web/openmrs_modules/metadatamapping-1.0.1.omod");
assertFilePresent("target/docker/web/openmrs_modules/webservices.rest-2.49.0.omod");
assertFilePresent("target/docker/web/openmrs_modules/metadatadeploy-1.13.0.omod");
assertFilePresent("target/docker/web/openmrs_modules/fhir2-2.5.0.omod");
assertFilePresent("target/docker/web/openmrs_modules/metadatasharing-1.1.8.omod");
assertFilePresent("target/docker/web/openmrs_modules/legacyui-1.23.0.omod");
assertFilePresent("target/docker/web/openmrs_owas");
assertFilePresent("target/docker/web/openmrs_config");
assertFilePresent("target/docker/web/openmrs_spa");
assertFilePresent("target/docker/web/openmrs_core/openmrs.war");
assertFilePresent("target/docker/web/openmrs-distro.properties");
assertFileContains("war.openmrs=2.7.4", "target", "docker", "web", "openmrs-distro.properties");
assertSuccess();
}

@Test
public void buildDistro_shouldBuildModuleBasedDistroFromFromIncludeModulesParameter() throws Exception {
addTaskParam("dir", "docker");
addTaskParam("includeModules", "org.openmrs.module:legacyui-omod:1.23.0, org.openmrs.module:webservices.rest:2.49.0, org.openmrs.module:fhir2:2.5.0, org.openmrs.module:metadatadeploy:1.13.0");
executeTask("build-distro");

assertFilePresent("docker/docker-compose.yml");
assertFilePresent("docker/docker-compose.override.yml");
assertFilePresent("docker/docker-compose.prod.yml");
assertFilePresent("docker/.env");
assertFilePresent("docker/web/Dockerfile");
assertFilePresent("docker/web/openmrs_modules");
assertFilePresent("docker/web/openmrs_modules/metadatamapping-1.0.1.omod");
assertFilePresent("docker/web/openmrs_modules/webservices.rest-2.49.0.omod");
assertFilePresent("docker/web/openmrs_modules/metadatadeploy-1.13.0.omod");
assertFilePresent("docker/web/openmrs_modules/fhir2-2.5.0.omod");
assertFilePresent("docker/web/openmrs_modules/metadatasharing-1.1.8.omod");
assertFilePresent("docker/web/openmrs_modules/legacyui-1.23.0.omod");
assertFilePresent("docker/web/openmrs_owas");
assertFilePresent("docker/web/openmrs_config");
assertFilePresent("docker/web/openmrs_spa");
assertFilePresent("docker/web/openmrs_core/openmrs.war");
assertFilePresent("docker/web/openmrs-distro.properties");
assertFileContains("war.openmrs=2.7.4", "docker", "web", "openmrs-distro.properties");
assertSuccess();
}

@Test
public void buildDistro_shouldBuildFromDistroPropertiesInCurrentProject() throws Exception {
Path sourcePath = testResourceDir.resolve(TEST_DIRECTORY).resolve("buildDistroIT");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,4 +50,4 @@ public void downloadArtifact_shouldFailIfNoArtifactIsFound() throws Exception {
artifactHelper.downloadArtifact(artifact, getMavenTestDirectory(), false);
});
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
package org.openmrs.maven.plugins.utility;

import static org.junit.Assert.assertThat;

import java.util.Arrays;
import java.util.Properties;

import org.junit.Test;
import org.openmrs.maven.plugins.AbstractMavenIT;
import org.openmrs.maven.plugins.model.Artifact;
import static org.hamcrest.Matchers.equalTo;

public class ModuleBasedDistroHelperIT extends AbstractMavenIT {

@Test
public void build_shouldBuildGeneratePropertiesBasedOnModuleArtifacts() throws Exception {
executeTest(() -> {
// setup
ModuleBasedDistroHelper helper = new ModuleBasedDistroHelper(getMavenEnvironment());
Artifact[] artifacts = Arrays.stream("org.openmrs.module:legacyui-omod:1.23.0, org.openmrs.module:webservices.rest:2.49.0, org.openmrs.module:fhir2:2.5.0, org.openmrs.module:metadatadeploy:1.13.0".split(","))
.map(String::trim)
.map(spec -> {
String[] parts = spec.split(":");
return new Artifact(parts[1], parts[2], parts[0]);
}).toArray(Artifact[]::new);

Properties expectedProperties = new Properties();
String props = "name=Module based distro, omod.metadatamapping=1.0.1, omod.metadatasharing=1.1.8, war.openmrs.groupId=org.openmrs.web, omod.fhir2=2.5.0, omod.legacyui=1.23.0, omod.metadatadeploy=1.13.0, version=100.0.0-SNAPSHOT, omod.webservices.rest=2.49.0, db.h2.supported=false, war.openmrs=2.7.4";
String[] pairs = props.split(",");
for (String pair : pairs) {
String[] keyValue = pair.split("=", 2);
if (keyValue.length == 2) {
expectedProperties.setProperty(keyValue[0].trim(), keyValue[1].trim());
}
}

// replay
Properties actualProperties = helper.generateDitributionPropertiesFromModules(artifacts);

// verify
assertThat(actualProperties.size(), equalTo(expectedProperties.size()));
for (String p : expectedProperties.stringPropertyNames()) {
assertThat(actualProperties.getProperty(p), equalTo(expectedProperties.getProperty(p)));
}
});
}
}

Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>

<parent>
<groupId>org.openmrs.module</groupId>
<artifactId>example</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>

<artifactId>example-omod</artifactId>
<packaging>jar</packaging>
<name>Example Module OMOD</name>
<description>OMOD project for Example</description>

<build>
<finalName>${project.parent.artifactId}-${project.parent.version}</finalName>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>

<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<includeEmptyDirs>true</includeEmptyDirs>
</configuration>
</plugin>
</plugins>
</pluginManagement>

<plugins>
<plugin>
<groupId>org.openmrs.maven.plugins</groupId>
<artifactId>maven-openmrs-plugin</artifactId>
<extensions>true</extensions>
<executions>
<execution>
<id>init</id>
<phase>initialize</phase>
<goals>
<goal>initialize-module</goal>
</goals>
</execution>
<execution>
<id>pack</id>
<phase>package</phase>
<goals>
<goal>package-module</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>

</project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>

<module configVersion="1.2">

<id>${project.parent.artifactId}</id>
<name>${project.parent.name}</name>
<version>${project.parent.version}</version>
<package>${project.parent.groupId}.${project.parent.artifactId}</package>
<author>Tests</author>
<description>
Integration tests purposes
</description>

<require_modules>
<require_module version="${metadatadeployVersion}">org.openmrs.module.metadatadeploy</require_module>
<require_module version="${legacyuiVersion}">org.openmrs.module.legacyui</require_module>
<require_module version="${fhir2Version}">org.openmrs.module.fhir2</require_module>
<require_module version="${webservicesRestVersion}">org.openmrs.module.webservices.rest</require_module>
</require_modules>
</module>

Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
<?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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>org.openmrs.module</groupId>
<artifactId>example</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>pom</packaging>
<name>Example Module</name>

<distributionManagement>
<repository>
<id>openmrs-repo-modules</id>
<name>OpenMRS Modules</name>
<url>https://mavenrepo.openmrs.org/modules</url>
</repository>
<snapshotRepository>
<id>openmrs-repo-snapshots</id>
<name>OpenMRS Snapshots</name>
<url>https://mavenrepo.openmrs.org/snapshots</url>
</snapshotRepository>
</distributionManagement>

<modules>
<module>omod</module>
</modules>

<properties>
<metadatadeployVersion>1.13.0</metadatadeployVersion>
<legacyuiVersion>1.23.0</legacyuiVersion>
<fhir2Version>2.5.0</fhir2Version>
<webservicesRestVersion>2.49.0</webservicesRestVersion>
</properties>

<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<target>1.8</target>
<source>1.8</source>
</configuration>
</plugin>

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<includeEmptyDirs>true</includeEmptyDirs>
</configuration>
</plugin>

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.5</version>
<configuration>
<!-- Some tests are locale specific -->
<argLine>-Xmx1024m -Xms1024m -XX:MaxPermSize=512m -Duser.language=en -Duser.region=US</argLine>
<!-- Bamboo agents require a different tmp folder -->
<systemPropertyVariables>
<java.io.tmpdir>${java.io.tmpdir}</java.io.tmpdir>
</systemPropertyVariables>
</configuration>
</plugin>

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>test-jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</pluginManagement>
</build>

<repositories>
<repository>
<id>openmrs-repo</id>
<name>OpenMRS Nexus Repository</name>
<url>https://mavenrepo.openmrs.org/public</url>
</repository>
</repositories>

<pluginRepositories>
<pluginRepository>
<id>openmrs-repo</id>
<name>OpenMRS Nexus Repository</name>
<url>https://mavenrepo.openmrs.org/public</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</project>
Loading