danielcweeks commented on code in PR #10908:
URL: https://github.com/apache/iceberg/pull/10908#discussion_r1733196751


##########
open-api/README.md:
##########
@@ -40,3 +40,66 @@ make generate
 ```
 
 The generated code is not being used in the project, but helps to see what the 
changes in the open-API definition are in the generated code.
+
+# REST Compatibility Kit (RCK)
+
+The REST Compatibility Kit (RCK) is a Technology Compatibility Kit (TCK) 
implementation for the 
+Iceberg REST Specification.  This includes a series of tests based on the Java 
reference
+implementation of the REST Catalog that can be executed against any REST 
server that implements the
+spec.
+
+## Test Configuration
+
+The RCK can be configured using either environment variables or java system 
properties and allows
+for configuring both the tests and the REST client.  Environment variables 
prefixed by `CATALOG_`
+are passed through the catalog configuring with the following mutations:
+
+1. The `CATALOG_` prefix is stripped from the key name
+2. Single underscore (`_`) is replaced with a dot (`.`)
+3. Double underscore (`__`) is replaced with a dash (`-`)
+4. The key names are converted to lowercase
+
+A basic environment configuration would look like the following:
+
+```shell
+CATALOG_URI=https://my_rest_server.io/                    ## -> 
uri=https://my_rest_server.io/
+CATALOG_WAREHOUSE=test_warehouse                          ## -> 
warehouse=test_warehouse
+CATALOG_IO__IMPL=org.apache.iceberg.aws.s3.S3FileIO       ## -> 
io-impl=org.apache.iceberg.aws.s3.S3FileIO
+CATALOG_CREDENTIAL=<oauth_key>:<oauth_secret>             ## -> 
credential=<oauth_key>:<oauth_secret>
+```
+
+Java properties passed to the test must be prefixed with `rck.`, which can be 
used to configure some
+test configurations described below and any catalog client properties.
+
+An example of the same configuration using java system properties would look 
like the following:
+```shell
+rck.uri=https://my_rest_server.io/                    ## -> 
uri=https://my_rest_server.io/
+rck.warehouse=test_warehouse                          ## -> 
warehouse=test_warehouse
+rck.io-impl=org.apache.iceberg.aws.s3.S3FileIO        ## -> 
io-impl=org.apache.iceberg.aws.s3.S3FileIO
+rck.credential=<oauth_key>:<oauth_secret>             ## -> 
credential=<oauth_key>:<oauth_secret>
+```
+
+Some test behaviors are configurable depending on the catalog implementations. 
 Not all behaviors
+are strictly defined by the REST Specification.  The following are currently 
configurable:
+
+| config                        | default |
+|-------------------------------|---------|
+| rck.requires-namespace-create | true    |
+| rck.supports-serverside-retry | true    |
+
+
+## Running Compatibility Tests
+
+The compatibility tests can be invoked via gradle with the following:
+
+Note:  The default behavior is to run a local http server with a jdbc backend 
for testing purposes,
+so `-Drck.local=false` must be set to point to an external REST server.
+
+```shell
+./gradlew :iceberg-open-api:test --tests RESTCompatibilityKitSuite \

Review Comment:
   I'm not sure I fully follow, but I would think the RCK is run __against__ a 
downstream catalog project, not necessarily _in_ one.  I suppose you could 
subclass this suite and include that as part of the tests, but I think that 
probably is a better follow up once someone has a reference example integrated 
that we can use to validate an approach.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@iceberg.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@iceberg.apache.org
For additional commands, e-mail: issues-h...@iceberg.apache.org

Reply via email to