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

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

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

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

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

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

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

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

Loading…
Cancel
Save