Report 1416 Actions
Problem Report Number |
1416 |
Submitter's Classification |
Test Suite problem |
State |
Resolved |
Resolution |
Test Suite Deficiency (TSD) |
Problem Resolution ID |
TSD.X.0698 |
Raised |
1970-01-01 08:00 |
Updated |
2003-03-13 08:00 |
Published |
1996-03-19 08:00 |
Product Standard |
Internationalised System Calls and Libraries Extended (UNIX 95) |
Certification Program |
The Open Brand certification program |
Test Suite |
VSU version 4.1.0 |
Test Identification |
CAPIbase/poll 27 |
Problem Summary |
TSD4U.00117 This request claims that the test improperly times out because it expects AF_UNIX client connect() calls will complete before the server accept()s the connection. |
Problem Text |
This request claims that the test improperly times out because it expects AF_UNIX client connect() calls will complete before the server accept()s the connection. The implementation claims that connections occur after an accept() call has been made. The implementation of the assertion is not portable. The AF_UNIX SOCK_STREAM test on this assertion is UNRESOLVED because the connect() issued from the client failed with errno ECONNREFUSED. (Note that the AF_INET SOCK_STREAM portion of this assertion is successful.) connect() for AF_UNIX sockets has a slightly different implementation than connect() for AF_INET sockets. AF_UNIX does not complete a connection until the accept is done on the server side. AF_INET, on the other hand, completes the connection and returns a zero return value as soon as the listen is done on the server side. Since this testcase never issues an accept on the server side (since the assertion of the testcase was successful) the subsequent close of the server socket causes the connect request that had been waiting for an accept to be rejected in the AF_UNIX case. Since this is after successful completion of the assertion, this portion of the testcase should not care about the return value received.
|
Test Output |
10|0 /tset/CAPIbase/fpoll/fpoll27 10:58:23|TC Start, scenario ref 0-1 15|0 1.10 1|TCM Start 400|0 27 1 10:58:23|IC Start 200|0 1 10:58:23|TP Start 520|0 1 5636103 1 1|SPEC1170TESTSUITE CASE 27 520|0 1 5636103 1 2|If the implementation supports a communications domain 520|0 1 5636103 1 3|and a connection-oriented socket type: 520|0 1 5636103 1 4|On a call to int poll(struct pollfd fds[], nfds_t 520|0 1 5636103 1 5|nfds, int timeout) a socket that is listening for 520|0 1 5636103 1 6|connections shall indicate that it is ready for 520|0 1 5636103 1 7|reading once connections are available. 520|0 1 5046284 1 1|TEST: AF_INET SOCK_STREAM 520|0 1 5046284 1 2|PREP: Create test sockaddr_in: address = 198.151.241.50, port = 2085 520|0 1 5046284 2 1|PREP: Create socket 520|0 1 5046284 2 2|PREP: Bind to socket 520|0 1 5046284 2 3|PREP: Call listen for socket 520|0 1 5046284 2 4|PREP: Signal child parent is ready 520|0 1 5046284 2 5|PREP: Wait for child to connect 520|0 1 5046284 2 6|TEST: poll() on a file descriptor with connection indicates ready to read 520|0 1 5046284 2 7|CLEANUP: Close sockets, kill child 520|0 1 5046284 2 8|TEST: AF_UNIX SOCK_STREAM 520|0 1 5046284 2 9|PREP: Create test sockaddr_un: path = ../tmp/unix.HdhDxQ 520|0 1 4128781 1 1|PREP: Child: wait for parent 520|0 1 4128781 1 2|PREP: Create a socket 520|0 1 4128781 1 3|PREP: Connect socket to address 198.151.241.50, port 2085 520|0 1 4128781 1 4|PREP: Child: wait for parent to complete 520|0 1 5046284 3 1|PREP: Create socket 520|0 1 5046284 3 2|PREP: Bind to socket 520|0 1 5046284 3 3|PREP: Call listen for socket 520|0 1 5046284 3 4|PREP: Signal child parent is ready 520|0 1 5046284 3 5|ERROR: Timed out waiting for completion. 520|0 1 5046284 3 6|TEST: poll() on a file descriptor with connection indicates ready to read 520|0 1 5046284 3 7|CLEANUP: Close sockets, kill child 520|0 1 4194317 1 1|PREP: Child: wait for parent 520|0 1 4194317 1 2|PREP: Create a socket 520|0 1 4194317 1 3|PREP: Bind address ../tmp/uclient.CDBbxQ to socket 520|0 1 4194317 1 4|PREP: Connect to address ../tmp/unix.HdhDxQ 520|0 1 4194317 1 5|ERROR: unix_client: connect failed, errno = 1128(ECONNREFUSED - Connection refused) 220|0 1 2 10:58:37|UNRESOLVED 410|0 27 1 10:58:37|IC End 80|0 0 10:58:37|TC End 900|10:58:37|TCC End
|
Review Information
Review Type |
TSMA Review |
Start Date |
null |
Completed |
null |
Status |
Complete |
Review Recommendation |
No Resolution Given |
Review Response |
We recommend this request be refused. We believe the key issue here is the exact point at which a "connection" occurs. There is no clear definition of this in the sockets spec. In the past, similar issues with sockets have been raised, They were all resolved using BSD sockets as the normative reference. The BSD semantics in this case, as well as the AF_INET semantics on this IUT, both regard the connect request being placed in the listen queue as the point a connection occurs. The XNI spec, pg. 106, states that Certain semantics of the basic sockets abstraction are protocol specific. We maintain that a "connection" is one of these semantics. This implies that the semantics should be consistent across all address families within the protocol. We believe AF_UNIX connection requests should exhibit the same semantics as AF_INET connection requests, those semantics should consider the connection made when the request is placed in the listen queue, and the test is correct as it is currently written. We are also concerned that, if this difference were allowed, it may break existing applications.
|
Review Type |
Expert Group Review |
Start Date |
null |
Completed |
null |
Status |
Complete |
Review Resolution |
No Resolution Given |
Review Conclusion |
A Test Suite Deficiency should be granted as the specification does not cover this issue. The topic should be forwarded to XoTGnet for consideration as to whether the specification needs updating.
|
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:
|