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" );