Unable to render {include} The included page could not be found.

What is SDO Community Test Suite (SDO CTS)

The SDO CTS provides a set of test that exercise SDO 2.1 implementations. The tests validate an SDO implementation behaves as expected, according to the community's understanding of the SDO specification.

The SDO CTS enables developers to choose or switch SDO implementations without the concern of having to re-code a significant proportion of their application due to differences between implementations. This community test suite is initially focused on areas seen as important to developers of SDO applications.

Over time this will grow to include a larger proportion of the SDO specification according to the community's desire. The SDO CTS does not claim to be a validation or compliance suite, nor does it endorse any specific implementation.

If the SDO specification appears ambiguous or unclear then the community may decide what to do; it could decide to test the area with an agreed expected behavior, or decide not to test this area. Ambiguities will be fed back to the specification group for clarification.

How to get involved?

SDO users feedback and involvement would be greatly appreciated. Tell us what is important to you, and if you can provide test cases.

Start by sending an email to the Tuscany Users' <tuscany-user@ws.apache.org> mailing list, if possible add a [SDO CTS] at the start of the subject line to make it easier to spot.

If you already have suitable test cases that you'd like to contribute, then go ahead and open an improvement in our tracking system.

Obtaining and using the CTS

Currently the SDO CTS is only available in source form from the subversion repository. You will need the following:

The code can be downloaded from the subversion repository using :

svn co http://svn.apache.org/repos/asf/tuscany/sdo-java/trunk-cts/

The SDO CTS project currently contains two sub-projects:

  • cts/sdo2.1 contains the actual test cases
  • cts/sdo2.1-tuscany executes the test cases against the current Tuscany Implementation

To build the CTS and run it against the Tuscany implementation all you need to do is:

me@mine:~$ cd cts
me@mine:~/cts$  mvn

Note that some users report that 0 tests are executed when performing these instructions. This is reported in Jira TUSCANY-1249. If you see these symptoms and have any insights please report them in the Jira. An alternative means of running the tests is to run them from within the Eclipse platform as described below.

If you would like to execute the SDO CTS against a different implementation then you will need to provide a helper class.

Running the CTS against Tuscany in Eclipse

Within the Tuscany svn repository there are two distinct source code hierarchies related to the CTS. The first, under the directory sdo2.1 is the real community test suite, and the second, sdo2.1-tuscany is the code that Tuscany uses to exercise the CTS. Another SDO implementation wishing to use the CTS would need to produce code similar to the Tuscany specific code to run the CTS tests against itself. It is important to maintain the separation of these two source hierarchies, so that no Tuscany code leaks into the generic CTS code, otherwise other SDO implementations would see compile failures in the core CTS because of the absence of the Tuscany code from their environment.

If you are running and perhaps modifying the CTS in Eclipse then you can get help from Eclipse to ensure that this separation is maintained by setting up two Eclipse projects. By ensuring that there is a one way dependency of the Tuscany specific eclipse project on the CTS generic Eclipse project you will benefit from Eclipse signalling compile failures when an attempt is made to create an inappropriate dependency.

  • In a command window in the root folder, issue the command "mvn" to compile the CTS artifacts and install them into your local maven repository
  • Change directory to the sdo2.1 directory and issue the command "mvn eclipse:eclipse"
  • Change directory to the sdo2.1-tuscany directory and issue the command "mvn eclipse:eclipse"
  • Open eclipse and import the two projects into your existing workspace
    • Switch to the Java perspective
    • Execute "File => Import ... => General => Existing project into workspace
    • Click "Browse ..." Navigate to the CTS/sdo2.1 directory and click OK
    • Select the sdo2.1-cts project and click OK
  • After Eclipse has built the project you may see that there are compile errors. This is because Maven has created build dependencies for the project on the contents of your maven repository, but Eclipse doesn't yet know where that repository is. If you see this, you must create and assign a value to the M2_REPO variable within eclipse to resolve these dependencies
    • Right click in the Package Explorer frame on the root of the newly created project and select Properties => Java Build Path
    • Click on the "Libraries" tab and select "Add Variable...", "Configure Variables ...", "New ..."
    • Set Name to M2_REPO and Click on "Folder..."
    • Navigate to the "repository" folder/directory (on Windows this is \Documents and Settings\<user>\.m2\repository, on Linux it is ~/.m2/repository) and click OK
    • Accept the request for doing a full rebuild
    • Cancel away from the "Configure Variables" dialog
    • Click "OK" on the Project Properties Window
    • When building is complete the project should now have no errors
  • Now you need to import the Tuscany specific CTS project in the same way, by navigating to the sdo2.1-tuscany folder and importing the sdo2.1-tuscany project
  • Next, add a dependency for the Tuscany specific Eclipse project on the generic CTS Eclipse project
    • Right click on the sdo2.1-tuscany project in the Package Explorer frame of the Eclipse Java perspective, and select "Properties"
    • Click on the "Java Build Path" option, and then the "Projects" tab
    • Click "Add.." and select the sdo2.1-cts project (Note that if you are also developing the tuscany implementation then you may wish to also select your sdo implementation and api projects at this point)
    • Click OK twice, and wait for the Eclipse compilation operation to complete

Now you can edit the CTS generic code, and the Tuscany harness, and any inadvertent attempt to introduce Tuscany dependencies on the generic CTS project will result in red flags from Eclipse due to compilation failures.

To execute the two main suites of tests in the CTS against Tuscany you must run either

  • test.sdo21.vendor.tuscany.tests.AdoptedCtsTestSuite or
  • test.sdo21.vendor.tuscany.tests.OptionalCtsTestSuite
    in the Tuscany specific project.
  • No labels