AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL verified Apache-2.0 Self-run

Gatling Convert From Jmeter

skill-gatling-gatling-ai-extensions-gatling-convert-from-jmeter · by gatling

Guide for converting Apache JMeter tests to Gatling.

No reviews yet
0 installs
35 views
0.0% view→install

Install

$ agentstack add skill-gatling-gatling-ai-extensions-gatling-convert-from-jmeter

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-gatling-gatling-ai-extensions-gatling-convert-from-jmeter)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
2mo ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Gatling Convert From Jmeter? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Convert a JMeter test plan to a Gatling simulation

Instructions

Step 1: Find input JMeter test plan

  • Search for files with .jmx extension
  • If several files found, ask user to specify one

Step 2: Specify output

Either find an existing Gatling project or initialize a new Gatling project:

  • Try to find an existing project with the /Gatling:gatling-detect-existing-project skill
  • If no existing project is found, offer to create a new one with the /Gatling:gatling-bootstrap-project skill

Step 3: Conversion

  • Convert the JMeter test to a Gatling test written in the specified language.
  • Write the output to the appropriate source directory of the Gatling project.
ThreadGroup

Each ThreadGroup converts to a scenario.

IF serialize_threadgroups true:

  • Chain the scenarios with andThen

ELSE:

  • Just list the scenarios in the setUp block
Resource files

Files referenced in elements such as:

  • CSVDataSet
  • HTTPFileArgs

should be copied to the resources directory in the Gatling project.

Redirects

| JMeter | Gatling | |----------------------------|-----------------------------| | follow_redirects = true | default setting, do nothing | | follow_redirects = false | disableFollowRedirect |

CSVDataSet

CSVDataSet converts to a csv feeder.

IF there are several instances of CSVDataSet referencing the same file name:

  • IF shareMode.group:
  • Create a new csv feeder for each scenario

ELSE:

  • Create a single feeder and use it in each scenario
JMESPathExtractor

The jmesPath Gatling check extracts Strings, meaning that non String values get serialized back into JSON. Using findAll with jmesPath is a mistake, but you can tell Gatling the expected type with an extra step. Note that the check will then fail is the actual value doesn’t match the expected type.

jmesPath("foo").ofString(),
jmesPath("foo").ofBoolean(),
jmesPath("foo").ofInt(),
jmesPath("foo").ofLong(),
jmesPath("foo").ofDouble(),
// JSON array
jmesPath("foo").ofList(),
// JSON object
jmesPath("foo").ofMap(),
// anything
jmesPath("foo").ofObject()
)
matchNumber

matchNumber applies when the JMESPath expression returns an array and selects which element to use (1-based in JMeter).

IF matchNumber = 1:

  • Use a JMESPath expression that selects the first element directly, e.g. jmesPath("foo[0]")

IF matchNumber = -1 (random):

  • Extract the full array with jmesPath("foo").ofList(), then pick a random element in a subsequent exec block

IF matchNumber > 1:

  • Use a JMESPath expression that indexes into the array, e.g. jmesPath("foo[N-1]") (0-based index)
Functions

Some functions have variants that saves the result to a variable (e.g.: __Random(0,10,myVar)) but Gatling Expression Language cannot save variables as a side effect.

IF a variable needs to be saved inside the function AND the function is used within an Expression Language

  • Move the code to an exec block that allows saving variables

When parsing dates, use java.time.format.DateTimeFormatter.ofPattern with system default zone and store it outside a function to avoid creation cost overhead.

For regular expression, use java.util.regex.Pattern.compile and store it outside a function to avoid creation cost overhead.

Convert these functions to what JMeter uses under the hood:

  • changeCase: toUpperCase or toLowerCase with Locale.ROOT or capitalize
  • digest: java.security.MessageDigest
  • urldecode: java.net.URLDecoder.decode
  • urlencode: java.net.URLEncoder.encode
  • UUID: java.util.UUID.randomUUID

Import org.unbescape:unbescape for the following escaping functions:

  • escapeHtml: HtmlEscape.escapeHtml5
  • escapeXml: XmlEscape.escapeXml10
  • unescape: JavaEscape.unescapeJava
  • unescapeHtml: HtmlEscape.unescapeHtml

Step 4: Verify the code compiles

Use the build-tool skill if available.

Step 5: Post conversion

After the conversion in Step 3, prompt the user for possible enhancements that are more idiomatic to Gatling.

IF ThreadGroup.ramp_time is 0 or 1:

  • Suggest converting rampUsers to atOnceUsers

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.