Object Store
Testing And Operations
Test fakes, commands, worker setup, and operational runbooks for Vortos Object Store.
Testing And Operations
Test Driver
Use the null driver for most automated tests:
use Vortos\ObjectStore\DependencyInjection\VortosObjectStoreConfig;
return static function (VortosObjectStoreConfig $config): void {
$config->driver('null');
};The package includes Vortos\ObjectStore\Testing\ObjectStoreFake for assertions.
Commands
Object metadata:
php bin/console vortos:object-store:head assets/users/123/avatar.jpgPresign:
php bin/console vortos:object-store:presign assets/reports/report.pdf
php bin/console vortos:object-store:presign tmp/uploads/video.mp4 --upload --content-type=video/mp4 --max-size=209715200Outbox relay:
php bin/console vortos:object-store:relay
php bin/console vortos:object-store:relay --once
php bin/console vortos:object-store:relay --sleep=2Dead-letter retry:
php bin/console vortos:object-store:outbox:retry --dry-run
php bin/console vortos:object-store:outbox:retry --force
php bin/console vortos:object-store:outbox:retry --operation=put --force
php bin/console vortos:object-store:outbox:retry --id=abc-uuid --force
php bin/console vortos:object-store:outbox:retry --created-from=2026-06-01 --forceLifecycle:
php bin/console vortos:object-store:lifecycle show
php bin/console vortos:object-store:lifecycle plan
php bin/console vortos:object-store:lifecycle apply --confirmMultipart maintenance:
php bin/console vortos:object-store:multipart list --prefix=imports/
php bin/console vortos:object-store:multipart abort-stale --older-than="-24 hours" --dry-runWorker management:
php bin/console vortos:worker:list
php bin/console vortos:worker:install --worker=object-store-outbox-relayDeployment Runbook
- Deploy code.
- Run migrations.
- Verify object-store env vars and credentials.
- Run a presign smoke test.
- Run
vortos:object-store:lifecycle plan. - Apply lifecycle changes only when the plan is correct.
- Install or update supervisor worker config.
- Reload worker processes.
- Watch outbox lag, provider errors, and
tmp/object growth.
Provider Integration Tests
Do not use LocalStack as the package's source of truth. Use real R2 or S3 credentials in protected CI jobs and skip those tests when credentials are absent.
Keep provider tests explicit
Fast tests should use fakes and null/log drivers. Real provider tests should run in a separate pipeline with throwaway prefixes and cleanup.