Testing Your Model

Before publishing, you can validate that your model container correctly handles its inputs and produces output. The pd4castr CLI provides two commands for local testing: pd4castr fetch to pull live data from configured data fetchers, and pd4castr test to build and run your model locally.

Fetching Test Data

The pd4castr fetch command pulls live data from your configured data fetchers into the local test_input/ directory. It fetches an input with its own fetcher block and skips static inputs.

An input that declares sources fetches only its default source, and only when that source is a fetcher: the CLI writes its output to test_input/<key>.<targetFileFormat> and lists every other fetcher source it skips. A default source that’s a file isn’t fetched.

You must be authenticated before running this command. Run pd4castr login first if you haven’t already.

pd4castr fetch

Fetch Command Flags

The following flags are available for the pd4castr fetch command:

FlagDefaultDescription
-c, --config.pd4castrrc.jsonPath to the config file.

The command writes fetched data to the test_input/ directory.

Local Testing

The pd4castr test command validates that your model Docker container correctly fetches its inputs and uploads its output. It simulates the platform’s IO contract locally so you can catch issues before publishing.

pd4castr test

What the Test Command Does

The test command runs through these steps:

  1. Validates your .pd4castrrc.json configuration.
  2. Checks that all expected input files exist. For an input that declares sources, the CLI checks every file source at its configured path relative to the project root. The test runs on the default source: its configured file or data fetched into the input directory. The default source can’t need format conversion.
  3. Builds your model’s Docker image.
  4. Runs your model’s container with the input files in the input directory.
  5. Reports pass or fail for each input fetch and the output upload.
  6. On success, saves the captured output to the test_output/ directory.

pd4castr publish runs this same validation before its own I/O test, so these rules apply at publish time too.

Test Command Flags

The following flags are available for the pd4castr test command:

FlagDefaultDescription
-c, --config.pd4castrrc.jsonPath to the config file.
-p, --port9800Port for the local testing server.

Model Container IO Contract

Your model container must fulfil a specific IO contract for the test (and production runs) to pass.

The container must:

  • Fetch each input from its INPUT_<KEY>_URL environment variable using an HTTP GET request.
  • Upload the output to the OUTPUT_URL environment variable using an HTTP PUT request.

The test passes only if all inputs are fetched and the output is uploaded. If any input is missed or the output isn’t uploaded, the test fails.

Typical Workflow

Here’s the recommended sequence of commands when developing and testing your model:

pd4castr fetch          # Pull latest data from configured fetchers
pd4castr test           # Build and validate locally
# Iterate on model code...
pd4castr test           # Re-test after changes
pd4castr publish        # Ship it when the tests pass

Next Steps

  • See Model inputs for details on configuring fetchers and static inputs.
  • When your tests pass, move on to Publishing to ship your model.