You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by og...@apache.org on 2008/08/02 00:55:48 UTC
svn commit: r681887 [8/10] - in /maven/sandbox/trunk/mercury:
mercury-artifact/ mercury-artifact/src/ mercury-artifact/src/main/
mercury-artifact/src/main/java/ mercury-artifact/src/main/java/org/
mercury-artifact/src/main/java/org/apache/ mercury-arti...
Added: maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/java/org/apache/maven/mercury/spi/http/client/JettyDeployerTest.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/java/org/apache/maven/mercury/spi/http/client/JettyDeployerTest.java?rev=681887&view=auto
==============================================================================
--- maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/java/org/apache/maven/mercury/spi/http/client/JettyDeployerTest.java (added)
+++ maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/java/org/apache/maven/mercury/spi/http/client/JettyDeployerTest.java Fri Aug 1 15:55:40 2008
@@ -0,0 +1,445 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.maven.mercury.spi.http.client;
+
+import java.io.BufferedReader;
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.FileReader;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.LineNumberReader;
+import java.io.OutputStream;
+import java.net.URL;
+import java.util.HashSet;
+import java.util.Set;
+
+import junit.framework.TestCase;
+
+import org.apache.maven.mercury.spi.http.client.deploy.DefaultDeployer;
+import org.apache.maven.mercury.spi.http.client.deploy.DeployRequest;
+import org.apache.maven.mercury.spi.http.client.deploy.DeployResponse;
+import org.apache.maven.mercury.spi.http.server.SimplePutServer;
+import org.apache.maven.mercury.spi.http.validate.Validator;
+import org.apache.maven.mercury.transport.SHA1VerifierFactory;
+import org.apache.maven.mercury.transport.api.Binding;
+import org.apache.maven.mercury.transport.api.StreamObserverFactory;
+import org.mortbay.util.IO;
+
+public class JettyDeployerTest extends TestCase
+{
+ public String _HOST_FRAGMENT = "http://localhost:";
+ public static final String __PATH_FRAGMENT = "/maven2/repo/";
+ protected DefaultDeployer _deployer;
+ protected SimplePutServer _putServer;
+ protected String _port;
+ File _baseDir;
+ File _file0;
+ File _file1;
+ File _file2;
+ File _file3;
+ File _file4;
+ File _file5;
+
+ org.apache.maven.mercury.transport.api.Server remoteServerType;
+ HashSet<StreamObserverFactory> factories;
+
+ private class DeployRequestImpl implements DeployRequest
+ {
+ private Set<Binding> _bindings = new HashSet<Binding>();
+ private boolean _failFast;
+
+ public Set<Validator> getValidators()
+ {
+ return null;
+ }
+ public void setBindings(Set<Binding> bindings)
+ {
+ _bindings=bindings;
+ }
+ public Set<Binding> getBindings()
+ {
+ return _bindings;
+ }
+
+ public boolean isFailFast()
+ {
+ return _failFast;
+ }
+
+ public void setFailFast (boolean f)
+ {
+ _failFast=f;
+ }
+ };
+
+ public JettyDeployerTest () throws Exception
+ {
+ //copy the test files from the classpath to disk
+ _baseDir = File.createTempFile("deployerTestFiles",null);
+ _baseDir.delete();
+ _baseDir.mkdir();
+ _baseDir.deleteOnExit();
+ URL list = JettyDeployerTest.class.getResource("/testRepo/");
+ LineNumberReader in = new LineNumberReader(new InputStreamReader(list.openStream()));
+ String file=null;
+ while ((file=in.readLine())!=null)
+ {
+ if (!file.startsWith("file"))
+ continue;
+ OutputStream out=new FileOutputStream(new File(_baseDir,file));
+ IO.copy(JettyDeployerTest.class.getResource("/testRepo/"+file).openStream(),out);
+ out.close();
+ }
+ }
+
+ protected void setUp() throws Exception
+ {
+
+ _deployer = new DefaultDeployer();
+ _putServer = new SimplePutServer();
+ _putServer.start();
+ _port = String.valueOf(_putServer.getPort());
+ setUpVerifiers();
+ super.setUp();
+ }
+
+ protected void setUpVerifiers () throws Exception
+ {
+ HashSet<org.apache.maven.mercury.transport.api.Server> remoteServerTypes = new HashSet<org.apache.maven.mercury.transport.api.Server>();
+ remoteServerType = new org.apache.maven.mercury.transport.api.Server( "test", new URL(_HOST_FRAGMENT+_port));
+ factories = new HashSet<StreamObserverFactory>();
+ remoteServerTypes.add(remoteServerType);
+ _deployer.setServers(remoteServerTypes);
+ }
+
+ protected void tearDown() throws Exception
+ {
+ _putServer.stop();
+ _putServer.destroy();
+ super.tearDown();
+ }
+
+ public void testUploadOKWithChecksums () throws Exception
+ {
+ HashSet<Binding> bindings = new HashSet<Binding>();
+ DeployRequestImpl request = new DeployRequestImpl();
+ factories.add(new SHA1VerifierFactory(false, true)); //!lenient, sufficient
+ remoteServerType.setStreamObserverFactories(factories);
+
+ _file0 = new File(_baseDir, "file0.txt");
+ _file1 = new File(_baseDir, "file1.txt");
+ _file2 = new File(_baseDir, "file2.txt");
+ _file3 = new File(_baseDir, "file3.jar");
+ _file4 = new File(_baseDir, "file4.so");
+ _file5 = new File(_baseDir, "file5.jpg");
+ Binding binding0 = new Binding(new URL(_HOST_FRAGMENT+_port+__PATH_FRAGMENT+"file0.txt"), _file0);
+ Binding binding3 = new Binding(new URL(_HOST_FRAGMENT+_port+__PATH_FRAGMENT+"file3.jar"), _file3);
+ Binding binding4 = new Binding(new URL(_HOST_FRAGMENT+_port+__PATH_FRAGMENT+"file4.so"), _file4);
+ Binding binding5 = new Binding(new URL(_HOST_FRAGMENT+_port+__PATH_FRAGMENT+"file5.jpg"), _file5);
+
+ bindings.add(binding0);
+ bindings.add(binding3);
+ bindings.add(binding4);
+ bindings.add(binding5);
+
+ request.setBindings(bindings);
+
+ DeployResponse response = _deployer.deploy(request);
+
+ for (HttpClientException t:response.getExceptions())
+ t.printStackTrace();
+
+ assertEquals(0, response.getExceptions().size());
+ File f0 = new File(_putServer.getPutDir(), "file0.txt");
+ File f0cs = new File (_putServer.getPutDir(), "file0.txt.sha1");
+ assertTrue (f0.exists());
+ assertTrue (f0cs.exists());
+
+ File f3 = new File(_putServer.getPutDir(), "file3.jar");
+ File f3cs = new File (_putServer.getPutDir(), "file3.jar.sha1");
+ assertTrue(f3.exists());
+ assertTrue(f3cs.exists());
+
+ File f4 = new File(_putServer.getPutDir(), "file4.so");
+ File f4cs = new File (_putServer.getPutDir(), "file4.so.sha1");
+ assertTrue (f4.exists());
+ assertTrue (f4cs.exists());
+
+ File f5 = new File(_putServer.getPutDir(), "file5.jpg");
+ File f5cs = new File (_putServer.getPutDir(), "file5.jpg.sha1");
+ assertTrue (f5.exists());
+ assertTrue (f5cs.exists());
+ }
+ /* This test duplicates the one above unless we allow for checksum files to
+ * be pre-existing
+
+ public void testUploadOKMissingChecksum () throws Exception
+ {
+ HashSet<Binding> bindings = new HashSet<Binding>();
+ DeployRequestImpl request = new DeployRequestImpl();
+
+ _file0 = new File(_baseDir, "file0.txt");
+ _file1 = new File(_baseDir, "file1.txt");
+ _file2 = new File(_baseDir, "file2.txt");
+ _file3 = new File(_baseDir, "file3.jar");
+ _file4 = new File(_baseDir, "file4.so");
+ _file5 = new File(_baseDir, "file5.jpg");
+
+ _binding0.setRemoteResource(_HOST_FRAGMENT+_port+__PATH_FRAGMENT+"file0.txt");
+ _binding0.setLocalFile(_file0);
+ bindings.add(_binding0);
+
+ //TODO Test Lenient
+ _binding1.setRemoteResource(_HOST_FRAGMENT+_port+__PATH_FRAGMENT+"file1.txt"); //has no sha file
+ _binding1.setLocalFile(_file1);
+ //_binding1.setLenientChecksum(true);
+ bindings.add(_binding1);
+
+ _binding3.setRemoteResource(_HOST_FRAGMENT+_port+__PATH_FRAGMENT+"file3.jar");
+ _binding3.setLocalFile(_file3);
+ bindings.add(_binding3);
+
+ _binding4.setRemoteResource(_HOST_FRAGMENT+_port+__PATH_FRAGMENT+"file4.so");
+ _binding4.setLocalFile(_file4);
+ bindings.add(_binding4);
+
+ _binding5.setRemoteResource(_HOST_FRAGMENT+_port+__PATH_FRAGMENT+"file5.jpg");
+ _binding5.setLocalFile(_file5);
+ bindings.add(_binding5);
+
+ request.setBindings(bindings);
+
+ DeployResponse response = _deployer.deploy(request);
+
+ //for (MercuryException t:response.getExceptions())
+ // t.printStackTrace();
+
+ assertEquals(10, _putServer.getPutDir().list().length);
+ assertEquals(0, response.getExceptions().size());
+ File f0 = new File(_putServer.getPutDir(), "file0.txt");
+ File f0cs = new File (_putServer.getPutDir(), "file0.txt.sha1");
+ assertTrue (f0.exists());
+ assertTrue (f0cs.exists());
+
+ File f1 = new File(_putServer.getPutDir(), "file1.txt");
+ File f1cs = new File(_putServer.getPutDir(), "file1.txt.sha1");
+ assertTrue(f1.exists());
+ assertTrue(f1cs.exists());
+
+ File f3 = new File(_putServer.getPutDir(), "file3.jar");
+ File f3cs = new File (_putServer.getPutDir(), "file3.jar.sha1");
+ assertTrue(f3.exists());
+ assertTrue(f3cs.exists());
+
+ File f4 = new File(_putServer.getPutDir(), "file4.so");
+ File f4cs = new File (_putServer.getPutDir(), "file4.so.sha1");
+ assertTrue (f4.exists());
+ assertTrue (f4cs.exists());
+
+ File f5 = new File(_putServer.getPutDir(), "file5.jpg");
+ File f5cs = new File (_putServer.getPutDir(), "file5.jpg.sha1");
+ assertTrue (f5.exists());
+ assertTrue (f5cs.exists());
+ }
+ */
+
+
+
+ public void testUploadFail () throws Exception
+ {
+ factories.add(new SHA1VerifierFactory(false, true)); //!lenient, sufficient
+ remoteServerType.setStreamObserverFactories(factories);
+ HashSet<Binding> bindings = new HashSet<Binding>();
+ DeployRequestImpl request = new DeployRequestImpl();
+
+ _file0 = new File(_baseDir, "file0.txt");
+ _file1 = new File(_baseDir, "file1.txt");
+ _file2 = new File(_baseDir, "file2.txt");
+ _file3 = new File(_baseDir, "file3.jar");
+ _file4 = new File(_baseDir, "file4.so");
+ _file5 = new File(_baseDir, "file5.jpg");
+ File file6 = new File(_baseDir, "file6.txt");//doesn't exist
+ File file7 = new File(_baseDir, "file7.txt");//doesn't exist
+
+ Binding binding0 = new Binding(new URL(_HOST_FRAGMENT+_port+__PATH_FRAGMENT+"file0.txt"), _file0);
+ bindings.add(binding0);
+
+ Binding binding3 = new Binding(new URL(_HOST_FRAGMENT+_port+__PATH_FRAGMENT+"file3.jar"), _file3);
+ bindings.add(binding3);
+
+ Binding binding4 = new Binding(new URL(_HOST_FRAGMENT+_port+__PATH_FRAGMENT+"file4.so"), _file4);
+ bindings.add(binding4);
+
+ Binding binding5 = new Binding(new URL(_HOST_FRAGMENT+_port+__PATH_FRAGMENT+"file5.jpg"), _file5);
+ bindings.add(binding5);
+
+ Binding binding6 = new Binding(new URL(_HOST_FRAGMENT+_port+__PATH_FRAGMENT+"file6.txt"), file6);
+ bindings.add(binding6);
+
+ Binding binding7 = new Binding(new URL(_HOST_FRAGMENT+_port+__PATH_FRAGMENT+"file7.txt"), file7);
+ bindings.add(binding7);
+
+ request.setBindings(bindings);
+ DeployResponse response = _deployer.deploy(request);
+
+ //for (MercuryException t:response.getExceptions())
+ // t.printStackTrace();
+
+ //as the serverside is not running the mercury enhancements to the put filter, then
+ //all the files except for the 2 which don't exists should have been uploaded
+ assertEquals(2, response.getExceptions().size());
+ File f0 = new File(_putServer.getPutDir(), "file0.txt");
+ File f0cs = new File (_putServer.getPutDir(), "file0.txt.sha1");
+ assertTrue (f0.exists());
+ assertTrue (f0cs.exists());
+
+ File f3 = new File(_putServer.getPutDir(), "file3.jar");
+ File f3cs = new File (_putServer.getPutDir(), "file3.jar.sha1");
+ assertTrue(f3.exists());
+ assertTrue(f3cs.exists());
+
+ File f4 = new File(_putServer.getPutDir(), "file4.so");
+ File f4cs = new File (_putServer.getPutDir(), "file4.so.sha1");
+ assertTrue (f4.exists());
+ assertTrue (f4cs.exists());
+
+ File f5 = new File(_putServer.getPutDir(), "file5.jpg");
+ File f5cs = new File (_putServer.getPutDir(), "file5.jpg.sha1");
+ assertTrue (f5.exists());
+ assertTrue (f5cs.exists());
+
+ File f6 = new File(_putServer.getPutDir(), "file6.txt");
+ File f6cs = new File (_putServer.getPutDir(), "file6.txt.sha1");
+ assertFalse (f6.exists());
+ assertFalse (f6cs.exists());
+
+ File f7 = new File(_putServer.getPutDir(), "file7.txt");
+ File f7cs = new File (_putServer.getPutDir(), "file7.txt.sha1");
+ assertFalse (f7.exists());
+ assertFalse (f7cs.exists());
+ }
+
+ public void testUploadFailFast () throws Exception
+ {
+ factories.add(new SHA1VerifierFactory(false, true)); //!lenient, sufficient
+ remoteServerType.setStreamObserverFactories(factories);
+ HashSet<Binding> bindings = new HashSet<Binding>();
+ DeployRequestImpl request = new DeployRequestImpl();
+
+ _file0 = new File(_baseDir, "file0.txt");
+ _file1 = new File(_baseDir, "file1.txt");
+ _file2 = new File(_baseDir, "file2.txt");
+ _file3 = new File(_baseDir, "file3.jar");
+ _file4 = new File(_baseDir, "file4.so");
+ _file5 = new File(_baseDir, "file5.jpg");
+ File file6 = new File(_baseDir, "file6.txt");//doesn't exist
+ File file7 = new File(_baseDir, "file7.txt");//doesn't exist
+
+ Binding binding0 = new Binding(new URL(_HOST_FRAGMENT+_port+__PATH_FRAGMENT+"file0.txt"), _file0);
+ bindings.add(binding0);
+
+ Binding binding3 = new Binding(new URL(_HOST_FRAGMENT+_port+__PATH_FRAGMENT+"file3.jar"), _file3);
+ bindings.add(binding3);
+
+ Binding binding4 = new Binding(new URL(_HOST_FRAGMENT+_port+__PATH_FRAGMENT+"file4.so"), _file4);
+ bindings.add(binding4);
+
+ Binding binding5 = new Binding(new URL(_HOST_FRAGMENT+_port+__PATH_FRAGMENT+"file5.jpg"), _file5);
+ bindings.add(binding5);
+
+ Binding binding6 = new Binding(new URL(_HOST_FRAGMENT+_port+__PATH_FRAGMENT+"file6.txt"), file6);
+ bindings.add(binding6);
+
+ Binding binding7 = new Binding(new URL(_HOST_FRAGMENT+_port+__PATH_FRAGMENT+"file7.txt"), file7);
+ bindings.add(binding7);
+
+ request.setBindings(bindings);
+ request.setFailFast(true);
+ DeployResponse response = _deployer.deploy(request);
+
+ //for (MercuryException t:response.getExceptions())
+ // t.printStackTrace();
+
+ //with failfast==true and the server side not running the mercury enhancements, we have no way to know
+ //how many files actually did get uploaded, but the first exception should cause it to stop
+ assertEquals(1, response.getExceptions().size());
+
+ File f6 = new File(_putServer.getPutDir(), "file6.txt");
+ File f6cs = new File (_putServer.getPutDir(), "file6.txt.sha1");
+ assertFalse (f6.exists());
+ assertFalse (f6cs.exists());
+ File f7 = new File(_putServer.getPutDir(), "file7.txt");
+ File f7cs = new File (_putServer.getPutDir(), "file7.txt.sha1");
+ assertFalse (f7.exists());
+ assertFalse (f7cs.exists());
+
+
+ Thread.sleep(500);
+ }
+
+ public void testMemoryDeployment () throws Exception
+ {
+ factories.add(new SHA1VerifierFactory(false, true)); //!lenient, sufficient
+ remoteServerType.setStreamObserverFactories(factories);
+ HashSet<Binding> bindings = new HashSet<Binding>();
+ DeployRequestImpl request = new DeployRequestImpl();
+
+ String s0 = "memory contents0";
+ InputStream is0 = new ByteArrayInputStream(s0.getBytes());
+ Binding binding0 = new Binding(new URL(_HOST_FRAGMENT+_port+__PATH_FRAGMENT+"file0.txt"), is0);
+ bindings.add(binding0);
+
+ String s5 = "memory contents5";
+ InputStream is5 = new ByteArrayInputStream(s5.getBytes());
+ Binding binding5 = new Binding(new URL(_HOST_FRAGMENT+_port+__PATH_FRAGMENT+"file5.jpg"), is5);
+ bindings.add(binding5);
+
+ request.setBindings(bindings);
+ request.setFailFast(true);
+ DeployResponse response = _deployer.deploy(request);
+
+ //for (MercuryException t:response.getExceptions())
+ // t.printStackTrace();
+
+
+ assertEquals(0, response.getExceptions().size());
+
+
+ File f0 = new File(_putServer.getPutDir(), "file0.txt");
+ File f0cs = new File (_putServer.getPutDir(), "file0.txt.sha1");
+ assertTrue (f0.exists());
+ BufferedReader reader = new BufferedReader(new FileReader(f0));
+ String s = reader.readLine();
+ assertEquals(s0, s.trim());
+ assertTrue (f0cs.exists());
+
+ File f5 = new File(_putServer.getPutDir(), "file5.jpg");
+ File f5cs = new File (_putServer.getPutDir(), "file5.jpg.sha1");
+ assertTrue (f5.exists());
+ reader = new BufferedReader(new FileReader(f5));
+ s = reader.readLine();
+ assertEquals(s5, s.trim());
+ assertTrue (f5cs.exists());
+ }
+
+}
Added: maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/java/org/apache/maven/mercury/spi/http/client/JettyRetrieverTest.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/java/org/apache/maven/mercury/spi/http/client/JettyRetrieverTest.java?rev=681887&view=auto
==============================================================================
--- maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/java/org/apache/maven/mercury/spi/http/client/JettyRetrieverTest.java (added)
+++ maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/java/org/apache/maven/mercury/spi/http/client/JettyRetrieverTest.java Fri Aug 1 15:55:40 2008
@@ -0,0 +1,492 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.maven.mercury.spi.http.client;
+
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.InputStream;
+import java.net.URL;
+import java.util.HashSet;
+import java.util.List;
+
+import junit.framework.TestCase;
+
+import org.apache.maven.mercury.spi.http.client.retrieve.DefaultRetrievalRequest;
+import org.apache.maven.mercury.spi.http.client.retrieve.DefaultRetriever;
+import org.apache.maven.mercury.spi.http.client.retrieve.RetrievalResponse;
+import org.apache.maven.mercury.spi.http.server.SimpleTestServer;
+import org.apache.maven.mercury.spi.http.validate.Validator;
+import org.apache.maven.mercury.transport.SHA1VerifierFactory;
+import org.apache.maven.mercury.transport.api.Binding;
+import org.apache.maven.mercury.transport.api.Server;
+import org.apache.maven.mercury.transport.api.StreamObserverFactory;
+import org.mortbay.util.IO;
+
+public class JettyRetrieverTest extends TestCase
+{
+ public static final String __HOST_FRAGMENT = "http://localhost:";
+ public static final String __PATH_FRAGMENT = "/maven2/repo/";
+ public String _port;
+ File file0;
+ File file1;
+ File file2;
+ File file3;
+ File file4;
+ File file5;
+ DefaultRetriever retriever;
+ SimpleTestServer server;
+ Server remoteServerType;
+ HashSet<StreamObserverFactory> factories;
+
+
+ public class TxtValidator implements Validator
+ {
+
+ public String getFileExtension()
+ {
+ return "txt";
+ }
+
+ public boolean validate(String stagedFile, List<String> errors)
+ {
+ if (stagedFile==null)
+ return true;
+ int i = stagedFile.lastIndexOf(".");
+ String ext = (i>=0?stagedFile.substring(i+1):"");
+ if ("txt".equalsIgnoreCase(ext))
+ {
+ //just accept any file contents
+ File f = new File(stagedFile);
+ return f.isFile();
+ }
+
+ return false;
+ }
+
+ }
+
+ public class AlwaysFalseTxtValidator extends TxtValidator
+ {
+ public String getFileExtension()
+ {
+ return "txt";
+ }
+
+ public boolean validate(String stagedFile, List<String> errors)
+ {
+ errors.add("Always false");
+ return false;
+ }
+ }
+
+ public void setUp ()
+ throws Exception
+ {
+ server = new SimpleTestServer();
+ server.start();
+ _port=String.valueOf(server.getPort());
+
+ HashSet<Server> remoteServerTypes = new HashSet<Server>();
+ remoteServerType = new Server( "test", new URL(__HOST_FRAGMENT+_port));
+ factories = new HashSet<StreamObserverFactory>();
+
+ remoteServerTypes.add(remoteServerType);
+
+ retriever = new DefaultRetriever();
+ retriever.setServers(remoteServerTypes);
+ }
+
+
+ protected void tearDown() throws Exception
+ {
+ super.tearDown();
+ server.stop();
+ server.destroy();
+ }
+
+
+
+ public File mkTempDir()
+ throws Exception
+ {
+ File dir = File.createTempFile("mercury", "tmp");
+ dir.delete();
+ dir.mkdir();
+ dir.deleteOnExit();
+ assert dir.exists();
+ assert dir.isDirectory();
+ assert dir.canWrite();
+ return dir;
+ }
+
+ public void testSyncRetrievalAllGood()
+ throws Exception
+ {
+ factories.add(new SHA1VerifierFactory(false, true)); //!lenient, sufficient
+ remoteServerType.setStreamObserverFactories(factories);
+
+ //make local dir to put stuff in
+ final File dir = mkTempDir();
+ DefaultRetrievalRequest request = new DefaultRetrievalRequest();
+ HashSet<Binding> bindings = new HashSet<Binding>();
+
+ file0 = new File(dir, "file0.txt");
+ file1 = new File(dir, "file1.txt");
+ file2 = new File(dir, "file2.txt");
+ file3 = new File(dir, "file3.jar");
+ file4 = new File(dir, "file4.so");
+ file5 = new File(dir, "file5.jpg");
+ Binding binding0 = new Binding(new URL(__HOST_FRAGMENT+_port+__PATH_FRAGMENT+"file0.txt"), file0);
+ bindings.add(binding0);
+
+ Binding binding1 = new Binding(new URL(__HOST_FRAGMENT+_port+__PATH_FRAGMENT+"file1.txt"),file1); //has no sha file
+ bindings.add(binding1);
+
+ Binding binding2 = new Binding(new URL(__HOST_FRAGMENT+_port+__PATH_FRAGMENT+"file2.txt"), file2); //has wrong sha file
+ bindings.add(binding2);
+
+ Binding binding3 = new Binding(new URL(__HOST_FRAGMENT+_port+__PATH_FRAGMENT+"file3.jar"), file3);
+ bindings.add(binding3);
+
+ Binding binding4 = new Binding(new URL(__HOST_FRAGMENT+_port+__PATH_FRAGMENT+"file4.so"), file4);
+ bindings.add(binding4);
+
+ Binding binding5 = new Binding(new URL(__HOST_FRAGMENT+_port+__PATH_FRAGMENT+"file5.jpg"), file5);
+ bindings.add(binding5);
+
+ request.setBindings(bindings);
+
+ RetrievalResponse response = retriever.retrieve(request);
+
+ //for (MercuryException t:response.getExceptions())
+ // t.printStackTrace();
+
+ assertEquals(2,response.getExceptions().size());
+ assertTrue(!file0.exists());
+ assertTrue(!file1.exists());
+ assertTrue(!file2.exists());
+ assertTrue(!file3.exists());
+ assertTrue(!file4.exists());
+ assertTrue(!file5.exists());
+
+ }
+
+
+ public void testSyncRetrievalFailFast()
+ throws Exception
+ {
+ factories.add(new SHA1VerifierFactory(false, true)); //!lenient, sufficient
+ remoteServerType.setStreamObserverFactories(factories);
+
+ //make local dir to put stuff in
+ final File dir = mkTempDir();
+ DefaultRetrievalRequest request = new DefaultRetrievalRequest();
+ HashSet<Binding> bindings = new HashSet<Binding>();
+
+ file0 = new File(dir, "file0.txt");
+ file1 = new File(dir, "file1.txt");
+ file2 = new File(dir, "file2.txt");
+ file3 = new File(dir, "file3.jar");
+ file4 = new File(dir, "file4.so");
+ file5 = new File(dir, "file5.jpg");
+
+ Binding binding0 = new Binding(new URL(__HOST_FRAGMENT+_port+__PATH_FRAGMENT+"file0.txt"), file0);
+ bindings.add(binding0);
+
+ Binding binding1 = new Binding(new URL(__HOST_FRAGMENT+_port+__PATH_FRAGMENT+"file1.txt"), file1); //has no sha file
+ bindings.add(binding1);
+
+ Binding binding2 = new Binding(new URL(__HOST_FRAGMENT+_port+__PATH_FRAGMENT+"file2.txt"), file2); //has wrong sha file
+ bindings.add(binding2);
+
+ Binding binding3 = new Binding(new URL(__HOST_FRAGMENT+_port+__PATH_FRAGMENT+"file3.jar"), file3);
+ bindings.add(binding3);
+
+ Binding binding4 = new Binding(new URL(__HOST_FRAGMENT+_port+__PATH_FRAGMENT+"file4.so"), file4);
+ bindings.add(binding4);
+
+ Binding binding5 = new Binding(new URL(__HOST_FRAGMENT+_port+__PATH_FRAGMENT+"file5.jpg"), file5);
+ bindings.add(binding5);
+
+
+ request = new DefaultRetrievalRequest();
+ request.setBindings(bindings);
+ request.setFailFast(true);
+
+ request.setBindings(bindings);
+
+ RetrievalResponse response = retriever.retrieve(request);
+
+ //for (MercuryException t:response.getExceptions())
+ // t.printStackTrace();
+
+ assertTrue(!file0.exists());
+ assertTrue(!file1.exists());
+ assertTrue(!file2.exists());
+ assertTrue(!file3.exists());
+ assertTrue(!file4.exists());
+ assertTrue(!file5.exists());
+
+ Thread.sleep(100);
+ }
+
+ public void testSyncRetrievalLenient0()
+ throws Exception
+ {
+ factories.add(new SHA1VerifierFactory(true, true)); //lenient, sufficient
+ remoteServerType.setStreamObserverFactories(factories);
+
+ //make local dir to put stuff in
+ final File dir = mkTempDir();
+ DefaultRetrievalRequest request = new DefaultRetrievalRequest();
+ HashSet<Binding> bindings = new HashSet<Binding>();
+
+ file0 = new File(dir, "file0.txt");
+ file1 = new File(dir, "file1.txt");
+ file2 = new File(dir, "file2.txt");
+ file3 = new File(dir, "file3.jar");
+ file4 = new File(dir, "file4.so");
+ file5 = new File(dir, "file5.jpg");
+ Binding binding0 = new Binding(new URL(__HOST_FRAGMENT+_port+__PATH_FRAGMENT+"file0.txt"), file0);
+ bindings.add(binding0);
+
+ Binding binding1 = new Binding(new URL(__HOST_FRAGMENT+_port+__PATH_FRAGMENT+"file1.txt"), file1); //has no sha file
+ bindings.add(binding1);
+
+ Binding binding2 = new Binding(new URL(__HOST_FRAGMENT+_port+__PATH_FRAGMENT+"file2.txt"), file2); //has wrong sha file
+ bindings.add(binding2);
+
+ Binding binding3 = new Binding(new URL(__HOST_FRAGMENT+_port+__PATH_FRAGMENT+"file3.jar"),file3 );
+ bindings.add(binding3);
+
+ Binding binding4 = new Binding(new URL(__HOST_FRAGMENT+_port+__PATH_FRAGMENT+"file4.so"), file4);
+ bindings.add(binding4);
+
+ Binding binding5 = new Binding(new URL(__HOST_FRAGMENT+_port+__PATH_FRAGMENT+"file5.jpg"), file5);
+ bindings.add(binding5);
+
+ request.setBindings(bindings);
+ request.setFailFast(false);
+ RetrievalResponse response = retriever.retrieve(request);
+
+ assertEquals(1,response.getExceptions().size());
+ assertEquals(binding2,response.getExceptions().iterator().next().getBinding());
+ assertTrue(!file0.exists());
+ assertTrue(!file1.exists());
+ assertTrue(!file2.exists());
+ assertTrue(!file3.exists());
+ assertTrue(!file4.exists());
+ assertTrue(!file5.exists());
+ }
+
+ public void testSyncRetrievalLenient1()
+ throws Exception
+ {
+ factories.add(new SHA1VerifierFactory(true, true)); //lenient, sufficient
+ remoteServerType.setStreamObserverFactories(factories);
+ //make local dir to put stuff in
+ final File dir = mkTempDir();
+ DefaultRetrievalRequest request = new DefaultRetrievalRequest();
+ HashSet<Binding> bindings = new HashSet<Binding>();
+
+ file0 = new File(dir, "file0.txt");
+ file1 = new File(dir, "file1.txt");
+ file2 = new File(dir, "file2.txt");
+ file3 = new File(dir, "file3.jar");
+ file4 = new File(dir, "file4.so");
+ file5 = new File(dir, "file5.jpg");
+ Binding binding0 = new Binding(new URL(__HOST_FRAGMENT+_port+__PATH_FRAGMENT+"file0.txt"), file0);
+ bindings.add(binding0);
+
+ Binding binding1 = new Binding(new URL(__HOST_FRAGMENT+_port+__PATH_FRAGMENT+"file1.txt"), file1); //has no sha file
+ bindings.add(binding1);
+
+ Binding binding3 = new Binding(new URL(__HOST_FRAGMENT+_port+__PATH_FRAGMENT+"file3.jar"), file3);
+ bindings.add(binding3);
+
+ Binding binding4 = new Binding(new URL(__HOST_FRAGMENT+_port+__PATH_FRAGMENT+"file4.so"), file4);
+ bindings.add(binding4);
+
+ Binding binding5 = new Binding(new URL(__HOST_FRAGMENT+_port+__PATH_FRAGMENT+"file5.jpg"), file5);
+ bindings.add(binding5);
+
+ request.setBindings(bindings);
+ request.setFailFast(false);
+ RetrievalResponse response = retriever.retrieve(request);
+
+ //for (MercuryException t:response.getExceptions())
+ // t.printStackTrace();
+
+ assertEquals(0,response.getExceptions().size());
+ assertTrue(file0.exists());
+ assertTrue(file1.exists());
+ assertTrue(!file2.exists());
+ assertTrue(file3.exists());
+ assertTrue(file4.exists());
+ assertTrue(file5.exists());
+
+ }
+
+ public void testValidatorSuccess() throws Exception
+ {
+ factories.add(new SHA1VerifierFactory(true, true)); //lenient, sufficient
+ remoteServerType.setStreamObserverFactories(factories);
+
+ //make local dir to put stuff in
+ final File dir = mkTempDir();
+ DefaultRetrievalRequest request = new DefaultRetrievalRequest();
+ HashSet<Binding> bindings = new HashSet<Binding>();
+ HashSet<Validator> validators = new HashSet<Validator>();
+ validators.add(new TxtValidator());
+ request.setValidators(validators);
+
+ file0 = new File(dir, "file0.txt");
+ file1 = new File(dir, "file1.txt");
+ file2 = new File(dir, "file2.txt");
+ file3 = new File(dir, "file3.jar");
+ file4 = new File(dir, "file4.so");
+ file5 = new File(dir, "file5.jpg");
+
+ Binding binding0 = new Binding(new URL(__HOST_FRAGMENT+_port+__PATH_FRAGMENT+"file0.txt"), file0);
+ bindings.add(binding0);
+
+ Binding binding1 = new Binding(new URL(__HOST_FRAGMENT+_port+__PATH_FRAGMENT+"file1.txt"), file1); //has no sha file
+ bindings.add(binding1);
+
+ Binding binding3 = new Binding(new URL(__HOST_FRAGMENT+_port+__PATH_FRAGMENT+"file3.jar"), file3);
+ bindings.add(binding3);
+
+ Binding binding4 = new Binding(new URL(__HOST_FRAGMENT+_port+__PATH_FRAGMENT+"file4.so"), file4);
+ bindings.add(binding4);
+
+ Binding binding5 = new Binding(new URL(__HOST_FRAGMENT+_port+__PATH_FRAGMENT+"file5.jpg"), file5);
+ bindings.add(binding5);
+
+ request.setFailFast(false);
+
+ request.setBindings(bindings);
+ RetrievalResponse response = retriever.retrieve(request);
+
+ //for (MercuryException t:response.getExceptions())
+ // t.printStackTrace();
+
+ assertEquals(0,response.getExceptions().size());
+ assertTrue(file0.exists());
+ assertTrue(file1.exists());
+ assertTrue(!file2.exists());
+ assertTrue(file3.exists());
+ assertTrue(file4.exists());
+ assertTrue(file5.exists());
+ }
+
+ public void testValidatorFailure () throws Exception
+ {
+ factories.add(new SHA1VerifierFactory(true, true)); //lenient, sufficient
+ remoteServerType.setStreamObserverFactories(factories);
+
+ //make local dir to put stuff in
+ final File dir = mkTempDir();
+ DefaultRetrievalRequest request = new DefaultRetrievalRequest();
+ HashSet<Binding> bindings = new HashSet<Binding>();
+ HashSet<Validator> validators = new HashSet<Validator>();
+ validators.add(new AlwaysFalseTxtValidator());
+ request.setValidators(validators);
+
+ file0 = new File(dir, "file0.txt");
+ file1 = new File(dir, "file1.txt");
+ file2 = new File(dir, "file2.txt");
+ file3 = new File(dir, "file3.jar");
+ file4 = new File(dir, "file4.so");
+ file5 = new File(dir, "file5.jpg");
+
+ Binding binding0 = new Binding(new URL(__HOST_FRAGMENT+_port+__PATH_FRAGMENT+"file0.txt"), file0);
+ bindings.add(binding0);
+
+ Binding binding1 = new Binding(new URL(__HOST_FRAGMENT+_port+__PATH_FRAGMENT+"file1.txt"), file1); //has no sha file
+ bindings.add(binding1);
+
+ Binding binding3 = new Binding(new URL(__HOST_FRAGMENT+_port+__PATH_FRAGMENT+"file3.jar"), file3);
+ bindings.add(binding3);
+
+ Binding binding4 = new Binding(new URL(__HOST_FRAGMENT+_port+__PATH_FRAGMENT+"file4.so"), file4);
+ bindings.add(binding4);
+
+ Binding binding5 = new Binding(new URL(__HOST_FRAGMENT+_port+__PATH_FRAGMENT+"file5.jpg"), file5);
+ bindings.add(binding5);
+
+ request.setFailFast(false);
+
+ request.setBindings(bindings);
+ RetrievalResponse response = retriever.retrieve(request);
+
+ //for (MercuryException t:response.getExceptions())
+ // t.printStackTrace();
+
+ assertEquals(2,response.getExceptions().size());
+ assertTrue(!file0.exists());
+ assertTrue(!file1.exists());
+ assertTrue(!file2.exists());
+ assertTrue(!file3.exists());
+ assertTrue(!file4.exists());
+ assertTrue(!file5.exists());
+ }
+
+
+ public void testMemoryRetrieval () throws Exception
+ {
+ factories.add(new SHA1VerifierFactory(true, true)); //lenient, sufficient
+ remoteServerType.setStreamObserverFactories(factories);
+
+ //make local dir to put stuff in
+ final File dir = mkTempDir();
+ DefaultRetrievalRequest request = new DefaultRetrievalRequest();
+ HashSet<Binding> bindings = new HashSet<Binding>();
+ HashSet<Validator> validators = new HashSet<Validator>();
+ validators.add(new TxtValidator());
+ request.setValidators(validators);
+
+ Binding binding0 = new Binding(new URL(__HOST_FRAGMENT+_port+__PATH_FRAGMENT+"file0.txt"));
+ bindings.add(binding0);
+
+ Binding binding5 = new Binding(new URL(__HOST_FRAGMENT+_port+__PATH_FRAGMENT+"file5.jpg"));
+ bindings.add(binding5);
+
+ request.setFailFast(false);
+
+ request.setBindings(bindings);
+ RetrievalResponse response = retriever.retrieve(request);
+
+ //for (MercuryException t:response.getExceptions())
+ // t.printStackTrace();
+
+ assertEquals(0,response.getExceptions().size());
+
+
+ InputStream is = this.getClass().getResourceAsStream("/testRepo/file0.txt");
+ ByteArrayOutputStream os = new ByteArrayOutputStream();
+ IO.copy(is, os);
+ assertEquals(os.toByteArray().length, binding0.getInboundContent().length);
+
+ is = this.getClass().getResourceAsStream("/testRepo/file5.jpg");
+ os.reset();
+ IO.copy(is,os);
+ assertEquals(os.toByteArray().length, binding5.getInboundContent().length);
+ }
+}
Added: maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/java/org/apache/maven/mercury/spi/http/client/SecureJettyDeployerTest.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/java/org/apache/maven/mercury/spi/http/client/SecureJettyDeployerTest.java?rev=681887&view=auto
==============================================================================
--- maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/java/org/apache/maven/mercury/spi/http/client/SecureJettyDeployerTest.java (added)
+++ maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/java/org/apache/maven/mercury/spi/http/client/SecureJettyDeployerTest.java Fri Aug 1 15:55:40 2008
@@ -0,0 +1,45 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.maven.mercury.spi.http.client;
+
+import org.apache.maven.mercury.spi.http.client.deploy.DefaultDeployer;
+import org.apache.maven.mercury.spi.http.server.SecurePutServer;
+
+public class SecureJettyDeployerTest extends JettyDeployerTest
+{
+ public SecureJettyDeployerTest() throws Exception
+ {
+ super();
+ }
+
+ protected void setUp() throws Exception
+ {
+ _HOST_FRAGMENT = "https://localhost:";
+
+ _deployer = new DefaultDeployer();
+ _putServer = new SecurePutServer();
+ _putServer.start();
+ _port = String.valueOf(_putServer.getPort());
+ setUpVerifiers();
+ //super.setUp();
+ }
+
+
+}
Added: maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/java/org/apache/maven/mercury/spi/http/server/BatchFilterTest.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/java/org/apache/maven/mercury/spi/http/server/BatchFilterTest.java?rev=681887&view=auto
==============================================================================
--- maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/java/org/apache/maven/mercury/spi/http/server/BatchFilterTest.java (added)
+++ maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/java/org/apache/maven/mercury/spi/http/server/BatchFilterTest.java Fri Aug 1 15:55:40 2008
@@ -0,0 +1,213 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.maven.mercury.spi.http.server;
+
+import junit.framework.TestCase;
+
+import org.apache.maven.mercury.spi.http.server.StagingBatchFilter;
+import org.mortbay.jetty.servlet.FilterHolder;
+import org.mortbay.jetty.servlet.DefaultServlet;
+import org.mortbay.jetty.testing.HttpTester;
+import org.mortbay.jetty.testing.ServletTester;
+import org.mortbay.util.IO;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.File;
+import java.io.FileInputStream;
+
+public class BatchFilterTest extends TestCase
+{
+ File _baseDir;
+ File _stagingDir;
+
+ ServletTester tester;
+
+
+ public void setUp () throws Exception
+ {
+ _baseDir = File.createTempFile("testBatchFilter",null);
+ _baseDir.delete();
+ _baseDir.mkdir();
+ _baseDir.deleteOnExit();
+ assertTrue(_baseDir.isDirectory());
+
+ _stagingDir = new File(System.getProperty("java.io.tmpdir"));
+
+ super.setUp();
+ tester=new ServletTester();
+ tester.setContextPath("/context");
+ tester.setResourceBase(_baseDir.getCanonicalPath());
+ tester.addServlet( DefaultServlet.class, "/");
+ FilterHolder holder = tester.addFilter( StagingBatchFilter.class,"/*",0);
+ holder.setInitParameter("stagingDirURI", _stagingDir.toURI().toString());
+ tester.start();
+ System.err.println("Set up tester, basedir="+tester.getResourceBase()+" exists?"+_baseDir.exists());
+ System.err.println("Set up tester, stagingdir="+_stagingDir.toURI().toString());
+ }
+
+ protected void tearDown() throws Exception
+ {
+ super.tearDown();
+ }
+
+
+ public void testHandlePutWithoutBatching() throws Exception
+ {
+ // generated and parsed test
+ HttpTester request = new HttpTester();
+ HttpTester response = new HttpTester();
+
+ request.setMethod("PUT");
+ request.setVersion("HTTP/1.1");
+ request.setHeader("Host","tester");
+ request.setURI("/context/file.txt");
+ request.setHeader("Content-Type","text/plain");
+ String data0="Now is the time for all good men to come to the aid of the party";
+ request.setContent(data0);
+ response.parse(tester.getResponses(request.generate()));
+ assertTrue(response.getMethod()==null);
+ assertEquals(HttpServletResponse.SC_CREATED,response.getStatus());
+
+ File file=new File(_baseDir,"file.txt");
+ assertTrue(file.exists());
+ assertEquals(data0,IO.toString(new FileInputStream(file)));
+ }
+
+ public void testBatchingCommit() throws Exception
+ {
+ // generated and parsed test
+ HttpTester request = new HttpTester();
+ HttpTester response = new HttpTester();
+
+ request.setMethod("PUT");
+ request.setVersion("HTTP/1.1");
+ request.setHeader("Host","tester");
+ request.setURI("/context/file1.txt");
+ request.setHeader("Content-Type","text/plain");
+ request.setHeader("Jetty-Batch-Id", "999999");
+ String data1="How Now BROWN COW!!!!";
+ request.setContent(data1);
+ response.parse(tester.getResponses(request.generate()));
+ assertTrue(response.getMethod()==null);
+ assertEquals(HttpServletResponse.SC_CREATED,response.getStatus());
+
+ File batchDir = new File (_stagingDir, "999999");
+ File stagedFile = new File (batchDir, "file1.txt");
+ System.err.println("Checking existence of "+stagedFile.getCanonicalPath());
+ assertTrue(stagedFile.exists());
+ assertEquals(data1,IO.toString(new FileInputStream(stagedFile)));
+
+ request.setMethod("PUT");
+ request.setURI("/context/file2.txt");
+ request.setHeader("Content-Type","text/plain");
+ String data2="Blah blah blah Blah blah";
+ request.setHeader("Jetty-Batch-Id", "999999");
+ request.setContent(data2);
+ response.parse(tester.getResponses(request.generate()));
+ assertEquals(HttpServletResponse.SC_CREATED,response.getStatus());
+
+ batchDir = new File (_stagingDir, "999999");
+ stagedFile = new File (batchDir, "file2.txt");
+ assertTrue(stagedFile.exists());
+ assertEquals(data2,IO.toString(new FileInputStream(stagedFile)));
+
+ // test POST commit
+ request = new HttpTester();
+ request.setMethod("POST");
+ request.setVersion("HTTP/1.1");
+ request.setHeader("Content-Type","text/plain");
+ request.setHeader("Host","tester");
+ request.setHeader("Jetty-Batch-Commit", "999999");
+ request.setURI("/context/");
+ response.parse(tester.getResponses(request.generate()));
+ assertTrue(response.getMethod()==null);
+ assertEquals(HttpServletResponse.SC_OK,response.getStatus());
+
+ File finalFile1 = new File(_baseDir, "file1.txt");
+ assertTrue(finalFile1.exists());
+ File finalFile2 = new File(_baseDir, "file2.txt");
+ assertTrue(finalFile2.exists());
+ }
+
+
+ public void testBatchingDiscard ()
+ throws Exception
+ {
+ // generated and parsed test
+ HttpTester request = new HttpTester();
+ HttpTester response = new HttpTester();
+
+ request.setMethod("PUT");
+ request.setVersion("HTTP/1.1");
+ request.setHeader("Host","tester");
+ request.setURI("/context/org/foo/file1.txt");
+ request.setHeader("Content-Type","text/plain");
+ request.setHeader("Jetty-Batch-Id", "999999");
+ String data1="How Now BROWN COW!!!!";
+ request.setContent(data1);
+ response.parse(tester.getResponses(request.generate()));
+ assertTrue(response.getMethod()==null);
+ assertEquals(HttpServletResponse.SC_CREATED,response.getStatus());
+
+ File batchDir = new File (_stagingDir, "999999");
+ File stagedFile = new File(batchDir, "org");
+ stagedFile = new File(stagedFile, "foo");
+ stagedFile = new File (stagedFile, "file1.txt");
+ System.err.println("Checking existence of "+stagedFile.getCanonicalPath());
+ assertTrue(stagedFile.exists());
+ assertEquals(data1,IO.toString(new FileInputStream(stagedFile)));
+
+ request.setMethod("PUT");
+ request.setVersion("HTTP/1.1");
+ request.setHeader("Host","tester");
+ request.setURI("/context/file2.txt");
+ request.setHeader("Content-Type","text/plain");
+ String data2="Blah blah blah Blah blah";
+ request.setHeader("Jetty-Batch-Id", "999999");
+ request.setContent(data2);
+ response.parse(tester.getResponses(request.generate()));
+ assertEquals(HttpServletResponse.SC_CREATED,response.getStatus());
+
+ batchDir = new File (_stagingDir, "999999");
+ stagedFile = new File (batchDir, "file2.txt");
+ assertTrue(stagedFile.exists());
+ assertEquals(data2,IO.toString(new FileInputStream(stagedFile)));
+
+ // test POST discard
+ request = new HttpTester();
+ request.setMethod("POST");
+ request.setVersion("HTTP/1.1");
+ request.setHeader("Content-Type","text/plain");
+ request.setHeader("Host","tester");
+ request.setHeader("Jetty-Batch-Discard", "999999");
+ request.setURI("/context/");
+ response.parse(tester.getResponses(request.generate()));
+ assertTrue(response.getMethod()==null);
+ assertEquals(HttpServletResponse.SC_OK,response.getStatus());
+
+ File finalFile1 = new File(_baseDir, "org");
+ finalFile1 = new File(finalFile1, "foo");
+ finalFile1 = new File(finalFile1, "file1.txt");
+ assertFalse(finalFile1.exists());
+ File finalFile2 = new File(_baseDir, "file2.txt");
+ assertFalse(finalFile2.exists());
+ }
+
+}
Added: maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/java/org/apache/maven/mercury/spi/http/server/HttpTestServer.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/java/org/apache/maven/mercury/spi/http/server/HttpTestServer.java?rev=681887&view=auto
==============================================================================
--- maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/java/org/apache/maven/mercury/spi/http/server/HttpTestServer.java (added)
+++ maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/java/org/apache/maven/mercury/spi/http/server/HttpTestServer.java Fri Aug 1 15:55:40 2008
@@ -0,0 +1,61 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more contributor license
+ * agreements. See the NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the License. You may obtain a
+ * copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
+package org.apache.maven.mercury.spi.http.server;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.InputStreamReader;
+import java.io.LineNumberReader;
+import java.io.OutputStream;
+import java.net.URL;
+
+import org.mortbay.jetty.Server;
+import org.mortbay.jetty.handler.DefaultHandler;
+import org.mortbay.jetty.handler.HandlerCollection;
+import org.mortbay.jetty.servlet.Context;
+import org.mortbay.jetty.servlet.DefaultServlet;
+import org.mortbay.util.IO;
+
+public class HttpTestServer
+ extends Server
+{
+ public HttpTestServer( File base, String remotePathFragment )
+ throws Exception
+ {
+ super( 0 );
+
+ System.out.println( base );
+
+ if ( !base.exists() )
+ {
+ throw new IllegalArgumentException( "Specified base directory does not exist: " + base.getCanonicalPath() );
+ }
+
+ HandlerCollection handlers = new HandlerCollection();
+ setHandler( handlers );
+
+ Context context = new Context( handlers, remotePathFragment );
+ handlers.addHandler( new DefaultHandler() );
+
+ context.addServlet( DefaultServlet.class, "/" );
+ context.setResourceBase( base.getCanonicalPath() );
+ }
+
+ public int getPort()
+ {
+ return getConnectors()[0].getLocalPort();
+ }
+}
Added: maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/java/org/apache/maven/mercury/spi/http/server/SecurePutServer.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/java/org/apache/maven/mercury/spi/http/server/SecurePutServer.java?rev=681887&view=auto
==============================================================================
--- maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/java/org/apache/maven/mercury/spi/http/server/SecurePutServer.java (added)
+++ maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/java/org/apache/maven/mercury/spi/http/server/SecurePutServer.java Fri Aug 1 15:55:40 2008
@@ -0,0 +1,94 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.maven.mercury.spi.http.server;
+
+import java.io.File;
+
+import org.mortbay.jetty.Server;
+import org.mortbay.jetty.Connector;
+import org.mortbay.jetty.handler.DefaultHandler;
+import org.mortbay.jetty.handler.HandlerCollection;
+import org.mortbay.jetty.security.SslSocketConnector;
+import org.mortbay.jetty.servlet.Context;
+import org.mortbay.jetty.servlet.DefaultServlet;
+import org.mortbay.jetty.servlet.FilterHolder;
+import org.mortbay.servlet.PutFilter;
+
+public class SecurePutServer extends SimplePutServer
+{
+ private File _base;
+
+ public SecurePutServer() throws Exception
+ {
+ SslSocketConnector connector = new SslSocketConnector();
+ String keystore = System.getProperty("user.dir") + File.separator + "src" + File.separator + "test" + File.separator + "resources" + File.separator
+ + "secureServer" + File.separator + "keystore";
+
+ connector.setPort(0);
+ connector.setKeystore(keystore);
+ connector.setPassword("storepwd");
+ connector.setKeyPassword("keypwd");
+
+ setConnectors(new Connector[] { connector });
+
+ HandlerCollection handlers = new HandlerCollection();
+ setHandler(handlers);
+
+ Context context = new Context(handlers,"/maven2/repo");
+ handlers.addHandler(new DefaultHandler());
+
+ _base = File.createTempFile("securePutServer",null);
+ _base.delete();
+ _base.mkdir();
+ _base.deleteOnExit();
+ FilterHolder holder = context.addFilter(PutFilter.class, "/*", 0);
+ holder.setInitParameter("delAllowed","true");
+ context.addServlet(DefaultServlet.class,"/");
+ context.setResourceBase(_base.getCanonicalPath());
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.maven.mercury.spi.http.server.PutServer#getPutDir()
+ */
+ public File getPutDir ()
+ {
+ return _base;
+ }
+
+ public void destroy ()
+ {
+ super.destroy();
+ File[] files = _base.listFiles();
+ for (int i=0;files!=null && i>0; i++)
+ {
+ files[i].delete();
+ }
+ _base.delete();
+ }
+
+ public static void main(String[] args)
+ throws Exception
+ {
+ SecurePutServer server = new SecurePutServer();
+ server.start();
+ server.join();
+ }
+
+}
Added: maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/java/org/apache/maven/mercury/spi/http/server/SimplePutServer.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/java/org/apache/maven/mercury/spi/http/server/SimplePutServer.java?rev=681887&view=auto
==============================================================================
--- maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/java/org/apache/maven/mercury/spi/http/server/SimplePutServer.java (added)
+++ maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/java/org/apache/maven/mercury/spi/http/server/SimplePutServer.java Fri Aug 1 15:55:40 2008
@@ -0,0 +1,92 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.maven.mercury.spi.http.server;
+
+import java.io.File;
+
+import org.mortbay.jetty.Server;
+import org.mortbay.jetty.handler.DefaultHandler;
+import org.mortbay.jetty.handler.HandlerCollection;
+import org.mortbay.jetty.servlet.Context;
+import org.mortbay.jetty.servlet.DefaultServlet;
+import org.mortbay.jetty.servlet.FilterHolder;
+import org.mortbay.servlet.PutFilter;
+
+public class SimplePutServer extends Server
+{
+ private File _base;
+
+ public SimplePutServer()
+ throws Exception
+ {
+ super(0);
+
+ HandlerCollection handlers = new HandlerCollection();
+ setHandler(handlers);
+
+ Context context = new Context(handlers,"/maven2/repo");
+ handlers.addHandler(new DefaultHandler());
+
+ _base = File.createTempFile("simplePutServer",null);
+ _base.delete();
+ _base.mkdir();
+ _base.deleteOnExit();
+ FilterHolder holder = context.addFilter(PutFilter.class, "/*", 0);
+ holder.setInitParameter("delAllowed","true");
+ context.addServlet(DefaultServlet.class,"/");
+ context.setResourceBase(_base.getCanonicalPath());
+ }
+
+ public void destroy ()
+ {
+ super.destroy();
+ File[] files = _base.listFiles();
+ for (int i=0;files!=null && i>0; i++)
+ {
+ files[i].delete();
+ }
+ _base.delete();
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.maven.mercury.spi.http.server.PutServer#getPutDir()
+ */
+ public File getPutDir ()
+ {
+ return _base;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.maven.mercury.spi.http.server.PutServer#getPort()
+ */
+ public int getPort()
+ {
+ return getConnectors()[0].getLocalPort();
+ }
+
+ public static void main(String[] args)
+ throws Exception
+ {
+ SimplePutServer server = new SimplePutServer();
+ server.start();
+ server.join();
+ }
+
+}
Added: maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/java/org/apache/maven/mercury/spi/http/server/SimpleTestServer.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/java/org/apache/maven/mercury/spi/http/server/SimpleTestServer.java?rev=681887&view=auto
==============================================================================
--- maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/java/org/apache/maven/mercury/spi/http/server/SimpleTestServer.java (added)
+++ maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/java/org/apache/maven/mercury/spi/http/server/SimpleTestServer.java Fri Aug 1 15:55:40 2008
@@ -0,0 +1,86 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more contributor license
+ * agreements. See the NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the License. You may obtain a
+ * copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
+package org.apache.maven.mercury.spi.http.server;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.InputStreamReader;
+import java.io.LineNumberReader;
+import java.io.OutputStream;
+import java.net.URL;
+
+import org.mortbay.jetty.Server;
+import org.mortbay.jetty.handler.DefaultHandler;
+import org.mortbay.jetty.handler.HandlerCollection;
+import org.mortbay.jetty.servlet.Context;
+import org.mortbay.jetty.servlet.DefaultServlet;
+import org.mortbay.util.IO;
+
+public class SimpleTestServer
+ extends Server
+{
+ public SimpleTestServer()
+ throws Exception
+ {
+ this( "/testRepo/", "/maven2/repo" );
+ }
+
+ public SimpleTestServer( String localPathFragment, String remotePathFragment )
+ throws Exception
+ {
+ super( 0 );
+
+ HandlerCollection handlers = new HandlerCollection();
+ setHandler( handlers );
+
+ Context context = new Context( handlers, remotePathFragment );
+ handlers.addHandler( new DefaultHandler() );
+
+ File base = File.createTempFile( "simpleTestServer", null );
+ base.delete();
+ base.mkdir();
+ base.deleteOnExit();
+
+ URL list = SimpleTestServer.class.getResource( localPathFragment );
+ LineNumberReader in = new LineNumberReader( new InputStreamReader( list.openStream() ) );
+ String file = null;
+ while ( ( file = in.readLine() ) != null )
+ {
+ if ( !file.startsWith( "file" ) )
+ {
+ continue;
+ }
+ OutputStream out = new FileOutputStream( new File( base, file ) );
+ IO.copy( SimpleTestServer.class.getResource( localPathFragment + file ).openStream(), out );
+ out.close();
+ }
+ context.addServlet( DefaultServlet.class, "/" );
+ context.setResourceBase( base.getCanonicalPath() );
+ }
+
+ public int getPort()
+ {
+ return getConnectors()[0].getLocalPort();
+ }
+
+ public static void main( String[] args )
+ throws Exception
+ {
+ SimpleTestServer server = new SimpleTestServer();
+ server.start();
+ server.join();
+ }
+}
Added: maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/resources/repo/a-1.0.txt
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/resources/repo/a-1.0.txt?rev=681887&view=auto
==============================================================================
--- maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/resources/repo/a-1.0.txt (added)
+++ maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/resources/repo/a-1.0.txt Fri Aug 1 15:55:40 2008
@@ -0,0 +1,3 @@
+b:1.0
+c:1.0
+d:1.0
Added: maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/resources/repo/a-1.0.txt.sha1
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/resources/repo/a-1.0.txt.sha1?rev=681887&view=auto
==============================================================================
--- maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/resources/repo/a-1.0.txt.sha1 (added)
+++ maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/resources/repo/a-1.0.txt.sha1 Fri Aug 1 15:55:40 2008
@@ -0,0 +1 @@
+3bd410a48b894266feb4bc4d90a1b609093a66eb
Added: maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/resources/repo/b-1.0.txt
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/resources/repo/b-1.0.txt?rev=681887&view=auto
==============================================================================
(empty)
Added: maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/resources/repo/b-1.0.txt.sha1
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/resources/repo/b-1.0.txt.sha1?rev=681887&view=auto
==============================================================================
--- maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/resources/repo/b-1.0.txt.sha1 (added)
+++ maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/resources/repo/b-1.0.txt.sha1 Fri Aug 1 15:55:40 2008
@@ -0,0 +1 @@
+da39a3ee5e6b4b0d3255bfef95601890afd80709
Added: maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/resources/repo/c-1.0.txt
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/resources/repo/c-1.0.txt?rev=681887&view=auto
==============================================================================
(empty)
Added: maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/resources/repo/c-1.0.txt.sha1
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/resources/repo/c-1.0.txt.sha1?rev=681887&view=auto
==============================================================================
--- maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/resources/repo/c-1.0.txt.sha1 (added)
+++ maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/resources/repo/c-1.0.txt.sha1 Fri Aug 1 15:55:40 2008
@@ -0,0 +1 @@
+da39a3ee5e6b4b0d3255bfef95601890afd80709
Added: maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/resources/repo/d-1.0.txt
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/resources/repo/d-1.0.txt?rev=681887&view=auto
==============================================================================
(empty)
Added: maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/resources/repo/d-1.0.txt.sha1
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/resources/repo/d-1.0.txt.sha1?rev=681887&view=auto
==============================================================================
--- maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/resources/repo/d-1.0.txt.sha1 (added)
+++ maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/resources/repo/d-1.0.txt.sha1 Fri Aug 1 15:55:40 2008
@@ -0,0 +1 @@
+da39a3ee5e6b4b0d3255bfef95601890afd80709
Added: maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/resources/secureServer/keystore
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/resources/secureServer/keystore?rev=681887&view=auto
==============================================================================
Binary file - no diff available.
Propchange: maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/resources/secureServer/keystore
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/resources/secureServer/realm.properties
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/resources/secureServer/realm.properties?rev=681887&view=auto
==============================================================================
--- maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/resources/secureServer/realm.properties (added)
+++ maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/resources/secureServer/realm.properties Fri Aug 1 15:55:40 2008
@@ -0,0 +1,22 @@
+#
+# This file defines users passwords and roles for a HashUserRealm
+#
+# The format is
+# <username>: <password>[,<rolename> ...]
+#
+# Passwords may be clear text, obfuscated or checksummed. The class
+# org.mortbay.util.Password should be used to generate obfuscated
+# passwords or password checksums
+#
+# If DIGEST Authentication is used, the password must be in a recoverable
+# format, either plain text or OBF:.
+#
+# if using digest authentication, do not MD5-hash the password
+jetty: jetty,user
+admin: CRYPT:ad1ks..kc.1Ug,server-administrator,content-administrator,admin
+other: OBF:1xmk1w261u9r1w1c1xmq
+plain: plain
+user: password
+
+# This entry is for digest auth. The credential is a MD5 hash of username:realmname:password
+digest: MD5:6e120743ad67abfbc385bc2bb754e297
Added: maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/resources/testRepo/README.TXT
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/resources/testRepo/README.TXT?rev=681887&view=auto
==============================================================================
--- maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/resources/testRepo/README.TXT (added)
+++ maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/resources/testRepo/README.TXT Fri Aug 1 15:55:40 2008
@@ -0,0 +1,3 @@
+These are the test files for the batch tests
+file1 lacks an SHA1 file
+file2 has a wrong SHA1