A Maven based CMIS Tck to contribute in Apache Chemistry

written by MindTheGab on August 3, 2009 in alfresco and cmis and maven and opensource with 2 comments
Follow me!

MindTheGab

WW Manager, Expert Services at Alfresco Software
Grown in the flourishing Open Source Enterprise ecosystem of the last decade, bringing a wealth of expertise on ECM and Application Lifecycle Management, both in terms of Product and People leadership.

With a masters thesis on Business Process Re-engineering on a fully open source stack and 10 years in the tech business between Services, Sales and Engineering, he developed a full-spectrum technical and business expertise, in the context of large scale Enterprise Content Management projects for key government and Fortune 500 global customers.
Follow me!

My first real involvement in Chemistry definitely deserves a first post on the subject ;)

Lately I’ve been involved into refactoring the Alfresco CMIS Test Harness into an external Tck (Test Compatibility Kit) module to contribute to the Apache Chemistry. At the moment it’s mostly focused on the AtomPub part (including an Apache Adbera extension), but being based on Apache Maven standards should be fairly easy to scale out to WebServices binding testing.

This would be this first real contribution from Alfresco to the Chemistry project, where me and David Caruana have the luck of being involved as committers. At the moment the code for the will-be-called chemistry-atompub-tck is still hosted under the Alfresco contrib SVN space as still to be completed, but already offering quite some nice functionalities to test the compatibility of your server to the CMIS 0.6.2 standard.

The code (which was already in Alfresco and kept up to date to the CMIS standard directly by David) is now almost ready for contribution as it’s completely decoupled from Alfresco and uses a standard Maven build process (Junit + Surefire) to run compatibility tests against an existing (and running) CMIS server.

So, running a plain :

mvn test

will run all Junit tests against the specified serviceUrl with specified the username and password, using Maven POM properties as configuration mechanism. Additional configuration can be done in the POM to trace HTTP request/response conversation (useful for debugging purposes), and to configure some behaviors of the HTTP client.

In addition to that, due to the mighty Maven power a small addition to the previous command:

mvn test site:run

will allow you to point to anembedded Jetty server which publishes the test reports and shows errors and exceptions (amongst all the other nice Maven site features).

The idea at the base of this contribution is that this TCK can be used to test virtually any CMIS implementation and Maven profiles provide us a nice way to aggregate the full test fixture and publish the result in a nicely aggregated fashion. In fact, I started defining a profile called ‘alfresco’ which once run with:

mvn test -Palfresco

will configure the TCK to run against an Alfresco provided CMIS reference URL (or to do any Alfresco specific pre-requisite steps, like downloading it, installing a custom model and run it in Jetty for self contained testing).

In the same way I’d like all the other open source vendors involved in Chemistry to maintain their own profile which will serve as community reference for the CMIS readiness of a specific platform. Likewise we could setup ‘sharepoint’ or ‘documentum’ profiles to test existing public instances of those CMIS implementors, to always be up to date with their state of the art.

This will, of course, make much more sense once integrated in Chemistry but it’s already fully functional against the CMIS 0.6.2 standard and might be worth a try already. And if you feel to participate to the testing game, why don’t you make a CMIS server instance available and contribute the few lines of POM configuration to the project, filing a nice and easy JIRA issue?

Too much of a salesguy ? :)

About Gabriele Columbro

Grown in the flourishing Open Source Enterprise ecosystem of the last decade, bringing a wealth of expertise on ECM and Application Lifecycle Management, both in terms of Product and People leadership. With a masters thesis on Business Process Re-engineering on a fully open source stack and 10 years in the tech business between Services, Sales and Engineering, he developed a full-spectrum technical and business expertise, in the context of large scale Enterprise Content Management projects for key government and Fortune 500 global customers.