~ rework mocking

pull/1/head
Ivan Olexyn 5 years ago
parent 2424ea9590
commit 5e647c4408

@ -1,2 +0,0 @@
#### About
Mockup for easy debugging.

@ -1,80 +0,0 @@
import org.mockito.Mockito;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.http.HttpRequest;
import java.util.stream.Collectors;
public class BridgeFake extends ServerFake {
public BridgeFake(){
MainFake.bridgeFake = this;
}
@Override
public void run() {
while (true){
if (requests.size()>0 && responses.size()>0) {
try {
process(requests.remove(0), responses.remove(0));
} catch (IOException e) {
e.printStackTrace();
}
}
try {
System.out.println("BridgeFake.run() knows "+MainFake.clientFake.toString());
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
@Override
void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
String body = request.getReader().lines().collect(Collectors.joining(System.lineSeparator()));
if (body.contains("LINK")) {
} else {
Ride suppliedRide = new Ride(body);
if (suppliedRide.getRideID() != null) {
sendDummy(response);
} else if (suppliedRide.getRequest() != null) {
sendDummy(response);
} else if (suppliedRide.getData() != null) {
sendDummy(response);
} else {
// ERROR
}
}
}
@Override
void doPost(HttpServletRequest request, HttpServletResponse response) {
}
private void sendDummy(HttpServletResponse response) throws IOException {
Ride dummyRide = new Ride();
dummyRide.setRequest("dummyRequest");
dummyRide.setData("dummyData");
HttpServletRequest mockRequest = Mockito.mock(HttpServletRequest.class);
response.setStatus(200);
response.setContentType("application/json");
PrintWriter writer = response.getWriter();
writer.println(dummyRide.json());
}
}

@ -1,43 +0,0 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.http.HttpRequest;
public class ClientFake extends ServerFake {
public ClientFake(){
MainFake.clientFake = this;
}
@Override
public void run() {
while (true){
if (requests.size()>0 && responses.size()>0) {
try {
process(requests.remove(0), responses.remove(0));
} catch (IOException e) {
e.printStackTrace();
}
}
try {
System.out.println("ClientFake.run() knows "+MainFake.bridgeFake.toString());
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
@Override
void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
}
@Override
void doPost(HttpServletRequest request, HttpServletResponse response) {
}
}

@ -1,23 +0,0 @@
public class MainFake {
public static BridgeFake bridgeFake;
public static ClientFake clientFake;
public static void main(String... args){
Runnable bridgeRunable = new BridgeFake();
Runnable clientRunnable = new ClientFake();
Thread bridgeThread = new Thread(bridgeRunable);
Thread clientThread = new Thread(clientRunnable);
bridgeThread.start();
clientThread.start();
}
}

@ -1,38 +0,0 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.http.HttpRequest;
import java.util.ArrayList;
import java.util.List;
public abstract class ServerFake implements Runnable {
List<HttpServletResponse> responses = new ArrayList<>();
List<HttpServletRequest> requests = new ArrayList<>();
@Override
public abstract void run();
public void process(HttpServletRequest request,HttpServletResponse response) throws IOException {
if (request.getMethod().equalsIgnoreCase("GET")){
doGet(request,response);
} else if(request.getMethod().equalsIgnoreCase("POST")){
doPost(request,response);
}
}
abstract void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException;
abstract void doPost(HttpServletRequest request, HttpServletResponse response);
}

@ -0,0 +1,9 @@
#### About
Mockup for easy debugging.
* There are 4 actors which are mocked:
* `AppMock` : the App hosted on *localhost*.
* `ClientMock` : the *mispclient* Servlet.
* `BridgeMock` : the *mispbridge* Servlet.
* `PubicMock` : the user agent accessing the *mispbridge* from the internet.
* `MockSet` knows all 4 actors, all the 4 actors know `MockSet`.
* Thus all 4 actors know each other.

@ -0,0 +1,66 @@
import org.mockito.Mockito;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
/**
* Generic Runnable.
* Serves as basis for Actors that are not Servlets.
*/
public abstract class ActorRunnable implements Runnable {
List<HttpServletResponse> responses = new ArrayList<>();
List<HttpServletRequest> requests = new ArrayList<>();
protected MockSet mockSet;
public ActorRunnable(MockSet mockSet){
this.mockSet = mockSet;
}
@Override
public void run() {
while (true) {
if (requests.size() > 0) {
try {
processRequests(requests.remove(0));
} catch (IOException | ServletException e) {
e.printStackTrace();
}
}
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public void processRequests(HttpServletRequest request) throws IOException, ServletException {
HttpServletResponse response = Mockito.mock(HttpServletResponse.class);
if (request.getMethod().equalsIgnoreCase("GET")) {
doGet(request, response);
} else if (request.getMethod().equalsIgnoreCase("POST")) {
doPost(request, response);
}
}
abstract void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException;
abstract void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException;
}

@ -0,0 +1,32 @@
import org.mockito.Mockito;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class AppMock extends ActorRunnable {
public AppMock(MockSet mockSet){
super(mockSet);
}
@Override
public void run() {
}
@Override
void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
HttpServletResponse mockResponse = Mockito.mock(HttpServletResponse.class);
//Main.clientRunnable.responses.add(mockResponse);
}
@Override
void doPost(HttpServletRequest request, HttpServletResponse response) {
}
}

@ -0,0 +1,14 @@
public class BridgeMock extends BridgeServlet {
private MockSet mockSet;
public BridgeMock(MockSet mockSet){
super();
mockSet.bridgeMock=this;
this.mockSet = mockSet;
}
}

@ -0,0 +1,21 @@
/**
* Pass the MockSet.
* Provide a Runnable.
*/
public class BridgeRunnable implements Runnable {
MockSet mockSet;
public BridgeRunnable(MockSet mockSet){
super();
this.mockSet = mockSet;
}
@Override
public void run() {
new BridgeMock(mockSet);
}
}

@ -0,0 +1,33 @@
import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.mock.web.MockHttpServletResponse;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* Wraps a ClientServlet so it can be debugged easily, i.e. without running Tomcat.
*/
public class ClientMock extends ClientServlet {
private MockSet mockSet;
public ClientMock(MockSet mockSet){
super();
mockSet.clientMock = this;
this.mockSet = mockSet;
}
@Override
Ride sendPostRide(Ride ride) throws IOException, ServletException {
// SUPER ILLEGAL MOCKING
MockHttpServletRequest request = new MockHttpServletRequest();
MockHttpServletResponse response = new MockHttpServletResponse();
mockSet.bridgeMock.doPost(request,response);
return super.sendPostRide(ride);
}
}

@ -0,0 +1,20 @@
/**
* Pass the MockSet.
* Provide a Runnable.
*/
public class ClientRunnable implements Runnable {
private MockSet mockSet;
public ClientRunnable(MockSet mockSet){
super();
this.mockSet = mockSet;
}
@Override
public void run() {
new ClientMock(mockSet);
}
}

@ -0,0 +1,31 @@
public class Main {
public static void main(String... args){
MockSet mockSet = new MockSet();
Runnable publicRunnable = new PublicMock(mockSet);
Runnable bridgeRunable = new BridgeRunnable(mockSet);
Runnable clientRunnable = new ClientRunnable(mockSet);
Runnable appRunnable = new AppMock(mockSet);
Thread publicThread = new Thread(publicRunnable);
Thread bridgeThread = new Thread(bridgeRunable);
Thread clientThread = new Thread(clientRunnable);
Thread appThread = new Thread(appRunnable);
publicThread.start();
bridgeThread.start();
clientThread.start();
appThread.start();
int br =0;
}
}

@ -0,0 +1,6 @@
public class MockSet {
PublicMock publicMock;
BridgeMock bridgeMock;
ClientMock clientMock;
AppMock appMock;
}

@ -0,0 +1,26 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class PublicMock extends ActorRunnable {
public PublicMock(MockSet mockSet){
super(mockSet);
}
@Override
public void run() {
}
@Override
void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
}
@Override
void doPost(HttpServletRequest request, HttpServletResponse response) {
}
}

@ -267,7 +267,7 @@ layer=-1</panel_attributes>
<h>40</h>
</coordinates>
<panel_attributes>Available
Ride
Rides
bg=#FFF59D
transparency=0</panel_attributes>
<additional_attributes/>
@ -281,7 +281,7 @@ transparency=0</panel_attributes>
<h>190</h>
</coordinates>
<panel_attributes>Reserved
Ride
Rides
bg=#FFF59D
transparency=0</panel_attributes>
<additional_attributes/>
@ -295,7 +295,7 @@ transparency=0</panel_attributes>
<h>40</h>
</coordinates>
<panel_attributes>New
Request
Requests
bg=#E6EE9C
transparency=0</panel_attributes>
<additional_attributes/>
@ -309,7 +309,7 @@ transparency=0</panel_attributes>
<h>80</h>
</coordinates>
<panel_attributes>Available
Ride
Rides
bg=#FFF59D
transparency=0</panel_attributes>
<additional_attributes/>
@ -323,7 +323,7 @@ transparency=0</panel_attributes>
<h>40</h>
</coordinates>
<panel_attributes>Delivered
Ride
Rides
bg=#FFF59D
transparency=0
layer=1</panel_attributes>
@ -338,7 +338,7 @@ layer=1</panel_attributes>
<h>40</h>
</coordinates>
<panel_attributes>New
Request
Requests
bg=#E6EE9C
transparency=0</panel_attributes>
<additional_attributes/>
@ -352,7 +352,7 @@ transparency=0</panel_attributes>
<h>40</h>
</coordinates>
<panel_attributes>Forwarded
Request
Requests
bg=#E6EE9C
transparency=0</panel_attributes>
<additional_attributes/>
@ -394,7 +394,7 @@ transparency=0</panel_attributes>
<h>120</h>
</coordinates>
<panel_attributes>Forwarded
Request
Requests
bg=#E6EE9C
transparency=0</panel_attributes>
<additional_attributes/>
@ -436,7 +436,7 @@ transparency=0</panel_attributes>
<h>250</h>
</coordinates>
<panel_attributes>Reserved
Ride
Rides
bg=#FFF59D
transparency=0
layer=1</panel_attributes>

Loading…
Cancel
Save