~jamesodhunt/upstart/daily-build-failure-env-debug

« back to all changes in this revision

Viewing changes to init/tests/test_job_process.c

  • Committer: James Hunt
  • Date: 2012-02-13 12:08:33 UTC
  • Revision ID: james.hunt@ubuntu.com-20120213120833-1uk04yeo1tiggn6a
* init/log.c:
  - log_flush(): Comments.
  - log_read_watch():
    - Improved comments.
    - Don't re-attempt read on EAGAIN/EWOULDBLOCK since those errors are
      nominally impossible due to the remote end of the pty already
      having ended (LP: #926468).
    - Added a debug-mode warning when 'badly-behaved' application
      detected that leaks fds to its children, as this is generally a bug.
* init/tests/test_job_process.c:
  - test_run():
    - "with single line command writing fast and exiting": added
      waitpid() to ensure no EAGAIN.
  - test_spawn():
    - "with no such file, no shell and console log": added
      waitpid() to ensure no EAGAIN.

Show diffs side-by-side

added added

removed removed

Lines of Context:
3543
3543
        ret = job_process_run (job, PROCESS_MAIN);
3544
3544
        TEST_EQ (ret, 0);
3545
3545
 
 
3546
        /* Wait for process to avoid any possibility of EAGAIN in
 
3547
         * log_read_watch().
 
3548
         */
 
3549
        pid = job->pid[PROCESS_MAIN];
 
3550
        TEST_EQ (waitpid (pid, NULL, 0), pid);
 
3551
 
3546
3552
        /* allow destructor to write any lingering unflushed data */
3547
3553
        nih_free (class);
3548
3554
 
3841
3847
        TEST_FUNCTION ("job_process_spawn");
3842
3848
        TEST_FILENAME (filename);
3843
3849
 
3844
 
#if 0
3845
 
        perr = NULL;
3846
 
        info.si_signo = 0;
3847
 
        if ((int)getuid() == (int)getpid()) {
3848
 
                perr = NULL;
3849
 
                buf[0] = filebuf[0] = '\0';
3850
 
                printf("%p %s %p %p" ,perr, buf, env, &info);
3851
 
        }
3852
 
#else
3853
3850
        args[0] = argv0;
3854
3851
        args[1] = function;
3855
3852
        args[2] = filename;
4103
4100
        TEST_EQ (perr->errnum, ENOENT);
4104
4101
        nih_free (perr);
4105
4102
 
4106
 
#endif
4107
 
 
4108
4103
        /************************************************************/
4109
4104
        TEST_FEATURE ("with no such file, no shell and console log");
4110
4105
 
4119
4114
        pid = job_process_spawn (job, args, NULL, FALSE, -1);
4120
4115
        TEST_LT (pid, 0);
4121
4116
 
 
4117
        TEST_GT (waitpid (-1, NULL, 0), 0);
 
4118
 
4122
4119
        /* The log should have been allocated in job_process_spawn,
4123
4120
         * but then freed on error.
4124
4121
         */