Skip to topic | Skip to bottom
WineDev
WineDev.Group1r1.20 - 18 Apr 2006 - 10:39 - TWikiGuesttopic end

Start of topic | Skip to actions
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

Proposed Timeline

Date Weight      Project
2005-1-19 4%
  • Projects 0 and 1
  • Install Linux (Fedora Core 3) on desktop and laptop.
  • Download, build and install WINE.
2005-1-21 1%
  • Initial schedule
  • Submit progress report to TA.
2005-2-2 5%
  • Finish project 2
  • Research DLLs and choose one.
2005-2-11 7%
  • Design winsock conformance test.
  • Determine common uses of DLL and pick 2-3 functions to test.
  • Come up as many test cases as possible.
2005-2-18 6%
  • Get the expected results.
  • Develop wine32 app with test cases and run it on Windows XP.
  • Record all the outputs.
2005-3-4 7%
  • Run tests on Linux.
  • Run the same tests on Linux.
  • Compare the outputs.
2005-3-11 2%
  • Submit conformance test and bug report to Dan.
  • Add more test cases if necessary and resubmit(repeat this process from here on).
2005-3-11 3%
  • Winsock conformance test demo.
2005-3-15 5%
  • Submit final product.

Incremental Progress

2005-01-19:
  • Installed Fedora Core 3 on a desktop and laptop
  • Downloaded, Installed, and Built WINE
  • Successfully ran notepad.exe.so

2005-01-20:

  • Began initial stages of Project 2
  • Ran conformance test suite under WINE.
  • Got more errors and "Test failed" cases than expected - debugging.

2005-01-21:

  • Created initial schedule
  • Submitted progress report to TA.

2005-01-28:

  • Researched DLLs and chose Winsock DLL.
  • Chose single thread, non-blocking I/O

2005-02-03:

  • Ran conformance test. Didn't get the same results as Dan, but the errors seem to be unrelated to what we're doing. Here's the output of 'grep "Test failed" log | sed 's/:.*//' | uniq -c | sort':
  •      13 generated.c
          1 url.c
          2 typelib.c
          3 file.c
    
  • Logfile for conformance test (laptop): conformance log

