generated from coulomb/repo-seed
167 lines
4.7 KiB
Markdown
167 lines
4.7 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.
|
|
|
|
When sudo is not available, use the local toolchain installer:
|
|
|
|
```sh
|
|
python3 scripts/install_local_toolchain.py
|
|
source .local/toolchains/env.sh
|
|
```
|
|
|
|
This keeps the JDK and Maven under `.local/toolchains`, which is ignored by git.
|
|
It is intended as a workstation bootstrap convenience, not as a committed
|
|
runtime artifact.
|
|
|
|
## Guide-Board Invocation
|
|
|
|
For the full local sequence, see `docs/LOCAL-RUNBOOK.md`.
|
|
|
|
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`.
|
|
|
|
The adapter normalizes the native `ConsoleRunner` text report into guide-board
|
|
case evidence. The retained raw stdout/stderr files remain the audit trail; the
|
|
normalized result records OpenCMIS result statuses, test names, messages,
|
|
source locations where present, and per-status counts.
|
|
|
|
## 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.
|