diff --git a/app/src/testFull/java/org/fdroid/fdroid/net/LocalHTTPDTest.java b/app/src/testFull/java/org/fdroid/fdroid/net/LocalHTTPDTest.java
index 1c3b8e0ea..7f6e11766 100644
--- a/app/src/testFull/java/org/fdroid/fdroid/net/LocalHTTPDTest.java
+++ b/app/src/testFull/java/org/fdroid/fdroid/net/LocalHTTPDTest.java
@@ -37,6 +37,7 @@ import android.content.Context;
import android.text.TextUtils;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
+import org.fdroid.fdroid.Utils;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
@@ -76,11 +77,16 @@ public class LocalHTTPDTest {
private static Thread serverStartThread;
private static File webRoot;
+ private final int port = 38723;
+ private final String baseUrl = "http://localhost:" + port;
+
@Before
public void setUp() throws Exception {
ShadowLog.stream = System.out;
classLoader = getClass().getClassLoader();
+ assertFalse(Utils.isServerSocketInUse(port));
+
final Context context = RuntimeEnvironment.application.getApplicationContext();
webRoot = context.getFilesDir();
FileUtils.deleteDirectory(webRoot);
@@ -99,7 +105,7 @@ public class LocalHTTPDTest {
localHttpd = new LocalHTTPD(
context,
"localhost",
- 8888,
+ port,
webRoot,
false);
try {
@@ -112,7 +118,9 @@ public class LocalHTTPDTest {
});
serverStartThread.start();
// give the server some tine to start.
- Thread.sleep(100);
+ do {
+ Thread.sleep(100);
+ } while (!Utils.isServerSocketInUse(port));
}
@After
@@ -125,7 +133,7 @@ public class LocalHTTPDTest {
@Test
public void doTest404() throws Exception {
- HttpURLConnection connection = getNoKeepAliveConnection("http://localhost:8888/xxx/yyy.html");
+ HttpURLConnection connection = getNoKeepAliveConnection(baseUrl + "/xxx/yyy.html");
connection.setReadTimeout(5000);
connection.connect();
Assert.assertEquals(404, connection.getResponseCode());
@@ -134,14 +142,14 @@ public class LocalHTTPDTest {
@Test
public void doSomeBasicTest() throws Exception {
- URL url = new URL("http://localhost:8888/testdir/test.html");
+ URL url = new URL(baseUrl + "/testdir/test.html");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
assertEquals(200, connection.getResponseCode());
String string = IOUtils.toString(connection.getInputStream(), "UTF-8");
Assert.assertEquals("\n
\ndummy\n\n\n\tit works
\n\n", string);
connection.disconnect();
- url = new URL("http://localhost:8888/");
+ url = new URL(baseUrl + "/");
connection = (HttpURLConnection) url.openConnection();
assertEquals(200, connection.getResponseCode());
string = IOUtils.toString(connection.getInputStream(), "UTF-8");
@@ -149,7 +157,7 @@ public class LocalHTTPDTest {
assertTrue(string.indexOf("testdir") > 0);
connection.disconnect();
- url = new URL("http://localhost:8888/testdir");
+ url = new URL(baseUrl + "/testdir");
connection = (HttpURLConnection) url.openConnection();
assertEquals(200, connection.getResponseCode());
string = IOUtils.toString(connection.getInputStream(), "UTF-8");
@@ -158,7 +166,7 @@ public class LocalHTTPDTest {
IOUtils.copy(classLoader.getResourceAsStream("index.microg.jar"),
new FileOutputStream(new File(webRoot, "index.microg.jar")));
- url = new URL("http://localhost:8888/index.microg.jar");
+ url = new URL(baseUrl + "/index.microg.jar");
connection = (HttpURLConnection) url.openConnection();
assertEquals(200, connection.getResponseCode());
byte[] actual = IOUtils.toByteArray(connection.getInputStream());
@@ -168,7 +176,7 @@ public class LocalHTTPDTest {
IOUtils.copy(classLoader.getResourceAsStream("extendedPerms.xml"),
new FileOutputStream(new File(webRoot, "extendedPerms.xml")));
- url = new URL("http://localhost:8888/extendedPerms.xml");
+ url = new URL(baseUrl + "/extendedPerms.xml");
connection = (HttpURLConnection) url.openConnection();
assertEquals(200, connection.getResponseCode());
actual = IOUtils.toByteArray(connection.getInputStream());
@@ -183,7 +191,7 @@ public class LocalHTTPDTest {
String mimeType = "application/vnd.android.package-archive";
IOUtils.copy(classLoader.getResourceAsStream(fileName),
new FileOutputStream(new File(webRoot, fileName)));
- URL url = new URL("http://localhost:8888/" + fileName);
+ URL url = new URL(baseUrl + "/" + fileName);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("HEAD");
assertEquals(200, connection.getResponseCode());
@@ -197,7 +205,7 @@ public class LocalHTTPDTest {
IOUtils.copy(classLoader.getResourceAsStream("index.html"),
new FileOutputStream(indexFile));
- URL url = new URL("http://localhost:8888/");
+ URL url = new URL(baseUrl + "/");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("HEAD");
String mimeType = "text/html";
@@ -211,12 +219,11 @@ public class LocalHTTPDTest {
assertEquals(200, connection.getResponseCode());
connection.disconnect();
- Thread.sleep(100000);
}
@Test
public void testPostRequest() throws IOException {
- URL url = new URL("http://localhost:8888/request-swap");
+ URL url = new URL(baseUrl + "/request-swap");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("POST");
connection.setDoInput(true);
@@ -224,7 +231,7 @@ public class LocalHTTPDTest {
OutputStream outputStream = connection.getOutputStream();
OutputStreamWriter writer = new OutputStreamWriter(outputStream);
- writer.write("repo=http://localhost:8888");
+ writer.write("repo=" + baseUrl);
writer.flush();
writer.close();
outputStream.close();
@@ -235,14 +242,14 @@ public class LocalHTTPDTest {
@Test
public void testBadPostRequest() throws IOException {
- URL url = new URL("http://localhost:8888/request-swap");
+ URL url = new URL(baseUrl + "/request-swap");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("POST");
connection.setDoInput(true);
connection.setDoOutput(true);
OutputStream outputStream = connection.getOutputStream();
OutputStreamWriter writer = new OutputStreamWriter(outputStream);
- writer.write("repolkasdfkjhttp://localhost:8888");
+ writer.write("repolkasdfkj" + baseUrl);
writer.flush();
writer.close();
outputStream.close();
@@ -294,7 +301,7 @@ public class LocalHTTPDTest {
@Test
public void testURLContainsParentDirectory() throws IOException {
HttpURLConnection connection = null;
- URL url = new URL("http://localhost:8888/testdir/../index.html");
+ URL url = new URL(baseUrl + "/testdir/../index.html");
try {
connection = (HttpURLConnection) url.openConnection();
Assert.assertEquals("The response status should be 403(Forbidden), " + "since the server won't serve requests with '../' due to security reasons",
@@ -315,7 +322,7 @@ public class LocalHTTPDTest {
assertTrue(indexDir.mkdir());
IOUtils.copy(classLoader.getResourceAsStream("index.html"),
new FileOutputStream(new File(indexDir, "index.html")));
- URL url = new URL("http://localhost:8888/" + dirName);
+ URL url = new URL(baseUrl + "/" + dirName);
connection = (HttpURLConnection) url.openConnection();
String responseString = IOUtils.toString(connection.getInputStream(), "UTF-8");
Assert.assertThat("When the URL ends with a directory, and if an index.html file is present in that directory," + " the server should respond with that file",
@@ -323,7 +330,7 @@ public class LocalHTTPDTest {
IOUtils.copy(classLoader.getResourceAsStream("index.html"),
new FileOutputStream(new File(webRoot, "index.html")));
- url = new URL("http://localhost:8888/");
+ url = new URL(baseUrl + "/");
connection = (HttpURLConnection) url.openConnection();
responseString = IOUtils.toString(connection.getInputStream(), "UTF-8");
Assert.assertThat("When the URL ends with a directory, and if an index.html file is present in that directory,"
@@ -340,7 +347,7 @@ public class LocalHTTPDTest {
public void testRangeHeaderWithStartPositionOnly() throws IOException {
HttpURLConnection connection = null;
try {
- connection = getNoKeepAliveConnection("http://localhost:8888/testdir/test.html");
+ connection = getNoKeepAliveConnection(baseUrl + "/testdir/test.html");
connection.addRequestProperty("range", "bytes=10-");
connection.setReadTimeout(5000);
String responseString = IOUtils.toString(connection.getInputStream(), "UTF-8");
@@ -365,7 +372,7 @@ public class LocalHTTPDTest {
public void testRangeStartGreaterThanFileLength() throws IOException {
HttpURLConnection connection = null;
try {
- URL url = new URL("http://localhost:8888/testdir/test.html");
+ URL url = new URL(baseUrl + "/testdir/test.html");
connection = (HttpURLConnection) url.openConnection();
connection.addRequestProperty("range", "bytes=1000-");
connection.connect();
@@ -384,7 +391,7 @@ public class LocalHTTPDTest {
public void testRangeHeaderWithStartAndEndPosition() throws IOException {
HttpURLConnection connection = null;
try {
- URL url = new URL("http://localhost:8888/testdir/test.html");
+ URL url = new URL(baseUrl + "/testdir/test.html");
connection = (HttpURLConnection) url.openConnection();
connection.addRequestProperty("range", "bytes=10-40");
String responseString = IOUtils.toString(connection.getInputStream(), "UTF-8");
@@ -412,7 +419,7 @@ public class LocalHTTPDTest {
while (status == -1) {
System.out.println("testIfNoneMatchHeader connect attempt");
try {
- connection = getNoKeepAliveConnection("http://localhost:8888/testdir/test.html");
+ connection = getNoKeepAliveConnection(baseUrl + "/testdir/test.html");
connection.setRequestProperty("if-none-match", "*");
connection.connect();
status = connection.getResponseCode();
@@ -430,7 +437,7 @@ public class LocalHTTPDTest {
public void testRangeHeaderAndIfNoneMatchHeader() throws IOException {
HttpURLConnection connection = null;
try {
- URL url = new URL("http://localhost:8888/testdir/test.html");
+ URL url = new URL(baseUrl + "/testdir/test.html");
connection = (HttpURLConnection) url.openConnection();
connection.addRequestProperty("range", "bytes=10-20");
connection.addRequestProperty("if-none-match", "*");