spring-boot-microservices-series-v2 icon indicating copy to clipboard operation
spring-boot-microservices-series-v2 copied to clipboard

handle more scenarios

Open rajadilipkolli opened this issue 2 months ago • 1 comments

rajadilipkolli avatar Sep 27 '25 19:09 rajadilipkolli

Walkthrough

Reworks CreateProductSimulation: replaces single open-load with a multi‑phase open workload (atOnce, ramp, constant, rampPerSec, sustained constant), increases rates/durations, simplifies product→inventory flow to a doIf-based conditional update, adjusts pauses/logging, relaxes mean SLA to 2.0s and adds failedRequests constraint.

Changes

Cohort / File(s) Summary of Changes
Gatling simulation
gatling-tests/src/test/java/simulation/CreateProductSimulation.java
Adds rampUsersPerSec import; replaces previous open-load with multi‑phase open workload: atOnceUsers, rampUsers, constantUsersPerSec (scaled), rampUsersPerSec (scaled), final constantUsersPerSec phase; increases ramp targets (3→50), constant targets (15→100) and extends duration (60s→180s).
Scenario flow & timing
gatling-tests/src/test/java/simulation/CreateProductSimulation.java
Reworks scenario sequence: inlines JSON bodies for createProduct/createOrder, adds session-time log action, shortens/adjusts pauses (some fixed), sequences getProduct → doIf(session.contains("inventoryResponseBody")) { updateInventory } → createOrder; removes earlier inventory pre-checks/markAsFailed branches and related logs.
Assertions & startup logging
gatling-tests/src/test/java/simulation/CreateProductSimulation.java
Changes startup health-check log to reference multiple users; relaxes mean response-time assertion from 1.5s to 2.0s; retains 95th percentile and failedRequests assertions with adjusted thresholds.

Sequence Diagram(s)

sequenceDiagram
  autonumber
  actor VU as Gatling VU
  participant PS as Product Service
  participant IS as Inventory Service

  rect #EEF8FF
    Note over VU: Multi‑phase open workload (atOnce → ramp → constant → rampPerSec → sustained)
  end

  VU->>PS: POST /products (createProduct)
  VU-->>VU: log request time, short pause

  VU->>PS: GET /products/{id} (getProduct)
  VU-->>VU: store response in session

  alt session contains inventoryResponseBody
    rect #F7FFF0
      VU->>IS: PUT /inventory/{productId} (updateInventory)
      VU-->>VU: short fixed pause
    end
  end

  VU->>PS: POST /orders (createOrder)
  VU-->>VU: final pause

  Note over VU,PS: Assertions evaluated (mean ≤ 2.0s, 95th pctl, failedRequests)

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Poem

Thump-thump—I hop from atOnce to ramp,
Users swelling like fields of clover and lamp.
I peek for inventory, update only if there,
Short pauses, long runs, logs whispered in air.
Mean time breathes two seconds—happy rabbit dance. 🐇

Pre-merge checks and finishing touches

❌ Failed checks (2 warnings)
Check name Status Explanation Resolution
Title Check ⚠️ Warning The title “handle more scenarios” is too vague and generic to clearly convey the substantial updates made to the Gatling simulation tests, such as introducing conditional inventory updates, multi-phase load profiles, adjusted timings, and enhanced logging in CreateProductSimulation. It does not reference the key elements of the changeset or the component being modified, making it difficult for a reviewer to grasp the primary purpose at a glance. Please update the title to succinctly reflect the core changes, for example: “Enhance CreateProductSimulation with conditional inventory update and multi-phase load profile adjustments.”
Description Check ⚠️ Warning No pull request description was provided, so there is no context or summary of the implemented changes to guide reviewers or document the intent of the updates. This absence makes it hard to understand the purpose or scope of the modifications beyond examining the raw diffs. Please add a brief description outlining the key updates—such as load profile default changes, the new conditional inventory workflow, logging enhancements, and updated assertions—to provide clear context for reviewers.
✅ Passed checks (1 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changes. Docstring coverage check skipped.
✨ Finishing touches
  • [ ] 📝 Generate Docstrings
🧪 Generate unit tests
  • [ ] Create PR with unit tests
  • [ ] Post copyable unit tests in a comment
  • [ ] Commit unit tests in branch fixGatling

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

coderabbitai[bot] avatar Sep 27 '25 19:09 coderabbitai[bot]