HomeAbout Us A-Z IndexSearch * Contact Us Register LoginPress Shop

The Open Brand -- Problem Reporting and Interpretations System


Problem Report 0247 Details

Help Show help | Quick Search | Submit a Test Suite Support Request | Click here to view your privileges

This page provides all information on Problem Report 0247.


Report 0247 Actions


    Problem Report Number 0247
    Submitter's Classification Test Suite problem
    State Resolved
    Resolution Test Suite Deficiency (TSD)
    Problem Resolution ID TSD.X.0247
    Raised 1995-11-28 08:00
    Updated 2003-03-13 08:00
    Published 1995-12-05 08:00
    Product Standard Internationalised System Calls and Libraries (XPG4)
    Certification Program The Open Brand certification program
    Test Suite VSX4 version 4.3.4
    Test Identification POSIX.os/devclass/tcdrain 4, 11
    Linked Problem Reports TSD4.151, (in, old, system)
    Problem Summary TSD4.247 These tests fail because they calculate how many bytes can be sent through a serial port in ten seconds and have one process write that many bytes. Another process waits three seconds then does a tcdr...
    Problem Text
    These tests fail because they calculate how many bytes can be sent
    through a serial port in ten seconds and have one process write that
    many bytes. Another process waits three seconds then does a tcdrain()
    followed by a write of a marker byte.

    So, these tests assume that a stream can buffer up nearly seven seconds
    of data at the operating baud rate (9600). This is not true for
    us. We have set ldterm's maximum packet size and high water mark to
    fairly low values. As a result, the stream head chops up the first
    process's large write into many 2048 byte packets. The M_IOCTL message
    that tcdrain() sends downstream will be queued up behind the data and
    eventually arrive at the device driver, where it will wait until the
    driver has drained its output queue before returning. At that point,
    the second process will write the marker byte. However, the first
    process may still be writing data into the stream. If so, then the
    marker byte will be interleaved with the other data.

    10 seconds of data at 9600 baud is approximately 9600 bytes.
    The tests fail at around 7 to 8 kbytes for our serial I/O boards.
    Test Output
    ************************************************************************
    /tset/POSIX.os/devclass/tcdrain/T.tcdrain 4 Failed

    Test Description:
    If general terminal interface supported:
    If _POSIX_JOB_CONTROL is implemented, when tcdrain() is called from
    a background process, that is ignoring the SIGTTOU signal, a
    SIGTTOU signal shall not be sent to the process group associated
    with the calling process and the tcdrain() actions shall be
    performed.
    Posix Ref: Component TCDRAIN Assertion 7.2.2.2-06(C)

    Test Strategy:
    OPEN and initialise terminal file and loop back file
    CREATE child process
    CHILD process:
    CREATE new background process group using setpgid(0, 0)
    SET signal action for SIGTTOU to SIG_IGN
    CREATE process pair
    CHILD process:
    SET signal action for signal SIGTTOU to signal catching function
    SLEEP for WAITTIME/2 (to receive signal, if any)
    PARENT process:
    CREATE process pair
    CHILD process:
    CREATE process pair
    CHILD process:
    WRITE data to terminal file using write() that will take
    READ_TIME seconds
    VERIFY that write() returns size of data written
    PARENT process:
    SET time out for READ_TIME + WAITTIME/2
    READ loop back file using read() until read returns an error
    or BUFLEN characters read
    VERIFY that read returned BUFLEN characters
    VERIFY that data written after tcdrain() called is not
    interleaved
    PARENT process:
    SLEEP to allow write to terminal file to begin
    SET time out for READ_TIME + WAITTIME/2
    WAIT for completion of output to terminal file using tcdrain()
    SET time out for WAITTIME/2
    WRITE data to terminal file using write() to test interleaving
    VERIFY that tcdrain() returned zero
    VERIFY that SIGTTOU signal was not received by child process

    Test Information:
    tcdrain() failed - interleaved character at 8192
    ************************************************************************

    ************************************************************************
    /tset/POSIX.os/devclass/tcdrain/T.tcdrain 11 Failed

    Test Description:
    If general terminal interface supported:
    when tcdrain() is called from a background process, that is
    ignoring the SIGTTOU signal, and when fildes refers to a non-
    controlling terminal, the tcdrain actions shall be performed.
    Posix Ref: Component TCDRAIN Assertion 7.2.2.2-X4(C)

    Test Strategy:
    OPEN and initialise terminal file and loop back file
    CREATE child process
    CHILD process:
    CREATE new background process group using setpgid(0, 0)
    SET signal action for SIGTTOU to SIG_IGN
    CREATE process pair
    CHILD process:
    SET signal action for signal SIGTTOU to signal catching function
    SLEEP for WAITTIME/2 (to receive signal, if any)
    PARENT process:
    CREATE process pair
    CHILD process:
    CREATE process pair
    CHILD process:
    WRITE data to loop back file using write() that will take
    READ_TIME seconds
    VERIFY that write() returns size of data written
    PARENT process:
    SET time out for READ_TIME + WAITTIME/2
    READ terminal file using read() until read returns an error or
    BUFLEN characters read
    VERIFY that read returned BUFLEN characters
    VERIFY that data written after tcdrain() called is not
    interleaved
    PARENT process:
    SLEEP to allow write to loop back file to begin
    SET time out for READ_TIME + WAITTIME/2
    WAIT for completion of output to loop back file using tcdrain()
    SET time out for WAITTIME/2
    WRITE data to loop back file using write() to test interleaving
    VERIFY that tcdrain() returned zero
    VERIFY that SIGTTOU signal was not received by child process

    Test Information:
    tcdrain() failed - interleaved character at 8192
    ************************************************************************

    Review Information

    Review Type TSMA Review
    Start Date null
    Completed null
    Status Complete
    Review Recommendation No Resolution Given
    Review Response
    This is accepted as a test suite fault and it is recommended that a waiver
    is granted on the grounds of a Test Suite Deficiency.

    This fault has been rectified in later releases.

    Review Type SA Review
    Start Date null
    Completed null
    Status Complete
    Review Resolution Test Suite Deficiency (TSD)
    Review Conclusion
    This is an agreed Test Suite Deficiency.

    Problem Reporting System Options:

     

    Back   


Contact the Certification Authority