I have created a first cut at an automated test framework for the domain manager with a number of distributed node processes. This does the following:
1. Starts the domain manager in a separate process using a predefined configuration of contributions, deployed composites, and nodes. 2. Starts one or more test nodes (also in separate processes) that use the domain manager for their configuration. 3. Starts an in-process test client node that exercises the test nodes using distributed execution. 4. Stops the test client node, the test node processes and the domain manager process. All of the processes started in steps 1 and 2 are monitored for startup and execution errors using the facilities provided by the java.lang.Process class. If any errors occur in any of these processes, the framework code throws an exception and destroys all the processes. I have checked this framework into the 1.5.1 branch in revision r797788 as part of a new itest/domainmgr module. I intend to add a number of submodules under the domainmgr module to test different domain manager scenarios (basic, transaction, callback, etc.) Currently only the "basic" submodule is checked in. This includes the framework together with a test to verify the fix for TUSCANY-3169. I will add additional submodules when I do the checkins for TUSCANY-3170, TUSCANY-3171 and TUSCANY-3172, to verify the fixes for these problems. I already have these code fixes but I need to do some more work on the verification tests. I would welcome any comments or questions on the framework. You can see the framework code by looking in the file itest/domainmgr/basic/runtest/src/test/java/domainmgr/DomainManagerBasicTestCase.java I have added comments in the code to explain the various steps. Currently the framework is embedded directly in the test case code. As additional tests are created, it would make sense to refactor the framework as a separate generic piece of code that is used by the test cases. I will look at doing this as I add some more tests that use the framework. Simon