2005-02-11:

  • Decided on which Winsock APIs to test. We are using the following functions because they are fundamental for creating the client/server Winsock model. We may decide to expand to more interesting fucntions if we get a chance. We will be using multi-threaded asynchronous connection using these APIs.
  •    - int WSAStartup( WORD wVersionRequested, LPWSADATA lpWSAData );
       - SOCKET socket( int af, int type, int protocol );
       - int bind( SOCKET s, const struct sockaddr* name, int namelen );
       - int listen( SOCKET s, int backlog );
       - SOCKET accept( SOCKET s, struct sockaddr* addr, int* addrlen );
       - int connect( SOCKET s, const struct sockaddr* name, int namelen );
       - int send( SOCKET s, const char* buf, int len, int flags );
       - int recv( SOCKET s, char* buf, int len, int flags );
    

  • Test cases for WSAStartup():

    1. Request the following Winsock versions for WORD wVersionRequested:
       a. 1.0
       b. 1.1
       c. 2.0
       
       Using the different combinations, generate the error code 
    WSAVERNOTSUPPORTED, and proper version requests.
    
    2. Pass in a bad pointer for lpWSAData, and generate WSAEFAULT error.
    3. Remove the Windows Sockets DLL file to attempt to generate the
       WSASYSNOTREADY error.
    4. Instantiate two network operations to generate WSAEINPROGRESS
       error and possibly the WSAEPROCLIM error.
    5. Record multiple successful calls and verify return code 0.
    
  • Test cases for socket():
      1 Success  - return socket descriptor(no way to verify except that
        it's != INVALID_SOCKET)
         a. TCP
         b. UDP
      2. Fail  - return INVALID_SOCKET 
         a. WAStartup was not called(or failed)
         b. invalid address
         c. no more socket descriptors(will try to implement but may not
            be able to)
         d. no more buffer(same as above)
         e. invalid protocol
    
  • Test cases for bind():
      1. Successful Bind
          a. TCP
          b. UDP
      2. Error
          a. return SOCKET_ERROR
             i.   invalud SOCKET descriptor
             ii.  invalid sockaddr struct
             iii. invalid namelen
             iv. unsuccessful WAStartup called
             v.  tried to open UDP when SO_BROADCAST is not enabled
             vi. address is already bound to another process
             vii. invalud address
             viii. socket already bound to another address
             ix.  too many connections/not enough buffer -> not sure if this can be done yet
    
  • Test cases for listen():
      1 success - return 0
         a. TCP
         b. UDP
      2. fail - return SOCKET_ERROR
         a. WAStartup not called successfully
         b. socket's local address is already in use
         c. socket not bound with bind()
         d. socket is already connected
         e. no more socket descriptors available
         f.  No more buffer space
         g. invalid descriptor
    
  • Test cases for accept():
    1. Success - returns a value of type SOCKET (descriptor for new socket)
         a. TCP
         b. UDP
    2. Failure - returns a value of INVALID_SOCKET
         a. Call before initialization, generating WSANOTINITIALISED error.
         b. Use a small addrlen for WSAEFAULT error.
         c. Call during a blocking sockets call to get WSAEINTR error.
         d. Simulate network failure to get WSAENETDOWN error.
         e. Use an invalid socket to generate WSAEOPNOTSUPP error.
         f. Flood the buffer to generate WSAENOBUFS error.
    
  • Test cases for connect():
      1. Success - 0 returned
         a. TCP
         b. UDP
      2. Fail - SOCKET_ERROR returned
         a. WAStartup not called successfully
         b. socket's local address already in use
         c. invalid address
         d. invalud namelen
         e. socket parameter is a listening socket
         f. socket already connected
         g. no buffer space
         h. invalid descriptor
    
  • Test cases for send():
    1. Success - returns number of bytes received(!= SOCKET_ERROR)
         a. TCP
         b. UDP
    2. Failure 
         a. Pass invalid socket descriptor to generate WSAENOTSOCK error.
         b. Call the fucntion before initialization to generate WSANOTINITIALIZED.
         c. Create an extremely large input buffer to generate WSAEMSGIZE error.
         d. Simulate network failure for errors WSAENETDOWN, WSAECONNRESET, WSETIMEDOUT
         e. Call during blocking Windows call in progress to get WSAEINPROGRESS.
    
  • Test cases for recv():
      1. Success - returns number of bytes received(!= SOCKET_ERROR)
         a. TCP
         b. UDP
      for each try to test cases where you get 0 byte(connection closed) and non-0 bytes received
      2. Fail - returns SOCKET_ERROR
         a.  WAStartup was not called successfullly
         b.  socket not connected
         c.  buf not allocated properly
         d.  invalid descriptor
         e.  socket was marked 'non-blocking' even though recv() will block 
         f.   message was too large(truncated)
         g.  bind was not successfully called earlier
    
  • Test cases for WSAAsyncSelect?():
      1. Success - returns 0
      2. Fail - returns SOCKET_ERROR
         a.  WAStartup was not called successfullly
         b.  invalid socket
         c.  invalud handler
    

2005-02-18:

  • The debugging phase is taking longer than expected, mainly because our tests have to call 9 APIs, which is considerably more than Dan's original suggestion of 2 or 3. We also underestimated the complexity of testing asynchronous I/O with winsock, and have been trying to resolve asynchronous-specific API issues. Finally, we've spent some time trying to simulate inputs/environments for certain tests cases that are not straight-forward (for example: network is not ready; too many processes accessing a socket, etc)

    We are currently proposing a schedule revision. We would like to extend our current milestone to next week due to the above issues. This will not impact our final submission since we have allocated almost two weeks at the end for debugging. Our goal is to be done with the Windows conformance code by early next week so that we can still maintain a generous buffer and stay ahead.

2005-02-22:

  • Finished programming client and server test apps in Visual Studio using asynchronous I/O. Currently the application sends out 100 bytes in 32 byte chunks.

2005-03-04:

  • Code ported successful on Linux. Fixed various warnings and errors.
  • Compared the test results.

to top

You are here: WineDev > Group1

to top

... no changes ... no changes ... no changes ... no changes ... no changes ... no changes ... no changes ... no changes ... no changes ... no changes ... no changes ... morgan, john pierpont licata, riccardo licata, riccardo licata, riccardo licata, riccardo licata, riccardo hell hell hell hell hell ackermann, max ackermann, max ackermann, max ackermann, max ackermann, max qixia si qixia si qixia si qixia si qixia si alex and emma alex and emma alex and emma alex and emma alex and emma capelle, jan van de- capelle, jan van de- capelle, jan van de- capelle, jan van de- capelle, jan van de- bikom bikom bikom bikom bikom paray-le-monial paray-le-monial paray-le-monial paray-le-monial paray-le-monial mitsuyoshi tosa mitsuyoshi tosa mitsuyoshi tosa mitsuyoshi tosa mitsuyoshi tosa four brothers - quattro fratelli [[http://four-brothers.fifa2007it.org four brothers - qu