diff --git a/bin/configs/unmaintained/jmeter.yaml b/bin/configs/jmeter.yaml
similarity index 62%
rename from bin/configs/unmaintained/jmeter.yaml
rename to bin/configs/jmeter.yaml
index 79b5de0e41b3..9fcb1a082175 100644
--- a/bin/configs/unmaintained/jmeter.yaml
+++ b/bin/configs/jmeter.yaml
@@ -1,4 +1,4 @@
generatorName: jmeter
outputDir: samples/client/petstore/jmeter
-inputSpec: modules/openapi-generator/src/test/resources/2_0/petstore.yaml
+inputSpec: modules/openapi-generator/src/test/resources/3_0/jmeter/petstore.yaml
templateDir: modules/openapi-generator/src/main/resources/jmeter-client
diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JMeterClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JMeterClientCodegen.java
index b8953d8f9845..5779f9631234 100644
--- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JMeterClientCodegen.java
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JMeterClientCodegen.java
@@ -163,6 +163,12 @@ public void preprocessOpenAPI(OpenAPI openAPI) {
}
}
+ @Override
+ public String toOperationId(String operationId) {
+ // replace $ with _
+ return super.toOperationId(operationId.replace("$", "_"));
+ }
+
/**
* Escapes a reserved word as defined in the `reservedWords` array. Handle escaping
* those terms here. This logic is only called if a variable matches the reserved words
diff --git a/modules/openapi-generator/src/test/resources/3_0/jmeter/petstore.yaml b/modules/openapi-generator/src/test/resources/3_0/jmeter/petstore.yaml
new file mode 100644
index 000000000000..0876844df34d
--- /dev/null
+++ b/modules/openapi-generator/src/test/resources/3_0/jmeter/petstore.yaml
@@ -0,0 +1,751 @@
+openapi: 3.0.0
+servers:
+ - url: 'http://petstore.swagger.io/v2'
+info:
+ description: >-
+ This is a sample server Petstore server. For this sample, you can use the api key
+ `special-key` to test the authorization filters.
+ version: 1.0.0
+ title: OpenAPI Petstore
+ license:
+ name: Apache-2.0
+ url: 'https://www.apache.org/licenses/LICENSE-2.0.html'
+tags:
+ - name: pet
+ description: Everything about your Pets
+ - name: store
+ description: Access to Petstore orders
+ - name: user
+ description: Operations about user
+paths:
+ /pet:
+ post:
+ tags:
+ - pet
+ summary: Add a new pet to the store
+ description: ''
+ operationId: addPet
+ responses:
+ '200':
+ description: successful operation
+ content:
+ application/xml:
+ schema:
+ $ref: '#/components/schemas/Pet'
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Pet'
+ '405':
+ description: Invalid input
+ security:
+ - petstore_auth:
+ - 'write:pets'
+ - 'read:pets'
+ requestBody:
+ $ref: '#/components/requestBodies/Pet'
+ put:
+ tags:
+ - pet
+ summary: Update an existing pet
+ description: ''
+ operationId: updatePet
+ externalDocs:
+ url: "http://petstore.swagger.io/v2/doc/updatePet"
+ description: "API documentation for the updatePet operation"
+ responses:
+ '200':
+ description: successful operation
+ content:
+ application/xml:
+ schema:
+ $ref: '#/components/schemas/Pet'
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Pet'
+ '400':
+ description: Invalid ID supplied
+ '404':
+ description: Pet not found
+ '405':
+ description: Validation exception
+ security:
+ - petstore_auth:
+ - 'write:pets'
+ - 'read:pets'
+ requestBody:
+ $ref: '#/components/requestBodies/Pet'
+ /pet/findByStatus:
+ get:
+ tags:
+ - pet
+ summary: Finds Pets by status
+ description: Multiple status values can be provided with comma separated strings
+ operationId: findPetsByStatus
+ parameters:
+ - name: status
+ in: query
+ description: Status values that need to be considered for filter
+ required: true
+ style: form
+ explode: false
+ deprecated: true
+ schema:
+ type: array
+ items:
+ type: string
+ enum:
+ - available
+ - pending
+ - sold
+ default: available
+ responses:
+ '200':
+ description: successful operation
+ content:
+ application/xml:
+ schema:
+ type: array
+ items:
+ $ref: '#/components/schemas/Pet'
+ application/json:
+ schema:
+ type: array
+ items:
+ $ref: '#/components/schemas/Pet'
+ '400':
+ description: Invalid status value
+ security:
+ - petstore_auth:
+ - 'read:pets'
+ /pet/findByTags:
+ get:
+ tags:
+ - pet
+ summary: Finds Pets by tags
+ description: >-
+ Multiple tags can be provided with comma separated strings. Use tag1,
+ tag2, tag3 for testing.
+ operationId: findPetsByTags
+ parameters:
+ - name: tags
+ in: query
+ description: Tags to filter by
+ required: true
+ style: form
+ explode: false
+ schema:
+ type: array
+ items:
+ type: string
+ responses:
+ '200':
+ description: successful operation
+ content:
+ application/xml:
+ schema:
+ type: array
+ items:
+ $ref: '#/components/schemas/Pet'
+ application/json:
+ schema:
+ type: array
+ items:
+ $ref: '#/components/schemas/Pet'
+ '400':
+ description: Invalid tag value
+ security:
+ - petstore_auth:
+ - 'read:pets'
+ deprecated: true
+ '/pet/{petId}':
+ get:
+ tags:
+ - pet
+ summary: Find pet by ID
+ description: Returns a single pet
+ operationId: getPetById
+ parameters:
+ - name: petId
+ in: path
+ description: ID of pet to return
+ required: true
+ schema:
+ type: integer
+ format: int64
+ responses:
+ '200':
+ description: successful operation
+ content:
+ application/xml:
+ schema:
+ $ref: '#/components/schemas/Pet'
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Pet'
+ '400':
+ description: Invalid ID supplied
+ '404':
+ description: Pet not found
+ security:
+ - api_key: []
+ post:
+ tags:
+ - pet
+ summary: Updates a pet in the store with form data
+ description: ''
+ operationId: updatePetWithForm
+ parameters:
+ - name: petId
+ in: path
+ description: ID of pet that needs to be updated
+ required: true
+ schema:
+ type: integer
+ format: int64
+ responses:
+ '405':
+ description: Invalid input
+ security:
+ - petstore_auth:
+ - 'write:pets'
+ - 'read:pets'
+ requestBody:
+ content:
+ application/x-www-form-urlencoded:
+ schema:
+ type: object
+ properties:
+ name:
+ description: Updated name of the pet
+ type: string
+ status:
+ description: Updated status of the pet
+ type: string
+ delete:
+ tags:
+ - pet
+ summary: Deletes a pet
+ description: ''
+ operationId: deletePet
+ parameters:
+ - name: api_key
+ in: header
+ required: false
+ schema:
+ type: string
+ - name: petId
+ in: path
+ description: Pet id to delete
+ required: true
+ schema:
+ type: integer
+ format: int64
+ responses:
+ '400':
+ description: Invalid pet value
+ security:
+ - petstore_auth:
+ - 'write:pets'
+ - 'read:pets'
+ '/pet/{petId}/uploadImage':
+ post:
+ tags:
+ - pet
+ summary: uploads an image
+ description: ''
+ operationId: uploadFile
+ parameters:
+ - name: petId
+ in: path
+ description: ID of pet to update
+ required: true
+ schema:
+ type: integer
+ format: int64
+ responses:
+ '200':
+ description: successful operation
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ApiResponse'
+ security:
+ - petstore_auth:
+ - 'write:pets'
+ - 'read:pets'
+ requestBody:
+ content:
+ multipart/form-data:
+ schema:
+ type: object
+ properties:
+ additionalMetadata:
+ description: Additional data to pass to server
+ type: string
+ file:
+ description: file to upload
+ type: string
+ format: binary
+ /store/inventory:
+ get:
+ tags:
+ - store
+ summary: Returns pet inventories by status
+ description: Returns a map of status codes to quantities
+ operationId: getInventory
+ responses:
+ '200':
+ description: successful operation
+ content:
+ application/json:
+ schema:
+ type: object
+ additionalProperties:
+ type: integer
+ format: int32
+ security:
+ - api_key: []
+ /store/order:
+ post:
+ tags:
+ - store
+ summary: Place an order for a pet
+ description: ''
+ operationId: placeOrder
+ responses:
+ '200':
+ description: successful operation
+ content:
+ application/xml:
+ schema:
+ $ref: '#/components/schemas/Order'
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Order'
+ '400':
+ description: Invalid Order
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Order'
+ description: order placed for purchasing the pet
+ required: true
+ '/store/order/{orderId}':
+ get:
+ tags:
+ - store
+ summary: Find purchase order by ID
+ description: >-
+ For valid response try integer IDs with value <= 5 or > 10. Other values
+ will generate exceptions
+ operationId: getOrderById
+ parameters:
+ - name: orderId
+ in: path
+ description: ID of pet that needs to be fetched
+ required: true
+ schema:
+ type: integer
+ format: int64
+ minimum: 1
+ maximum: 5
+ responses:
+ '200':
+ description: successful operation
+ content:
+ application/xml:
+ schema:
+ $ref: '#/components/schemas/Order'
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Order'
+ '400':
+ description: Invalid ID supplied
+ '404':
+ description: Order not found
+ delete:
+ tags:
+ - store
+ summary: Delete purchase order by ID
+ description: >-
+ For valid response try integer IDs with value < 1000. Anything above
+ 1000 or nonintegers will generate API errors
+ operationId: deleteOrder
+ parameters:
+ - name: orderId
+ in: path
+ description: ID of the order that needs to be deleted
+ required: true
+ schema:
+ type: string
+ responses:
+ '400':
+ description: Invalid ID supplied
+ '404':
+ description: Order not found
+ /user:
+ post:
+ tags:
+ - user
+ summary: Create user
+ description: This can only be done by the logged in user.
+ operationId: createUser
+ responses:
+ default:
+ description: successful operation
+ security:
+ - api_key: []
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/User'
+ description: Created user object
+ required: true
+ /user/createWithArray:
+ post:
+ tags:
+ - user
+ summary: Creates list of users with given input array
+ description: ''
+ operationId: createUsersWithArrayInput
+ responses:
+ default:
+ description: successful operation
+ security:
+ - api_key: []
+ requestBody:
+ $ref: '#/components/requestBodies/UserArray'
+ /user/createWithList:
+ post:
+ tags:
+ - user
+ summary: Creates list of users with given input array
+ description: ''
+ operationId: createUsersWithListInput
+ responses:
+ default:
+ description: successful operation
+ security:
+ - api_key: []
+ requestBody:
+ $ref: '#/components/requestBodies/UserArray'
+ /user/login:
+ get:
+ tags:
+ - user
+ summary: Logs user into the system
+ description: ''
+ operationId: loginUser
+ parameters:
+ - name: username
+ in: query
+ description: The user name for login
+ required: true
+ schema:
+ type: string
+ pattern: '^[a-zA-Z0-9]+[a-zA-Z0-9\.\-_]*[a-zA-Z0-9]+$'
+ - name: password
+ in: query
+ description: The password for login in clear text
+ required: true
+ schema:
+ type: string
+ responses:
+ '200':
+ description: successful operation
+ headers:
+ Set-Cookie:
+ description: >-
+ Cookie authentication key for use with the `api_key`
+ apiKey authentication.
+ schema:
+ type: string
+ example: AUTH_KEY=abcde12345; Path=/; HttpOnly
+ X-Rate-Limit:
+ description: calls per hour allowed by the user
+ schema:
+ type: integer
+ format: int32
+ X-Expires-After:
+ description: date in UTC when token expires
+ schema:
+ type: string
+ format: date-time
+ content:
+ application/xml:
+ schema:
+ type: string
+ application/json:
+ schema:
+ type: string
+ '400':
+ description: Invalid username/password supplied
+ /user/logout:
+ get:
+ tags:
+ - user
+ summary: Logs out current logged in user session
+ description: ''
+ operationId: logoutUser
+ responses:
+ default:
+ description: successful operation
+ security:
+ - api_key: []
+ '/user/{username}':
+ get:
+ tags:
+ - user
+ summary: Get user by user name
+ description: ''
+ operationId: getUserByName
+ parameters:
+ - name: username
+ in: path
+ description: The name that needs to be fetched. Use user1 for testing.
+ required: true
+ schema:
+ type: string
+ responses:
+ '200':
+ description: successful operation
+ content:
+ application/xml:
+ schema:
+ $ref: '#/components/schemas/User'
+ application/json:
+ schema:
+ $ref: '#/components/schemas/User'
+ '400':
+ description: Invalid username supplied
+ '404':
+ description: User not found
+ put:
+ tags:
+ - user
+ summary: Updated user
+ description: This can only be done by the logged in user.
+ operationId: updateUser
+ parameters:
+ - name: username
+ in: path
+ description: name that need to be deleted
+ required: true
+ schema:
+ type: string
+ responses:
+ '400':
+ description: Invalid user supplied
+ '404':
+ description: User not found
+ security:
+ - api_key: []
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/User'
+ description: Updated user object
+ required: true
+ delete:
+ tags:
+ - user
+ summary: Delete user
+ description: This can only be done by the logged in user.
+ operationId: deleteUser
+ parameters:
+ - name: username
+ in: path
+ description: The name that needs to be deleted
+ required: true
+ schema:
+ type: string
+ responses:
+ '400':
+ description: Invalid username supplied
+ '404':
+ description: User not found
+ security:
+ - api_key: []
+ /fake/operation_id_dollar_sign:
+ get:
+ tags:
+ - fake
+ summary: operationId dollar sign
+ description: operationId dollar sign
+ operationId: operationId$DollarSign
+ responses:
+ '400':
+ description: Invalid username supplied
+externalDocs:
+ description: Find out more about Swagger
+ url: 'http://swagger.io'
+components:
+ requestBodies:
+ UserArray:
+ content:
+ application/json:
+ schema:
+ type: array
+ items:
+ $ref: '#/components/schemas/User'
+ description: List of user object
+ required: true
+ Pet:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Pet'
+ application/xml:
+ schema:
+ $ref: '#/components/schemas/Pet'
+ description: Pet object that needs to be added to the store
+ required: true
+ securitySchemes:
+ petstore_auth:
+ type: oauth2
+ flows:
+ implicit:
+ authorizationUrl: 'http://petstore.swagger.io/api/oauth/dialog'
+ scopes:
+ 'write:pets': modify pets in your account
+ 'read:pets': read your pets
+ api_key:
+ type: apiKey
+ name: api_key
+ in: header
+ schemas:
+ Order:
+ title: Pet Order
+ description: An order for a pets from the pet store
+ type: object
+ properties:
+ id:
+ type: integer
+ format: int64
+ petId:
+ type: integer
+ format: int64
+ quantity:
+ type: integer
+ format: int32
+ shipDate:
+ type: string
+ format: date-time
+ status:
+ type: string
+ description: Order Status
+ enum:
+ - placed
+ - approved
+ - delivered
+ complete:
+ type: boolean
+ default: false
+ xml:
+ name: Order
+ Category:
+ title: Pet category
+ description: A category for a pet
+ type: object
+ properties:
+ id:
+ type: integer
+ format: int64
+ name:
+ type: string
+ pattern: '^[a-zA-Z0-9]+[a-zA-Z0-9\.\-_]*[a-zA-Z0-9]+$'
+ xml:
+ name: Category
+ User:
+ title: a User
+ description: A User who is purchasing from the pet store
+ type: object
+ properties:
+ id:
+ type: integer
+ format: int64
+ username:
+ type: string
+ firstName:
+ type: string
+ lastName:
+ type: string
+ email:
+ type: string
+ password:
+ type: string
+ phone:
+ type: string
+ userStatus:
+ type: integer
+ format: int32
+ description: User Status
+ xml:
+ name: User
+ Tag:
+ title: Pet Tag
+ description: A tag for a pet
+ type: object
+ properties:
+ id:
+ type: integer
+ format: int64
+ name:
+ type: string
+ xml:
+ name: Tag
+ Pet:
+ title: a Pet
+ description: A pet for sale in the pet store
+ type: object
+ required:
+ - name
+ - photoUrls
+ properties:
+ id:
+ type: integer
+ format: int64
+ category:
+ $ref: '#/components/schemas/Category'
+ name:
+ type: string
+ example: doggie
+ photoUrls:
+ type: array
+ xml:
+ name: photoUrl
+ wrapped: true
+ items:
+ type: string
+ tags:
+ type: array
+ xml:
+ name: tag
+ wrapped: true
+ items:
+ $ref: '#/components/schemas/Tag'
+ status:
+ type: string
+ description: pet status in the store
+ deprecated: true
+ enum:
+ - available
+ - pending
+ - sold
+ xml:
+ name: Pet
+ ApiResponse:
+ title: An uploaded response
+ description: Describes the result of uploading an image resource
+ type: object
+ properties:
+ code:
+ type: integer
+ format: int32
+ type:
+ type: string
+ message:
+ type: string
diff --git a/samples/client/petstore/jmeter/.openapi-generator/FILES b/samples/client/petstore/jmeter/.openapi-generator/FILES
index 87541f4daaa9..0377bec67288 100644
--- a/samples/client/petstore/jmeter/.openapi-generator/FILES
+++ b/samples/client/petstore/jmeter/.openapi-generator/FILES
@@ -1,3 +1,5 @@
+FakeApi.csv
+FakeApi.jmx
PetApi.csv
PetApi.jmx
StoreApi.csv
diff --git a/samples/client/petstore/jmeter/.openapi-generator/VERSION b/samples/client/petstore/jmeter/.openapi-generator/VERSION
index c30f0ec2be7f..0f78c31cdc77 100644
--- a/samples/client/petstore/jmeter/.openapi-generator/VERSION
+++ b/samples/client/petstore/jmeter/.openapi-generator/VERSION
@@ -1 +1 @@
-5.1.0-SNAPSHOT
\ No newline at end of file
+7.2.0-SNAPSHOT
\ No newline at end of file
diff --git a/samples/client/petstore/jmeter/FakeApi.csv b/samples/client/petstore/jmeter/FakeApi.csv
new file mode 100644
index 000000000000..48a90826d529
--- /dev/null
+++ b/samples/client/petstore/jmeter/FakeApi.csv
@@ -0,0 +1,2 @@
+testCase,httpStatusCode
+Success,200
\ No newline at end of file
diff --git a/samples/client/petstore/jmeter/FakeApi.jmx b/samples/client/petstore/jmeter/FakeApi.jmx
new file mode 100644
index 000000000000..918182e4e1c5
--- /dev/null
+++ b/samples/client/petstore/jmeter/FakeApi.jmx
@@ -0,0 +1,171 @@
+
+
+
+
+
+ false
+ false
+
+
+
+
+
+
+
+
+
+ threads
+ ${__P(threads,1)}
+ =
+
+
+ rampup
+ ${__P(rampup,1)}
+ =
+
+
+ duration
+ ${__P(duration,1)}
+ =
+
+
+ testCases
+ ${__P(testCases,10)}
+ =
+
+
+ host
+ ${__P(host,localhost)}
+ =
+
+
+ port
+ ${__P(port,8080)}
+ =
+
+
+ testData.operationId_DollarSignFile
+ ${__P(testData.operationId_DollarSignFile,FakeApi.csv)}
+ =
+
+
+
+
+
+
+
+
+ ${host}
+ ${port}
+
+
+
+
+
+ 4
+
+
+
+ continue
+
+ false
+ ${testCases}
+
+ ${threads}
+ ${rampup}
+ 1448391617000
+ 1448391617000
+ true
+ ${duration}
+ 5
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ /v2/fake/operation_id_dollar_sign
+ GET
+ true
+ false
+ true
+ false
+
+ false
+
+ operationId dollar sign operationId dollar sign
+
+
+
+ ,
+
+ ${testData.operationId_DollarSignFile}
+ true
+ true
+ shareMode.group
+ false
+
+ true
+
+
+
+
+
+ ${httpStatusCode}
+
+ Assertion.response_code
+ false
+ 8
+
+
+
+
+
+ false
+
+ saveConfig
+
+
+ true
+ true
+ true
+
+ true
+ true
+ true
+ true
+ false
+ true
+ true
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ 0
+ true
+ true
+
+
+
+
+
+
+
+
diff --git a/samples/client/petstore/jmeter/PetApi.csv b/samples/client/petstore/jmeter/PetApi.csv
index 29b09a1715de..2ab795b50f75 100644
--- a/samples/client/petstore/jmeter/PetApi.csv
+++ b/samples/client/petstore/jmeter/PetApi.csv
@@ -1,2 +1,2 @@
-testCase,httpStatusCode,body,petId,apiKey,status,tags,petId,body,petId,name,status,petId,additionalMetadata,file
+testCase,httpStatusCode,pet,petId,apiKey,status,tags,petId,pet,petId,name,status,petId,additionalMetadata,file
Success,200,0,0,0,0,0,0,0,0,0,0,0,0,0
\ No newline at end of file
diff --git a/samples/client/petstore/jmeter/PetApi.jmx b/samples/client/petstore/jmeter/PetApi.jmx
index 69c4866afab6..15efcf2b2849 100644
--- a/samples/client/petstore/jmeter/PetApi.jmx
+++ b/samples/client/petstore/jmeter/PetApi.jmx
@@ -121,6 +121,10 @@
Content-Type
application/json
+
+ accept
+ application/xml
+
Bearer ${__P(oathToken,token)}
@@ -132,9 +136,9 @@
true
-
+
false
- ${__javaScript("${body}".replace(/'/g\, '"'),)}
+ ${__javaScript("${pet}".replace(/'/g\, '"'),)}
=
@@ -515,6 +519,10 @@
Content-Type
application/json
+
+ accept
+ application/xml
+
Bearer ${__P(oathToken,token)}
@@ -526,9 +534,9 @@
true
-
+
false
- ${__javaScript("${body}".replace(/'/g\, '"'),)}
+ ${__javaScript("${pet}".replace(/'/g\, '"'),)}
=
diff --git a/samples/client/petstore/jmeter/StoreApi.csv b/samples/client/petstore/jmeter/StoreApi.csv
index 70fd54e2b204..2ccf8884aff0 100644
--- a/samples/client/petstore/jmeter/StoreApi.csv
+++ b/samples/client/petstore/jmeter/StoreApi.csv
@@ -1,2 +1,2 @@
-testCase,httpStatusCode,orderId,orderId,body
+testCase,httpStatusCode,orderId,orderId,order
Success,200,0,0,0
\ No newline at end of file
diff --git a/samples/client/petstore/jmeter/StoreApi.jmx b/samples/client/petstore/jmeter/StoreApi.jmx
index a30bca1219ee..7cb9f20967f2 100644
--- a/samples/client/petstore/jmeter/StoreApi.jmx
+++ b/samples/client/petstore/jmeter/StoreApi.jmx
@@ -310,6 +310,10 @@
+
+ Content-Type
+ application/json
+
accept
application/xml
@@ -321,9 +325,9 @@
true
-
+
false
- ${__javaScript("${body}".replace(/'/g\, '"'),)}
+ ${__javaScript("${order}".replace(/'/g\, '"'),)}
=
diff --git a/samples/client/petstore/jmeter/UserApi.csv b/samples/client/petstore/jmeter/UserApi.csv
index 92242d4077c7..66fcc84a5901 100644
--- a/samples/client/petstore/jmeter/UserApi.csv
+++ b/samples/client/petstore/jmeter/UserApi.csv
@@ -1,2 +1,2 @@
-testCase,httpStatusCode,body,body,body,username,username,username,password,username,body
+testCase,httpStatusCode,user,user,user,username,username,username,password,username,user
Success,200,0,0,0,0,0,0,0,0,0
\ No newline at end of file
diff --git a/samples/client/petstore/jmeter/UserApi.jmx b/samples/client/petstore/jmeter/UserApi.jmx
index 0ab9b304880d..47eb9867b304 100644
--- a/samples/client/petstore/jmeter/UserApi.jmx
+++ b/samples/client/petstore/jmeter/UserApi.jmx
@@ -117,6 +117,14 @@
+
+ Content-Type
+ application/json
+
+
+ api_key
+ ${__P(apiKey,key)}
+
@@ -124,9 +132,9 @@
true
-
+
false
- ${__javaScript("${body}".replace(/'/g\, '"'),)}
+ ${__javaScript("${user}".replace(/'/g\, '"'),)}
=
@@ -189,6 +197,14 @@
+
+ Content-Type
+ application/json
+
+
+ api_key
+ ${__P(apiKey,key)}
+
@@ -196,9 +212,9 @@
true
-
+
false
- ${__javaScript("${body}".replace(/'/g\, '"'),)}
+ ${__javaScript("${user}".replace(/'/g\, '"'),)}
=
@@ -261,6 +277,14 @@
+
+ Content-Type
+ application/json
+
+
+ api_key
+ ${__P(apiKey,key)}
+
@@ -268,9 +292,9 @@
true
-
+
false
- ${__javaScript("${body}".replace(/'/g\, '"'),)}
+ ${__javaScript("${user}".replace(/'/g\, '"'),)}
=
@@ -333,6 +357,10 @@
+
+ api_key
+ ${__P(apiKey,key)}
+
@@ -556,6 +584,10 @@
+
+ api_key
+ ${__P(apiKey,key)}
+
@@ -623,6 +655,14 @@
+
+ Content-Type
+ application/json
+
+
+ api_key
+ ${__P(apiKey,key)}
+
@@ -630,9 +670,9 @@
true
-
+
false
- ${__javaScript("${body}".replace(/'/g\, '"'),)}
+ ${__javaScript("${user}".replace(/'/g\, '"'),)}
=