Differences

This shows you the differences between two versions of the page.

Link to this comparison view

ii:labs:s2:05:tasks:02 [2022/05/31 16:05]
radu.ciobanu [02. [40p] Deploying and testing a service stack in a multi-node Docker Swarm cluster]
ii:labs:s2:05:tasks:02 [2024/04/29 19:31] (current)
radu.ciobanu [02. [10p] Testing a web application using Postman]
Line 1: Line 1:
-==== 02. [40pDeploying and testing ​service stack in a multi-node Docker Swarm cluster ​====+==== 02. [10pTesting ​web application using Postman ​====
  
-For this exercisewe will deploy ​four-service stack, which is defined in the //**docker-compose-swarm.yml**// file from the {{:​ii:​labs:​s2:​05:​tasks:​lab5.zip|lab archive}}.+The application started earlier is a web application that does not have a graphical interface (i.e., a frontend). ​For this reasonit can only be tested by sending HTTP requests using tool such as [[https://www.postman.com|Postman]]. We will now show how to use Postman to connect to a web application backend.
  
-== Subtasks ==+In the Postman application,​ we can create the two types of requests that we want to test: 
 +  * //**GET**// - requests information from the backend (in our case, the list of books in the library) 
 +  * //​**POST**//​ - sends information to the backend (in our case, adds a book to the library).
  
-  - on //**node1**//, download ​the lab archive using the following command: //**wget https://ocw.cs.pub.ro/courses/_media/ii/labs/s2/05/tasks/lab5.zip**// +The steps to accomplish this are outlined below. Firstly, once we have opened the Postman application,​ we press the //**+**// buttonas can be seen in the image below (the button is circled in red). 
-  - on //**node1**//, unzip the lab archive with the following command: //**unzip lab5.zip**// + 
-  - on //**node1**//, deploy ​the service stack with the following command: ​//**docker stack deploy -c docker-compose-swarm.yml lab5**// +{{:ii:​labs:​s2:​04:​tasks:​screen1.png?​direct&​700|}} 
-  - check that all services have started with the //**docker stack ps lab5**// command ​(you should see all services ​in the "Running"​ state; if not, run the command until all services have started+ 
-  - check how your services have been scheduled by accessing ​the //**visualizer**// service; this is done by clicking on the blue //**8081**// button on the Play with Docker ​page; are all the services there?+Next, we select the //**HTTP Request**// option, as shown below. 
 + 
 +{{:​ii:​labs:​s2:​04:​tasks:​screen2.png?​direct&​700|}} 
 + 
 +We add the first request, whose type should be //**GET**//In the address bar, we write //**localhost:​5555/api/books/**// and then we press the //**Send**// button (shown in red in the image below). 
 + 
 +{{:​ii:​labs:​s2:​04:​tasks:​screen3.png?​direct&​700|}} 
 + 
 +Once the request is sent and everything is in order, we should receive a reply with the status ​//**200 OK**// (circled in the image below)which contains an empty string (because there are currently no books in the library), as shown below. 
 + 
 +{{:ii:​labs:​s2:​04:​tasks:​screen4.png?​direct&​700|}} 
 + 
 +Next, we can create a //**POST**// requestWe start by pressing the circled //**+**// button in the image below. 
 + 
 +{{:​ii:​labs:​s2:​04:​tasks:​screen5.png?​direct&​700|}} 
 + 
 +Next, we set the request type to //**POST**// and then put the same address as before. 
 + 
 +{{:​ii:​labs:​s2:​04:​tasks:​screen6.png?​direct&​700|}} 
 + 
 +Because we are now adding a bookwe need to place the book information in the //**POST**// request we are makingThis is done by selecting the //**Body**// component of the request (circled in red in the image below), marking ​the data as //**Raw**// and //**JSON**// (also in red in the image) and adding the book information in JSON format (see below an example for "Harry Potter and the Prisoner of Azkaban"​): 
 + 
 +{{:​ii:​labs:​s2:​04:​tasks:​screen7.png?​direct&​700|}} 
 + 
 +When we press the //**Send**// button, if everything ​is fine, we will receive a reply with the status ​//**200 OK**// and the ID of the newly-added book, as can be seen in the image. 
 + 
 +{{:​ii:​labs:​s2:​04:​tasks:​screen8.png?​direct&​700|}} 
 + 
 +Finally, if we run the //**GET**// request again, we can check the existence of the book we added in the library. 
 + 
 +{{:​ii:​labs:​s2:​04:​tasks:​screen9.png?​direct&​700|}} 
 + 
 +<note important>​If you are using Play with Docker ​instead of running on your own computer, you need to replace ​the //​**localhost:​5555**//​ part of the address with the VM's actual address (see [[ii:​labs:​s2:​04|lab 4]] for a reminder on how to do this).</​note>​ 
 + 
 +== Subtasks ==
  
-== What to upload ==+  - install Postman 
 +  - send a //**GET**// request ​to your application based on the steps above and check that it returns //**200 OK**// and an empty list of books 
 +  - add a book of your choosing in the library using a //​**POST**//​ request based on the steps above and check that it returns //**200 OK**// 
 +  - send a //**GET**// request again and check that you can see the book you just added
  
-  * a text file with the commands given on each node 
-  * a print screen with the output of the //**docker stack ps lab5**// command 
-  * a print screen with the //​**visualizer**//​ page 
ii/labs/s2/05/tasks/02.1654002356.txt.gz · Last modified: 2022/05/31 16:05 by radu.ciobanu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0