blob: a12ad96b80ce9150d8153464f5ceaa9d225dcf0c [file] [log] [blame] [view]
# Test data for zxdb
This is used for the symbol parsing tests.
There are two flavors of tests. Some build the symbol test and run on that, expecting to find
certain symbol patterns.
Tests that rely heaving on the binary layout use the checked-in version to avoid compiler and
platform variations.
## To generate the binaries
* On x64 copy the generated `libzxdb_symbol_test.so` that includes symbols to
`libsymbol_test_so.targetso`. As of this writing, the compiled file will be something
like: `$FUCHSIA_OUT_DIR/arm64-shared/lib.unstripped/libzxdb_symbol_test.so`
* Copy the stripped version from `$FUCHSIA_OUT_DIR/arm64-shared/libzxdb_symbol_test.so` to
`libsymbol_test_so_stripped.targetso`
# Rust symbol data
Rust specific symbols are too large to check into the git tree, so they are uploaded to cipd. These
will be downloaded with the default Fuchsia jiri configuration, unlike the large tests below.
# Large tests
There are some additional binaries that are too large to include with every checkout. These are
used by the `zxdb_large_tests` target and appear in `//prebuilt/test_data/debug/large_test_data`.
To make these work you need to download them and enable the target that requires them.
### Downloading the large test data
This package is Google-internal-only so we have the option to add different binaries regardless of
licences or whether they're unreleased. To opt-in to downloading these binaries:
```
jiri init -fetch-optional=zxdb-large-test-data
jiri update
```
If that doesn't work, it's possible you need the internal version of the integration repository
checked out. See the Google-internal checkout instructions for how to do this.
### Enabling the zxdb large tests
There is a GN build flag `include_zxdb_large_tests` which defaults to `false`. This controls whether
the target `out/<arch>/host_x64/zxdb_large_tests` are compiled. To set this to true, run this,
substituting `<arch>` with your build directory:
```
fx gn args out/<arch>
```
and add a line to the bottom of the file:
```
include_zxdb_large_tests = true
```
## Adding to the large test data
The file `large_test_data.yaml` in this directory is the CIPD specification for the package. To add
files, add them to `//prebuilt/test_data/debug/large_test_data` alongside the existing ones. Add
the file names to the .yaml file. _Be sure to add licenses and READMEs for each file added,
including whether it needs to be internal-only or not._
Each package is identified by a version tag. This tag will be used later to specify which package
to fetch. We use the tag name `git_revision:...` where "..." is the git hash of the current
tip-of-tree. This way it's always unique (otherwise the tags are basically free-form).
Copy `large_test_data.yaml` from this directory to `//prebuilt/test_data/debug/large_test_data`
since CIPD wants everything to be in the same directory while it's working. Be sure to check in the
final version to this directory so it's always current.
The atomic way to make a package and upload with a version tag is (don't forget to replace the git
hash!)
```
cipd pkg-build -pkg-def large_test_data.yaml -out large_test_data.cipd
cipd pkg-register -tag git_revision:GIT_HASH_GOES_HERE large_test_data.cipd
```
The other way to do this is make and upload a package and set the version tag later. To build and
upload:
```
cipd create -pkg-def large_test_data.yaml
```
To list the instances of this package once uploaded:
```
cipd instances fuchsia_internal/test_data/debug/large_test_data
```
To see the version tag, specify the "instance ID" from the above list:
```
cipd describe fuchsia_internal/test_data/debug/large_test_data -version FZIh6hPkZOZa7vbUXjLjUnfzu3tYxnZ-NRHLyf2HnrMC
```
To explicitly set a version tag for an instance:
```
cipd set-tag fuchsia_internal/test_data/debug/large_test_data -version FZIh6hPkZOZa7vbUXjLjUnfzu3tYxnZ-NRHLyf2HnrMC -tag git_revision:fa316074ae0f53a2562c76cb4637b6f2892b02f7
```
## Adding to or updating rust test data
Adding files or updating the binaries contained in the rust directory is exactly the same as for the
large test data described above, except use the `rust_test_data.yaml` file instead. New executables
can be added to the CIPD package with additional rust targets in the rust directory, make sure to
update the `dep` in the `rust_symbols` target.
If a binary in this package needs to be updated, you'll need to uncomment the dep in the
`rust_symbols` target in `//src/developer/debug/zxdb/symbols/BUILD.gn`.
## Fetch configuration
To cause the package to be downloaded, there is an entry in
`//manifests/prebuilts`. Substitute the tag you specified for the CIPD package
in the "version" field in that file.
Don't forget to run `//manifests/update-lockfiles.sh` after making changes to `prebuilts`!
Note that the "attributes" attribute specified that this package won't be downloaded unless the user
opts-in as described earlier.
To test that the updated manifest works:
```
jiri fetch-packages -local-manifest-project=fuchsia
```