From 5e647c4408e1485caf45d40295fc188a12623f05 Mon Sep 17 00:00:00 2001 From: Ivan Olexyn Date: Sat, 18 Apr 2020 16:16:53 +0200 Subject: [PATCH] ~ rework mocking --- mispfake/README.md | 2 - mispfake/src/BridgeFake.java | 80 -------------------------------- mispfake/src/ClientFake.java | 43 ----------------- mispfake/src/MainFake.java | 23 --------- mispfake/src/ServerFake.java | 38 --------------- mispmock/README.md | 9 ++++ mispmock/src/ActorRunnable.java | 66 ++++++++++++++++++++++++++ mispmock/src/AppMock.java | 32 +++++++++++++ mispmock/src/BridgeMock.java | 14 ++++++ mispmock/src/BridgeRunnable.java | 21 +++++++++ mispmock/src/ClientMock.java | 33 +++++++++++++ mispmock/src/ClientRunnable.java | 20 ++++++++ mispmock/src/Main.java | 31 +++++++++++++ mispmock/src/MockSet.java | 6 +++ mispmock/src/PublicMock.java | 26 +++++++++++ overview.uxf | 18 +++---- 16 files changed, 267 insertions(+), 195 deletions(-) delete mode 100644 mispfake/README.md delete mode 100644 mispfake/src/BridgeFake.java delete mode 100644 mispfake/src/ClientFake.java delete mode 100644 mispfake/src/MainFake.java delete mode 100644 mispfake/src/ServerFake.java create mode 100644 mispmock/README.md create mode 100644 mispmock/src/ActorRunnable.java create mode 100644 mispmock/src/AppMock.java create mode 100644 mispmock/src/BridgeMock.java create mode 100644 mispmock/src/BridgeRunnable.java create mode 100644 mispmock/src/ClientMock.java create mode 100644 mispmock/src/ClientRunnable.java create mode 100644 mispmock/src/Main.java create mode 100644 mispmock/src/MockSet.java create mode 100644 mispmock/src/PublicMock.java diff --git a/mispfake/README.md b/mispfake/README.md deleted file mode 100644 index b6f4e88..0000000 --- a/mispfake/README.md +++ /dev/null @@ -1,2 +0,0 @@ -#### About -Mockup for easy debugging. \ No newline at end of file diff --git a/mispfake/src/BridgeFake.java b/mispfake/src/BridgeFake.java deleted file mode 100644 index a36aae6..0000000 --- a/mispfake/src/BridgeFake.java +++ /dev/null @@ -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()); - } -} diff --git a/mispfake/src/ClientFake.java b/mispfake/src/ClientFake.java deleted file mode 100644 index e135b3a..0000000 --- a/mispfake/src/ClientFake.java +++ /dev/null @@ -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) { - - } -} diff --git a/mispfake/src/MainFake.java b/mispfake/src/MainFake.java deleted file mode 100644 index ad85c89..0000000 --- a/mispfake/src/MainFake.java +++ /dev/null @@ -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(); - - } -} diff --git a/mispfake/src/ServerFake.java b/mispfake/src/ServerFake.java deleted file mode 100644 index 61f8134..0000000 --- a/mispfake/src/ServerFake.java +++ /dev/null @@ -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 responses = new ArrayList<>(); - List 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); - -} diff --git a/mispmock/README.md b/mispmock/README.md new file mode 100644 index 0000000..3d3f042 --- /dev/null +++ b/mispmock/README.md @@ -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. \ No newline at end of file diff --git a/mispmock/src/ActorRunnable.java b/mispmock/src/ActorRunnable.java new file mode 100644 index 0000000..4ad9462 --- /dev/null +++ b/mispmock/src/ActorRunnable.java @@ -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 responses = new ArrayList<>(); + List 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; + +} diff --git a/mispmock/src/AppMock.java b/mispmock/src/AppMock.java new file mode 100644 index 0000000..9424bbe --- /dev/null +++ b/mispmock/src/AppMock.java @@ -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) { + + } +} diff --git a/mispmock/src/BridgeMock.java b/mispmock/src/BridgeMock.java new file mode 100644 index 0000000..3110972 --- /dev/null +++ b/mispmock/src/BridgeMock.java @@ -0,0 +1,14 @@ +public class BridgeMock extends BridgeServlet { + + private MockSet mockSet; + + public BridgeMock(MockSet mockSet){ + super(); + mockSet.bridgeMock=this; + this.mockSet = mockSet; + } + + + + +} diff --git a/mispmock/src/BridgeRunnable.java b/mispmock/src/BridgeRunnable.java new file mode 100644 index 0000000..ff56645 --- /dev/null +++ b/mispmock/src/BridgeRunnable.java @@ -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); + } + +} diff --git a/mispmock/src/ClientMock.java b/mispmock/src/ClientMock.java new file mode 100644 index 0000000..605ae17 --- /dev/null +++ b/mispmock/src/ClientMock.java @@ -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); + } + + + +} \ No newline at end of file diff --git a/mispmock/src/ClientRunnable.java b/mispmock/src/ClientRunnable.java new file mode 100644 index 0000000..8159af7 --- /dev/null +++ b/mispmock/src/ClientRunnable.java @@ -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); + } +} diff --git a/mispmock/src/Main.java b/mispmock/src/Main.java new file mode 100644 index 0000000..055a0dd --- /dev/null +++ b/mispmock/src/Main.java @@ -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; + } +} + + + diff --git a/mispmock/src/MockSet.java b/mispmock/src/MockSet.java new file mode 100644 index 0000000..cea798d --- /dev/null +++ b/mispmock/src/MockSet.java @@ -0,0 +1,6 @@ +public class MockSet { + PublicMock publicMock; + BridgeMock bridgeMock; + ClientMock clientMock; + AppMock appMock; +} \ No newline at end of file diff --git a/mispmock/src/PublicMock.java b/mispmock/src/PublicMock.java new file mode 100644 index 0000000..f9696f7 --- /dev/null +++ b/mispmock/src/PublicMock.java @@ -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) { + + } +} diff --git a/overview.uxf b/overview.uxf index 8436077..c82b3ed 100644 --- a/overview.uxf +++ b/overview.uxf @@ -267,7 +267,7 @@ layer=-1 40 Available -Ride +Rides bg=#FFF59D transparency=0 @@ -281,7 +281,7 @@ transparency=0 190 Reserved -Ride +Rides bg=#FFF59D transparency=0 @@ -295,7 +295,7 @@ transparency=0 40 New -Request +Requests bg=#E6EE9C transparency=0 @@ -309,7 +309,7 @@ transparency=0 80 Available -Ride +Rides bg=#FFF59D transparency=0 @@ -323,7 +323,7 @@ transparency=0 40 Delivered -Ride +Rides bg=#FFF59D transparency=0 layer=1 @@ -338,7 +338,7 @@ layer=1 40 New -Request +Requests bg=#E6EE9C transparency=0 @@ -352,7 +352,7 @@ transparency=0 40 Forwarded -Request +Requests bg=#E6EE9C transparency=0 @@ -394,7 +394,7 @@ transparency=0 120 Forwarded -Request +Requests bg=#E6EE9C transparency=0 @@ -436,7 +436,7 @@ transparency=0 250 Reserved -Ride +Rides bg=#FFF59D transparency=0 layer=1