This readme should be used as a guideline for creating a test module.

- The first thing to do would be to copy the contents of template directory 
  recursively under a module/sub-module directory name. 
- Move build.properties.template, build.xml.template, testng.xml.template
  to build.properties, build.xml, testng.xml respectively  
- All- descriptor, ejb, servlet, sql - directories might not be needed
- Populate these directories with the appropriate content where needed.
  For example the deployement descriptors go in descriptor and the servlet
  source java files should be in the servlet directory.
- All the TestNG based tests should be configed to tests. 
- test-output, test-report, test-tmp directories are use by TestNG and the 
  devtests framework and should not used by the devtest authors directly.
- Populate build.properties with the needed property name/value pairs.
- The template build.xml's default target 'all' ends up executing the targets
  build, deploy, run, report, undepoy in order. You might not need some 
  of these targets of you might need more. Its a good idea to take a look
  at some of the common targets in appserv-tests/config/common.xml and
  appserv-tests/devtestsNG/common-build.xml


For questions/comments email: dev@glassfish.dev.java.net

