From 58399c09fa0634465dcddd930ee14ef7409210da Mon Sep 17 00:00:00 2001 From: SanskritiHarmukh Date: Mon, 6 Feb 2023 03:36:23 +0530 Subject: [PATCH 1/7] refactored readme for java sample app Signed-off-by: SanskritiHarmukh --- README.md | 217 +++++++++++++++++++++++++++++------------------------- 1 file changed, 115 insertions(+), 102 deletions(-) diff --git a/README.md b/README.md index c66d961e..14ccd3b8 100644 --- a/README.md +++ b/README.md @@ -6,44 +6,57 @@ A sample Employee-Manager app to test Keploy integration capabilities using [Spr - [Java 8+](https://docs.spring.io/spring-boot/docs/current/reference/html/getting-started.html#getting-started.installing) -## Installation +## Installation Setup -### Start keploy server (macOS) +Note that Testcases are exported as files in the local repository by default + +
+Mac ```shell curl --silent --location "https://github.com/keploy/keploy/releases/latest/download/keploy_darwin_all.tar.gz" | tar xz -C /tmp -sudo mv /tmp/keploy /usr/local/bin && keploy +sudo mv /tmp/keploy /usr/local/bin + +# start keploy with default settings +keploy ``` -### Start keploy server (Linux) + +
+ +
+Linux ```shell curl --silent --location "https://github.com/keploy/keploy/releases/latest/download/keploy_linux_amd64.tar.gz" | tar xz -C /tmp +sudo mv /tmp/keploy /usr/local/bin -sudo mv /tmp/keploy /usr/local/bin && keploy +# start keploy with default settings +keploy ``` +
+ -### Setup Employee-Manager App -```bash -git clone https://github.com/keploy/samples-java -``` -### Start PostgreSQL instance +## Setup Employee-Manager App + ```bash +git clone https://github.com/keploy/samples-java && cd samples-java + +# Start PostgreSQL instance docker-compose up -d -``` -### Maven clean install -```shell +# Maven clean install mvn clean install -``` -### Run the application -```shell +# Run the application mvn spring-boot:run + +# run the sample app in record mode +export KEPLOY_MODE=record && mvn spring-boot:run ``` @@ -51,7 +64,7 @@ mvn spring-boot:run To generate testcases we just need to **make some API calls.** You can use [Postman](https://www.postman.com/), [Hoppscotch](https://hoppscotch.io/), or simply `curl` -### 1. Make an employee entry +- ### Make an employee entry ```bash curl --location --request POST 'http://localhost:8080/api/employees' \ @@ -76,22 +89,21 @@ this will return the resonse or an entry . The timestamp would automatically be } ``` -### 2. Fetch recorded info about employees +- ### Fetch recorded info about employees +1. By using Curl Command ```bash curl --location --request GET 'http://localhost:8080/api/employees/1' - ``` -or by querying through the browser `http://localhost:8080/api/employees/1` - -Now both these API calls were captured as a testcase and should be visible on the [Keploy console](http://localhost:8081/testlist). -If you're using Keploy cloud, open [this](https://app.keploy.io/testlist). +2. Or by querying through the browser `http://localhost:8080/api/employees/1` -You should be seeing an app named `myApp` with the test cases we just captured. +Now both these API calls were captured as **editable** testcases and written to `test/e2e/keploy-tests` folder. The keploy directory would also have `mocks` folder. ![testcases](https://i.imgur.com/rhNndcF.png) + + Now, let's see the magic! 🪄💫 ## Test mode @@ -108,89 +120,87 @@ Now that we have our testcase captured, run the unit test file (``SampleJavaAppl If not present, you can add ``SampleJavaApplication_Test.java`` in the test module of your sample application. ```java - @Test - public void TestKeploy() throws InterruptedException { + @Test + public void TestKeploy() throws InterruptedException { + CountDownLatch countDownLatch = HaltThread.getInstance().getCountDownLatch(); + mode.setTestMode(); - CountDownLatch countDownLatch = HaltThread.getInstance().getCountDownLatch(); - mode.setTestMode(); + new Thread(() -> { + SamplesJavaApplication.main(new String[]{""}); + countDownLatch.countDown(); + }).start(); - new Thread(() -> { - SamplesJavaApplication.main(new String[]{""}); - countDownLatch.countDown(); - }).start(); - - countDownLatch.await(); - } + countDownLatch.await(); + } ``` To automatically download and run the captured test-cases. Let's run the test-file. -2. To get test coverage, in addition to above follow below instructions. - -3. Add maven-surefire-plugin to your *pom.xml*. - - ```xml - - org.apache.maven.plugins - maven-surefire-plugin - 2.22.2 - - - - - - target/jacoco.exec - - - - - ``` -4. Add Jacoco plugin to your *pom.xml*. - - ```xml - - org.jacoco - jacoco-maven-plugin - 0.8.5 - - - prepare-agent - - prepare-agent - - - - report - prepare-package - - report - - - - post-unit-test - test - - report - - - - - target/jacoco.exec - - target/my-reports - - - - - ``` - -5. Run your tests using command : `mvn test`. +To get test coverage, in addition to above follow below instructions. + +1. Add maven-surefire-plugin to your *pom.xml*. + +```xml + + org.apache.maven.plugins + maven-surefire-plugin + 2.22.2 + + + + + + target/jacoco.exec + + + +``` +2. Add Jacoco plugin to your *pom.xml*. + +```xml + + org.jacoco + jacoco-maven-plugin + 0.8.5 + + + prepare-agent + + prepare-agent + + + + report + prepare-package + + report + + + + post-unit-test + test + + report + + + + + target/jacoco.exec + + target/my-reports + + + + +``` + +3. Run your tests using command : `mvn test`. It will create .html files as test-reports which can be found in your target folder !! -**We got 75.3% without writing any testcases. 🎉 ** +**_We got 75.3% without writing any testcases. 🎉_** @@ -201,7 +211,9 @@ Go to the Keploy Console TestRuns Page to get deeper insights on what testcases ![testruns](https://i.imgur.com/tg6OT0n.png "Summary") -### Testing using `KEPLOY_MODE` Env Variable + + +### Testing using **KEPLOY_MODE** Env Variable To test using `KEPLOY_MODE` env variable, set the same to `test` mode. @@ -243,14 +255,15 @@ Hibernate: select employee0_.id as id1_0_, employee0_.email as email2_0_, employ Now let's introduce a bug! Let's try changing something like adding some extra headers in controllers `./EmployeeController.java` on line 35 like : ```java - ... - return ResponseEntity.ok().header("MyNewHeader","abc").body(employee); - ... +return ResponseEntity.ok().header("MyNewHeader","abc").body(employee); ``` Let's run the test-file to see if Keploy catches the regression introduced. -`mvn test` + +```shell +mvn test +``` You'll notice the failed test-case in the output. @@ -261,7 +274,7 @@ You'll notice the failed test-case in the output. 2022-08-26 13:10:10.312 INFO 70155 --- [ Thread-1] io.keploy.service.GrpcService : || passed overall: FALSE || ``` -To deep dive the problem go to [test runs](http://localhost:8081/testruns) +To deep dive the problem go to [test runs](http://localhost:6789/testruns) ![testruns](https://i.imgur.com/qwP8r4d.png "Recent testruns") From 184f5169fc09b6f4ce2532a961205b791f89fe33 Mon Sep 17 00:00:00 2001 From: SanskritiHarmukh Date: Mon, 6 Feb 2023 03:40:50 +0530 Subject: [PATCH 2/7] edited the link for test modes Signed-off-by: SanskritiHarmukh --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 14ccd3b8..d193f2eb 100644 --- a/README.md +++ b/README.md @@ -110,8 +110,8 @@ Now, let's see the magic! 🪄💫 There are 2 ways to test the application with Keploy. -1. [Unit Test File](https://docs.keploy.io/docs/java/run-your-first-app-tutorial#testing-using-unit-test-file) -2. [KEPLOY_MODE environment variable](https://docs.keploy.io/docs/java/run-your-first-app-tutorial#testing-using-keploy_mode-env-variable) +1. [Unit Test File](/README.md#testing-using-unit-test-file) +2. [KEPLOY_MODE environment variable](/README.md#testing-using-keploy_mode-env-variable) ### Testing using Unit Test File From 23dd3d0a7ae6cab9f4ff352c777c197e464bb9bc Mon Sep 17 00:00:00 2001 From: SanskritiHarmukh Date: Mon, 6 Feb 2023 18:26:14 +0530 Subject: [PATCH 3/7] removed unnecessary image Signed-off-by: SanskritiHarmukh --- README.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/README.md b/README.md index d193f2eb..22b01302 100644 --- a/README.md +++ b/README.md @@ -204,9 +204,6 @@ It will create .html files as test-reports which can be found in your target fol -Go to the Keploy Console TestRuns Page to get deeper insights on what testcases ran, what failed. - -![testruns](https://raw.githubusercontent.com/keploy/samples-java/blob/main/src/main/resources/AllTestPass_outer.png "Recent testruns") ![testruns](https://i.imgur.com/tg6OT0n.png "Summary") From 380106c8f2e29516c7ede7f56df039714d85bf17 Mon Sep 17 00:00:00 2001 From: SanskritiHarmukh Date: Wed, 8 Feb 2023 19:41:39 +0530 Subject: [PATCH 4/7] Revert "removed unnecessary image" This reverts commit 71026069b32faf069e6252534e2a8a6777cb36b3. Signed-off-by: SanskritiHarmukh --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 22b01302..d193f2eb 100644 --- a/README.md +++ b/README.md @@ -204,6 +204,9 @@ It will create .html files as test-reports which can be found in your target fol +Go to the Keploy Console TestRuns Page to get deeper insights on what testcases ran, what failed. + +![testruns](https://raw.githubusercontent.com/keploy/samples-java/blob/main/src/main/resources/AllTestPass_outer.png "Recent testruns") ![testruns](https://i.imgur.com/tg6OT0n.png "Summary") From e2f93e36a36d8f823ae3b7901e67d5f3315cdbe4 Mon Sep 17 00:00:00 2001 From: SanskritiHarmukh Date: Wed, 8 Feb 2023 19:42:33 +0530 Subject: [PATCH 5/7] Revert "edited the link for test modes" This reverts commit 2da56bd2b602b95030d7d6ab22fbc4cbf6b2b44d. Signed-off-by: SanskritiHarmukh --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index d193f2eb..14ccd3b8 100644 --- a/README.md +++ b/README.md @@ -110,8 +110,8 @@ Now, let's see the magic! 🪄💫 There are 2 ways to test the application with Keploy. -1. [Unit Test File](/README.md#testing-using-unit-test-file) -2. [KEPLOY_MODE environment variable](/README.md#testing-using-keploy_mode-env-variable) +1. [Unit Test File](https://docs.keploy.io/docs/java/run-your-first-app-tutorial#testing-using-unit-test-file) +2. [KEPLOY_MODE environment variable](https://docs.keploy.io/docs/java/run-your-first-app-tutorial#testing-using-keploy_mode-env-variable) ### Testing using Unit Test File From e8479a9101af3a1b5dd32ef018c4ed0b09c9eb06 Mon Sep 17 00:00:00 2001 From: SanskritiHarmukh Date: Thu, 9 Feb 2023 03:20:39 +0530 Subject: [PATCH 6/7] refactored from java-sdk Signed-off-by: SanskritiHarmukh --- README.md | 146 ++++++++++++++++++++++++++--------- src/main/resources/Video.png | Bin 0 -> 34425 bytes 2 files changed, 109 insertions(+), 37 deletions(-) create mode 100644 src/main/resources/Video.png diff --git a/README.md b/README.md index 14ccd3b8..20fc011c 100644 --- a/README.md +++ b/README.md @@ -2,27 +2,21 @@ A sample Employee-Manager app to test Keploy integration capabilities using [SpringBoot](https://spring.io) and PostgreSQL. -### Pre-requisites +## Pre-requisites - [Java 8+](https://docs.spring.io/spring-boot/docs/current/reference/html/getting-started.html#getting-started.installing) -## Installation Setup +## Quick Installation -Note that Testcases are exported as files in the local repository by default - -
-Mac +### **MacOS** ```shell curl --silent --location "https://github.com/keploy/keploy/releases/latest/download/keploy_darwin_all.tar.gz" | tar xz -C /tmp -sudo mv /tmp/keploy /usr/local/bin - -# start keploy with default settings -keploy +sudo mv /tmp/keploy /usr/local/bin && keploy ``` -
+### **Linux**
Linux @@ -30,33 +24,110 @@ keploy ```shell curl --silent --location "https://github.com/keploy/keploy/releases/latest/download/keploy_linux_amd64.tar.gz" | tar xz -C /tmp -sudo mv /tmp/keploy /usr/local/bin +sudo mv /tmp/keploy /usr/local/bin && keploy +``` +
-# start keploy with default settings -keploy +
+Linux ARM + +```shell +curl --silent --location "https://github.com/keploy/keploy/releases/latest/download/keploy_linux_arm64.tar.gz" | tar xz -C /tmp + +sudo mv /tmp/keploy /usr/local/bin && keploy ``` +The UI can be accessed at http://localhost:6789
+### **Windows** + +
+Windows + + +- Download the [Keploy Windows AMD64](https://github.com/keploy/keploy/releases/latest/download/keploy_windows_amd64.tar.gz), and extract the files from the zip folder. + +- Run the `keploy.exe` file. + +
+ +
+Windows ARM + +- Download the [Keploy Windows ARM64](https://github.com/keploy/keploy/releases/latest/download/keploy_windows_arm64.tar.gz), and extract the files from the zip folder. + +- Run the `keploy.exe` file. + +
+ +## Build configuration + +[Find the latest release](https://search.maven.org/artifact/io.keploy/keploy-sdk) of the Keploy Java SDK at maven +central. +Add *keploy-sdk* as a dependency to your *pom.xml*: + + io.keploy + keploy-sdk + N.N.N (eg: 1.2.5) + + +or to *build.gradle*: + + implementation 'io.keploy:keploy-sdk:N.N.N' (eg: 1.2.5) + +## Usage + +- **For Spring based application** + + Add `@Import(KeployMiddleware.class)` below `@SpringBootApplication` in your main class. + +- **Run along with agent to mock external calls of your API 🤩🔥** + + - Download the latest - Download the latest agent jar + from [here](https://search.maven.org/artifact/io.keploy/keploy-sdk/1.2.5/jar) (eg: 1.2.5) + + - Prefix `-javaagent:` with absolute classpath of agent jar (eg: `-javaagent:/agent-1.2.5.jar`) is possible through 3 ways:- + + 1. **Using Intellij :** Go to Edit Configuration-> add VM options -> paste _java agent_ edited above. + + 2. **Using Command Line :** + ``` + export JAVA_OPTS="$JAVA_OPTS -javaagent:/agent-1.2.5.jar" + ``` + + 3. **Running via Tomcat Server :** + ``` + export CATALINA_OPTS="$CATALINA_OPTS -javaagent:/agent-1.2.5.jar" + ``` ## Setup Employee-Manager App ```bash -git clone https://github.com/keploy/samples-java && cd samples-java +git clone https://github.com/keploy/samples-java +``` -# Start PostgreSQL instance +### Start PostgreSQL instance +```bash docker-compose up -d +``` -# Maven clean install +### Maven clean install +```shell mvn clean install +``` +### Set KEPLOY_MODE to record -# Run the application -mvn spring-boot:run +``` +To record testcases use `KEPLOY_MODE` env variable and set the same to `record` mode. +``` -# run the sample app in record mode -export KEPLOY_MODE=record && mvn spring-boot:run +### Run the application + +```shell +mvn spring-boot:run ``` @@ -64,7 +135,7 @@ export KEPLOY_MODE=record && mvn spring-boot:run To generate testcases we just need to **make some API calls.** You can use [Postman](https://www.postman.com/), [Hoppscotch](https://hoppscotch.io/), or simply `curl` -- ### Make an employee entry +### 1. Make an employee entry ```bash curl --location --request POST 'http://localhost:8080/api/employees' \ @@ -77,7 +148,7 @@ curl --location --request POST 'http://localhost:8080/api/employees' \ }' ``` -this will return the resonse or an entry . The timestamp would automatically be ignored during testing because it'll always be different. +this will return the resonse or an entry. The timestamp would automatically be ignored during testing because it'll always be different. ``` { @@ -89,31 +160,29 @@ this will return the resonse or an entry . The timestamp would automatically be } ``` -- ### Fetch recorded info about employees +### 2. Fetch recorded info about employees -1. By using Curl Command ```bash curl --location --request GET 'http://localhost:8080/api/employees/1' ``` -2. Or by querying through the browser `http://localhost:8080/api/employees/1` +or by querying through the browser `http://localhost:8080/api/employees/1` Now both these API calls were captured as **editable** testcases and written to `test/e2e/keploy-tests` folder. The keploy directory would also have `mocks` folder. ![testcases](https://i.imgur.com/rhNndcF.png) - Now, let's see the magic! 🪄💫 ## Test mode There are 2 ways to test the application with Keploy. -1. [Unit Test File](https://docs.keploy.io/docs/java/run-your-first-app-tutorial#testing-using-unit-test-file) -2. [KEPLOY_MODE environment variable](https://docs.keploy.io/docs/java/run-your-first-app-tutorial#testing-using-keploy_mode-env-variable) +1. [Unit Test File](/README.md#testing-using-unit-test-file) +2. [KEPLOY_MODE environment variable](/README.md#testing-using-keploy_mode-env-variable) -### Testing using Unit Test File +### **Testing using Unit Test File** Now that we have our testcase captured, run the unit test file (``SampleJavaApplication_Test.java`) already present in the sample app repo. @@ -135,11 +204,11 @@ If not present, you can add ``SampleJavaApplication_Test.java`` in the test modu ``` -To automatically download and run the captured test-cases. Let's run the test-file. +1. To automatically download and run the captured test-cases. Let's run the test-file. -To get test coverage, in addition to above follow below instructions. +2. To get test coverage, in addition to above follow below instructions. -1. Add maven-surefire-plugin to your *pom.xml*. +3. Add maven-surefire-plugin to your *pom.xml*. ```xml @@ -156,7 +225,7 @@ To get test coverage, in addition to above follow below instructions. ``` -2. Add Jacoco plugin to your *pom.xml*. +4. Add Jacoco plugin to your *pom.xml*. ```xml @@ -195,7 +264,7 @@ To get test coverage, in addition to above follow below instructions. ``` -3. Run your tests using command : `mvn test`. +5. Run your tests using command : `mvn test`. It will create .html files as test-reports which can be found in your target folder !! @@ -206,14 +275,14 @@ It will create .html files as test-reports which can be found in your target fol Go to the Keploy Console TestRuns Page to get deeper insights on what testcases ran, what failed. -![testruns](https://raw.githubusercontent.com/keploy/samples-java/blob/main/src/main/resources/AllTestPass_outer.png "Recent testruns") + ![testruns](https://i.imgur.com/tg6OT0n.png "Summary") -### Testing using **KEPLOY_MODE** Env Variable +### **Testing using **KEPLOY_MODE** Env Variable** To test using `KEPLOY_MODE` env variable, set the same to `test` mode. @@ -279,3 +348,6 @@ To deep dive the problem go to [test runs](http://localhost:6789/testruns) ![testruns](https://i.imgur.com/qwP8r4d.png "Recent testruns") +**In case of any query, refer to video below,** + +[![java-sample](/src/main/resources/Video.png)](https://youtu.be/Ssm4TnTkbLs) diff --git a/src/main/resources/Video.png b/src/main/resources/Video.png new file mode 100644 index 0000000000000000000000000000000000000000..3625936c8ea0132b53d0fd1b304fd944ec91cb1d GIT binary patch literal 34425 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 AQ~&?~ literal 0 HcmV?d00001 From a5e6fb43cf0ad78975efd8121eeaca391d937fa8 Mon Sep 17 00:00:00 2001 From: Sanskriti Harmukh <74777863+SanskritiHarmukh@users.noreply.github.com> Date: Thu, 9 Feb 2023 21:21:29 +0530 Subject: [PATCH 7/7] Fixed the image for video Signed-off-by: SanskritiHarmukh --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 20fc011c..15d1373a 100644 --- a/README.md +++ b/README.md @@ -350,4 +350,5 @@ To deep dive the problem go to [test runs](http://localhost:6789/testruns) **In case of any query, refer to video below,** -[![java-sample](/src/main/resources/Video.png)](https://youtu.be/Ssm4TnTkbLs) +[![java-sample](https://user-images.githubusercontent.com/74777863/217864311-94a3dc0c-90bc-4551-aca2-87e82e3d24cb.png)](https://youtu.be/Ssm4TnTkbLs) +