TCK Tests

The TCK test the actual implementation of the SCM APIs by calling the provider implementations via JUnit tests.

Jazz TCK Test Setup

The Jazz TCK tests are enabled by enabling the tck-jazz profile. This can be done by mvn -Ptck-jazz ....

The Jazz TCK tests require three system properties to be defined. These properties can be defined in your local settings.xml file or from the command line, via -D. The latter option may be needed if running the TCK tests as JUnit tests from inside Eclipse.

  • tckBaseDir

    This property must be defined to define where the test snapshot is to be loaded into. Due to the sandbox in a sandbox issue, this must be outside of the existing source tree. This property will still need to be set if Eclipse is being used, and the Eclipse Workspace is a sandbox.

  • tckSnapshotName

    This is the name of an existing snapshot on the Jazz SCM server that is used to load the sandbox used to conduct that TCK tests. This snapshot needs to be created independently of these TCK tests. At the current time, creating a repository workspace with a named component (as opposed to a default one; which causes duplicates when run more than once) is not supported by the Jazz SCM CLI tool. Therefore a snapshot, with the appropriate contents, will need to be created before running these TCK tests, and its name set to the value of the tckSnapshotName property.

  • tckUrl

    This property defines the initial part of the SCM URL that points to the server used to perform the TCK tests against. For example:

      scm:jazz:Deb;Deb@https://rtc:9444/jazz:MavenSCMTCKTestWorkspace

    This is part of the usual SCM URL for Jazz. However, this value is appended with System.currentTimeMillis() as part of the repository workspace name to guarantee uniqueness. A new repostory workspace is created for each TCK test as it is being run.

    The tckSnapshotName is loaded into the tckBaseDir location from the server referenced in the tckUrl property.

Jazz creates some challenges for the existing TCK tests.

  • Jazz always has an initial baseline. This maps to a revision. SCM's such as SVN/CVS etc, around which the SCM API's and corresponding TCK tests assume that there is no initial revision.
  • Jazz has no equivalent of a SVN/CVS style add command, whereby you can add a file to a SCM, ie indicate that it is to be added, and not commit it.

Fully implemented Jazz TCK tests.

  • JazzBlameCommandTckTest
  • JazzCheckOutCommandTckTest

Functional but failing Jazz TCK tests.

  • JazzChangeLogCommandTckTest
  • JazzCheckInCommandTckTest
  • JazzDiffCommandTckTest
  • JazzStatusCommandTckTest
  • JazzTagCommandTckTest
  • JazzUpdateCommandTckTest

The underlying Jazz SCM CLI tool does have issues with adding or checking in files that are in the sandbox root. Several work items have been opened against the Jazz SCM CLI tool to address these issues. When these work items have been addressed, the Jazz SCM provider should be fully able to support the SCM API and these TCK tests.

Cleaning Up

Currently, we can not delete Jazz SCM repository objects using the Jazz SCM CLI tool. A work item has been opened to address this. When this functionality is present, then the removeRepo() method in the TCK tests can be used to perform a cleanup. Until that time, the repository workspaces that are created using these TCK tests will need to be removed using the Eclipse client that has the full functionality to do so.