ostree/tests
Jonathan Lebon 92b1a27202 Add concept of state overlays
In the OSTree model, executables go in `/usr`, state in `/var` and
configuration in `/etc`. Software that lives in `/opt` however messes
this up because it often mixes code *and* state, making it harder to
manage.

More generally, it's sometimes useful to have the OSTree commit contain
code under a certain path, but still allow that path to be writable by
software and the sysadmin at runtime (`/usr/local` is another instance).

Add the concept of state overlays. A state overlay is an overlayfs
mount whose upper directory, which contains unmanaged state, is carried
forward on top of a lower directory, containing OSTree-managed files.

In the example of `/usr/local`, OSTree commits can ship content there,
all while allowing users to e.g. add scripts in `/usr/local/bin` when
booted into that commit.

Some reconciliation logic is executed whenever the base is updated so
that newer files in the base are never shadowed by a copied up version
in the upper directory. This matches RPM semantics when upgrading
packages whose files may have been modified.

For ease of integration, this is exposed as a systemd template unit which
any downstream distro/user can enable. The instance name is the mountpath
in escaped systemd path notation (e.g.
`ostree-state-overlay@usr-local.service`).

See discussions in https://github.com/ostreedev/ostree/issues/3113 for
more details.
2024-01-09 23:20:41 -05:00
..
coccinelle Add Coccinelle usage: one for blacklisting, one for patch collection 2017-03-30 19:19:54 +00:00
gpg-verify-data tests/gpg-verify-data: Empty out trustdb.gpg 2020-01-24 13:02:09 -07:00
gpghome tests/gpghome: Create revocation certificates for keys 2020-01-24 13:02:09 -07:00
inst tests: Use ext4, re-enable composefs test 2023-10-13 12:00:05 -04:00
kolainst Add concept of state overlays 2024-01-09 23:20:41 -05:00
.gitignore Add an API to verify a commit signature explicitly 2021-08-30 13:27:38 -04:00
admin-test.sh undeploy: Parse integer more properly 2023-11-08 16:15:01 -05:00
archive-test.sh When exporting, use hardlinks for duplicated files 2023-09-29 13:45:29 -04:00
bare-split-xattrs-basic.tar.xz tests: move fixture to fix installed tests 2022-04-12 09:53:54 +00:00
basic-test.sh tests: Fix whiteout test 2023-10-12 10:18:36 +02:00
bootloader-entries-crosscheck.py Update FSF license notices to use URL instead of address 2021-12-07 08:34:25 -05:00
coccinelle.sh Add Coccinelle usage: one for blacklisting, one for patch collection 2017-03-30 19:19:54 +00:00
corrupt-repo-ref.js Update FSF license notices to use URL instead of address 2021-12-07 08:34:25 -05:00
fah-deltadata-new.tar.xz tests: Add a "pull-test2" that uses slightly more realistic content 2017-11-01 17:38:26 +00:00
fah-deltadata-old.tar.xz tests: Add a "pull-test2" that uses slightly more realistic content 2017-11-01 17:38:26 +00:00
get-byte-order.c tests: Assert that byte-order is swapped on LE but not BE CPUs 2018-01-04 12:32:47 +00:00
glib.supp glib.supp: Suppress g_task -> thread leaks 2016-07-28 10:10:17 +00:00
grub2-entries-crosscheck.py Update FSF license notices to use URL instead of address 2021-12-07 08:34:25 -05:00
libostreetest.c tree-wide: Run clang-format 2023-05-02 08:42:19 -04:00
libostreetest.h tree-wide: Run clang-format 2023-05-02 08:42:19 -04:00
libtest-core.sh tests/kolainst: Avoid recursive symlinks 2022-01-25 16:44:39 -05:00
libtest.sh When exporting, use hardlinks for duplicated files 2023-09-29 13:45:29 -04:00
ostree-grub-generator Introducing ostree-grub-generator 2016-04-04 14:19:35 +00:00
ostree-path-traverse.tar.gz tests: Add a test case for path traversal in a dirtree 2018-01-12 19:38:34 +00:00
ostree.supp tests: Modernize valgrind infrastructure 2016-06-09 21:10:35 +00:00
pre-endian-deltas-repo-big.tar.xz deltas: Heuristically detect endianness for older deltas 2016-02-26 08:19:01 -05:00
pre-endian-deltas-repo-little.tar.xz deltas: Heuristically detect endianness for older deltas 2016-02-26 08:19:01 -05:00
pre-signed-pull-data.tar.gz tests: Add a pre-signed-pull.sh test 2020-06-11 18:56:35 +00:00
pull-test2.sh Update FSF license notices to use URL instead of address 2021-12-07 08:34:25 -05:00
pull-test.sh Update FSF license notices to use URL instead of address 2021-12-07 08:34:25 -05:00
repo-finder-mount.c tree-wide: Run clang-format 2023-05-02 08:42:19 -04:00
run-installed tests/inst: Make nondestructive tests runnable as unit tests 2021-04-15 12:33:34 -04:00
runkola Add new Rust-based tests 2020-05-27 21:59:23 +00:00
test-admin-deploy-2.sh Update FSF license notices to use URL instead of address 2021-12-07 08:34:25 -05:00
test-admin-deploy-bootid-gc.sh Update FSF license notices to use URL instead of address 2021-12-07 08:34:25 -05:00
test-admin-deploy-bootprefix.sh Add sysroot.bootprefix option 2022-08-31 16:30:31 -04:00
test-admin-deploy-clean.sh Update FSF license notices to use URL instead of address 2021-12-07 08:34:25 -05:00
test-admin-deploy-emptyetc.sh deploy: Support an empty /etc and populated /usr/etc 2023-07-29 08:47:54 -04:00
test-admin-deploy-etcmerge-cornercases.sh Update FSF license notices to use URL instead of address 2021-12-07 08:34:25 -05:00
test-admin-deploy-grub2.sh Update FSF license notices to use URL instead of address 2021-12-07 08:34:25 -05:00
test-admin-deploy-karg.sh karg-delete: support multiple times 2023-10-17 20:22:08 +08:00
test-admin-deploy-nomerge.sh Update FSF license notices to use URL instead of address 2021-12-07 08:34:25 -05:00
test-admin-deploy-none.sh Update FSF license notices to use URL instead of address 2021-12-07 08:34:25 -05:00
test-admin-deploy-switch.sh Update FSF license notices to use URL instead of address 2021-12-07 08:34:25 -05:00
test-admin-deploy-syslinux.sh Update FSF license notices to use URL instead of address 2021-12-07 08:34:25 -05:00
test-admin-deploy-uboot.sh Update FSF license notices to use URL instead of address 2021-12-07 08:34:25 -05:00
test-admin-deploy-whiteouts.sh Support overlayfs whiteouts on checkout 2022-09-28 12:26:31 +02:00
test-admin-gpg.sh tests: Rework detection of trivial-httpd 2023-09-19 16:52:13 -04:00
test-admin-instutil-set-kargs.sh Update FSF license notices to use URL instead of address 2021-12-07 08:34:25 -05:00
test-admin-kargs.sh RFE: Add a hidden option to ostree admin kargs edit-in-place to 2022-06-23 22:31:39 +08:00
test-admin-locking.sh Update FSF license notices to use URL instead of address 2021-12-07 08:34:25 -05:00
test-admin-pull-deploy-commit.sh Update FSF license notices to use URL instead of address 2021-12-07 08:34:25 -05:00
test-admin-pull-deploy-split.sh Update FSF license notices to use URL instead of address 2021-12-07 08:34:25 -05:00
test-admin-upgrade-endoflife.sh Update FSF license notices to use URL instead of address 2021-12-07 08:34:25 -05:00
test-admin-upgrade-not-backwards.sh Update FSF license notices to use URL instead of address 2021-12-07 08:34:25 -05:00
test-admin-upgrade-systemd-update.sh Update FSF license notices to use URL instead of address 2021-12-07 08:34:25 -05:00
test-admin-upgrade-unconfigured.sh Update FSF license notices to use URL instead of address 2021-12-07 08:34:25 -05:00
test-archivez.sh Update FSF license notices to use URL instead of address 2021-12-07 08:34:25 -05:00
test-auto-summary.sh Update FSF license notices to use URL instead of address 2021-12-07 08:34:25 -05:00
test-basic-bare-split-xattrs.sh tests: Require OSTREE_TEST_SUDO to be set to use sudo 2022-11-22 10:27:28 -05:00
test-basic-c.c Use a value based on OSTREE_MAX_METADATA_SIZE 2023-05-26 12:09:13 +02:00
test-basic-root.sh Update FSF license notices to use URL instead of address 2021-12-07 08:34:25 -05:00
test-basic-user-only.sh lib/commit: reject empty metadata keys 2022-01-20 10:54:30 +00:00
test-basic-user.sh Update FSF license notices to use URL instead of address 2021-12-07 08:34:25 -05:00
test-basic.sh Update FSF license notices to use URL instead of address 2021-12-07 08:34:25 -05:00
test-bloom.c tree-wide: Run clang-format 2023-05-02 08:42:19 -04:00
test-bsdiff.c tree-wide: Run clang-format 2023-05-02 08:42:19 -04:00
test-checksum.c tree-wide: Run clang-format 2023-05-02 08:42:19 -04:00
test-cli-extensions.sh tests/test-cli-extensions: Fix with single-binary coreutils 2022-03-26 10:55:42 +01:00
test-commit-sign-sh-ext.c tree-wide: Run clang-format 2023-05-02 08:42:19 -04:00
test-commit-sign.sh tests: Rework detection of trivial-httpd 2023-09-19 16:52:13 -04:00
test-commit-timestamp.sh tests: Handle musl's ERANGE mapping 2023-01-02 10:40:17 +00:00
test-composefs.sh When exporting, use hardlinks for duplicated files 2023-09-29 13:45:29 -04:00
test-concurrency.py test-concurrency: Don't lower timeout 2023-06-13 16:17:16 -04:00
test-config.sh Update FSF license notices to use URL instead of address 2021-12-07 08:34:25 -05:00
test-core.js Update FSF license notices to use URL instead of address 2021-12-07 08:34:25 -05:00
test-corruption.sh Update FSF license notices to use URL instead of address 2021-12-07 08:34:25 -05:00
test-create-usb.sh Update FSF license notices to use URL instead of address 2021-12-07 08:34:25 -05:00
test-delta-ed25519.sh tests: Remove dead references to "SEED" 2023-07-18 07:55:14 -04:00
test-delta-sign.sh Update FSF license notices to use URL instead of address 2021-12-07 08:34:25 -05:00
test-delta.sh lib/pull: Don't scan commit objects we fetch via deltas 2023-09-08 17:49:25 -04:00
test-demo-buildsystem.sh Update FSF license notices to use URL instead of address 2021-12-07 08:34:25 -05:00
test-export.sh When exporting, use hardlinks for duplicated files 2023-09-29 13:45:29 -04:00
test-find-remotes.sh Update FSF license notices to use URL instead of address 2021-12-07 08:34:25 -05:00
test-fsck-collections.sh Update FSF license notices to use URL instead of address 2021-12-07 08:34:25 -05:00
test-fsck-delete.sh Update FSF license notices to use URL instead of address 2021-12-07 08:34:25 -05:00
test-gpg-signed-commit.sh Update FSF license notices to use URL instead of address 2021-12-07 08:34:25 -05:00
test-gpg-verify-result.c tree-wide: Run clang-format 2023-05-02 08:42:19 -04:00
test-help.sh Update FSF license notices to use URL instead of address 2021-12-07 08:34:25 -05:00
test-include-ostree-h.c tree-wide: Run clang-format 2023-05-02 08:42:19 -04:00
test-init-collections.sh Update FSF license notices to use URL instead of address 2021-12-07 08:34:25 -05:00
test-kargs.c kernel-args: Move private functions out of public header 2023-07-23 13:22:14 -04:00
test-keyfile-utils.c tree-wide: Run clang-format 2023-05-02 08:42:19 -04:00
test-libarchive-import.c tree-wide: Run clang-format 2023-05-02 08:42:19 -04:00
test-libarchive.sh Update FSF license notices to use URL instead of address 2021-12-07 08:34:25 -05:00
test-local-pull-depth.sh Update FSF license notices to use URL instead of address 2021-12-07 08:34:25 -05:00
test-local-pull.sh Update FSF license notices to use URL instead of address 2021-12-07 08:34:25 -05:00
test-lzma.c tree-wide: Run clang-format 2023-05-02 08:42:19 -04:00
test-mock-gio.c tree-wide: Run clang-format 2023-05-02 08:42:19 -04:00
test-mock-gio.h tree-wide: Run clang-format 2023-05-02 08:42:19 -04:00
test-mutable-tree.c tree-wide: Run clang-format 2023-05-02 08:42:19 -04:00
test-no-initramfs.sh *: rename master to main in tests & examples 2021-05-07 16:55:03 +02:00
test-oldstyle-partial.sh Update FSF license notices to use URL instead of address 2021-12-07 08:34:25 -05:00
test-osupdate-dtb.sh Update FSF license notices to use URL instead of address 2021-12-07 08:34:25 -05:00
test-ot-opt-utils.c tree-wide: Run clang-format 2023-05-02 08:42:19 -04:00
test-ot-tool-util.c tree-wide: Run clang-format 2023-05-02 08:42:19 -04:00
test-ot-unix-utils.c tree-wide: Run clang-format 2023-05-02 08:42:19 -04:00
test-otcore.c switchroot: Lower config parser to otcore, add unit tests 2023-08-25 15:59:34 -04:00
test-parent.sh Update FSF license notices to use URL instead of address 2021-12-07 08:34:25 -05:00
test-pre-signed-pull.sh Update FSF license notices to use URL instead of address 2021-12-07 08:34:25 -05:00
test-prune-collections.sh Update FSF license notices to use URL instead of address 2021-12-07 08:34:25 -05:00
test-prune.sh ostree/prune: Calculate reachability under exclusive lock 2023-01-30 15:08:27 -05:00
test-pull2-bareuseronly.sh Update FSF license notices to use URL instead of address 2021-12-07 08:34:25 -05:00
test-pull-bare.sh Update FSF license notices to use URL instead of address 2021-12-07 08:34:25 -05:00
test-pull-bareuser.sh Update FSF license notices to use URL instead of address 2021-12-07 08:34:25 -05:00
test-pull-bareuseronly.sh Update FSF license notices to use URL instead of address 2021-12-07 08:34:25 -05:00
test-pull-basicauth.sh Update FSF license notices to use URL instead of address 2021-12-07 08:34:25 -05:00
test-pull-c.c tree-wide: Run clang-format 2023-05-02 08:42:19 -04:00
test-pull-collections.sh Update FSF license notices to use URL instead of address 2021-12-07 08:34:25 -05:00
test-pull-commit-only.sh Update FSF license notices to use URL instead of address 2021-12-07 08:34:25 -05:00
test-pull-contenturl.sh tests: Rework detection of trivial-httpd 2023-09-19 16:52:13 -04:00
test-pull-corruption.sh Update FSF license notices to use URL instead of address 2021-12-07 08:34:25 -05:00
test-pull-depth.sh Update FSF license notices to use URL instead of address 2021-12-07 08:34:25 -05:00
test-pull-large-metadata.sh Update big metadata size in test-pull-large-metadata 2023-06-13 15:46:56 +02:00
test-pull-localcache.sh lib/pull: Fix miscounting of missing metadata 2023-09-08 17:49:25 -04:00
test-pull-metalink.sh tests: Rework detection of trivial-httpd 2023-09-19 16:52:13 -04:00
test-pull-mirror-summary.sh Update FSF license notices to use URL instead of address 2021-12-07 08:34:25 -05:00
test-pull-mirrorlist.sh tests: Rework detection of trivial-httpd 2023-09-19 16:52:13 -04:00
test-pull-override-url.sh tests: Rework detection of trivial-httpd 2023-09-19 16:52:13 -04:00
test-pull-repeated.sh Add tests for cases under random 500s 2022-11-09 11:20:10 +01:00
test-pull-resume.sh Update FSF license notices to use URL instead of address 2021-12-07 08:34:25 -05:00
test-pull-sizes.sh Update FSF license notices to use URL instead of address 2021-12-07 08:34:25 -05:00
test-pull-subpath.sh Update FSF license notices to use URL instead of address 2021-12-07 08:34:25 -05:00
test-pull-summary-caching.sh Update FSF license notices to use URL instead of address 2021-12-07 08:34:25 -05:00
test-pull-summary-sigs.sh bin/remote-summary: Add options to show metadata 2023-02-07 22:59:30 -07:00
test-pull-untrusted.sh Update FSF license notices to use URL instead of address 2021-12-07 08:34:25 -05:00
test-refs-collections.sh Update FSF license notices to use URL instead of address 2021-12-07 08:34:25 -05:00
test-refs.sh bin/refs: Add option to print revisions 2023-02-07 22:59:30 -07:00
test-remote-add-collections.sh Update FSF license notices to use URL instead of address 2021-12-07 08:34:25 -05:00
test-remote-add.sh Update FSF license notices to use URL instead of address 2021-12-07 08:34:25 -05:00
test-remote-cookies.sh Update FSF license notices to use URL instead of address 2021-12-07 08:34:25 -05:00
test-remote-gpg-import.sh Update FSF license notices to use URL instead of address 2021-12-07 08:34:25 -05:00
test-remote-gpg-list-keys.sh Update FSF license notices to use URL instead of address 2021-12-07 08:34:25 -05:00
test-remote-headers.sh Update FSF license notices to use URL instead of address 2021-12-07 08:34:25 -05:00
test-remote-refs.sh bin/remote-refs: Add option to print revisions 2023-02-07 22:59:30 -07:00
test-remotes-config-dir.js Update FSF license notices to use URL instead of address 2021-12-07 08:34:25 -05:00
test-repo-finder-avahi.c tree-wide: Run clang-format 2023-05-02 08:42:19 -04:00
test-repo-finder-config.c tree-wide: Run clang-format 2023-05-02 08:42:19 -04:00
test-repo-finder-mount-integration.sh tests: Require OSTREE_TEST_SUDO to be set to use sudo 2022-11-22 10:27:28 -05:00
test-repo-finder-mount.c tree-wide: Run clang-format 2023-05-02 08:42:19 -04:00
test-repo.c tree-wide: Run clang-format 2023-05-02 08:42:19 -04:00
test-reset-nonlinear.sh Update FSF license notices to use URL instead of address 2021-12-07 08:34:25 -05:00
test-rfc2616-dates.c tree-wide: Run clang-format 2023-05-02 08:42:19 -04:00
test-rofiles-fuse.sh Update FSF license notices to use URL instead of address 2021-12-07 08:34:25 -05:00
test-rollsum-cli.c tree-wide: Run clang-format 2023-05-02 08:42:19 -04:00
test-rollsum.c tree-wide: Run clang-format 2023-05-02 08:42:19 -04:00
test-signed-commit.sh tests: Remove dead references to "SEED" 2023-07-18 07:55:14 -04:00
test-signed-pull-summary.sh bin/remote-summary: Add options to show metadata 2023-02-07 22:59:30 -07:00
test-signed-pull.sh tests: Remove dead references to "SEED" 2023-07-18 07:55:14 -04:00
test-sizes.js Update FSF license notices to use URL instead of address 2021-12-07 08:34:25 -05:00
test-summary-collections.sh Update FSF license notices to use URL instead of address 2021-12-07 08:34:25 -05:00
test-summary-update.sh bin/summary: Add options to show metadata 2023-02-07 22:59:30 -07:00
test-summary-view.sh lib/repo: Add commit version metadata to summary metadata 2022-02-04 14:28:11 -07:00
test-switchroot.sh Merge pull request #1987 from akiernan/us-switchroot-tests 2020-01-16 16:47:41 +01:00
test-symbols.sh Release 2023.8 2023-12-05 13:37:04 -05:00
test-sysroot-c.c tree-wide: Run clang-format 2023-05-02 08:42:19 -04:00
test-sysroot.js Update FSF license notices to use URL instead of address 2021-12-07 08:34:25 -05:00
test-varint.c tree-wide: Run clang-format 2023-05-02 08:42:19 -04:00
test-xattrs.sh Update FSF license notices to use URL instead of address 2021-12-07 08:34:25 -05:00