Files
rsync/testsuite/fleettest.json.example
T

266 lines
9.6 KiB
JSON

{
"_comment": [
"Copy this file to testsuite/fleettest.json and edit it for the available hosts.",
"Use --fleet PATH to select another file. fleettest.json is ignored by Git.",
"",
"Required target fields are name, ssh_host, workflow and configure_flags.",
"Set ssh_host to null for a local target. workflow names a file under .github/workflows.",
"Optional fields mirror the Target dataclass defaults in fleettest.py.",
"Set profiles for targets mapped to a workflow matrix.",
"",
"nonroot reruns tests marked fleet_nonroot as the SSH user after privileged passes.",
"",
"protocols adds one pipe pass per version and uses the matching workflow policy.",
"",
"max_retry reruns a failed test alone and reports recovered tests separately.",
"",
"unsupported_extra permits capabilities missing only on one fleet host.",
"",
"Keys starting with \"_\" are comments. See testsuite/README.md."
],
"targets": [
{
"name": "freebsd",
"ssh_host": "root@freebsd",
"workflow": "freebsd-build.yml",
"make": "gmake",
"configure_flags": [
"--with-rrsync",
"--disable-zstd",
"--disable-md2man",
"--disable-xxhash",
"--disable-lz4",
"--disable-idn"
]
},
{
"name": "solaris",
"ssh_host": "root@solaris",
"workflow": "solaris-build.yml",
"make": "gmake",
"configure_flags": [
"--with-rrsync",
"--disable-zstd",
"--disable-md2man",
"--disable-xxhash",
"--disable-lz4",
"--disable-idn"
]
},
{
"_comment": "The nested OpenBSD VM excludes three rename-race tests because of a kernel lost wake-up and FFS rename-storm corruption. See dev-notes/openbsd-connect-lost-wakeup-report.txt.",
"name": "openbsd",
"ssh_host": "root@openbsd",
"workflow": "openbsd-build.yml",
"make": "gmake",
"configure_pre": "export AUTOCONF_VERSION=2.71 AUTOMAKE_VERSION=1.16;",
"max_retry": 2,
"exclude": [
"acl-symlink-race",
"sender-readlink-atfd",
"sender-remove-source-secure"
],
"configure_flags": [
"--with-rrsync",
"--disable-zstd",
"--disable-md2man",
"--disable-xxhash",
"--disable-lz4",
"--disable-idn"
]
},
{
"name": "netbsd",
"ssh_host": "root@netbsd",
"workflow": "netbsd-build.yml",
"make": "gmake",
"configure_flags": [
"--with-rrsync",
"--disable-zstd",
"--disable-md2man",
"--disable-xxhash",
"--disable-lz4",
"--disable-idn"
]
},
{
"_comment": "Ubuntu 18.04 coverage using the Ubuntu workflow because no matching hosted runner exists.",
"name": "ubuntu-1804",
"ssh_host": "root@ubuntu-1804",
"workflow": "ubuntu-build.yml",
"profiles": ["non-asan", "root", "self-peer", "linux", "no-zstd-threads"],
"_python_comment": "The stock Python 3.6 is too old for the runner. Use the installed Python 3.10.",
"python": "python3.10",
"_configure_flags_comment": "Disable zstd because 1.3.3 lacks ZSTD_minCLevel. Disable lz4 so compression-level tests use zlib.",
"configure_flags": [
"--with-rrsync",
"--disable-zstd",
"--disable-lz4"
],
"unsupported_extra": [
"protected_regular"
]
},
{
"_comment": "Ubuntu 20.04 coverage using the Ubuntu workflow because no matching hosted runner exists.",
"name": "ubuntu-2004",
"ssh_host": "root@ubuntu-2004",
"workflow": "ubuntu-build.yml",
"profiles": ["non-asan", "root", "self-peer", "linux", "no-zstd-threads"],
"configure_flags": [
"--with-rrsync"
]
},
{
"_comment": "Build unprivileged then run the main suite through sudo. Protocol 29 and 30 runs cover a kernel without xattrat.",
"name": "ubuntu-2204",
"ssh_host": "runner@ubuntu-2204",
"workflow": "ubuntu-build.yml",
"profiles": ["non-asan", "root", "self-peer", "linux", "no-zstd-threads"],
"privilege": "sudo",
"nonroot": true,
"protocols": [
30,
29
],
"configure_flags": [
"--with-rrsync"
]
},
{
"_comment": "Ubuntu 24.04 with kernel 6.8 and no xattrat support.",
"name": "ubuntu-2404",
"ssh_host": "runner@ubuntu-2404",
"workflow": "ubuntu-build.yml",
"profiles": ["non-asan", "root", "self-peer", "linux"],
"privilege": "sudo",
"nonroot": true,
"protocols": [
30,
29
],
"configure_flags": [
"--with-rrsync"
]
},
{
"_comment": "Current Ubuntu coverage with protocol 29 and 30 pipe passes.",
"name": "ubuntu-2604",
"ssh_host": "runner@ubuntu-2604",
"workflow": "ubuntu-build.yml",
"profiles": ["non-asan", "root", "self-peer", "linux"],
"privilege": "sudo",
"nonroot": true,
"protocols": [
30,
29
],
"configure_flags": [
"--with-rrsync"
]
},
{
"_comment": "AlmaLinux 8 coverage with glibc 2.28, GCC 8.5 and the Python 3.9 module. The stock Python 3.6 is unsupported.",
"name": "almalinux-8",
"ssh_host": "root@almalinux-8",
"workflow": "almalinux-8-build.yml",
"configure_flags": [
"--with-rrsync"
],
"_unsupported_extra_comment": "This VM has no second filesystem for the cross-device temporary-directory test.",
"unsupported_extra": [
"cross_device"
]
},
{
"_comment": "Add Homebrew to the non-interactive SSH path and pass its include and library directories to configure.",
"name": "mac2",
"ssh_host": "runner@mac2",
"workflow": "macos-build.yml",
"privilege": "sudo",
"env_prefix": "export PATH=/opt/homebrew/bin:/usr/local/bin:$PATH",
"configure_pre": "CPPFLAGS=\"-I$(brew --prefix)/include -I$(brew --prefix openssl)/include\"; LDFLAGS=\"-L$(brew --prefix)/lib -L$(brew --prefix openssl)/lib\"; export CPPFLAGS LDFLAGS;",
"configure_flags": [
"--with-rrsync"
],
"_xfail_comment": "Older peers handle APFS birthtime differently. Current rsync passes this test.",
"xfail": [
"crtimes"
]
},
{
"_comment": "Run scratch data on an HFS+ image. The setup verifies the mount and enables ownership so permission tests remain meaningful.",
"name": "mac2-hfs",
"ssh_host": "runner@mac2",
"workflow": "macos-build.yml",
"privilege": "sudo",
"env_prefix": "export PATH=/opt/homebrew/bin:/usr/local/bin:$PATH; if ! mount | grep -q 'on /Volumes/RsyncHFS (hfs'; then [ -f ~/hfsplus.dmg ] || hdiutil create -size 3g -fs 'HFS+' -volname RsyncHFS -quiet ~/hfsplus.dmg; hdiutil attach -quiet ~/hfsplus.dmg; fi; mount | grep -q 'on /Volumes/RsyncHFS (hfs' || { echo 'FATAL: /Volumes/RsyncHFS is not a mounted HFS+ volume' >&2; exit 9; }; sudo -n diskutil enableOwnership /Volumes/RsyncHFS >/dev/null || { echo 'FATAL: could not enable ownership on /Volumes/RsyncHFS' >&2; exit 9; }; mount | grep 'on /Volumes/RsyncHFS (hfs' | grep -q noowners && { echo 'FATAL: /Volumes/RsyncHFS still mounted noowners' >&2; exit 9; } || true",
"configure_pre": "CPPFLAGS=\"-I$(brew --prefix)/include -I$(brew --prefix openssl)/include\"; LDFLAGS=\"-L$(brew --prefix)/lib -L$(brew --prefix openssl)/lib\"; export CPPFLAGS LDFLAGS;",
"configure_flags": [
"--with-rrsync"
],
"_xfail_comment": "Same APFS birthtime caveat as mac2.",
"xfail": [
"crtimes"
],
"scratchbase": "/Volumes/RsyncHFS"
},
{
"_comment": "macOS 10.13 on x86-64 with Apple Clang 10. This target covers MD5 assembly but cannot compile the SIMD multiversioning probe.",
"name": "mac-x86",
"ssh_host": "tridge@mac",
"workflow": "macos-build.yml",
"privilege": "sudo",
"configure_flags": [
"--with-rrsync",
"--enable-md5-asm",
"--disable-md2man"
],
"_xfail_comment": "Same APFS birthtime caveat as mac2.",
"xfail": [
"crtimes"
],
"env_prefix": "export PATH=/opt/local/bin:/opt/local/sbin:$PATH",
"configure_pre": "CPPFLAGS=\"-I/opt/local/include\"; LDFLAGS=\"-L/opt/local/lib\"; export CPPFLAGS LDFLAGS;",
"unsupported_extra": [
"symlink_mknod"
]
},
{
"_comment": "The same x86-64 Mac built with MacPorts Clang 19, rolling SIMD, rolling assembly and MD5 assembly. This covers the Mach-O combination from issues 160 and 178.",
"name": "mac-x86-asm",
"ssh_host": "tridge@mac",
"workflow": "macos-build.yml",
"privilege": "sudo",
"configure_flags": [
"--with-rrsync",
"--enable-roll-simd",
"--enable-roll-asm",
"--enable-md5-asm",
"--disable-md2man"
],
"_xfail_comment": "Same APFS birthtime caveat as mac2.",
"xfail": [
"crtimes"
],
"env_prefix": "export PATH=/opt/local/bin:/opt/local/sbin:$PATH",
"configure_pre": "CC=clang-mp-19; CXX=clang++-mp-19; CPPFLAGS=\"-I/opt/local/include\"; LDFLAGS=\"-L/opt/local/lib\"; export CC CXX CPPFLAGS LDFLAGS;",
"unsupported_extra": [
"symlink_mknod"
]
},
{
"_comment": "Cygwin runs unprivileged with rsync.exe and Python 3.9 to match the workflow capability set. Keep Python 3.9 current enough to expose os.getxattr.",
"name": "cygwin",
"ssh_host": "win11",
"workflow": "cygwin-build.yml",
"rsync_bin": "rsync.exe",
"python": "python3.9",
"privilege": "user",
"configure_flags": [
"--with-rrsync"
]
}
]
}