mirror of
https://github.com/rcourtman/Pulse.git
synced 2026-10-25 13:10:03 +00:00
Preserve each configuration-backup safety control's deadline
The containing installer suite exhausted a single 30-second Python-class budget after eleven controls and killed the last. Use the existing serial discovery runner with all twelve required methods, retaining each control's 30-second bound and the existing inner shell bounds rather than treating cumulative class time as a safety deadline. Change-source: pulse-maintainer
This commit is contained in:
@@ -6385,6 +6385,14 @@ portable control runs the actual emitted helper and real verifier through that
|
||||
adapter, and rejects altered deadlines, retries or TLS options without online
|
||||
fallback. This preserves the hosted manual-recovery consumer, not native acceptance.
|
||||
|
||||
Configuration-backup publication verification also uses the existing serial
|
||||
per-control runner. All twelve current methods are required, all discovered
|
||||
future methods run, and each retains the thirty-second execution bound. A
|
||||
single cumulative suite budget must not cut off the final safety control.
|
||||
The Python controls' own ten-second shell bounds and every backup assertion
|
||||
remain unchanged; no host-contention diagnosis or production deadline change
|
||||
follows from a cumulative harness timeout.
|
||||
|
||||
`TestManualUpdateChannelAdmission` generates and executes the actual helper
|
||||
against local transport fixtures and genuinely signed installer/sidecar bytes.
|
||||
It checks final arguments and the actual installer channel-selection functions,
|
||||
|
||||
@@ -2751,14 +2751,22 @@ fi
|
||||
}
|
||||
|
||||
func TestRootInstallScriptConfigBackupPublicationPreservesPriorSnapshots(t *testing.T) {
|
||||
ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
|
||||
defer cancel()
|
||||
cmd := exec.CommandContext(ctx, "python3", repoFile("scripts", "tests", "test_server_config_backups.py"), "-v")
|
||||
cmd.Env = append(os.Environ(), "PULSE_INSTALLER_UNDER_TEST="+repoFile("install.sh"))
|
||||
out, err := cmd.CombinedOutput()
|
||||
if err != nil {
|
||||
t.Fatalf("configuration backup publication controls: %v\n%s", err, out)
|
||||
}
|
||||
// A cumulative suite budget is not an individual backup-control deadline.
|
||||
// Keep all discovered controls serial and retain the existing per-control bound.
|
||||
runPythonFixtureControls(t, repoFile("scripts", "tests", "test_server_config_backups.py"), "ConfigBackupPublication", []string{
|
||||
"test_two_successful_same_second_copies_are_separate_complete_snapshots",
|
||||
"test_failed_partial_copy_does_not_mutate_or_delete_a_previous_snapshot",
|
||||
"test_allocation_failure_stops_before_copy_or_rotation",
|
||||
"test_headroom_failure_creates_no_stage_and_preserves_prior_snapshot",
|
||||
"test_failed_publication_does_not_rotate_or_publish_a_snapshot",
|
||||
"test_exit_zero_skipped_publication_preserves_file_directory_and_link",
|
||||
"test_current_snapshot_survives_rotation_even_after_clock_moves_backwards",
|
||||
"test_incomplete_copy_is_not_another_invocations_rotation_candidate",
|
||||
"test_discard_removes_only_this_invocations_new_snapshot",
|
||||
"test_missing_config_clears_stale_ownership_without_deleting_prior_snapshot",
|
||||
"test_read_only_config_parent_uses_the_existing_hardened_unit_fallback",
|
||||
"test_every_update_entry_stops_on_failed_backup_even_in_an_or_list",
|
||||
}, 30*time.Second, "PULSE_INSTALLER_UNDER_TEST="+repoFile("install.sh"))
|
||||
}
|
||||
|
||||
// Run the emitted helper and real SSH verifier. Curl exits are modelled, so
|
||||
|
||||
Reference in New Issue
Block a user