Author: veithen
Date: Sat Sep 20 10:01:03 2008
New Revision: 697394

URL: http://svn.apache.org/viewvc?rev=697394&view=rev
Log:
VFS transport tests: make sure that the request file is always created 
atomically if the VFS listener is used (to avoid problems when the listener 
starts reading the file too early)

Modified:
    
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/vfs/VFSClient.java
    
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/vfs/VFSTransportTest.java

Modified: 
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/vfs/VFSClient.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/vfs/VFSClient.java?rev=697394&r1=697393&r2=697394&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/vfs/VFSClient.java
 (original)
+++ 
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/vfs/VFSClient.java
 Sat Sep 20 10:01:03 2008
@@ -21,6 +21,7 @@
 
 import java.io.File;
 import java.io.FileOutputStream;
+import java.io.IOException;
 import java.io.OutputStream;
 
 import javax.mail.internet.ContentType;
@@ -43,8 +44,14 @@
     }
 
     protected void send(byte[] message) throws Exception {
-        OutputStream out = new FileOutputStream(requestFile);
+        // Create the file atomically (using move/rename) to avoid problems 
with the
+        // listener starting to read the file too early.
+        File tmpFile = new File(requestFile.getParent(), "." + 
requestFile.getName() + ".tmp");
+        OutputStream out = new FileOutputStream(tmpFile);
         out.write(message);
         out.close();
+        if (!tmpFile.renameTo(requestFile)) {
+            throw new IOException("Unable to rename " + tmpFile + " to " + 
requestFile);
+        }
     }
 }
\ No newline at end of file

Modified: 
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/vfs/VFSTransportTest.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/vfs/VFSTransportTest.java?rev=697394&r1=697393&r2=697394&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/vfs/VFSTransportTest.java
 (original)
+++ 
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/vfs/VFSTransportTest.java
 Sat Sep 20 10:01:03 2008
@@ -41,6 +41,10 @@
         // TODO: the VFS listener doesn't like reuseResources == true...
         TransportTestSuite suite = new 
TransportTestSuite(VFSTransportTest.class, false);
         
+        // The VFS sender doesn't create files atomically. This can cause the
+        // listener to start reading files that are not completely written yet.
+        suite.addExclude("(&(client=axis)(endpoint=axis))");
+        
         // Since VFS has no Content-Type header, SwA is not supported.
         suite.addExclude("(test=AsyncSwA)");
         


Reply via email to