| { |
| "$id": "https://fuchsia.dev/schema/src/storage/fs_test/fs_test.schema.json", |
| "$schema": "https://json-schema.org/draft-2020-12/schema", |
| "description": "Configuration for running a suite of filesystem tests", |
| "oneOf": [ |
| { |
| "required": [ |
| "binary_path", |
| "name", |
| "timestamp_granularity" |
| ] |
| }, |
| { |
| "required": [ |
| "disk_format", |
| "name", |
| "timestamp_granularity" |
| ] |
| }, |
| { |
| "required": [ |
| "library", |
| "name" |
| ] |
| } |
| ], |
| "properties": { |
| "binary_path": { |
| "description": "Path to the filesystem binary", |
| "type": "string" |
| }, |
| "disk_format": { |
| "description": "The format known to fs-management", |
| "type": "integer" |
| }, |
| "uses_crypt": { |
| "description": "True if the filesystem uses a crypt service", |
| "type": "boolean" |
| }, |
| "has_directory_size_limit": { |
| "default": false, |
| "description": "True if the filesystem has a directory size limit (unrelated to available disk space)", |
| "type": "boolean" |
| }, |
| "in_memory": { |
| "default": false, |
| "description": "True if the filesystem is an in-memory filesystem", |
| "type": "boolean" |
| }, |
| "is_case_sensitive": { |
| "default": true, |
| "description": "True if the filesystem is case sensitive", |
| "type": "boolean" |
| }, |
| "is_component": { |
| "default": false, |
| "description": "True if the filesystem runs as a component", |
| "type": "boolean" |
| }, |
| "is_journaled": { |
| "default": true, |
| "description": "True if the filesystem implements journaling and can recover from sudden failure", |
| "type": "boolean" |
| }, |
| "is_slow": { |
| "default": false, |
| "description": "True if the filesystem is a slow filesystem, in which case some tests are tweaked so they can complete on time", |
| "type": "boolean" |
| }, |
| "library": { |
| "description": "Dynamic library that contains the filesystem definition; see memfs for an example", |
| "type": "string" |
| }, |
| "max_file_size": { |
| "description": "The maximum file size supported", |
| "exclusiveMinimum": 0, |
| "maximum": 9223372036854775807, |
| "type": "integer" |
| }, |
| "max_block_size": { |
| "description": "The maximum block size the filesystem can support", |
| "maximum": 9223372036854775807, |
| "type": "integer" |
| }, |
| "name": { |
| "description": "Name of the filesystem", |
| "minLength": 1, |
| "type": "string" |
| }, |
| "options": { |
| "description": "A list of test options to be applied to the filesystem", |
| "items": { |
| "properties": { |
| "description": { |
| "description": "Name given to this set of options", |
| "type": "string" |
| }, |
| "device_block_count": { |
| "default": 196608, |
| "description": "device_block_count", |
| "type": "integer" |
| }, |
| "device_block_size": { |
| "default": 512, |
| "description": "device_block_size", |
| "type": "integer" |
| }, |
| "has_min_volume_size": { |
| "default": false, |
| "description": "True if the filesystem requires a minimum volume size, in which case its volume size is configured as device_block_size * device_block_count for all tests", |
| "type": "boolean" |
| }, |
| "use_fvm": { |
| "description": "True if FVM should be used", |
| "type": "boolean" |
| } |
| }, |
| "required": [ |
| "description", |
| "use_fvm" |
| ], |
| "type": "object" |
| }, |
| "minItems": 1, |
| "type": "array" |
| }, |
| "sectors_per_cluster": { |
| "description": "If set, the sectors_per_cluster value to use when formatting a FAT filesystem", |
| "type": "integer" |
| }, |
| "supports_fsck_after_every_transaction": { |
| "default": false, |
| "description": "True if the filesystem supports the fsck_after_every_transaction mount option", |
| "type": "boolean" |
| }, |
| "supports_hard_links": { |
| "default": false, |
| "description": "True if hard links are supported", |
| "type": "boolean" |
| }, |
| "supports_inspect": { |
| "default": false, |
| "description": "True if the filesystem exposes a standardized inspect tree", |
| "type": "boolean" |
| }, |
| "supports_mmap": { |
| "default": false, |
| "description": "True if mmap is supported", |
| "type": "boolean" |
| }, |
| "supports_mmap_shared_write": { |
| "default": false, |
| "description": "True if mmap supports PROT_WRITE + MAP_SHARED, and propagates writes from the mapped region to the underlying file (implies size changes are tracked)", |
| "type": "boolean" |
| }, |
| "supports_resize": { |
| "default": false, |
| "description": "True if the filesystem can expand in size when used within a volume manager like FVM", |
| "type": "boolean" |
| }, |
| "supports_shutdown_on_no_connections": { |
| "default": false, |
| "description": "True if the filesystem supports shutdown on no connections", |
| "type": "boolean" |
| }, |
| "supports_sparse_files": { |
| "default": true, |
| "description": "True if the filesystem supports sparse files", |
| "type": "boolean" |
| }, |
| "supports_watch_event_deleted": { |
| "default": true, |
| "description": "True if the filesystem supports the WATCH_EVENT_DELETED event", |
| "type": "boolean" |
| }, |
| "timestamp_granularity": { |
| "description": "Timestamp granularity in nanoseconds", |
| "exclusiveMinimum": 0, |
| "type": "integer" |
| } |
| }, |
| "type": "object" |
| } |