Title: ComplianceTesting ## Enterprise OSGi Compliance Tests The Enterprise OSGi compliance tests are provided byt the [OSGi Alliance](http://www.osgi.org) to Apache committers who have signed the appropriate Non Disclosure Agreement. The tests are supplied with the BND configuration files used to run the tests against the OSGi implementation of the Enterprise Specification. The configuration files require some modification to run the tests against Aries components. Instructions for obtaining and running the tests are given [here](http://felix.apache.org/site/using-the-osgi-compliance-tests.html), or see below. ## Test results At each Aries release the tests are run against Aries components. The results for the most recent release can be found [here](/downloads/testresults.html) . ## How to run the tests for Aries components ### Legal stuff Complete an Apache [Non Disclosure Agreement](http://apache.org/jcp/ApacheNDA.pdf) and email it to secretary@apache.org Write a note to jcp-open@apache.org with the subject "OSGi CT access" which contains (something like) the following text: "I'm a committer on the Apache Aries project and would like access to the OSGi CT. I've submitted an NDA." Note: You should subscribe to jcp-open@apache.org first. If you don't your note will languish in 'moderation' forever :-) ### Get the tests Anyone with an NDA on file should be able to get access to the tests [here ](https://svn.apache.org/repos/tck/osgi-cts/) . The group of tests that are required for Aries is called osgi.enterprise.tests. Download the jar for the appropriate level - currently 4.2.0. ### Running the tests Extract the jar into a test directory, say ~/AriesTests. After you have extracted the file you will find: * A subdirectory call 'jar' which contains all the tests * A set of *.bnd files which are used to run the tests The tests are run using bnd, the command line used to run a set of tests looks like this: java -jar jar/bnd.jar runtests -title osgi.ct org.osgi.test.cases.blueprint.bnd The command above would, for example, run the blueprint tests. Before running the tests it will be necessary to make some changes to the bnd files, to download some additional pre-reqs and to assemble the aries components to be tested. The [Felix](http://felix.apache.org/site/using-the-osgi-compliance-tests.html) pages give a good indication of what is necessary. ### Debugging the tests If you want to debug the code then you need to add the following line to the .bnd file: -runvm=-Xdebug,"-Xrunjdwp:transport=dt_socket,server=y,address=localhost:7777" You can change 7777 to any number you want. ### Modifying the bnd files #### General First, it is necessary to add a couple of lines, like this: -runpath = \ commonjars/osgi-3.5.0.v20090520.jar;version=file, \ commonjars/com.springsource.junit-3.8.2.jar;version=file;export="junit.framework;version=3.8", Secondly, if you are using the Eclipse Framework, it is necessary to remove the line osgi.resolverMode="strict", \ from the 'runproperties' section. It's convenient (but not necessary) to keep the the jars required to run the test jars and the code being tested in separate subdirectories. Create: * commonjars - any common dependencies, eg pax-logging * ariesjars - the aries code to be tested The easiest way to find most of the aries jars and their dependencies is to copy every aries jar in the ~/samples/blog/blog-assembly/target folder into ariesjars and every non-aries jar from the same directory into 'commonjars'. The *.bnd files that are used to run the tests assume that the person running the tests has access to org.osgi.impl* jars. In general this is not the case - so wherever an org.osgi.impl* jar has been used it must be replaced with an equivalent implementation. Such implementations can usually be found in either [Felix](http://felix.apache.org/site/downloads.cgi), [Equinox](http://download.eclipse.org/equinox/) or [Knopflerfish](http://www.knopflerfish.org/releases/3.0.0/osgi/jars/). #### Blueprint There are four other dependencies needed to run the tests, download these: * org.osgi.compendium-4.2.0.jar * osgi-3.5.0.v20090520.jar * org.eclipse.equinox.event-1.1.100.jar * org.apache.felix.configadmin-1.2.4.jar from Maven and put them in commonjars. After modifications the bnd configuration file to run the blueprint tests will look like this: -include= ~shared.inc build=. -target = \ jar/org.osgi.test.cases.blueprint-4.2.0.jar;version=file, -runpath = \ commonjars/osgi-3.5.0.v20090520.jar;version=file, \ commonjars/com.springsource.junit-3.8.2.jar;version=file;export="junit.framework;version=3.8", -runbundles = \ commonjars/org.osgi.compendium-4.2.0.jar;version=file;strategy="lowest", \ commonjars/pax-logging-api-1.4.jar;version=file, \ commonjars/pax-logging-service-1.4.jar;version=file, \ commonjars/cm-3.2.0-v20070116.jar;version=file, \ commonjars/org.eclipse.equinox.event-1.1.100.jar;version=file, \ commonjars/org.apache.felix.configadmin-1.2.4.jar;version=file, \ ariesjars/org.apache.aries.blueprint-0.2-incubating.jar;version=file -runproperties = \ report="true", \ osgi.compatibility.bootdelegation="false", \ osgi.support.multipleHosts="true" #### JNDI The only additional bundle required for these tests is: * osgi.enterprise.jar which can be found at the [OSGi Alliance](http://www.osgi.org/Main/HomePage) site. The .bnd file required to run the JNDI tests looks like this: -include= ~shared.inc build=. -target = \ jar/org.osgi.test.cases.jndi-4.2.0.jar;version=file, -runpath = \ commonjars/osgi-3.5.0.v20090520.jar;version=file, \ commonjars/com.springsource.junit-3.8.2.jar;version=file;export="junit.framework;version=3.8", -runbundles = \ commonjars/osgi.enterprise-4.2.0.jar;version=file;strategy="lowest", \ ariesjars/org.apache.aries.util-0.2-incubating.jar;version=file, \ ariesjars/org.apache.aries.jndi-0.2-incubating.jar;version=file -runproperties = \ report="true", \ osgi.compatibility.bootdelegation="false", \ osgi.support.multipleHosts="true", \ org.osgi.framework.bootdelegation="com.sun.*" #### JMX It is necessary to download the following: * http://www.knopflerfish.org/releases/3.0.0/osgi/jars/useradmin/useradmin_all-3.0.1.jar * http://www.knopflerfish.org/releases/3.0.0/osgi/jars/log/log_api-3.0.1.jar * org.apache.felix.log-1.0.0.jar * org.apache.felix.http.bundle-2.0.4.jar and use them to replace the three org.osgi.impl* jars in the runbundles section. -include= ~shared.inc build=. -target = \ jar/org.osgi.test.cases.jmx-4.2.0.jar;version=file, -runpath = \ commonjars/osgi-3.5.0.v20090520.jar;version=file, \ jar/com.springsource.junit-3.8.2.jar;version=file;export="junit.framework;version=3.8", -runbundles = \ commonjars/osgi.enterprise-4.2.0.jar;version=file;strategy="lowest", \ commonjars/org.apache.felix.configadmin-1.2.4.jar;version=file, \ ariesjars/org.apache.aries.jmx-0.2-incubating.jar;version=file, \ commonjars/useradmin_all-3.0.1.jar;version=file, \ commonjars/log_api-3.0.1.jar;version=file, \ commonjars/org.apache.felix.log-1.0.0.jar;version=file, \ commonjars/org.osgi.compendium-4.2.0.jar;version=file, \ commonjars/org.eclipse.equinox.ip_1.1.100.v20100503.jar;version=file, \ commonjars/org.eclipse.equinox.util_1.0.200.v20100503.jar;version=file, \ commonjars/org.apache.felix.http.bundle-2.0.4.jar;version=file -runproperties = \ report="true", \ osgi.compatibility.bootdelegation="false", \ osgi.support.multipleHosts="true", \ osgi.console="1111", \ org.osgi.test.cases.jmx.system.packages.extra="junit.framework;version=3.8", \ org.osgi.test.cases.jmx.bundles="jar/osgi.enterprise-4.2.0.jar,jar/org.apache.aries.jmx-0.2-incubating.jar" #### Transaction Nothing more to download here. Here is the configuration file: -include= ~shared.inc build=. -target = \ jar/org.osgi.test.cases.transaction-4.2.0.jar;version=file, -runpath = \ commonjars/osgi-3.5.0.v20090520.jar;version=file, \ commonjars/com.springsource.junit-3.8.2.jar;version=file;export="junit.framework;version=3.8", -runbundles = \ commonjars/osgi.enterprise-4.2.0.jar;version=file;strategy="lowest", \ commonjars/pax-logging-api-1.4.jar;version=file, \ commonjars/pax-logging-service-1.4.jar;version=file, \ commonjars/geronimo-jta_1.1_spec-1.1.1.jar;version=file, \ commonjars/geronimo-transaction-2.1.3.jar;version=file, \ commonjars/geronimo-j2ee-connector_1.5_spec-2.0.0.jar;version=file, \ commonjars/org.apache.felix.configadmin-1.2.4.jar;version=file, \ ariesjars/org.apache.aries.blueprint-0.2-incubating.jar;version=file, \ ariesjars/org.apache.aries.transaction.blueprint-0.2-incubating.jar;version=file, \ ariesjars/org.apache.aries.transaction.manager-0.2-incubating.jar;version=file, \ ariesjars/org.apache.aries.transaction.wrappers-0.2-incubating.jar;version=file -runproperties = \ report="true", \ osgi.compatibility.bootdelegation="false", \ osgi.support.multipleHosts="true", \ org.osgi.test.cases.transaction.waittime="30"