+ mock handlers.

pull/1/head
Ivan Olexyn 5 years ago
parent e9355280bc
commit 4fd4855a8f

@ -36,6 +36,7 @@ public class BridgeServlet extends HttpServlet {
e.printStackTrace();
}
});
handleGetLinkThread.setName("handleGetLinkThread");
handleGetLinkThread.start();
} else {
Ride ridePayload = new Ride(jsonPayload);
@ -50,6 +51,7 @@ public class BridgeServlet extends HttpServlet {
e.printStackTrace();
}
});
handleGetRideRequestDataThread.setName("handleGetRideRequestDataThread");
handleGetRideRequestDataThread.start();
}
}

@ -26,9 +26,9 @@ public class ClientServlet extends HttpServlet {
public ClientServlet() {
// Thread : while AvailableRides < 256 , add Ride to AvailableRides , send POST (Ride) [DONE]
new Thread(new PostRideRunnable(this)).start();
Thread postRideThread = new Thread(new PostRideRunnable(this));
postRideThread.setName("postRideThread");
postRideThread.start();
}
@ -65,7 +65,7 @@ public class ClientServlet extends HttpServlet {
/**
* # send GET (Request) to App
*/
void sendGetRequest(Ride ride) throws IOException {
void sendGetRequest(Ride ride) throws IOException, ServletException, InterruptedException {
// send FOO
// TODO make sure as many as possible tyes of requests can be forwarded.
@ -85,7 +85,7 @@ public class ClientServlet extends HttpServlet {
/**
* # send GET (Ride)(Request)(Data)
*/
void sendGetRideRequestData(Ride oldRide) throws IOException {
void sendGetRideRequestData(Ride oldRide) throws IOException, ServletException, InterruptedException {
HttpURLConnection connection = ConnectionHelper.make("GET", MISP_BRIDGE_URL);

@ -47,8 +47,8 @@ public abstract class ActorRunnable implements Runnable {
}
abstract void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException;
public abstract void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException;
abstract void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException;
public abstract void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException;
}

@ -1,36 +1,63 @@
package actor;
import actor.ActorRunnable;
import core.MockSet;
import exchange.ExchangeMock;
import exchange.RequestMock;
import org.apache.commons.io.IOUtils;
import org.json.JSONObject;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import core.MockSet;
import java.io.PrintWriter;
public class AppMock extends ActorRunnable {
public AppMock(MockSet mockSet){
public AppMock(MockSet mockSet) {
super(mockSet);
}
@Override
public void run() {
while (true) {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
@Override
void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
RequestMock mockRequest = (RequestMock) request;
ExchangeMock exchange = mockRequest.exchange;
synchronized (exchange) {
String parsedRequest = IOUtils.toString(request.getReader());
JSONObject obj = new JSONObject(parsedRequest);
parsedRequest = obj.getString("request");
//Main.clientRunnable.responses.add(mockResponse);
String dataString = "DATA" + parsedRequest.split("-")[1];
JSONObject dataObj = new JSONObject();
dataObj.put("data", dataString);
exchange.response.setStatus(200);
PrintWriter writer = exchange.response.getWriter();
writer.write(dataObj.toString());
writer.flush();
writer.close();
exchange.notify();
}
}
@Override
void doPost(HttpServletRequest request, HttpServletResponse response) {
public void doPost(HttpServletRequest request, HttpServletResponse response) {
}
}

@ -35,12 +35,12 @@ public class UserMock extends ActorRunnable {
}
@Override
void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
}
@Override
void doPost(HttpServletRequest request, HttpServletResponse response) {
public void doPost(HttpServletRequest request, HttpServletResponse response) {
}

@ -67,11 +67,14 @@ public class BridgeMock extends BridgeServlet {
Thread.sleep(100);
ride.wait();
}
ride.setState(State.LOADED);
exchange.response.setStatus(200);
PrintWriter writer = exchange.response.getWriter();
writer.print(ride.getData());
ride.setState(State.LOADED);
writer.write(ride.getData());
writer.flush();
writer.close();
ride.notify();
}
exchange.notify();
@ -112,7 +115,9 @@ public class BridgeMock extends BridgeServlet {
exchange.response.setStatus(200);
PrintWriter writer = response.getWriter();
writer.print(ride.json());
writer.write(ride.json());
writer.flush();
writer.close();
rideMap.remove(ride.getID());
ride.notify();
@ -167,10 +172,13 @@ public class BridgeMock extends BridgeServlet {
exchange.response.setStatus(200);
PrintWriter writer = response.getWriter();
writer.print(ride.json());
exchange.notify();
//writer.print(ride.json());
writer.write(ride.json());
writer.flush();
writer.close();
ride.notify();
}
exchange.notify();
}

@ -1,6 +1,7 @@
package core;
import exchange.ExchangeMock;
import org.json.JSONObject;
import javax.servlet.ServletException;
import java.io.DataOutputStream;
@ -55,31 +56,27 @@ public class ClientMock extends ClientServlet {
* # send GET (Request) to App
*/
@Override
void sendGetRequest(Ride ride) throws IOException {
void sendGetRequest(Ride ride) throws IOException, ServletException, InterruptedException {
HttpURLConnection connection = ConnectionHelper.make("GET", ClientServlet.APP_URL);
// Mock Exchange
ExchangeMock exchange = new ExchangeMock();
// send GET (Request)
connection.setDoOutput(true);
DataOutputStream outputStream = new DataOutputStream(connection.getOutputStream());
outputStream.writeBytes(ride.getRequest());
outputStream.flush();
outputStream.close();
exchange.request.setMethod("GET");
exchange.request.setContentType("application/json");
exchange.request.setContent(ride.json().getBytes());
synchronized (exchange){
// Mock GET (Request)
exchange.notify();
mockSet.appMock.doGet(exchange.request,exchange.response);
exchange.wait();
// handle OK (Data)
// remove Ride from BookedRides
// add Ride to LoadedRides
// send GET (Ride)(Data)
if (connection.getResponseCode() == 200) {
String parsedData = ConnectionHelper.parseString(connection);
ride.setData(parsedData);
Ride parsedRide = new Ride(exchange.response.getContentAsString());
ride.setData(parsedRide.getData());
ride.setState(State.LOADED);
}
sendGetRideRequestData(ride);
}
}
@ -88,24 +85,24 @@ public class ClientMock extends ClientServlet {
* # send GET (Ride)(Request)(Data)
*/
@Override
void sendGetRideRequestData(Ride ride) throws IOException {
void sendGetRideRequestData(Ride ride) throws IOException, ServletException, InterruptedException {
// Mock Exchange
ExchangeMock exchange = new ExchangeMock();
HttpURLConnection connection = ConnectionHelper.make("GET", ClientServlet.MISP_BRIDGE_URL);
exchange.request.setMethod("GET");
exchange.request.setContentType("application/json");
exchange.request.setContent(ride.json().getBytes());
// send GET (Ride)(Request)(Data)
connection.setDoOutput(true);
DataOutputStream outputStream = new DataOutputStream(connection.getOutputStream());
outputStream.writeBytes(ride.json());
outputStream.flush();
outputStream.close();
synchronized (exchange){
// Mock GET (Ride)(Request)(Data)
exchange.notify();
mockSet.bridgeMock.doGet(exchange.request,exchange.response);
exchange.wait();
// handle OK (Ride)
// remove Ride from LoadedRides
if (connection.getResponseCode() == 200) {
Ride shellIdRide = ConnectionHelper.parseRide(connection);
if (shellIdRide.getID() != null) {
rideMap.remove(ride.getID());
}
Ride parsedRide = new Ride(exchange.response.getContentAsString());
rideMap.remove(parsedRide.getID());
}
}

@ -4,6 +4,20 @@ package exchange;
import java.util.ArrayList;
import java.util.List;
/**
* How "exchange" mocks an exchange:<br>
* <br>
* An "exchange" corresponds to request & reply pair.<br>
* - i.e. a GET & OK pair.<br>
* Steps:<br>
* 1. new Exchange()<br>
* 2. set properties of .request<br>
* 3. "send" request by using exchange.notify(); recipient.doGet();<br>
* 4. recipient does someting with request<br>
* - - recipient sets proerties of .response<br>
* - - recipient sends reply using exchange.notify();<br>
* 5. "receive" response by using exchange.wait();
*/
public class ExchangeMock {
public static List<ExchangeMock> exchangeList = new ArrayList<>();

@ -8,6 +8,7 @@ import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.util.List;
import java.util.Locale;
import java.util.Set;
@ -147,8 +148,8 @@ public class ResponseMock extends MockHttpServletResponse implements HttpServle
}
@Override
public PrintWriter getWriter() {
return null;
public PrintWriter getWriter() throws UnsupportedEncodingException {
return super.getWriter();
}
@Override

Loading…
Cancel
Save