Files
open-cmis-tck/docs/LOCAL-TCK-RUNTIME.md
2026-05-08 00:02:20 +02:00

149 lines
4.0 KiB
Markdown

# Local OpenCMIS TCK Runtime
Status: draft
Created: 2026-05-07
## Purpose
This document describes the local runtime needed to actually run Apache
Chemistry OpenCMIS TCK checks from the `open-cmis-tck` guide-board extension.
The TCK is an open source Java toolkit. It is not vendored into this repository.
The extension provides a pinned Maven runtime descriptor and adapter commands
that resolve and run the TCK locally.
## Runtime Pin
The first local runtime uses:
- Maven coordinate:
`org.apache.chemistry.opencmis:chemistry-opencmis-test-tck:1.1.0`
- License: Apache License 2.0
- Runner class:
`org.apache.chemistry.opencmis.tck.runner.ConsoleRunner`
- Runner contract: session-parameters file plus group-list file
The Apache Chemistry project is retired, so this extension pins the 1.1.0 Maven
artifact and records the retirement boundary in runtime summaries.
Sources:
- https://repo1.maven.org/maven2/org/apache/chemistry/opencmis/chemistry-opencmis-test-tck/1.1.0/
- https://chemistry.apache.org/java/javadoc/org/apache/chemistry/opencmis/tck/runner/ConsoleRunner.html
- https://chemistry.apache.org/java/javadoc/org/apache/chemistry/opencmis/commons/SessionParameter.html
## Bootstrap
From this repository:
```sh
PYTHONPATH=src python3 scripts/bootstrap_opencmis_tck.py
```
This checks Java, Maven, and the local runtime descriptor. It writes:
```text
.local/opencmis-tck/runtime-summary.json
```
To resolve/cache Maven dependencies, run:
```sh
PYTHONPATH=src python3 scripts/bootstrap_opencmis_tck.py --resolve
```
The `--resolve` step downloads Maven dependencies into the user's Maven cache.
It does not commit artifacts into this repository.
## Current Local Prerequisites
The local runner expects:
- `java` on `PATH`
- `mvn` on `PATH`
- network access or an already-populated Maven cache for the first
`--resolve`
On Ubuntu/WSL, a typical prerequisite install is:
```sh
sudo apt-get update
sudo apt-get install -y openjdk-17-jdk maven
```
Use an already managed Java/Maven installation instead if this workstation has
one outside WSL.
## Guide-Board Invocation
The baseline assessment profile now points the OpenCMIS wrapper at:
```text
adapters/opencmis_console_adapter.py
```
The adapter generates:
- `session.properties.redacted`
- `groups.txt`
- `console-runner-invocation.json`
- `console-runner-stdout.txt`
- `console-runner-stderr.txt`
and invokes Maven's `exec:java` goal against:
```text
runtime/opencmis-tck/pom.xml
```
That Maven descriptor pulls the OpenCMIS TCK artifact and runs
`ConsoleRunner`.
## Session Parameters
For Browser Binding runs, the adapter writes OpenCMIS session parameters such
as:
```properties
org.apache.chemistry.opencmis.binding.spi.type=browser
org.apache.chemistry.opencmis.binding.browser.url=<browser-url>
org.apache.chemistry.opencmis.session.repository.id=<repository-id>
org.apache.chemistry.opencmis.binding.browser.succinct=true
org.apache.chemistry.opencmis.binding.compression=true
org.apache.chemistry.opencmis.binding.cookies=true
```
User and password fields are written only when explicitly supplied. Secret
values are written to a private session file for the ConsoleRunner process and
removed after use; guide-board retains only `session.properties.redacted`.
Credential references come from the target profile:
```text
credentials_ref: null
credentials_ref: env:CMIS_TCK_USER,CMIS_TCK_PASSWORD
credentials_ref: file:/absolute/path/to/cmis-tck-credentials.json
```
For an authenticated local run:
```sh
export CMIS_TCK_USER='alice'
export CMIS_TCK_PASSWORD='local-secret'
```
## Check Group Mapping
The first adapter maps guide-board check groups to OpenCMIS TCK group classes:
- `repository-type`: `BasicsTestGroup`, `TypesTestGroup`
- `object-content`: `CRUDTestGroup`
- `navigation`: `FilingTestGroup`
- `query-acl-versioning`: `QueryTestGroup`, `ControlTestGroup`,
`VersioningTestGroup`
- `relationships`: `CRUDTestGroup`
- `change-log`: `ControlTestGroup`
- `extension-gaps`: no executable group yet; treated as known-gap review
This mapping should be refined after the first live pilot output is reviewed.