Files in Project Directory

maelstrom-go-test stores a number of files in the project directory, under the .maelstrom-go-test subdirectory. This chapter lists them and explains what they're for.

It is safe to remove this directory whenever maelstrom-go-test isn't running.

Except in the case of the local worker, maelstrom-go-test doesn't currently make any effort to clean up these files. However, the total space consumed by these files should be pretty small.

maelstrom-go-test also uses the container-images cache. That cache is not stored in the target directory, as it can be shared by different Maelstrom clients.

Local Worker

The local worker stores its cache in .maelstrom-go-test/cache/local-worker/ in the project directory. The cache-size configuration value indicates the target size of this cache directory.

Manifest Files

maelstrom-go-test uses "manifest files" for non-tar layers. These are like tar files, but without the actual data contents. These files are stored in .maelstrom-go-test/cache/manifests/ in the project directory.

File Digests

Files uploaded to the broker are identified by a hash of their file contents. Calculating these hashes can be time consuming so maelstrom-go-test caches this information. This cache is stored in .maelstrom-go-test/cache/cached-digests.toml in the project directory.

Client Log File

The local client process — the one that maelstrom-go-test talks to, and that contains the local worker — has a log file that is stored at .maelstrom-go-test/state/client-process.log in the project directory.

Test Listing

When maelstrom-go-test finishes, it updates a list of all of the tests in the workspace, and how long they took to run. This is used to predict the number of tests that will be run in subsequent invocations, as well as how long they will take. This is stored in the .maelstrom-go-test/state/test-listing.toml file in the project directory.

Test Binaries

maelstrom-go-test builds go binaries and puts them in .maelstrom-go-test/cache/test-binaries. These need to exist here so we can either run them or upload them. They are organized in a directory structure that mirrors your project directory.