Author: janb Date: Wed Aug 27 23:11:32 2008 New Revision: 689726 URL: http://svn.apache.org/viewvc?rev=689726&view=rev Log: Test servers requiring authentication.
Added: maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/java/org/apache/maven/mercury/spi/http/client/AuthenticatingJettyDeployerTest.java (with props) maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/java/org/apache/maven/mercury/spi/http/client/AuthenticatingJettyRetrieverTest.java (with props) maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/java/org/apache/maven/mercury/spi/http/server/AuthenticatingPutServer.java (with props) maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/java/org/apache/maven/mercury/spi/http/server/AuthenticatingTestServer.java (with props) Modified: maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/main/java/org/apache/maven/mercury/spi/http/client/deploy/FilePutExchange.java maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/java/org/apache/maven/mercury/spi/http/client/JettyDeployerTest.java maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/java/org/apache/maven/mercury/spi/http/client/SecureJettyDeployerTest.java maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/java/org/apache/maven/mercury/spi/http/server/SimplePutServer.java maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/java/org/apache/maven/mercury/spi/http/server/SimpleTestServer.java Modified: maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/main/java/org/apache/maven/mercury/spi/http/client/deploy/FilePutExchange.java URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/main/java/org/apache/maven/mercury/spi/http/client/deploy/FilePutExchange.java?rev=689726&r1=689725&r2=689726&view=diff ============================================================================== --- maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/main/java/org/apache/maven/mercury/spi/http/client/deploy/FilePutExchange.java (original) +++ maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/main/java/org/apache/maven/mercury/spi/http/client/deploy/FilePutExchange.java Wed Aug 27 23:11:32 2008 @@ -51,6 +51,7 @@ */ public abstract class FilePutExchange extends FileExchange { + private static final int __readLimit = 1024; private static final Logger log = LoggerFactory.getLogger(FilePutExchange.class); private String _batchId; private InputStream _inputStream; @@ -154,7 +155,7 @@ private InputStream getInputStream() - throws IOException, NoSuchAlgorithmException + throws IOException { if ( _inputStream == null ) { @@ -162,11 +163,40 @@ if (_binding.isFile()) is = new FileInputStream( _localFile ); else if (_binding.isInMemory()) + { is = _binding.getLocalInputStream(); - ObservableInputStream ois = new ObservableInputStream( is ); - _inputStream = ois; - ois.addObservers(_observers); + if (!getRetryStatus()) + { + if (is.markSupported()) + is.mark(__readLimit); + } + else + { + if (is.markSupported()) + is.reset(); + } + } + + //if this request is being retried, then don't set up the observers a second + //time? + if (!getRetryStatus()) + { + ObservableInputStream ois = new ObservableInputStream( is ); + _inputStream = ois; + ois.addObservers(_observers); + } + else + _inputStream = is; } return _inputStream; } + + @Override + protected void onRetry() throws IOException + { + super.onRetry(); + _inputStream = null; + setRequestContent(null); + setRequestContentSource(getInputStream()); + } } Added: maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/java/org/apache/maven/mercury/spi/http/client/AuthenticatingJettyDeployerTest.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/AuthenticatingJettyDeployerTest.java?rev=689726&view=auto ============================================================================== --- maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/java/org/apache/maven/mercury/spi/http/client/AuthenticatingJettyDeployerTest.java (added) +++ maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/java/org/apache/maven/mercury/spi/http/client/AuthenticatingJettyDeployerTest.java Wed Aug 27 23:11:32 2008 @@ -0,0 +1,42 @@ +package org.apache.maven.mercury.spi.http.client; + +import java.net.URL; +import java.util.HashSet; + +import org.apache.maven.mercury.crypto.api.StreamVerifierFactory; +import org.apache.maven.mercury.spi.http.client.deploy.DefaultDeployer; +import org.apache.maven.mercury.spi.http.server.AuthenticatingPutServer; +import org.apache.maven.mercury.transport.api.Credentials; + +public class AuthenticatingJettyDeployerTest extends JettyDeployerTest +{ + + public AuthenticatingJettyDeployerTest () throws Exception + { + super(); + } + + protected void setUp() throws Exception + { + setUpFiles(); + _deployer = new DefaultDeployer(); + _putServer = new AuthenticatingPutServer(); + _putServer.start(); + _port = String.valueOf(_putServer.getPort()); + setUpServerType(); + } + + protected void tearDown() throws Exception + { + super.tearDown(); + } + + protected void setUpServerType () 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), false, false, new Credentials("foo", "bar")); + factories = new HashSet<StreamVerifierFactory>(); + remoteServerTypes.add(remoteServerType); + _deployer.setServers(remoteServerTypes); + } +} Propchange: maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/java/org/apache/maven/mercury/spi/http/client/AuthenticatingJettyDeployerTest.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/java/org/apache/maven/mercury/spi/http/client/AuthenticatingJettyDeployerTest.java ------------------------------------------------------------------------------ svn:keywords = Date Author Id Revision HeadURL Propchange: maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/java/org/apache/maven/mercury/spi/http/client/AuthenticatingJettyDeployerTest.java ------------------------------------------------------------------------------ svn:mime-type = text/plain Added: maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/java/org/apache/maven/mercury/spi/http/client/AuthenticatingJettyRetrieverTest.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/AuthenticatingJettyRetrieverTest.java?rev=689726&view=auto ============================================================================== --- maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/java/org/apache/maven/mercury/spi/http/client/AuthenticatingJettyRetrieverTest.java (added) +++ maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/java/org/apache/maven/mercury/spi/http/client/AuthenticatingJettyRetrieverTest.java Wed Aug 27 23:11:32 2008 @@ -0,0 +1,37 @@ +package org.apache.maven.mercury.spi.http.client; + +import java.net.URL; +import java.util.HashSet; + +import org.apache.maven.mercury.crypto.api.StreamVerifierFactory; +import org.apache.maven.mercury.spi.http.client.retrieve.DefaultRetriever; +import org.apache.maven.mercury.spi.http.server.AuthenticatingTestServer; +import org.apache.maven.mercury.transport.api.Credentials; +import org.apache.maven.mercury.transport.api.Server; + +public class AuthenticatingJettyRetrieverTest extends JettyRetrieverTest +{ + public void setUp () + throws Exception + { + server = new AuthenticatingTestServer(); + server.start(); + _port=String.valueOf(server.getPort()); + + HashSet<Server> remoteServerTypes = new HashSet<Server>(); + remoteServerType = new Server( "test", new URL(__HOST_FRAGMENT+_port), false, false, new Credentials("foo", "bar")); + factories = new HashSet<StreamVerifierFactory>(); + + remoteServerTypes.add(remoteServerType); + + retriever = new DefaultRetriever(); + retriever.setServers(remoteServerTypes); + } + + + protected void tearDown() throws Exception + { + super.tearDown(); + } + +} Propchange: maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/java/org/apache/maven/mercury/spi/http/client/AuthenticatingJettyRetrieverTest.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/java/org/apache/maven/mercury/spi/http/client/AuthenticatingJettyRetrieverTest.java ------------------------------------------------------------------------------ svn:keywords = Date Author Id Revision HeadURL Propchange: maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/java/org/apache/maven/mercury/spi/http/client/AuthenticatingJettyRetrieverTest.java ------------------------------------------------------------------------------ svn:mime-type = text/plain Modified: 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=689726&r1=689725&r2=689726&view=diff ============================================================================== --- maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/java/org/apache/maven/mercury/spi/http/client/JettyDeployerTest.java (original) +++ maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/java/org/apache/maven/mercury/spi/http/client/JettyDeployerTest.java Wed Aug 27 23:11:32 2008 @@ -71,7 +71,7 @@ org.apache.maven.mercury.transport.api.Server remoteServerType; HashSet<StreamVerifierFactory> factories; - private class DeployRequestImpl implements DeployRequest + protected class DeployRequestImpl implements DeployRequest { private Set<Binding> _bindings = new HashSet<Binding>(); private boolean _failFast; @@ -132,7 +132,7 @@ _putServer = new SimplePutServer(); _putServer.start(); _port = String.valueOf(_putServer.getPort()); - setUpVerifiers(); + setUpServerType(); super.setUp(); } @@ -152,7 +152,7 @@ f.delete(); } - protected void setUpVerifiers () throws Exception + protected void setUpServerType () 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)); @@ -209,15 +209,15 @@ DeployResponse response = _deployer.deploy(request); -/* for (HttpClientException t:response.getExceptions()) - t.printStackTrace();*/ + 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()); @@ -237,6 +237,7 @@ File f6cs = new File (_putServer.getPutDir(), "file6.gif.asc"); assertTrue (f6.exists()); assertTrue (f6cs.exists()); + } /* This test duplicates the one above unless we allow for checksum files to * be pre-existing @@ -311,6 +312,7 @@ } */ + public void testUploadFail () throws Exception { factories.add(new SHA1VerifierFactory(false, true)); //!lenient, sufficient @@ -348,9 +350,9 @@ request.setBindings(bindings); DeployResponse response = _deployer.deploy(request); -/* for (HttpClientException t:response.getExceptions()) - t.printStackTrace(); -*/ +// for (HttpClientException 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()); @@ -423,8 +425,8 @@ request.setFailFast(true); DeployResponse response = _deployer.deploy(request); -/* for (HttpClientException t:response.getExceptions()) - t.printStackTrace();*/ +// for (HttpClientException 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 @@ -464,8 +466,8 @@ request.setFailFast(true); DeployResponse response = _deployer.deploy(request); -/* for (HttpClientException t:response.getExceptions()) - t.printStackTrace();*/ +// for (HttpClientException t:response.getExceptions()) +// t.printStackTrace(); assertEquals(0, response.getExceptions().size()); @@ -489,5 +491,4 @@ assertEquals(s5, s.trim()); assertTrue (f5cs.exists()); } - } Modified: 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=689726&r1=689725&r2=689726&view=diff ============================================================================== --- maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/java/org/apache/maven/mercury/spi/http/client/SecureJettyDeployerTest.java (original) +++ maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/java/org/apache/maven/mercury/spi/http/client/SecureJettyDeployerTest.java Wed Aug 27 23:11:32 2008 @@ -38,7 +38,7 @@ _putServer = new SecurePutServer(); _putServer.start(); _port = String.valueOf(_putServer.getPort()); - setUpVerifiers(); + setUpServerType(); //super.setUp(); } Added: maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/java/org/apache/maven/mercury/spi/http/server/AuthenticatingPutServer.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/AuthenticatingPutServer.java?rev=689726&view=auto ============================================================================== --- maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/java/org/apache/maven/mercury/spi/http/server/AuthenticatingPutServer.java (added) +++ maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/java/org/apache/maven/mercury/spi/http/server/AuthenticatingPutServer.java Wed Aug 27 23:11:32 2008 @@ -0,0 +1,41 @@ +package org.apache.maven.mercury.spi.http.server; + +import org.mortbay.jetty.security.BasicAuthenticator; +import org.mortbay.jetty.security.Constraint; +import org.mortbay.jetty.security.ConstraintMapping; +import org.mortbay.jetty.security.HashUserRealm; +import org.mortbay.jetty.security.SecurityHandler; + +public class AuthenticatingPutServer extends SimplePutServer +{ + public AuthenticatingPutServer() + throws Exception + { + super(); + + HashUserRealm realm = new HashUserRealm(); + realm.put ("foo", "bar"); + realm.addUserToRole("foo", "foomeister"); + realm.setName("foorealm"); + + SecurityHandler securityHandler = new SecurityHandler(); + securityHandler.setAuthenticator(new BasicAuthenticator()); + securityHandler.setUserRealm(realm); + Constraint constraint = new Constraint(); + constraint.setAuthenticate(true); + constraint.setRoles(new String[]{"foomeister"}); + ConstraintMapping cm = new ConstraintMapping(); + cm.setConstraint(constraint); + cm.setPathSpec("/*"); + securityHandler.setConstraintMappings(new ConstraintMapping[]{cm}); + context.addHandler(securityHandler); + } + + public static void main(String[] args) + throws Exception + { + AuthenticatingPutServer server = new AuthenticatingPutServer(); + server.start(); + server.join(); + } +} Propchange: maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/java/org/apache/maven/mercury/spi/http/server/AuthenticatingPutServer.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/java/org/apache/maven/mercury/spi/http/server/AuthenticatingPutServer.java ------------------------------------------------------------------------------ svn:keywords = Date Author Id Revision HeadURL Propchange: maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/java/org/apache/maven/mercury/spi/http/server/AuthenticatingPutServer.java ------------------------------------------------------------------------------ svn:mime-type = text/plain Added: maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/java/org/apache/maven/mercury/spi/http/server/AuthenticatingTestServer.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/AuthenticatingTestServer.java?rev=689726&view=auto ============================================================================== --- maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/java/org/apache/maven/mercury/spi/http/server/AuthenticatingTestServer.java (added) +++ maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/java/org/apache/maven/mercury/spi/http/server/AuthenticatingTestServer.java Wed Aug 27 23:11:32 2008 @@ -0,0 +1,34 @@ +package org.apache.maven.mercury.spi.http.server; + +import org.mortbay.jetty.security.BasicAuthenticator; +import org.mortbay.jetty.security.Constraint; +import org.mortbay.jetty.security.ConstraintMapping; +import org.mortbay.jetty.security.HashUserRealm; +import org.mortbay.jetty.security.SecurityHandler; + +public class AuthenticatingTestServer extends SimpleTestServer +{ + public AuthenticatingTestServer() + throws Exception + { + super(); + + HashUserRealm realm = new HashUserRealm(); + realm.put ("foo", "bar"); + realm.addUserToRole("foo", "foomeister"); + realm.setName("foorealm"); + + SecurityHandler securityHandler = new SecurityHandler(); + securityHandler.setAuthenticator(new BasicAuthenticator()); + securityHandler.setUserRealm(realm); + Constraint constraint = new Constraint(); + constraint.setAuthenticate(true); + constraint.setRoles(new String[]{"foomeister"}); + ConstraintMapping cm = new ConstraintMapping(); + cm.setConstraint(constraint); + cm.setPathSpec("/*"); + securityHandler.setConstraintMappings(new ConstraintMapping[]{cm}); + context.addHandler(securityHandler); + } + +} Propchange: maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/java/org/apache/maven/mercury/spi/http/server/AuthenticatingTestServer.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/java/org/apache/maven/mercury/spi/http/server/AuthenticatingTestServer.java ------------------------------------------------------------------------------ svn:keywords = Date Author Id Revision HeadURL Propchange: maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/java/org/apache/maven/mercury/spi/http/server/AuthenticatingTestServer.java ------------------------------------------------------------------------------ svn:mime-type = text/plain Modified: 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=689726&r1=689725&r2=689726&view=diff ============================================================================== --- maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/java/org/apache/maven/mercury/spi/http/server/SimplePutServer.java (original) +++ maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/java/org/apache/maven/mercury/spi/http/server/SimplePutServer.java Wed Aug 27 23:11:32 2008 @@ -31,7 +31,9 @@ public class SimplePutServer extends Server { - private File _base; + protected File _base; + protected Context context; + public SimplePutServer() throws Exception @@ -41,7 +43,7 @@ HandlerCollection handlers = new HandlerCollection(); setHandler(handlers); - Context context = new Context(handlers,"/maven2/repo"); + context = new Context(handlers,"/maven2/repo"); handlers.addHandler(new DefaultHandler()); _base = File.createTempFile("simplePutServer",null); Modified: 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=689726&r1=689725&r2=689726&view=diff ============================================================================== --- maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/java/org/apache/maven/mercury/spi/http/server/SimpleTestServer.java (original) +++ maven/sandbox/trunk/mercury/mercury-transport/mercury-transport-http/src/test/java/org/apache/maven/mercury/spi/http/server/SimpleTestServer.java Wed Aug 27 23:11:32 2008 @@ -33,6 +33,7 @@ extends Server { File base; + Context context; public SimpleTestServer() @@ -49,7 +50,7 @@ HandlerCollection handlers = new HandlerCollection(); setHandler( handlers ); - Context context = new Context( handlers, remotePathFragment ); + context = new Context( handlers, remotePathFragment ); handlers.addHandler( new DefaultHandler() ); base = File.createTempFile( "simpleTestServer", null );