You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by rf...@apache.org on 2019/08/21 18:01:45 UTC
[maven-wagon] branch stabilize updated: Ask ftp/http server for its
port instead of trying to assign an available port
This is an automated email from the ASF dual-hosted git repository.
rfscholte pushed a commit to branch stabilize
in repository https://gitbox.apache.org/repos/asf/maven-wagon.git
The following commit(s) were added to refs/heads/stabilize by this push:
new 34bc00b Ask ftp/http server for its port instead of trying to assign an available port
34bc00b is described below
commit 34bc00b2870ea9a82f8415cd12f2efd735b03bec
Author: rfscholte <rf...@apache.org>
AuthorDate: Wed Aug 21 20:01:37 2019 +0200
Ask ftp/http server for its port instead of trying to assign an available port
---
.../java/org/apache/maven/wagon/WagonTestCase.java | 27 ------------------
.../maven/wagon/providers/ftp/FtpWagonTest.java | 32 ++++++----------------
.../wagon/providers/http/HttpWagonErrorTest.java | 8 +++---
.../http/HttpWagonHttpServerTestCase.java | 28 ++++++-------------
.../wagon/providers/http/HttpWagonTimeoutTest.java | 8 +++---
5 files changed, 25 insertions(+), 78 deletions(-)
diff --git a/wagon-provider-test/src/main/java/org/apache/maven/wagon/WagonTestCase.java b/wagon-provider-test/src/main/java/org/apache/maven/wagon/WagonTestCase.java
index 78931be..d505a4e 100644
--- a/wagon-provider-test/src/main/java/org/apache/maven/wagon/WagonTestCase.java
+++ b/wagon-provider-test/src/main/java/org/apache/maven/wagon/WagonTestCase.java
@@ -42,14 +42,12 @@ import org.slf4j.LoggerFactory;
import java.io.File;
import java.io.IOException;
-import java.net.ServerSocket;
import java.nio.charset.StandardCharsets;
import java.security.NoSuchAlgorithmException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
-import java.util.Random;
/**
* @author <a href="mailto:jason@maven.org">Jason van Zyl</a>
@@ -137,31 +135,6 @@ public abstract class WagonTestCase
*/
protected abstract String getProtocol();
- public static ServerSocket newServerSocket( int... ports )
- {
- // there can be a timing issue while handing over the port to the actual server, so start at random index
- final int offset = new Random().nextInt( ports.length );
-
- for ( int index = 0 ; index < ports.length; index++ )
- {
- try
- {
- ServerSocket serverSocket = new ServerSocket( ports[( offset + index ) % ports.length] );
-
- if ( serverSocket.getLocalPort() != -1 )
- {
- return serverSocket;
- }
- }
- catch ( IOException ex )
- {
- continue;
- }
- }
-
- throw new RuntimeException( "no port available" );
- }
-
// ----------------------------------------------------------------------
// 1. Create a local file repository which mimic a users local file
// Repository.
diff --git a/wagon-providers/wagon-ftp/src/test/java/org/apache/maven/wagon/providers/ftp/FtpWagonTest.java b/wagon-providers/wagon-ftp/src/test/java/org/apache/maven/wagon/providers/ftp/FtpWagonTest.java
index d5f74b9..ce6884a 100644
--- a/wagon-providers/wagon-ftp/src/test/java/org/apache/maven/wagon/providers/ftp/FtpWagonTest.java
+++ b/wagon-providers/wagon-ftp/src/test/java/org/apache/maven/wagon/providers/ftp/FtpWagonTest.java
@@ -20,8 +20,6 @@ package org.apache.maven.wagon.providers.ftp;
*/
import java.io.File;
-import java.io.IOException;
-import java.net.ServerSocket;
import java.util.ArrayList;
import java.util.List;
@@ -30,6 +28,7 @@ import org.apache.ftpserver.FtpServer;
import org.apache.ftpserver.FtpServerFactory;
import org.apache.ftpserver.ftplet.Authority;
import org.apache.ftpserver.ftplet.UserManager;
+import org.apache.ftpserver.listener.Listener;
import org.apache.ftpserver.listener.ListenerFactory;
import org.apache.ftpserver.usermanager.PropertiesUserManagerFactory;
import org.apache.ftpserver.usermanager.impl.BaseUser;
@@ -49,30 +48,15 @@ import org.apache.maven.wagon.resource.Resource;
public class FtpWagonTest
extends StreamingWagonTestCase
{
- static private FtpServer server;
+ private FtpServer server;
-// private static final int testRepositoryPort = 10023 + new Random().nextInt( 16 );
-
- private static int testRepositoryPort;
+ private int testRepositoryPort;
protected String getProtocol()
{
return "ftp";
}
- static
- {
- // claim number, release it again so it can be reclaimed by ftp server
- try (ServerSocket socket = newServerSocket( 10023, 10024, 10025, 10026 ))
- {
- testRepositoryPort = socket.getLocalPort();
- }
- catch ( IOException e )
- {
- e.printStackTrace();
- }
- }
-
protected int getTestRepositoryPort() {
return testRepositoryPort;
}
@@ -86,7 +70,7 @@ public class FtpWagonTest
ftpHomeDir.mkdirs();
}
- if (server == null)
+ if ( server == null )
{
FtpServerFactory serverFactory = new FtpServerFactory();
@@ -96,7 +80,8 @@ public class FtpWagonTest
factory.setPort(getTestRepositoryPort());
// replace the default listener
- serverFactory.addListener("default", factory.createListener());
+ Listener defaultListener = factory.createListener();
+ serverFactory.addListener("default", defaultListener );
PropertiesUserManagerFactory userManagerFactory = new PropertiesUserManagerFactory();
UserManager um = userManagerFactory.createUserManager();
@@ -122,6 +107,7 @@ public class FtpWagonTest
// start the server
server.start();
+ testRepositoryPort = defaultListener.getPort();
}
}
@@ -207,10 +193,10 @@ public class FtpWagonTest
public void testPutDirectoryCreation()
throws Exception
{
- setupRepositories();
-
setupWagonTestingFixtures();
+ setupRepositories();
+
Wagon wagon = getWagon();
if ( wagon.supportsDirectoryCopy() )
diff --git a/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpWagonErrorTest.java b/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpWagonErrorTest.java
index b48ee12..85df40d 100644
--- a/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpWagonErrorTest.java
+++ b/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpWagonErrorTest.java
@@ -53,7 +53,7 @@ public class HttpWagonErrorTest
Wagon wagon = getWagon();
Repository testRepository = new Repository();
- testRepository.setUrl( "http://localhost:" + httpServerPort );
+ testRepository.setUrl( "http://localhost:" + getPort() );
wagon.connect( testRepository );
@@ -87,7 +87,7 @@ public class HttpWagonErrorTest
Wagon wagon = getWagon();
Repository testRepository = new Repository();
- testRepository.setUrl( "http://localhost:" + httpServerPort );
+ testRepository.setUrl( "http://localhost:" + getPort() );
wagon.connect( testRepository );
@@ -122,7 +122,7 @@ public class HttpWagonErrorTest
Wagon wagon = getWagon();
Repository testRepository = new Repository();
- testRepository.setUrl( "http://localhost:" + httpServerPort );
+ testRepository.setUrl( "http://localhost:" + getPort() );
wagon.connect( testRepository );
@@ -156,7 +156,7 @@ public class HttpWagonErrorTest
Wagon wagon = getWagon();
Repository testRepository = new Repository();
- testRepository.setUrl( "http://localhost:" + httpServerPort );
+ testRepository.setUrl( "http://localhost:" + getPort() );
wagon.connect( testRepository );
diff --git a/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpWagonHttpServerTestCase.java b/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpWagonHttpServerTestCase.java
index b257659..38cd7e1 100644
--- a/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpWagonHttpServerTestCase.java
+++ b/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpWagonHttpServerTestCase.java
@@ -1,8 +1,5 @@
package org.apache.maven.wagon.providers.http;
-import java.io.IOException;
-import java.net.ServerSocket;
-
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
@@ -23,9 +20,9 @@ import java.net.ServerSocket;
*/
import org.apache.maven.wagon.Wagon;
-import org.apache.maven.wagon.WagonTestCase;
import org.codehaus.plexus.PlexusTestCase;
import org.eclipse.jetty.server.Server;
+import org.eclipse.jetty.server.ServerConnector;
import org.eclipse.jetty.server.handler.ResourceHandler;
import org.eclipse.jetty.servlet.ServletContextHandler;
@@ -35,32 +32,17 @@ import org.eclipse.jetty.servlet.ServletContextHandler;
public abstract class HttpWagonHttpServerTestCase
extends PlexusTestCase
{
- protected static int httpServerPort;
-
private Server server;
protected ResourceHandler resourceHandler;
protected ServletContextHandler context;
- static
- {
- // claim number, release it again so it can be reclaimed by ftp server
- try ( ServerSocket socket = WagonTestCase.newServerSocket( 10008, 10009, 10010, 10011 ) )
- {
- httpServerPort = socket.getLocalPort();
- }
- catch ( IOException e )
- {
- e.printStackTrace();
- }
- }
-
protected void setUp()
throws Exception
{
super.setUp();
- server = new Server( httpServerPort );
+ server = new Server( 0 );
context = new ServletContextHandler( ServletContextHandler.SESSIONS );
resourceHandler = new ResourceHandler();
@@ -85,4 +67,10 @@ public abstract class HttpWagonHttpServerTestCase
{
server.stop();
}
+
+ protected final int getPort()
+ {
+ return ((ServerConnector) server.getConnectors()[0]).getLocalPort();
+ }
+
}
diff --git a/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpWagonTimeoutTest.java b/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpWagonTimeoutTest.java
index ee1d0ec..553576f 100644
--- a/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpWagonTimeoutTest.java
+++ b/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpWagonTimeoutTest.java
@@ -56,7 +56,7 @@ public class HttpWagonTimeoutTest
wagon.setReadTimeout( 1000 );
Repository testRepository = new Repository();
- testRepository.setUrl( "http://localhost:" + httpServerPort );
+ testRepository.setUrl( "http://localhost:" + getPort() );
wagon.connect( testRepository );
@@ -91,7 +91,7 @@ public class HttpWagonTimeoutTest
wagon.setReadTimeout( 1000 );
Repository testRepository = new Repository();
- testRepository.setUrl( "http://localhost:" + httpServerPort );
+ testRepository.setUrl( "http://localhost:" + getPort() );
wagon.connect( testRepository );
@@ -123,7 +123,7 @@ public class HttpWagonTimeoutTest
wagon.setReadTimeout( 1000 );
Repository testRepository = new Repository();
- testRepository.setUrl( "http://localhost:" + httpServerPort );
+ testRepository.setUrl( "http://localhost:" + getPort() );
wagon.connect( testRepository );
@@ -155,7 +155,7 @@ public class HttpWagonTimeoutTest
wagon.setReadTimeout( 1000 );
Repository testRepository = new Repository();
- testRepository.setUrl( "http://localhost:" + httpServerPort );
+ testRepository.setUrl( "http://localhost:" + getPort() );
wagon.connect( testRepository );