James Hunt has proposed merging lp:~jamesodhunt/upstart/test-quiesce-cleanup into lp:upstart.
Requested reviews: Upstart Reviewers (upstart-reviewers) For more details, see: https://code.launchpad.net/~jamesodhunt/upstart/test-quiesce-cleanup/+merge/182698 * util/tests/test_initctl.c: test_quiesce(): Clean up any processes that the Session Init couldn't before it shut down. Note that such rogues can cause issues for pbuilder. -- https://code.launchpad.net/~jamesodhunt/upstart/test-quiesce-cleanup/+merge/182698 Your team Upstart Reviewers is requested to review the proposed merge of lp:~jamesodhunt/upstart/test-quiesce-cleanup into lp:upstart.
=== modified file 'ChangeLog' --- ChangeLog 2013-08-23 14:49:09 +0000 +++ ChangeLog 2013-08-28 16:35:52 +0000 @@ -1,3 +1,8 @@ +2013-08-28 James Hunt <[email protected]> + + * util/tests/test_initctl.c: test_quiesce(): Clean up any + processes that the Session Init couldn't before it shut down. + 2013-08-23 James Hunt <[email protected]> * NEWS: Release 1.10 === modified file 'util/tests/test_initctl.c' --- util/tests/test_initctl.c 2013-08-23 11:23:19 +0000 +++ util/tests/test_initctl.c 2013-08-28 16:35:52 +0000 @@ -11125,6 +11125,7 @@ { char confdir[PATH_MAX]; char logdir[PATH_MAX]; + char pid_file[PATH_MAX]; char sessiondir[PATH_MAX]; nih_local char *cmd = NULL; pid_t upstart_pid = 0; @@ -11135,6 +11136,8 @@ nih_local NihDBusProxy *upstart = NULL; nih_local char *orig_xdg_runtime_dir = NULL; nih_local char *session_file = NULL; + nih_local char *job = NULL; + pid_t job_pid; TEST_GROUP ("Session Init quiesce"); @@ -11204,6 +11207,9 @@ TEST_EQ (lines, 1); nih_free (output); + job_pid = job_to_pid ("long-running"); + TEST_NE (job_pid, -1); + /* Trigger shutdown */ assert0 (kill (upstart_pid, SIGTERM)); @@ -11219,6 +11225,8 @@ sessiondir, (int)upstart_pid)); unlink (session_file); + kill (job_pid, SIGKILL); + DELETE_FILE (confdir, "long-running.conf"); /*******************************************************************/ @@ -11243,6 +11251,9 @@ TEST_EQ (lines, 1); nih_free (output); + job_pid = job_to_pid ("long-running-term"); + TEST_NE (job_pid, -1); + /* Trigger shutdown */ assert0 (kill (upstart_pid, SIGTERM)); @@ -11258,18 +11269,24 @@ sessiondir, (int)upstart_pid)); unlink (session_file); + kill (job_pid, SIGKILL); + DELETE_FILE (confdir, "long-running-term.conf"); /*******************************************************************/ TEST_FEATURE ("system shutdown: one job which starts on session-end"); - CREATE_FILE (confdir, "session-end.conf", - "start on session-end\n" - "\n" - "script\n" - " echo hello\n" - " sleep 999\n" - "end script"); + TEST_FILENAME (pid_file); + + job = NIH_MUST (nih_sprintf (NULL, "start on session-end\n" + "\n" + "script\n" + " echo hello\n" + " echo $$ >\"%s\"\n" + " exec sleep 999\n" + "end script", pid_file)); + + CREATE_FILE (confdir, "session-end.conf", job); start_upstart_common (&upstart_pid, TRUE, confdir, logdir, NULL); @@ -11302,19 +11319,31 @@ sessiondir, (int)upstart_pid)); unlink (session_file); + /* kill job pid if not already dead */ + file = fopen (pid_file, "r"); + TEST_NE_P (file, NULL); + TEST_EQ (fscanf (file, "%d", &job_pid), 1); + fclose (file); + kill (job_pid, SIGKILL); + assert0 (unlink (pid_file)); + DELETE_FILE (confdir, "session-end.conf"); /*******************************************************************/ TEST_FEATURE ("system shutdown: one job which starts on session-end and ignores SIGTERM"); - CREATE_FILE (confdir, "session-end-term.conf", - "start on session-end\n" - "\n" - "script\n" - " trap '' TERM\n" - " echo hello\n" - " sleep 999\n" - "end script"); + TEST_FILENAME (pid_file); + + job = NIH_MUST (nih_sprintf (NULL, "start on session-end\n" + "\n" + "script\n" + " trap '' TERM\n" + " echo hello\n" + " echo $$ >\"%s\"\n" + " exec sleep 999\n" + "end script", pid_file)); + + CREATE_FILE (confdir, "session-end-term.conf", job); start_upstart_common (&upstart_pid, TRUE, confdir, logdir, NULL); @@ -11347,6 +11376,14 @@ sessiondir, (int)upstart_pid)); unlink (session_file); + /* kill job pid if not already dead */ + file = fopen (pid_file, "r"); + TEST_NE_P (file, NULL); + TEST_EQ (fscanf (file, "%d", &job_pid), 1); + fclose (file); + kill (job_pid, SIGKILL); + assert0 (unlink (pid_file)); + DELETE_FILE (confdir, "session-end-term.conf"); /*******************************************************************/ @@ -11357,17 +11394,20 @@ CREATE_FILE (confdir, "long-running-term.conf", "script\n" " trap '' TERM\n" - " sleep 999\n" - "end script"); - - CREATE_FILE (confdir, "session-end-term.conf", - "start on session-end\n" - "\n" - "script\n" - " trap '' TERM\n" - " sleep 999\n" - "end script"); - + " exec sleep 999\n" + "end script"); + + TEST_FILENAME (pid_file); + + job = NIH_MUST (nih_sprintf (NULL, "start on session-end\n" + "\n" + "script\n" + " trap '' TERM\n" + " echo $$ >\"%s\"\n" + " exec sleep 999\n" + "end script", pid_file)); + + CREATE_FILE (confdir, "session-end-term.conf", job); start_upstart_common (&upstart_pid, TRUE, confdir, logdir, NULL); @@ -11382,6 +11422,9 @@ TEST_EQ (lines, 1); nih_free (output); + job_pid = job_to_pid ("long-running-term"); + TEST_NE (job_pid, -1); + /* Trigger shutdown */ assert0 (kill (upstart_pid, SIGTERM)); @@ -11397,6 +11440,16 @@ sessiondir, (int)upstart_pid)); unlink (session_file); + /* kill job pids if not already dead */ + kill (job_pid, SIGKILL); + + file = fopen (pid_file, "r"); + TEST_NE_P (file, NULL); + TEST_EQ (fscanf (file, "%d", &job_pid), 1); + fclose (file); + kill (job_pid, SIGKILL); + assert0 (unlink (pid_file)); + DELETE_FILE (confdir, "long-running-term.conf"); DELETE_FILE (confdir, "session-end-term.conf"); @@ -11449,6 +11502,9 @@ TEST_EQ (lines, 1); nih_free (output); + job_pid = job_to_pid ("long-running"); + TEST_NE (job_pid, -1); + upstart = upstart_open (NULL); TEST_NE_P (upstart, NULL); @@ -11470,6 +11526,8 @@ sessiondir, (int)upstart_pid)); unlink (session_file); + kill (job_pid, SIGKILL); + DELETE_FILE (confdir, "long-running.conf"); /*******************************************************************/ @@ -11484,13 +11542,16 @@ start_upstart_common (&upstart_pid, TRUE, confdir, logdir, NULL); cmd = nih_sprintf (NULL, "%s start %s 2>&1", - get_initctl (), "long-running"); + get_initctl (), "long-running-term"); TEST_NE_P (cmd, NULL); RUN_COMMAND (NULL, cmd, &output, &lines); TEST_EQ (lines, 1); nih_free (output); + job_pid = job_to_pid ("long-running-term"); + TEST_NE (job_pid, -1); + upstart = upstart_open (NULL); TEST_NE_P (upstart, NULL); @@ -11512,18 +11573,24 @@ sessiondir, (int)upstart_pid)); unlink (session_file); + kill (job_pid, SIGKILL); + DELETE_FILE (confdir, "long-running-term.conf"); /*******************************************************************/ TEST_FEATURE ("session shutdown: one job which starts on session-end"); - CREATE_FILE (confdir, "session-end.conf", - "start on session-end\n" - "\n" - "script\n" - " echo hello\n" - " sleep 999\n" - "end script"); + TEST_FILENAME (pid_file); + + job = NIH_MUST (nih_sprintf (NULL, "start on session-end\n" + "\n" + "script\n" + " echo hello\n" + " echo $$ >\"%s\"\n" + " exec sleep 999\n" + "end script", pid_file)); + + CREATE_FILE (confdir, "session-end.conf", job); start_upstart_common (&upstart_pid, TRUE, confdir, logdir, NULL); @@ -11555,6 +11622,13 @@ TEST_EQ (fclose (file), 0); assert0 (unlink (logfile)); + file = fopen (pid_file, "r"); + TEST_NE_P (file, NULL); + TEST_EQ (fscanf (file, "%d", &job_pid), 1); + fclose (file); + kill (job_pid, SIGKILL); + assert0 (unlink (pid_file)); + session_file = NIH_MUST (nih_sprintf (NULL, "%s/upstart/sessions/%d.session", sessiondir, (int)upstart_pid)); unlink (session_file); @@ -11564,14 +11638,18 @@ /*******************************************************************/ TEST_FEATURE ("session shutdown: one job which starts on session-end"); - CREATE_FILE (confdir, "session-end-term.conf", - "start on session-end\n" - "\n" - "script\n" - " trap '' TERM\n" - " echo hello\n" - " sleep 999\n" - "end script"); + TEST_FILENAME (pid_file); + + job = NIH_MUST (nih_sprintf (NULL, "start on session-end\n" + "\n" + "script\n" + " trap '' TERM\n" + " echo hello\n" + " echo $$ >\"%s\"\n" + " exec sleep 999\n" + "end script", pid_file)); + + CREATE_FILE (confdir, "session-end-term.conf", job); start_upstart_common (&upstart_pid, TRUE, confdir, logdir, NULL); @@ -11603,6 +11681,13 @@ TEST_EQ (fclose (file), 0); assert0 (unlink (logfile)); + file = fopen (pid_file, "r"); + TEST_NE_P (file, NULL); + TEST_EQ (fscanf (file, "%d", &job_pid), 1); + fclose (file); + kill (job_pid, SIGKILL); + assert0 (unlink (pid_file)); + session_file = NIH_MUST (nih_sprintf (NULL, "%s/upstart/sessions/%d.session", sessiondir, (int)upstart_pid)); unlink (session_file); @@ -11620,13 +11705,17 @@ " sleep 999\n" "end script"); - CREATE_FILE (confdir, "session-end-term.conf", - "start on session-end\n" - "\n" - "script\n" - " trap '' TERM\n" - " sleep 999\n" - "end script"); + TEST_FILENAME (pid_file); + + job = NIH_MUST (nih_sprintf (NULL, "start on session-end\n" + "\n" + "script\n" + " trap '' TERM\n" + " echo $$ >\"%s\"\n" + " sleep 999\n" + "end script", pid_file)); + + CREATE_FILE (confdir, "session-end-term.conf", job); start_upstart_common (&upstart_pid, TRUE, confdir, logdir, NULL); @@ -11638,6 +11727,9 @@ TEST_EQ (lines, 1); nih_free (output); + job_pid = job_to_pid ("long-running-term"); + TEST_NE (job_pid, -1); + upstart = upstart_open (NULL); TEST_NE_P (upstart, NULL); @@ -11659,6 +11751,16 @@ sessiondir, (int)upstart_pid)); unlink (session_file); + /* kill job pids if not already dead */ + kill (job_pid, SIGKILL); + + file = fopen (pid_file, "r"); + TEST_NE_P (file, NULL); + TEST_EQ (fscanf (file, "%d", &job_pid), 1); + fclose (file); + kill (job_pid, SIGKILL); + assert0 (unlink (pid_file)); + DELETE_FILE (confdir, "long-running-term.conf"); DELETE_FILE (confdir, "session-end-term.conf");
-- upstart-devel mailing list [email protected] Modify settings or unsubscribe at: https://lists.ubuntu.com/mailman/listinfo/upstart-devel
