aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaurice Lam <yukl@google.com>2021-11-11 05:09:35 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2021-11-11 05:09:35 +0000
commitbc0f4f987a28b7161e46baf6cfd6d246f5cb5472 (patch)
treebef9a9ce62e1e6f1ecec20d138178280da69a82a
parent50e597f1a75208d32ee6b5f77a118be9a8a065a2 (diff)
parent10732a50c75f430c49239ac3e3324f38519cf0f9 (diff)
downloadnanohttpd-bc0f4f987a28b7161e46baf6cfd6d246f5cb5472.tar.gz
Remove nanohttpd/fileupload am: b65223c241 am: ad3c7851b5 am: 6a77c79904 am: ed0440053c am: 10732a50c7t_frc_odp_330442040t_frc_odp_330442000t_frc_con_330443020t_frc_cbr_330443000t_frc_ase_330444010t_frc_art_330443060t_frc_adb_330444000android-13.0.0_r83android-13.0.0_r82android-13.0.0_r81android-13.0.0_r80android-13.0.0_r79android-13.0.0_r78android-13.0.0_r77android-13.0.0_r76android-13.0.0_r75android-13.0.0_r74android-13.0.0_r73android-13.0.0_r72android-13.0.0_r71android-13.0.0_r70android-13.0.0_r69android-13.0.0_r68android-13.0.0_r67android-13.0.0_r66android-13.0.0_r65android-13.0.0_r64android-13.0.0_r63android-13.0.0_r62android-13.0.0_r61android-13.0.0_r60android-13.0.0_r59android-13.0.0_r58android-13.0.0_r57android-13.0.0_r56android-13.0.0_r55android-13.0.0_r54android-13.0.0_r53android-13.0.0_r52android-13.0.0_r51android-13.0.0_r50android-13.0.0_r49android-13.0.0_r48android-13.0.0_r47android-13.0.0_r46android-13.0.0_r45android-13.0.0_r44android-13.0.0_r43android-13.0.0_r42android-13.0.0_r41android-13.0.0_r40android-13.0.0_r39android-13.0.0_r38android-13.0.0_r37android-13.0.0_r36android-13.0.0_r35android-13.0.0_r34android-13.0.0_r33android-13.0.0_r32android-13.0.0_r30android-13.0.0_r29android-13.0.0_r28android-13.0.0_r27android-13.0.0_r24android-13.0.0_r23android-13.0.0_r22android-13.0.0_r21android-13.0.0_r20android-13.0.0_r19android-13.0.0_r18android-13.0.0_r17android-13.0.0_r16aml_uwb_331910010aml_uwb_331820070aml_uwb_331613010aml_uwb_331611010aml_uwb_331410010aml_uwb_331310030aml_uwb_331115000aml_uwb_331015040aml_uwb_330810010aml_tz4_332714070aml_tz4_332714050aml_tz4_332714010aml_tz4_331910000aml_tz4_331314030aml_tz4_331314020aml_tz4_331314010aml_tz4_331012050aml_tz4_331012040aml_tz4_331012000aml_go_wif_330911000aml_go_uwb_330912000aml_go_tz4_330912000aml_go_tet_330914010aml_go_swc_330913000aml_go_sta_330911000aml_go_sdk_330810000aml_go_sch_330911000aml_go_res_330912000aml_go_per_330912000aml_go_odp_330913000aml_go_odp_330912000aml_go_neu_330912000aml_go_net_330913000aml_go_mpr_330912000aml_go_ase_330913000aml_go_ads_330915100aml_go_ads_330915000aml_go_ads_330913000aml_go_adb_330913000aml_ase_331311020aml_ase_331112000aml_ase_331011020aml_ads_331920180aml_ads_331814200aml_ads_331710270aml_ads_331611190aml_ads_331511020aml_ads_331418080aml_ads_331131000android13-qpr3-s9-releaseandroid13-qpr3-s8-releaseandroid13-qpr3-s7-releaseandroid13-qpr3-s6-releaseandroid13-qpr3-s5-releaseandroid13-qpr3-s4-releaseandroid13-qpr3-s3-releaseandroid13-qpr3-s2-releaseandroid13-qpr3-s14-releaseandroid13-qpr3-s13-releaseandroid13-qpr3-s12-releaseandroid13-qpr3-s11-releaseandroid13-qpr3-s10-releaseandroid13-qpr3-s1-releaseandroid13-qpr3-releaseandroid13-qpr3-c-s8-releaseandroid13-qpr3-c-s7-releaseandroid13-qpr3-c-s6-releaseandroid13-qpr3-c-s5-releaseandroid13-qpr3-c-s4-releaseandroid13-qpr3-c-s3-releaseandroid13-qpr3-c-s2-releaseandroid13-qpr3-c-s12-releaseandroid13-qpr3-c-s11-releaseandroid13-qpr3-c-s10-releaseandroid13-qpr3-c-s1-releaseandroid13-qpr2-s9-releaseandroid13-qpr2-s8-releaseandroid13-qpr2-s7-releaseandroid13-qpr2-s6-releaseandroid13-qpr2-s5-releaseandroid13-qpr2-s3-releaseandroid13-qpr2-s2-releaseandroid13-qpr2-s12-releaseandroid13-qpr2-s11-releaseandroid13-qpr2-s10-releaseandroid13-qpr2-s1-releaseandroid13-qpr2-releaseandroid13-qpr2-b-s1-releaseandroid13-qpr1-s8-releaseandroid13-qpr1-s7-releaseandroid13-qpr1-s6-releaseandroid13-qpr1-s5-releaseandroid13-qpr1-s4-releaseandroid13-qpr1-s3-releaseandroid13-qpr1-s2-releaseandroid13-qpr1-s1-releaseandroid13-qpr1-releaseandroid13-mainline-uwb-releaseandroid13-mainline-tzdata4-releaseandroid13-mainline-go-wifi-releaseandroid13-mainline-go-uwb-releaseandroid13-mainline-go-tzdata4-releaseandroid13-mainline-go-tethering-releaseandroid13-mainline-go-sdkext-releaseandroid13-mainline-go-scheduling-releaseandroid13-mainline-go-resolv-releaseandroid13-mainline-go-permission-releaseandroid13-mainline-go-os-statsd-releaseandroid13-mainline-go-odp-releaseandroid13-mainline-go-neuralnetworks-releaseandroid13-mainline-go-networking-releaseandroid13-mainline-go-mediaprovider-releaseandroid13-mainline-go-media-swcodec-releaseandroid13-mainline-go-appsearch-releaseandroid13-mainline-go-adservices-releaseandroid13-mainline-go-adbd-releaseandroid13-mainline-appsearch-releaseandroid13-mainline-adservices-releaseandroid13-frc-odp-releaseandroid13-frc-conscrypt-releaseandroid13-frc-cellbroadcast-releaseandroid13-frc-art-releaseandroid13-frc-adbd-releaseandroid13-devandroid13-d4-s2-releaseandroid13-d4-s1-releaseandroid13-d4-releaseandroid13-d3-s1-releaseandroid13-d2-releaseaml_tz4_332714010
Original change: https://android-review.googlesource.com/c/platform/external/nanohttpd/+/1886194 Change-Id: I7f2665031f34ae6433ca070c4eebfce3546a7ac3
-rw-r--r--fileupload/.gitignore2
-rw-r--r--fileupload/README1
-rw-r--r--fileupload/pom.xml46
-rw-r--r--fileupload/src/main/java/fi/iki/elonen/NanoFileUpload.java118
-rw-r--r--fileupload/src/test/java/fi/iki/elonen/TestNanoFileUpLoad.java246
5 files changed, 1 insertions, 412 deletions
diff --git a/fileupload/.gitignore b/fileupload/.gitignore
deleted file mode 100644
index 868a6b2..0000000
--- a/fileupload/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-/.settings/
-/LICENSE.txt
diff --git a/fileupload/README b/fileupload/README
new file mode 100644
index 0000000..4c70d72
--- /dev/null
+++ b/fileupload/README
@@ -0,0 +1 @@
+nanohttpd/fileupload is removed due to CVE-2016-1000031 \ No newline at end of file
diff --git a/fileupload/pom.xml b/fileupload/pom.xml
deleted file mode 100644
index a90469a..0000000
--- a/fileupload/pom.xml
+++ /dev/null
@@ -1,46 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <parent>
- <artifactId>nanohttpd-project</artifactId>
- <groupId>org.nanohttpd</groupId>
- <version>2.2.0</version>
- </parent>
- <modelVersion>4.0.0</modelVersion>
- <artifactId>nanohttpd-apache-fileupload</artifactId>
- <name>NanoHttpd-apache file upload integration</name>
- <description>nanohttpd-apache-fileupload integrates the apache file upload framework into nanohttpd</description>
- <dependencies>
- <dependency>
- <groupId>org.nanohttpd</groupId>
- <artifactId>nanohttpd</artifactId>
- <version>2.2.0</version>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>commons-fileupload</groupId>
- <artifactId>commons-fileupload</artifactId>
- <version>1.3.1</version>
- </dependency>
- <dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>servlet-api</artifactId>
- <version>2.5</version>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>org.apache.httpcomponents</groupId>
- <artifactId>httpclient</artifactId>
- <version>4.4.1</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.apache.httpcomponents</groupId>
- <artifactId>httpmime</artifactId>
- <version>4.4.1</version>
- <scope>test</scope>
- </dependency>
- </dependencies>
- <properties>
- <minimal.coverage>0.99</minimal.coverage>
- </properties>
-</project> \ No newline at end of file
diff --git a/fileupload/src/main/java/fi/iki/elonen/NanoFileUpload.java b/fileupload/src/main/java/fi/iki/elonen/NanoFileUpload.java
deleted file mode 100644
index ec02d4a..0000000
--- a/fileupload/src/main/java/fi/iki/elonen/NanoFileUpload.java
+++ /dev/null
@@ -1,118 +0,0 @@
-package fi.iki.elonen;
-
-/*
- * #%L
- * apache-fileupload-integration
- * %%
- * Copyright (C) 2012 - 2015 nanohttpd
- * %%
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * 3. Neither the name of the nanohttpd nor the names of its contributors
- * may be used to endorse or promote products derived from this software without
- * specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
- * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
- * OF THE POSSIBILITY OF SUCH DAMAGE.
- * #L%
- */
-
-import static fi.iki.elonen.NanoHTTPD.Method.POST;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.commons.fileupload.FileItem;
-import org.apache.commons.fileupload.FileItemFactory;
-import org.apache.commons.fileupload.FileItemIterator;
-import org.apache.commons.fileupload.FileUpload;
-import org.apache.commons.fileupload.FileUploadBase;
-import org.apache.commons.fileupload.FileUploadException;
-import org.apache.commons.fileupload.UploadContext;
-
-/**
- * @author victor & ritchieGitHub
- */
-public class NanoFileUpload extends FileUpload {
-
- public static class NanoHttpdContext implements UploadContext {
-
- private NanoHTTPD.IHTTPSession session;
-
- public NanoHttpdContext(NanoHTTPD.IHTTPSession session) {
- this.session = session;
- }
-
- @Override
- public long contentLength() {
- long size;
- try {
- String cl1 = session.getHeaders().get("content-length");
- size = Long.parseLong(cl1);
- } catch (NumberFormatException var4) {
- size = -1L;
- }
-
- return size;
- }
-
- @Override
- public String getCharacterEncoding() {
- return "UTF-8";
- }
-
- @Override
- public String getContentType() {
- return this.session.getHeaders().get("content-type");
- }
-
- @Override
- public int getContentLength() {
- return (int) contentLength();
- }
-
- @Override
- public InputStream getInputStream() throws IOException {
- return session.getInputStream();
- }
- }
-
- public static final boolean isMultipartContent(NanoHTTPD.IHTTPSession session) {
- return session.getMethod() == POST && FileUploadBase.isMultipartContent(new NanoHttpdContext(session));
- }
-
- public NanoFileUpload(FileItemFactory fileItemFactory) {
- super(fileItemFactory);
- }
-
- public List<FileItem> parseRequest(NanoHTTPD.IHTTPSession session) throws FileUploadException {
- return this.parseRequest(new NanoHttpdContext(session));
- }
-
- public Map<String, List<FileItem>> parseParameterMap(NanoHTTPD.IHTTPSession session) throws FileUploadException {
- return this.parseParameterMap(new NanoHttpdContext(session));
- }
-
- public FileItemIterator getItemIterator(NanoHTTPD.IHTTPSession session) throws FileUploadException, IOException {
- return super.getItemIterator(new NanoHttpdContext(session));
- }
-
-}
diff --git a/fileupload/src/test/java/fi/iki/elonen/TestNanoFileUpLoad.java b/fileupload/src/test/java/fi/iki/elonen/TestNanoFileUpLoad.java
deleted file mode 100644
index ac18e3a..0000000
--- a/fileupload/src/test/java/fi/iki/elonen/TestNanoFileUpLoad.java
+++ /dev/null
@@ -1,246 +0,0 @@
-package fi.iki.elonen;
-
-/*
- * #%L
- * NanoHttpd-apache file upload integration
- * %%
- * Copyright (C) 2012 - 2015 nanohttpd
- * %%
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * 3. Neither the name of the nanohttpd nor the names of its contributors
- * may be used to endorse or promote products derived from this software without
- * specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
- * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
- * OF THE POSSIBILITY OF SUCH DAMAGE.
- * #L%
- */
-
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.net.InetAddress;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.commons.fileupload.FileItem;
-import org.apache.commons.fileupload.FileItemIterator;
-import org.apache.commons.fileupload.FileItemStream;
-import org.apache.commons.fileupload.FileUploadException;
-import org.apache.commons.fileupload.disk.DiskFileItemFactory;
-import org.apache.commons.fileupload.util.Streams;
-import org.apache.http.HttpEntity;
-import org.apache.http.HttpResponse;
-import org.apache.http.client.ClientProtocolException;
-import org.apache.http.client.methods.CloseableHttpResponse;
-import org.apache.http.client.methods.HttpPost;
-import org.apache.http.client.methods.HttpTrace;
-import org.apache.http.entity.ContentType;
-import org.apache.http.entity.mime.HttpMultipartMode;
-import org.apache.http.entity.mime.MultipartEntityBuilder;
-import org.apache.http.entity.mime.content.FileBody;
-import org.apache.http.entity.mime.content.StringBody;
-import org.apache.http.impl.client.CloseableHttpClient;
-import org.apache.http.impl.client.HttpClients;
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.FixMethodOrder;
-import org.junit.Test;
-import org.junit.internal.runners.statements.Fail;
-
-import fi.iki.elonen.NanoHTTPD.Response.Status;
-
-/**
- * very strange but if the file upload is the first request the test fails.
- *
- * @author ritchieGitHub
- */
-@FixMethodOrder
-public class TestNanoFileUpLoad {
-
- protected TestServer testServer;
-
- public static class TestServer extends NanoHTTPD {
-
- public Response response = newFixedLengthResponse("");
-
- public String uri;
-
- public Method method;
-
- public Map<String, String> header;
-
- public Map<String, String> parms;
-
- public Map<String, List<FileItem>> files;
-
- public Map<String, List<String>> decodedParamters;
-
- public Map<String, List<String>> decodedParamtersFromParameter;
-
- public String queryParameterString;
-
- public TestServer() {
- super(8192);
- uploader = new NanoFileUpload(new DiskFileItemFactory());
- }
-
- public HTTPSession createSession(TempFileManager tempFileManager, InputStream inputStream, OutputStream outputStream) {
- return new HTTPSession(tempFileManager, inputStream, outputStream);
- }
-
- public HTTPSession createSession(TempFileManager tempFileManager, InputStream inputStream, OutputStream outputStream, InetAddress inetAddress) {
- return new HTTPSession(tempFileManager, inputStream, outputStream, inetAddress);
- }
-
- NanoFileUpload uploader;
-
- @Override
- public Response serve(IHTTPSession session) {
-
- this.uri = session.getUri();
- this.method = session.getMethod();
- this.header = session.getHeaders();
- this.parms = session.getParms();
- if (NanoFileUpload.isMultipartContent(session)) {
- try {
- if ("/uploadFile1".equals(this.uri)) {
- session.getHeaders().put("content-length", "AA");
- files = uploader.parseParameterMap(session);
- }
- if ("/uploadFile2".equals(this.uri)) {
- files = new HashMap<String, List<FileItem>>();
- List<FileItem> parseRequest = uploader.parseRequest(session);
- files.put(parseRequest.get(0).getFieldName(), parseRequest);
- }
- if ("/uploadFile3".equals(this.uri)) {
- files = new HashMap<String, List<FileItem>>();
- FileItemIterator iter = uploader.getItemIterator(session);
- while (iter.hasNext()) {
- FileItemStream item = iter.next();
- final String fileName = item.getName();
- FileItem fileItem = uploader.getFileItemFactory().createItem(item.getFieldName(), item.getContentType(), item.isFormField(), fileName);
- files.put(fileItem.getFieldName(), Arrays.asList(new FileItem[]{
- fileItem
- }));
- try {
- Streams.copy(item.openStream(), fileItem.getOutputStream(), true);
- } catch (Exception e) {
- }
- fileItem.setHeaders(item.getHeaders());
- }
- }
- } catch (Exception e) {
- this.response.setStatus(Status.INTERNAL_ERROR);
- e.printStackTrace();
- }
- }
- this.queryParameterString = session.getQueryParameterString();
- this.decodedParamtersFromParameter = decodeParameters(this.queryParameterString);
- this.decodedParamters = decodeParameters(session.getQueryParameterString());
- return this.response;
- }
-
- }
-
- @Test
- public void testNormalRequest() throws Exception {
- CloseableHttpClient httpclient = HttpClients.createDefault();
- HttpTrace httphead = new HttpTrace("http://localhost:8192/index.html");
- CloseableHttpResponse response = httpclient.execute(httphead);
- Assert.assertEquals(200, response.getStatusLine().getStatusCode());
- response.close();
- }
-
- @Test
- public void testPostWithMultipartFormUpload1() throws Exception {
- CloseableHttpClient httpclient = HttpClients.createDefault();
- String textFileName = "src/test/java/fi/iki/elonen/TestNanoFileUpLoad.java";
- HttpPost post = new HttpPost("http://localhost:8192/uploadFile1");
-
- executeUpload(httpclient, textFileName, post);
- FileItem file = this.testServer.files.get("upfile").get(0);
- Assert.assertEquals(file.getSize(), new File(textFileName).length());
- }
-
- @Test
- public void testPostWithMultipartFormUpload2() throws Exception {
- CloseableHttpClient httpclient = HttpClients.createDefault();
- String textFileName = "src/test/java/fi/iki/elonen/TestNanoFileUpLoad.java";
- HttpPost post = new HttpPost("http://localhost:8192/uploadFile2");
-
- executeUpload(httpclient, textFileName, post);
- FileItem file = this.testServer.files.get("upfile").get(0);
- Assert.assertEquals(file.getSize(), new File(textFileName).length());
- }
-
- @Test
- public void testPostWithMultipartFormUpload3() throws Exception {
- CloseableHttpClient httpclient = HttpClients.createDefault();
- String textFileName = "src/test/java/fi/iki/elonen/TestNanoFileUpLoad.java";
- HttpPost post = new HttpPost("http://localhost:8192/uploadFile3");
-
- executeUpload(httpclient, textFileName, post);
- FileItem file = this.testServer.files.get("upfile").get(0);
- Assert.assertEquals(file.getSize(), new File(textFileName).length());
- }
-
- private void executeUpload(CloseableHttpClient httpclient, String textFileName, HttpPost post) throws IOException, ClientProtocolException {
- FileBody fileBody = new FileBody(new File(textFileName), ContentType.DEFAULT_BINARY);
- StringBody stringBody1 = new StringBody("Message 1", ContentType.MULTIPART_FORM_DATA);
-
- MultipartEntityBuilder builder = MultipartEntityBuilder.create();
- builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
- builder.addPart("upfile", fileBody);
- builder.addPart("text1", stringBody1);
- HttpEntity entity = builder.build();
- //
- post.setEntity(entity);
- HttpResponse response = httpclient.execute(post);
- Assert.assertEquals(200, response.getStatusLine().getStatusCode());
- }
-
- @Before
- public void setUp() throws IOException {
- this.testServer = new TestServer();
- this.testServer.start();
- try {
- long start = System.currentTimeMillis();
- Thread.sleep(100L);
- while (!this.testServer.wasStarted()) {
- Thread.sleep(100L);
- if (System.currentTimeMillis() - start > 2000) {
- Assert.fail("could not start server");
- }
- }
- } catch (InterruptedException e) {
- }
- }
-
- @After
- public void tearDown() {
- this.testServer.stop();
- }
-
-}