refs bug 362924 - added test case for cleanup thread destruction.
diff --git a/tests/org.eclipse.rap.rwt.supplemental.fileupload.test/src/org/eclipse/rap/rwt/supplemental/fileupload/internal/FileUploadServiceHandler_Test.java b/tests/org.eclipse.rap.rwt.supplemental.fileupload.test/src/org/eclipse/rap/rwt/supplemental/fileupload/internal/FileUploadServiceHandler_Test.java
index 0554f87..e528861 100644
--- a/tests/org.eclipse.rap.rwt.supplemental.fileupload.test/src/org/eclipse/rap/rwt/supplemental/fileupload/internal/FileUploadServiceHandler_Test.java
+++ b/tests/org.eclipse.rap.rwt.supplemental.fileupload.test/src/org/eclipse/rap/rwt/supplemental/fileupload/internal/FileUploadServiceHandler_Test.java
@@ -11,6 +11,8 @@
 package org.eclipse.rap.rwt.supplemental.fileupload.internal;
 
 import java.io.File;
+import java.util.Iterator;
+import java.util.Set;
 
 import javax.servlet.http.HttpServletResponse;
 
@@ -199,6 +201,35 @@
     assertEquals( head + "testToken", FileUploadServiceHandler.getUrl( "testToken" ) );
     assertEquals( head + "123456789abcdef", FileUploadServiceHandler.getUrl( "123456789abcdef" ) );
   }
+  
+  public void testFileUploadCleanupThreadDestroy() throws Exception {
+    //Ensure no reapers running from previous tests
+    System.gc();
+    assertNull( findFileReaper() );
+    testUploadShortFile();
+    //Test for the presence of the file reaper thread
+    assertNotNull( findFileReaper() );
+    //Upload cleanup handler will be invoked upon rwt session destroy
+    RWT.getRequest().getSession().invalidate();
+    //File reaper is destroyed upon garbage collection
+    System.gc();
+    //Allow file reaper to die
+    Thread.sleep(100);
+    assertNull( findFileReaper() );
+  }
+  
+  private Thread findFileReaper () {
+    Set threadSet = Thread.getAllStackTraces().keySet();
+    Iterator threadItr = threadSet.iterator();
+    Thread fileReaper = null;
+    while ( threadItr.hasNext() && fileReaper == null ) {
+      Thread t = ( Thread ) threadItr.next();
+      if ( t.getName().equals( "File Reaper" ) ) {
+        fileReaper = t;
+      }
+    }
+    return fileReaper;
+  }
 
   private void fakeUploadRequest( String token ) {
     FileUploadTestUtil.fakeUploadRequest( token, "TestContent", "text/plain", "test.txt" );