mirror of
https://github.com/neondatabase/neon.git
synced 2026-01-08 05:52:55 +00:00
Part of #5771 Extracted from https://github.com/neondatabase/neon/pull/6214 This PR makes the test suite sensitive to the new env var `NEON_ENV_BUILDER_FROM_REPO_DIR_USE_OVERLAYFS`. If it is set, `NeonEnvBuilder.from_repo_dir` uses overlayfs to duplicate the the snapshot repo dir contents. Since mounting requires root privileges, we use sudo to perform the mounts. That, and macOS support, is also why copytree remains the default. If we ever run on a filesystem with copy reflink support, we should consider that as an alternative. This PR can be tried on a Linux machine on the `test_backward_compatiblity` test, which uses `from_repo_dir`.
17 lines
468 B
Python
17 lines
468 B
Python
from pathlib import Path
|
|
from typing import Iterator
|
|
|
|
import psutil
|
|
|
|
|
|
def iter_mounts_beneath(topdir: Path) -> Iterator[Path]:
|
|
"""
|
|
Iterate over the overlayfs mounts beneath the specififed `topdir`.
|
|
The `topdir` itself isn't considered.
|
|
"""
|
|
for part in psutil.disk_partitions(all=True):
|
|
if part.fstype == "overlay":
|
|
mountpoint = Path(part.mountpoint)
|
|
if topdir in mountpoint.parents:
|
|
yield mountpoint
|