blob: dac7e2e9eb3e259b02e62807b968e48ea894e910 [file] [log] [blame] [view]
A test helper that manages memory-backed blobfs instances.
## Usage
As this test helper is intended to be included within a test package, all tests
utilizing this helper will need a few extra blobs included in their test
package, access to some non-standard sandbox features, and an injected isolated
devmgr component.
### BUILD.gn
Include the following template in all BUILD.gn files containing test packages
that utilize this crate.
```
# Include blobfs in the build, which comes from Zircon
generate_manifest("blobfs.manifest") {
visibility = [ ":*" ]
args = []
foreach(pattern, [ "bin/blobfs" ]) {
args += [ "--binary=" + pattern ]
}
}
blobfs_manifest_outputs = get_target_outputs(":blobfs.manifest")
blobfs_manifest = blobfs_manifest_outputs[0]
```
In each `test_package` that utilizes this crate, add a dependency on the
manifest and add it to the extra set of manifests to include in the package. Add
the `blobfs-corrupt` binary if tests will want to corrupt blobs.
```
test_package("example-test-package") {
extra = [ blobfs_manifest ]
deps = [
":blobfs.manifest",
"//src/storage/blobfs-corrupt",
...
]
binaries = [
{
name = "blobfs-corrupt"
},
...
...
}
```
For the `tests` group, ensure the isolated devmgr package is included in the
build:
```
group("tests") {
testonly = true
public_deps = [
":example-test-package",
"//src/lib/storage/ramdevice_client:ramdisk-isolated-devmgr",
...
]
}
```
### Component Manifest
In the component manifest tests that utilize this crate, add the isolated devmgr
service and access to the "fuchsia.process.Launcher" service:
```json
{
"facets": {
"fuchsia.test": {
"injected-services": {
"fuchsia.test.IsolatedDevmgr": "fuchsia-pkg://fuchsia.com/ramdisk-isolated-devmgr#meta/ramdisk-isolated-devmgr.cmx"
}
}
},
"sandbox": {
"services": [
"fuchsia.process.Launcher",
"fuchsia.test.IsolatedDevmgr"
]
}
}
```