### Knopflerfish OSGi regression tests

This directory contains regression tests which can be used to test OSGi frameworks. Almost all of the tests originates from the Gatespace Telematics test suite. These test are now donated as BSD-licensed open source, via the Knopflerfish project.

The tests can be compiled stand-alone from the main KF distrib, by just checking out the regression_tests/ dir and compile using ant:

     > svn co \
    https://www.knopflerfish.org/svn/knopflerfish.org/trunk/osgi/bundles_test/regression_tests
     > cd regression_tests
     > ant -Dosgi.jar=<path to osgi lib>

...and you'll get a new dir jars/, full of test bundles.

The KF nightly build runs these test, and saves the results at
`http://www.knopflerfish.org/snapshots/<RELEASE>/junit_grunt/index.xml`

A precompiled zip file of the necessary test bundles can be found at
`http://www.knopflerfish.org/snapshots/<RELEASE>/knopflerfish_osgi_tests_<RELEASE>-trunk.zip">`

The tests can also be accessed/browsed using subversion, from
https://www.knopflerfish.org/svn/knopflerfish.org/trunk/osgi/bundles_test/regression_tests/

#### Available test suites

Bundle | Test id | Passes on
--- | --- | ---
framework_test-1.0.0 | FrameworkTestSuite | KF
filter_test-1.0.0.jar | FilterTestSuite | KF
servicetracker_test-1.0.0.jar | ServiceTrackerTestSuite | KF
constants_test-1.0.0.jar | ConstantsTestSuite | KF, Oscar
permissionadmin_test-1.0.0.jar | PermissionAdminTestSuite | KF
registeryperformance_test-1.0.0.jar | PerformanceRegistryTestSuite | KF
http_test-1.0.0.jar | HttpTestSuite | Only half-complete
restart_test-1.0.0.jar | RestartSetupTestSuite + RestartTestSuite | KF

and a lot of small test bundles `bundle[A-Z]_test` which are used as embedded bundles.

#### Test source, origin, errors, updates

Most of the tests have been ported from a log-based test system, to a JUnit-based system (see JUnit testing on OSGi), and the test in themselves may thus contain porting errors.

Reviews are encouraged! Please report any possible test errors, new tests, suggestions, or new platforms that the tests have been run on, to info@knopflerfish.org

#### Running the tests

If you have a checked out copy of the subversion repository `knopflerfish.org` then you can run all these tests from the `osgi`-subdirectory by typing:

    ant run-osgi-test-target-secure

This will build all needed bundles and then execute the test suites.

The rest of this page describes how to run the tests by hand.

The test cases above can be run using the junit bundle. It can also be run without the http server, using the junit_runner bundle.

To run a stand-alone tests you should only need to install

     junit_all-2.0.0.jar

then the one or more of the actual test cases

     framework_test-1.0.0.jar       (test id: FrameworkTestSuite)
     filter_test-1.0.0.jar          (test id: FilterTestSuite)
     servicetracker_test-1.0.0.jar  (test id: ServiceTrackerTestSuite)
     constants_test-1.0.0.jar       (test id: ConstantsTestSuite)

the last started bundle should be

     junit_runner_all-1.0.0.jar

which reads system properties

     org.knopflerfish.junit_runner.tests=[space separated test ids or filter]
     org.knopflerfish.junit_runner.quit=true

When the framework is started, the junit_runner bundle will run all installed test and write the XML results to a directory (including XSLT styles for HTML presentation). The default output directory is `junit_grunt1`

An KF .xargs file doing exactly this can be found at init-tests.xargs. This is the same file used for the nightly test runs.

#### Running the restart tests

The `restart_test` bundle is intended to test framework behavior after a restart. This requires the system triggering the test to start the framework twice, first in a completely clean state, then in a restarted state.

The first run will install a set of bundles (at different start levels) and then quit.

The next run should start the framework in a restarted mode. The restart bundle will notice this by using the bundle file storage, and compare the state between the two runs.

These .xargs startup files can be used as example for running the restart tests:

restart_test/test-restart1.xargs
restart_test/test-restart2.xargs

1Hi Klas!

Copyright 2004-2008 Knopflerfish