C6B-F1 cause 1 + §8: additive .fab export (HDD binds AND named volumes)
executeExport no longer either/or gates user data on needs_hdd — a needs_hdd app bundles BOTH its HDD mounts and its named volumes (sonarr_config = the whole app DB was silently dropped pre-fix). exportHDDData returns error and fails LOUDLY on a basename collision between mounts (the manifest keys tars by basename; the old code silently overwrote the first tar). EstimateExport made additive to match, so the fits-on-dest gate counts both. Round-trip placement test proves a userdata tar restores to <HDD_PATH>/userdata through the untouched import mapping. Red-proofs recorded: either/or revert fails scenario A; collision-check removal fails the collision test.
This commit is contained in:
@@ -8,14 +8,17 @@ import (
|
||||
"testing"
|
||||
)
|
||||
|
||||
// hddProvider is an rtProvider that reports an HDD-backed stack (for the regression scenario H).
|
||||
// hddProvider is an rtProvider that reports an HDD-backed stack (estimate scenario H + the
|
||||
// v0.130.0 additive-export tests in export_additive_test.go).
|
||||
type hddProvider struct {
|
||||
*rtProvider
|
||||
mounts []string
|
||||
mounts []string
|
||||
hddPath string
|
||||
}
|
||||
|
||||
func (p *hddProvider) GetStackNeedsHDD(string) bool { return true }
|
||||
func (p *hddProvider) GetStackNeedsHDD(string) bool { return true }
|
||||
func (p *hddProvider) GetStackHDDMounts(string) []string { return p.mounts }
|
||||
func (p *hddProvider) GetStackHDDPath(string) string { return p.hddPath }
|
||||
|
||||
func newEstimator(t *testing.T, provider ExportStackProvider) *Exporter {
|
||||
t.Helper()
|
||||
|
||||
Reference in New Issue
Block a user