|
4 | 4 | using ICSharpCode.SharpZipLib.Tests.TestSupport;
|
5 | 5 | using NUnit.Framework;
|
6 | 6 | using System.Threading;
|
| 7 | +using System.Diagnostics; |
7 | 8 |
|
8 | 9 | namespace ICSharpCode.SharpZipLib.Tests.GZip
|
9 | 10 | {
|
@@ -280,90 +281,32 @@ public void TrailingGarbage()
|
280 | 281 |
|
281 | 282 | [Test]
|
282 | 283 | [Category("GZip")]
|
| 284 | + [Category("Performance")] |
283 | 285 | [Category("Long Running")]
|
284 |
| - [Ignore("TODO : Fix this")] |
285 |
| - public void BigStream() |
| 286 | + [Explicit("Long Running")] |
| 287 | + public void WriteThroughput() |
286 | 288 | {
|
287 |
| - window_ = new WindowedStream(0x3ffff); |
288 |
| - outStream_ = new GZipOutputStream(window_); |
289 |
| - inStream_ = new GZipInputStream(window_); |
| 289 | + PerformanceTesting.TestWrite( |
| 290 | + size: TestDataSize.Large, |
| 291 | + output: w => new GZipOutputStream(w) |
| 292 | + ); |
290 | 293 |
|
291 |
| - long target = 0x10000000; |
292 |
| - readTarget_ = writeTarget_ = target; |
293 |
| - |
294 |
| - Thread reader = new Thread(Reader); |
295 |
| - reader.Name = "Reader"; |
296 |
| - reader.Start(); |
297 |
| - |
298 |
| - Thread writer = new Thread(Writer); |
299 |
| - writer.Name = "Writer"; |
300 |
| - |
301 |
| - DateTime startTime = DateTime.Now; |
302 |
| - writer.Start(); |
303 |
| - |
304 |
| - writer.Join(); |
305 |
| - reader.Join(); |
306 |
| - |
307 |
| - DateTime endTime = DateTime.Now; |
308 |
| - |
309 |
| - TimeSpan span = endTime - startTime; |
310 |
| - Console.WriteLine("Time {0} processes {1} KB/Sec", span, (target / 1024) / span.TotalSeconds); |
311 | 294 | }
|
312 | 295 |
|
313 |
| - void Reader() |
| 296 | + [Test] |
| 297 | + [Category("GZip")] |
| 298 | + [Category("Performance")] |
| 299 | + [Explicit("Long Running")] |
| 300 | + public void ReadWriteThroughput() |
314 | 301 | {
|
315 |
| - const int Size = 8192; |
316 |
| - int readBytes = 1; |
317 |
| - byte[] buffer = new byte[Size]; |
318 |
| - |
319 |
| - long passifierLevel = readTarget_ - 0x10000000; |
320 |
| - |
321 |
| - while ((readTarget_ > 0) && (readBytes > 0)) { |
322 |
| - int count = Size; |
323 |
| - if (count > readTarget_) { |
324 |
| - count = (int)readTarget_; |
325 |
| - } |
326 |
| - |
327 |
| - readBytes = inStream_.Read(buffer, 0, count); |
328 |
| - readTarget_ -= readBytes; |
| 302 | + PerformanceTesting.TestReadWrite( |
| 303 | + size: TestDataSize.Large, |
| 304 | + input: w => new GZipInputStream(w), |
| 305 | + output: w => new GZipOutputStream(w) |
| 306 | + ); |
329 | 307 |
|
330 |
| - if (readTarget_ <= passifierLevel) { |
331 |
| - Console.WriteLine("Reader {0} bytes remaining", readTarget_); |
332 |
| - passifierLevel = readTarget_ - 0x10000000; |
333 |
| - } |
334 |
| - } |
335 |
| - |
336 |
| - Assert.IsTrue(window_.IsClosed, "Window should be closed"); |
337 |
| - |
338 |
| - // This shouldnt read any data but should read the footer |
339 |
| - readBytes = inStream_.Read(buffer, 0, 1); |
340 |
| - Assert.AreEqual(0, readBytes, "Stream should be empty"); |
341 |
| - Assert.AreEqual(0, window_.Length, "Window should be closed"); |
342 |
| - inStream_.Close(); |
343 | 308 | }
|
344 | 309 |
|
345 |
| - void Writer() |
346 |
| - { |
347 |
| - const int Size = 8192; |
348 |
| - |
349 |
| - byte[] buffer = new byte[Size]; |
350 |
| - |
351 |
| - while (writeTarget_ > 0) { |
352 |
| - int thisTime = Size; |
353 |
| - if (thisTime > writeTarget_) { |
354 |
| - thisTime = (int)writeTarget_; |
355 |
| - } |
356 |
| - |
357 |
| - outStream_.Write(buffer, 0, thisTime); |
358 |
| - writeTarget_ -= thisTime; |
359 |
| - } |
360 |
| - outStream_.Close(); |
361 |
| - } |
362 | 310 |
|
363 |
| - WindowedStream window_; |
364 |
| - GZipOutputStream outStream_; |
365 |
| - GZipInputStream inStream_; |
366 |
| - long readTarget_; |
367 |
| - long writeTarget_; |
368 | 311 | }
|
369 | 312 | }
|
0 commit comments