mirror of
https://github.com/libguestfs/libguestfs.git
synced 2026-03-21 22:53:37 +00:00
tests: daemon: Cleanly shut down the daemon on exit.
This refines the previous commit by shutting down the daemon cleanly at the end of the test (assuming the test was successful). It repurposes the 'internal_exit' API for this, which was previously used by the now defunct --enable-valgrind-daemon functionality.
This commit is contained in:
@@ -46,14 +46,9 @@ do_internal_autosync (void)
|
||||
}
|
||||
|
||||
/* NB: Only called when valgrinding the daemon. */
|
||||
int
|
||||
int __attribute__((noreturn))
|
||||
do_internal_exit (void)
|
||||
{
|
||||
if (!autosync_umount) {
|
||||
reply_with_error ("guestfsd -r flag used, ignoring");
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Send a reply before exiting so the protocol doesn't get confused. */
|
||||
reply (NULL, NULL);
|
||||
|
||||
|
||||
@@ -11951,7 +11951,8 @@ This function is used internally when setting up the appliance." };
|
||||
name = "internal_exit"; added = (1, 23, 30);
|
||||
style = RErr, [], [];
|
||||
proc_nr = Some 414;
|
||||
visibility = VInternal;
|
||||
(* Really VInternal, but we need to use it from the Perl bindings. XXX *)
|
||||
visibility = VDebug;
|
||||
cancellable = true;
|
||||
shortdesc = "cause the daemon to exit (internal use only)";
|
||||
longdesc = "\
|
||||
|
||||
@@ -93,14 +93,15 @@ sub run_tests {
|
||||
# libguestfs live.
|
||||
$g = Sys::Guestfs->new ();
|
||||
$g->set_backend ("unix:" . $sockname);
|
||||
$g->set_autosync (0);
|
||||
$g->launch;
|
||||
|
||||
# Run the user tests.
|
||||
my $r = ::tests ($g);
|
||||
|
||||
# Close the socket. The daemon should now exit.
|
||||
$g->shutdown ();
|
||||
$g->close ();
|
||||
# Tell the daemon to exit cleanly, and remove the socket.
|
||||
$g->internal_exit;
|
||||
$g->close;
|
||||
unlink $sockname;
|
||||
|
||||
waitpid ($pid, 0) or die "waitpid: $!";
|
||||
@@ -112,10 +113,7 @@ sub run_tests {
|
||||
my $status = $? >> 8;
|
||||
die "ERROR: guestfsd died with exit code 119 (valgrind failure)\n"
|
||||
if $status == 119;
|
||||
|
||||
# Note we allow guestfsd to die with exit code 1, because
|
||||
# that indicates a read failure from the socket.
|
||||
die "ERROR: guestfsd died with exit code $status\n" if $status > 1;
|
||||
die "ERROR: guestfsd died with exit code $status\n";
|
||||
}
|
||||
|
||||
# Exit with failure if the user test failed.
|
||||
|
||||
Reference in New Issue
Block a user