...
- Maven 2.2.1 or above
- Tomcat 6.x or above
- Java 6 (note: the djatoka service has compatibility issues with open-jdk)
- Subversion
Building DuraCloud
Info |
---|
Wiki Markup |
---|
Any portions of the configuration below for which you need to include a replacement value will be written in all capital letters and included in brackets: \[LIKE-THIS\] |
|
Build with unit tests
- Check out latest stable release from Subversion repository
Code Block |
---|
svn co https://svn.duraspace.org/duracloud/tags/duracloud-0.89.0
|
- Set environment variables
Code Block |
---|
export JAVA_OPTS="-XX:MaxPermSize=256m"
export MAVEN_OPTS="-Xmx1024m -XX:MaxPermSize=1024m"
|
- Configure Tomcat
- Add to $CATALINA_HOME/conf/tomcat-users.xml
No Format |
---|
<tomcat-users>
<role rolename="manager"/>
<role rolename="admin"/>
<user username="any[ANY-usernameUSERNAME]" password="any[ANY-passwordPASSWORD]" roles="admin,manager"/>
</tomcat-users>
|
- Start tomcat
Code Block |
---|
$CATALINA_HOME/bin/startup.sh
|
- Configure Maven2
- Add tomcat user to $M2_HOME/conf/settings.xml
No Format |
---|
<servers>
<server>
<id>tomcat-server</id>
<username>any-username<<username>[ANY-USERNAME]</username>
<password>any-password<<password>[ANY-PASSWORD]</password>
</server>
</servers>
|
- Build with only unit tests
- From top of source tree
Code Block |
---|
mvn clean install -PskipIntTests
|
Note: Each of the maven2 project modules are configured to halt the build if there is a test failure. The only exception to this is the integration-test module which is configured to run through all of its tests regardless of failures. So the above build command can optionally exclude the '-PskipIntTests' flag if desired.
...
- Create unit-test-db
- From inside the //unit-test-db module, run:
Code Block |
---|
mvn assembly:assembly
java -jar target/unit-test-db-[versionVERSION]-db-util.jar
|
- Running the above db util jar will provide a commandline interface for adding credentials
- Add credentials for s3, emc, rackspace, root-user
- Set the root-user to username: 'root', password: 'rpw' to just use the application default.
- See root user discussion below for ways of changing the default.
- Add the connection details for the unit-test-db to $M2_HOME/conf/settings.xml
No Format |
---|
<profile>
<id>always</id>
<properties>
<duracloud.home>locationhome>[LOCATION-whereWHERE-applicationAPPLICATION-hasHAS-writeWRITE-access<ACCESS]</duracloud.home>
<unit.database.home.default>locationdefault>[LOCATION-whereWHERE-unitUNIT-testTEST-dbDB-wasWAS-created<CREATED]</unit.database.home.default>
<unit.database.password.default>unitdefault>[UNIT-testTEST-dbDB-bootBOOT-password<PASSWORD]</unit.database.password.default>
</properties>
</profile>
<activeProfiles>
<activeProfile>always</activeProfile>
</activeProfiles>
|
- where duracloud.home is the directory under which the logs and osgi-container will be placed
- where unit.database.home.default is the location of the unit-test-database created above
- where unit.database.password.default is the boot password used during creation of the unit-test-database above
- The integration tests also expect a registry (read: 'space') of services to be available within the primary storage provider of service storage host
- The naming of the space follows the convention "duracloud-<version>-service-repo"
- The services to be loaded into the registry can be found in the target directories of each of the service projects
- See discussion below about application configuration, including the service storage host
- Build with unit and integration tests
- From top of source tree
Code Block |
---|
mvn clean install
|
- As mentioned before, if there are any failures in the //integration-test module, the build will still complete, but the failures will be listed
...
This step assumes the successful completion of the previous build instructions
Panel |
---|
|
- Start OSGi service container
Code Block |
---|
cd //services/servicesadmin
mvn clean -f pom-run.xml pax:provision
cd runner
chmod +x run.sh
export BUNDLE_HOME= |
|
...
[DURACLOUD_HOME]/osgi-container
./run.sh
|
|
...
Wiki Markup |
---|
Where \[DURACLOUD_HOME\] is a directory where the application has write access (can be same as <duracloud.home> set in Maven settings.xml above) |
- The run.sh script will start an OSGi container and commandline interface to it
- The container starts with required bundles including the 'services-admin' installed
- See discussion below on OSGi container for more details
- Once the 'services-admin' is running, tests that deploy services into the OSGi environment may be run
- From inside the //integration-test module
Code Block |
---|
mvn install -PrunServicesAdminTests
|
|
Panel |
---|
|
- Set up OSGi service container
Code Block |
---|
cd services/servicesadmin
mvn clean -f pom-run.xml pax:provision
cd runner
|
- (Optional) Set the OSGi bundle storage location
Code Block |
---|
set BUNDLE_HOME=[BUNDLE_HOME]
|
Wiki Markup |
---|
Where \[BUNDLE_HOME\] is the full path to an empty directory where the osgi container content will be stored |
- Open the run.bat file in the runner directory in a text editor and replace all instances of "$BUNDLE_HOME" with "%BUNDLE_HOME%"
- Note: A directory called "$BUNDLE_HOME" under the runner directory will be used as the default bundle home if one is not specified.
- (Optional) Set up logging
- Download this logback.xml file file into your bundle home directory.
- Open the logback.xml file in a text editor and edit the LOG_FILENAME property to point to a full file path (including file name) for a log file.
- Note: One benefit to performing this step will be faster start time for your OSGi container.
- Start OSGI service container
- The run.bat script will start an OSGi container and commandline interface to it
- The container starts with required bundles including the 'services-admin' installed
- See discussion below on OSGi container for more details
- Once the 'services-admin' is running, check to ensure that it was created properly
- In the console where run.bat was executed, an "osgi" prompt should be available. If it is not available, hitting enter should bring it up.
- Type "ss" and hit enter. This should list all of the available bundles. This list should include 50 items, all of which are either in the ACTIVE or RESOLVED state.
|
Optional items
Code coverage
- If you plan on using Clover, the following element needs to be added to your maven 'settings.xml'
No Format |
---|
<profiles>
<profile>
<id>profile-clover</id>
<activation>
<property>
<name>profile</name>
<value>clover</value>
</property>
</activation>
<properties>
<cloverLicense>[specifyLOCATION-locationOF-of-clover.license-FILE]</cloverLicense>
</properties>
</profile>
</profiles>
|
- To run clover
Code Block |
---|
mvn clover2:instrument clover2:aggregate clover2:clover -Pprofile-clover
|
- A report will be generated in the following directory:
//target/site/clover/
...
- This tool provides a commandline interface for interacting with the 'services-admin' installed in a running OSGi container (see notes above for starting the container)
- To build and run the CLI, from within the //servicesadminclient module
Code Block |
---|
mvn assembly:assembly
java -cp target/servicesadminclient-<version>[VERSION]-cli.jar
|
Application initialization utility
...