blob: eb8aaadf0d75a45ddae99ba26ba8430c6de91b25 [file] [log] [blame]
{
"$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"
}