+ end-to-end mock working.

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

@ -7,9 +7,7 @@ import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List;
import java.util.Map; import java.util.Map;
public class BridgeServlet extends HttpServlet { public class BridgeServlet extends HttpServlet {
@ -28,33 +26,32 @@ public class BridgeServlet extends HttpServlet {
String jsonPayload = IOUtils.toString(request.getReader()); String jsonPayload = IOUtils.toString(request.getReader());
if (jsonPayload.contains("REQUEST")) { Ride ridePayload = new Ride(jsonPayload);
Thread handleGetLinkThread = new Thread(() -> { boolean hasID = ridePayload.getID() != null;
boolean hasRequest = ridePayload.getRequest() != null;
boolean hasData = ridePayload.getData() != null;
if (hasID & hasRequest & !hasData) {
Thread handleGetUserRequestThread = new Thread(() -> {
try { try {
handleGetRequest(request, response); handleGetRequest(request, response);
} catch (IOException | InterruptedException e) { } catch (IOException | InterruptedException e) {e.printStackTrace(); }
e.printStackTrace();
}
}); });
handleGetLinkThread.setName("handleGetLinkThread"); handleGetUserRequestThread.setName("handleGetUserRequestThread");
handleGetLinkThread.start(); handleGetUserRequestThread.start();
} else { }
Ride ridePayload = new Ride(jsonPayload);
boolean hasReqeust = ridePayload.getRequest() != null;
boolean hasData = ridePayload.getData() != null;
if (hasReqeust && hasData) { if (hasID && hasRequest && hasData) {
Thread handleGetRideRequestDataThread = new Thread(() -> { Thread handleGetRideRequestDataThread = new Thread(() -> {
try { try {
handleGetRideRequestData(request, response); handleGetRideRequestData(request, response);
} catch (IOException | InterruptedException e) { } catch (IOException | InterruptedException e) { e.printStackTrace(); }
e.printStackTrace();
}
}); });
handleGetRideRequestDataThread.setName("handleGetRideRequestDataThread"); handleGetRideRequestDataThread.setName("handleGetRideRequestDataThread");
handleGetRideRequestDataThread.start(); handleGetRideRequestDataThread.start();
} }
}
} }

@ -24,8 +24,21 @@ public class Ride {
} }
public Ride(String jsonString) { public Ride(String jsonString) {
JSONObject obj = new JSONObject(jsonString); JSONObject obj = new JSONObject();
try {
obj = new JSONObject(jsonString);
}catch (JSONException e){
int br = 0;
}
try {
id = obj.getLong("id"); id = obj.getLong("id");
}catch (JSONException e){
id = count++;
}
try{ try{
request = obj.getString("request"); request = obj.getString("request");
} catch (JSONException e){ } catch (JSONException e){

@ -25,6 +25,7 @@ public abstract class ActorRunnable implements Runnable {
public ActorRunnable(MockSet mockSet){ public ActorRunnable(MockSet mockSet){
this.mockSet = mockSet; this.mockSet = mockSet;
} }

@ -15,6 +15,7 @@ public class AppMock extends ActorRunnable {
public AppMock(MockSet mockSet) { public AppMock(MockSet mockSet) {
super(mockSet); super(mockSet);
mockSet.appMock = this;
} }
@ -42,7 +43,7 @@ public class AppMock extends ActorRunnable {
JSONObject obj = new JSONObject(parsedRequest); JSONObject obj = new JSONObject(parsedRequest);
parsedRequest = obj.getString("request"); parsedRequest = obj.getString("request");
String dataString = "DATA" + parsedRequest.split("-")[1]; String dataString = "DATA-" + parsedRequest.split("-")[1];
JSONObject dataObj = new JSONObject(); JSONObject dataObj = new JSONObject();
dataObj.put("data", dataString); dataObj.put("data", dataString);

@ -19,6 +19,7 @@ public class UserMock extends ActorRunnable {
public UserMock(MockSet mockSet){ public UserMock(MockSet mockSet){
super(mockSet); super(mockSet);
mockSet.userMock = this;
} }
@Override @Override
@ -57,7 +58,7 @@ public class UserMock extends ActorRunnable {
exchange.request.setMethod("GET"); exchange.request.setMethod("GET");
exchange.request.setContentType("application/json"); exchange.request.setContentType("application/json");
String requestBody = "REQUEST-"+requestCount++; String requestBody = "REQUEST-"+(++requestCount);
String jsonString = "{\"request\":\""+requestBody+ "\"}"; String jsonString = "{\"request\":\""+requestBody+ "\"}";
exchange.request.setContent(jsonString.getBytes()); exchange.request.setContent(jsonString.getBytes());
@ -70,7 +71,7 @@ public class UserMock extends ActorRunnable {
// handle OK (Data) // handle OK (Data)
String data = exchange.response.getContentAsString(); String data = exchange.response.getContentAsString();
System.out.println(data + " of REQUEST-"+requestCount); System.out.println(data + " of REQUEST-"+requestCount);
exchange.notify();
} }
} }

@ -62,12 +62,14 @@ public class BridgeMock extends BridgeServlet {
ride.setState(State.BOOKED); ride.setState(State.BOOKED);
while (ride.getData()==null) { while (ride.getState()!=State.LOADED) {
ride.notify(); ride.notify();
Thread.sleep(100); Thread.sleep(100);
ride.wait(); ride.wait();
} }
ride.setState(State.LOADED);
rideMap.remove(ride.getID());
exchange.response.setStatus(200); exchange.response.setStatus(200);
PrintWriter writer = exchange.response.getWriter(); PrintWriter writer = exchange.response.getWriter();
@ -76,6 +78,7 @@ public class BridgeMock extends BridgeServlet {
writer.close(); writer.close();
ride.notify(); ride.notify();
} }
exchange.notify(); exchange.notify();
} }
@ -106,23 +109,28 @@ public class BridgeMock extends BridgeServlet {
synchronized (exchange) { synchronized (exchange) {
String jsonPayload = IOUtils.toString(request.getReader()); String jsonPayload = IOUtils.toString(request.getReader());
Ride ride = new Ride(jsonPayload); Ride parsedRide = new Ride(jsonPayload);
Ride thisRide = rideMap.get(parsedRide.getID());
synchronized (ride) { synchronized (thisRide) {
ride.setState(State.LOADED); thisRide.setData(parsedRide.getData());
thisRide.setState(State.LOADED);
exchange.response.setStatus(200); exchange.response.setStatus(200);
PrintWriter writer = response.getWriter(); PrintWriter writer = response.getWriter();
writer.write(ride.json()); writer.write(thisRide.json());
writer.flush(); writer.flush();
writer.close(); writer.close();
rideMap.remove(ride.getID());
ride.notify();
thisRide.notify();
} }
exchange.notify(); exchange.notify();
} }
} }

@ -43,10 +43,11 @@ public class ClientMock extends ClientServlet {
// handle OK (Ride)(Request) // handle OK (Ride)(Request)
Ride parsedRide = new Ride(exchange.response.getContentAsString()); Ride parsedRide = new Ride(exchange.response.getContentAsString());
ride.setRequest(parsedRide.getRequest()); ride.setRequest(parsedRide.getRequest());
exchange.notify();
}
ride.setState(State.BOOKED); ride.setState(State.BOOKED);
sendGetRequest(ride); sendGetRequest(ride);
}
} }
@ -69,14 +70,15 @@ public class ClientMock extends ClientServlet {
// Mock GET (Request) // Mock GET (Request)
exchange.notify(); exchange.notify();
mockSet.appMock.doGet(exchange.request,exchange.response); mockSet.appMock.doGet(exchange.request,exchange.response);
exchange.wait(); //exchange.wait();
// handle OK (Data) // handle OK (Data)
Ride parsedRide = new Ride(exchange.response.getContentAsString()); Ride parsedRide = new Ride(exchange.response.getContentAsString());
ride.setData(parsedRide.getData()); ride.setData(parsedRide.getData());
exchange.notify();
}
ride.setState(State.LOADED); ride.setState(State.LOADED);
sendGetRideRequestData(ride); sendGetRideRequestData(ride);
}
} }
@ -103,6 +105,7 @@ public class ClientMock extends ClientServlet {
// handle OK (Ride) // handle OK (Ride)
Ride parsedRide = new Ride(exchange.response.getContentAsString()); Ride parsedRide = new Ride(exchange.response.getContentAsString());
rideMap.remove(parsedRide.getID()); rideMap.remove(parsedRide.getID());
exchange.notify();
} }
} }

@ -21,14 +21,18 @@ public class Main {
Runnable clientRunnable = new ClientRunnable(mockSet); Runnable clientRunnable = new ClientRunnable(mockSet);
Runnable appRunnable = new AppMock(mockSet); Runnable appRunnable = new AppMock(mockSet);
Thread publicThread = new Thread(publicRunnable); Thread userThread = new Thread(publicRunnable);
Thread bridgeThread = new Thread(bridgeRunable); Thread bridgeThread = new Thread(bridgeRunable);
Thread clientThread = new Thread(clientRunnable); Thread clientThread = new Thread(clientRunnable);
Thread appThread = new Thread(appRunnable); Thread appThread = new Thread(appRunnable);
publicThread.start(); userThread.setName("userThread");
userThread.start();
bridgeThread.setName("bridgeThread");
bridgeThread.start(); bridgeThread.start();
clientThread.setName("clientThread");
clientThread.start(); clientThread.start();
appThread.setName("appThread");
appThread.start(); appThread.start();
int br =0; int br =0;

Loading…
Cancel
Save