61 rizwank 1.1 <td align=center valign=top bgcolor=DDFFCC>3%</td>
62 <td bgcolor=FFFFCC><ul><li> Submit conformance test and bug report to wineHQ.</li>
63 <li>Add more test cases if necessary and resubmit.</li></ul></td>
64 </tr>
65
66 <tr>
67 <td valign=top bgcolor=CCDDFF><b>2005-3-17</b></td>
68 <td align=center valign=top bgcolor=DDFFCC>7%</td>
69 <td bgcolor=FFFFCC><ul><li> Winsock conformance test demo.</li>
70 <li>Conformance test accepted into wineHQ CVS.</li></ul></td>
71 </tr>
72
73 </table>
74
75
76 <h2> Incremental Progress </h2>
77 <strong>2005-01-19:</strong>
78 <ul>
79 <li> Installed Fedora Core 3 on a desktop and laptop
80 </li>
81 <li> Downloaded, Installed, and Built WINE
82 rizwank 1.1 </li>
83 <li> Successfully ran notepad.exe.so
84 </li>
85 </ul>
86
87 <strong>2005-01-20:</strong>
88 <ul><li> Began initial stages of Project 2</li>
89 <li>Ran conformance test suite under WINE.</li>
90 <li>Got more errors and "Test failed" cases than expected - debugging.</li>
91 </ul>
92
93 <strong>2005-01-21:</strong>
94 <ul><li> Created initial schedule</li>
95 <li>Submitted progress report to TA.</li></ul>
96
97 <p />
98 <strong>2005-01-28:</strong>
99 <ul>
100 <li>Researched DLLs and chose Winsock DLL.
101 </li>
102 <li>Chose single thread, non-blocking I/O
103 rizwank 1.1 </li>
104 </uL>
105
106 <p />
107 <strong>2005-02-03:</strong>
108 <ul>
109 <li> 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':
110 </li>
111 <pre>
112 13 generated.c
113 1 url.c
114 2 typelib.c
115 3 file.c
116 </pre>
117 <li> Logfile for conformance test (laptop):
118 <a href="http://www.seas.ucla.edu/~marvin/log">conformance log</a>
119 </li>
120 </ul>
121
122 <strong>2005-02-11:</strong>
123 <ul>
124 rizwank 1.1
125 <li>Decided on which Winsock APIs to test. We are using the
126 following functions because they are fundamental for creating
127 the client/server Winsock model. We may decide to expand to
128 more interesting fucntions if we get a chance. We will be using
129 multi-threaded asynchronous connection using these APIs.
130 </li>
131 <pre>
132 - int WSAStartup( WORD wVersionRequested, LPWSADATA lpWSAData );
133 - SOCKET socket( int af, int type, int protocol );
134 - int bind( SOCKET s, const struct sockaddr* name, int namelen );
135 - int listen( SOCKET s, int backlog );
136 - SOCKET accept( SOCKET s, struct sockaddr* addr, int* addrlen );
137 - int connect( SOCKET s, const struct sockaddr* name, int namelen );
138 - int send( SOCKET s, const char* buf, int len, int flags );
139 - int recv( SOCKET s, char* buf, int len, int flags );
140 </pre>
141
142
143 <li>
144 Test cases for WSAStartup():
145 rizwank 1.1
146 <pre>
147 1. Request the following Winsock versions for WORD wVersionRequested:
148 a. 1.0
149 b. 1.1
150 c. 2.0
151
152 Using the different combinations, generate the error code
153 WSAVERNOTSUPPORTED, and proper version requests.
154
155 2. Pass in a bad pointer for lpWSAData, and generate WSAEFAULT error.
156 3. Remove the Windows Sockets DLL file to attempt to generate the
157 WSASYSNOTREADY error.
158 4. Instantiate two network operations to generate WSAEINPROGRESS
159 error and possibly the WSAEPROCLIM error.
160 5. Record multiple successful calls and verify return code 0.
161 </pre>
162 </li>
163
164
165
166 rizwank 1.1 <li>
167 Test cases for socket():
168 <pre>
169 1 Success - return socket descriptor(no way to verify except that
170 it's != INVALID_SOCKET)
171 a. TCP
172 b. UDP
173 2. Fail - return INVALID_SOCKET
174 a. WAStartup was not called(or failed)
175 b. invalid address
176 c. no more socket descriptors(will try to implement but may not
177 be able to)
178 d. no more buffer(same as above)
179 e. invalid protocol
180 </pre>
181 </li>
182
183
184 <li>
185 Test cases for bind():
186 <pre>
187 rizwank 1.1 1. Successful Bind
188 a. TCP
189 b. UDP
190 2. Error
191 a. return SOCKET_ERROR
192 i. invalud SOCKET descriptor
193 ii. invalid sockaddr struct
194 iii. invalid namelen
195 iv. unsuccessful WAStartup called
196 v. tried to open UDP when SO_BROADCAST is not enabled
197 vi. address is already bound to another process
198 vii. invalud address
199 viii. socket already bound to another address
200 ix. too many connections/not enough buffer -> not sure if this can be done yet
201 </pre>
202 </li>
203
204
205 <li>
206 Test cases for listen():
207 <pre>
208 rizwank 1.1 1 success - return 0
209 a. TCP
210 b. UDP
211 2. fail - return SOCKET_ERROR
212 a. WAStartup not called successfully
213 b. socket's local address is already in use
214 c. socket not bound with bind()
215 d. socket is already connected
216 e. no more socket descriptors available
217 f. No more buffer space
218 g. invalid descriptor
219 </pre>
220 </li>
221
222
223 <li>
224 Test cases for accept():
225 <pre>
226 1. Success - returns a value of type SOCKET (descriptor for new socket)
227 a. TCP
228 b. UDP
229 rizwank 1.1 2. Failure - returns a value of INVALID_SOCKET
230 a. Call before initialization, generating WSANOTINITIALISED error.
231 b. Use a small addrlen for WSAEFAULT error.
232 c. Call during a blocking sockets call to get WSAEINTR error.
233 d. Simulate network failure to get WSAENETDOWN error.
234 e. Use an invalid socket to generate WSAEOPNOTSUPP error.
235 f. Flood the buffer to generate WSAENOBUFS error.
236 </pre>
237 </li>
238
239
240 <li>
241 Test cases for connect():
242 <pre>
243 1. Success - 0 returned
244 a. TCP
245 b. UDP
246 2. Fail - SOCKET_ERROR returned
247 a. WAStartup not called successfully
248 b. socket's local address already in use
249 c. invalid address
250 rizwank 1.1 d. invalud namelen
251 e. socket parameter is a listening socket
252 f. socket already connected
253 g. no buffer space
254 h. invalid descriptor
255 </pre>
256 </li>
257
258
259
260
261
262
263
264
265 <li>
266 Test cases for send():
267 <pre>
268 1. Success - returns number of bytes received(!= SOCKET_ERROR)
269 a. TCP
270 b. UDP
271 rizwank 1.1 2. Failure
272 a. Pass invalid socket descriptor to generate WSAENOTSOCK error.
273 b. Call the fucntion before initialization to generate WSANOTINITIALIZED.
274 c. Create an extremely large input buffer to generate WSAEMSGIZE error.
275 d. Simulate network failure for errors WSAENETDOWN, WSAECONNRESET, WSETIMEDOUT
276 e. Call during blocking Windows call in progress to get WSAEINPROGRESS.
277 </pre>
278 </li>
279
280
281 <li>
282 Test cases for recv():
283 <pre>
284 1. Success - returns number of bytes received(!= SOCKET_ERROR)
285 a. TCP
286 b. UDP
287 for each try to test cases where you get 0 byte(connection closed) and non-0 bytes received
288 2. Fail - returns SOCKET_ERROR
289 a. WAStartup was not called successfullly
290 b. socket not connected
291 c. buf not allocated properly
292 rizwank 1.1 d. invalid descriptor
293 e. socket was marked 'non-blocking' even though recv() will block
294 f. message was too large(truncated)
295 g. bind was not successfully called earlier
296 </pre>
297 </li>
298
|
315 rizwank 1.2 <p />
316 <strong>2005-02-18:</strong>
317 <ul>
318 <li>The debugging phase is taking longer than expected, mainly because our
319 tests have to call 9 APIs, which is considerably more than Dan's
320 original suggestion of 2 or 3. We also underestimated the complexity of testing asynchronous I/O with
321 winsock, and have been trying to resolve asynchronous-specific API issues. Finally, we've spent some time trying to simulate inputs/environments for certain
322 tests cases that are not straight-forward (for example: network is not
323 ready; too many processes accessing a socket, etc)
324
325 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.
326
327
328 </li>
329 </uL>
330
331
332 <p />
333 <strong>2005-02-22:</strong>
334 <ul>
335 <li>
336 rizwank 1.2 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. More updates on this soon.
337 </li>
|