diff --git a/.github/Produktkatalog_E2E(failed).png b/.github/Produktkatalog_E2E(failed).png new file mode 100644 index 0000000..e120919 Binary files /dev/null and b/.github/Produktkatalog_E2E(failed).png differ diff --git a/.github/consumer_pact.png b/.github/consumer_pact.png new file mode 100644 index 0000000..07f9b0e Binary files /dev/null and b/.github/consumer_pact.png differ diff --git a/.github/gatling_erg.png b/.github/gatling_erg.png new file mode 100644 index 0000000..1a14364 Binary files /dev/null and b/.github/gatling_erg.png differ diff --git a/.github/gatling_simple_test_java.png b/.github/gatling_simple_test_java.png new file mode 100644 index 0000000..ba796cb Binary files /dev/null and b/.github/gatling_simple_test_java.png differ diff --git a/.github/img.png b/.github/img.png new file mode 100644 index 0000000..0e1296e Binary files /dev/null and b/.github/img.png differ diff --git a/.github/provider_pact.png b/.github/provider_pact.png new file mode 100644 index 0000000..76d4c6a Binary files /dev/null and b/.github/provider_pact.png differ diff --git a/.github/workflows/maven.workflow.yml b/.github/workflows/maven.workflow.yml index 8768c23..a16a143 100644 --- a/.github/workflows/maven.workflow.yml +++ b/.github/workflows/maven.workflow.yml @@ -44,6 +44,7 @@ jobs: with: name: surefire-reports path: '**/surefire-reports/**' + quality_gate: runs-on: ubuntu-latest needs: build_and_test diff --git a/frontend/src/cypress.config.js b/frontend/src/cypress.config.js index eb89ae2..5c45301 100644 --- a/frontend/src/cypress.config.js +++ b/frontend/src/cypress.config.js @@ -3,7 +3,7 @@ const { defineConfig } = require("cypress"); module.exports = defineConfig({ e2e: { baseUrl: "http://localhost:5173", - video: true, + video: false, viewportWidth: 1280, viewportHeight: 800, supportFile: false diff --git a/frontend/src/cypress/screenshots/Produktkatalog-geladen.png b/frontend/src/cypress/screenshots/Produktkatalog-geladen.png deleted file mode 100644 index 4245632..0000000 Binary files a/frontend/src/cypress/screenshots/Produktkatalog-geladen.png and /dev/null differ diff --git a/frontend/src/cypress/screenshots/cypress_open.png b/frontend/src/cypress/screenshots/cypress_open.png deleted file mode 100644 index e540418..0000000 Binary files a/frontend/src/cypress/screenshots/cypress_open.png and /dev/null differ diff --git a/frontend/src/cypress/videos/catalog.cy.js.mp4 b/frontend/src/cypress/videos/catalog.cy.js.mp4 deleted file mode 100644 index 17b34be..0000000 Binary files a/frontend/src/cypress/videos/catalog.cy.js.mp4 and /dev/null differ diff --git a/perf-gatling/pom.xml b/perf-gatling/pom.xml index 25301f0..fddd355 100644 --- a/perf-gatling/pom.xml +++ b/perf-gatling/pom.xml @@ -1,11 +1,10 @@ 4.0.0 - - de.delis - devops-example - 1.0.0 - + + 21 + + devops-demo perf-gatling 1.0.0 @@ -25,12 +24,11 @@ - io.gatling gatling-maven-plugin - simulations.LoginSimulation + simulations.ProduktkatalogSimulation diff --git a/perf-gatling/src/test/java/simulations/Config.java b/perf-gatling/src/test/java/simulations/Config.java new file mode 100644 index 0000000..d7cbe5f --- /dev/null +++ b/perf-gatling/src/test/java/simulations/Config.java @@ -0,0 +1,5 @@ +package simulations; + +public class Config { + public static final String BASE_URL = "http://localhost:8081"; +} diff --git a/perf-gatling/src/test/java/simulations/ProduktkatalogSimulation.java b/perf-gatling/src/test/java/simulations/ProduktkatalogSimulation.java new file mode 100644 index 0000000..88d4bf1 --- /dev/null +++ b/perf-gatling/src/test/java/simulations/ProduktkatalogSimulation.java @@ -0,0 +1,32 @@ +package simulations; + +import io.gatling.javaapi.core.ScenarioBuilder; +import io.gatling.javaapi.core.Simulation; +import io.gatling.javaapi.http.HttpProtocolBuilder; + +import static io.gatling.javaapi.core.CoreDsl.rampUsers; +import static io.gatling.javaapi.core.CoreDsl.scenario; +import static io.gatling.javaapi.http.HttpDsl.http; +import static io.gatling.javaapi.http.HttpDsl.status; + +public class ProduktkatalogSimulation extends Simulation { + + HttpProtocolBuilder httpProtocol = http + .baseUrl(Config.BASE_URL + "/product-api") + .contentTypeHeader("application/json"); + + ScenarioBuilder scn = scenario("Lade Produktkatalog-Test") + .exec( + http("Lade Produktkatalog") + .get("/products") + .check(status().is(200)) + ); + { + setUp( + scn.injectOpen( + rampUsers(1000).during(60) + ) + ).protocols(httpProtocol); + } + +} diff --git a/perf-gatling/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst b/perf-gatling/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst index 53433a2..0ae4c26 100644 --- a/perf-gatling/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst +++ b/perf-gatling/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst @@ -1 +1,2 @@ C:\Users\denni\git\devops\perf-gatling\src\test\java\simulations\LoginSimulation.java +C:\Users\denni\git\devops\perf-gatling\src\test\java\simulations\ProduktkatalogSimulation.java diff --git a/pom.xml b/pom.xml index dddb4c9..d5b6d97 100644 --- a/pom.xml +++ b/pom.xml @@ -21,7 +21,6 @@ order-backend product-backend - perf-gatling diff --git a/product-backend/src/main/java/produktkatalog/api/ProductController.java b/product-backend/src/main/java/produktkatalog/api/ProductController.java index 601a83d..fcb44e3 100644 --- a/product-backend/src/main/java/produktkatalog/api/ProductController.java +++ b/product-backend/src/main/java/produktkatalog/api/ProductController.java @@ -16,13 +16,13 @@ public class ProductController { private final ProductService productService; - @GetMapping("/products/{id}") - public ResponseEntity get(@PathVariable("id") Integer id) { - return ResponseEntity.of(productService.getProductById(id));// - } - @GetMapping("/products") public List getAll() throws InterruptedException { return productService.getAllProducts(); } + + @GetMapping("/products/{id}") + public ResponseEntity get(@PathVariable("id") Integer id) { + return ResponseEntity.of(productService.getProductById(id));// + } } diff --git a/product-backend/src/test/java/auftragsverwaltung/provider/PactProviderVerificationTest.java b/product-backend/src/test/java/auftragsverwaltung/provider/PactProviderVerificationTest.java index f52955a..23f12ba 100644 --- a/product-backend/src/test/java/auftragsverwaltung/provider/PactProviderVerificationTest.java +++ b/product-backend/src/test/java/auftragsverwaltung/provider/PactProviderVerificationTest.java @@ -39,6 +39,13 @@ class PactProviderVerificationTest { @MockitoBean ProductService productService; + @State("product not found") + void setUpProductNotFound(Map params) { + Integer id = Integer.valueOf(params.getOrDefault("id", 1).toString()); + when(productService.getProductById(id)) + .thenReturn(Optional.empty()); + } + @BeforeEach void setup(@NotNull PactVerificationContext ctx) { ctx.setTarget(new HttpTestTarget("localhost", port)); @@ -51,13 +58,6 @@ void setupUpProductExists(Map params) { .thenReturn(Optional.of(new Product(id, "TestProduct", new BigDecimal("19.99"), EUR))); } - @State("product not found") - void setUpProductNotFound(Map params) { - Integer id = Integer.valueOf(params.getOrDefault("id", 1).toString()); - when(productService.getProductById(id)) - .thenReturn(Optional.empty()); - } - @TestTemplate @ExtendWith(PactVerificationInvocationContextProvider.class) void verify(PactVerificationContext ctx) {