A Repository Confluence
Every once in a while a confluence of ideas happens around open-source test automation. The confluence of this week is:
- Apache's announcement of Jackrabbit 1.4
- Zephyr's announcement that their private beta of a new collaborative test automation platform uses Jackrabbit
- Jimmy Foulkes (one of our architects) push for PTTWeb to use JSR 170 and specifically Jackrabbit as our new repository for the upcoming PushToTest collaborative test automation platform.
All of these happened this week!
PushToTest is being used by hundreds of thousands of developers now. We often hear users and customers asking for a collaborative test environment that features a repository of tests and a scheduler. We are working on these under the codename PTTWeb. The first piece of the project is the repository.
This is perhaps the most important module of PTTWeb because it provides all the storage functionality required by the other modules. Will serve as the storage repository for test scenarios, resources and scripts as well as test results.
In general this will include the storage of the following areas:
- Test resources: test related artifacts using a file system metaphor
- Test results: all test data results associated to the executed jobs from the different test nodes
- Security: all information related to security access like users, roles, permissions, etc.
- Scheduling: job and its execution scheduling information
In order to avoid spending time on writing code to provide this functionality it is necessary to find an Open Source product/project that provides this service. The Java Community process has a specification for Content Repositories under the JSR 170. There are several Open Source implementations of this JSR. One possible implementation is the Apache Jackrabbit project that fulfills this JSR as well as adding several more features of its own. Jackrabbit is in use by several important projects like JBoss portal, Magnolia Content management system, jLibrary, Sun's OpenPortal Project.
Most providers for this JSR can provide RDMS implementation for the underlying data store. A MySql database could provide the actual storage capabilities for the repository although a file system based repository is much faster. The idea is that the repository should emulate a typical hierarchical file system with similar access permission typical of a file system. Attention will be placed in the design to the appropriate structure of this repository and to allow the definition of the required metadata associated with the possible resources to be kept there.
A general search function will be provided on this repository. For those resources of text type the actual contents of the resource can be searched, otherwise the search will be performed on the actual names, attributes and repository structure for the repository.
The design document for PTTWeb is available for your review, feedback and ideas here.
-Frank


