Start working on scenario files for workload generation
This commit is contained in:
parent
20ceb14ee7
commit
395d23cee9
41
scenario-definition/README.md
Normal file
41
scenario-definition/README.md
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
# Scenario Definition for EshopOnContainers
|
||||||
|
|
||||||
|
To use the simulation framework for microservices you have
|
||||||
|
to specify a scenario/workload using json (configuration) files.
|
||||||
|
|
||||||
|
The configuration files consist of:
|
||||||
|
|
||||||
|
- operations: a HTTP request
|
||||||
|
- transactions: multiple operations sequentially chained together
|
||||||
|
- scenario: specifies which transactions are run and other workload
|
||||||
|
configuration like distribution, arguments the transaction should use etc.
|
||||||
|
|
||||||
|
|
||||||
|
The scenario should simulate a workload the microservice application would
|
||||||
|
experience during a given timespan in production.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Scenario for eshopOnContainers
|
||||||
|
|
||||||
|
Arguments and Dynamic Variables for Transactions:
|
||||||
|
- userId
|
||||||
|
- productId
|
||||||
|
|
||||||
|
|
||||||
|
Transactions:
|
||||||
|
- Customer reads items, adds item to basket, checkouts basket
|
||||||
|
- Customer adds item to basket, removes again, logs out
|
||||||
|
- Price update transaction
|
||||||
|
- Stock replenished for catalog item
|
||||||
|
- Catalog item is removed
|
||||||
|
- create Order draft
|
||||||
|
- Order cancel
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Workload configuration:
|
||||||
|
- dataskew on catalog items (distribution of which items are accessed/bought)
|
||||||
|
- distribution between different transactions
|
||||||
|
- how many concurrent transactions
|
||||||
|
- how many total transactions to be executed
|
39
scenario-definition/operations/op_basket_add_item.json
Normal file
39
scenario-definition/operations/op_basket_add_item.json
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
{
|
||||||
|
"id": "basket-add-item",
|
||||||
|
"type": "http",
|
||||||
|
"httpMethod": "post",
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"name": "items",
|
||||||
|
"required": true,
|
||||||
|
"type": "object"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "buyerId",
|
||||||
|
"required": true,
|
||||||
|
"type": "guid"
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"dynamicVariables": [
|
||||||
|
{
|
||||||
|
"name": "basket-item-id",
|
||||||
|
"type": "unsignedInt"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
"payload": {
|
||||||
|
"type": "json",
|
||||||
|
"content": {
|
||||||
|
"buyerId": "{{buyerId}}",
|
||||||
|
"items": [
|
||||||
|
"id": "1",
|
||||||
|
"productId": "{{items}}",
|
||||||
|
"productName": "string",
|
||||||
|
"unitPrice": 0,
|
||||||
|
"oldUnitPrice": 0,
|
||||||
|
"quantity": 0,
|
||||||
|
"pictureUrl": ""
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"url": "http://localhost:5101/catalog-api/api/v1/Basket"
|
||||||
|
}
|
61
scenario-definition/operations/op_catalog_add_item.json
Normal file
61
scenario-definition/operations/op_catalog_add_item.json
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
{
|
||||||
|
"id": "catalog-add-item",
|
||||||
|
"type": "http",
|
||||||
|
"httpMethod": "post",
|
||||||
|
"dynamicVariables": [
|
||||||
|
{
|
||||||
|
"name": "item-name",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "item-description",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "price",
|
||||||
|
"type": "unsignedInt"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "brand-name",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "available-stock",
|
||||||
|
"type": "unsignedInt"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "restock-threshold",
|
||||||
|
"type": "unsignedInt"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "max-stock-threshold",
|
||||||
|
"type": "unsignedInt"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
"payload": {
|
||||||
|
"type": "json",
|
||||||
|
"content": {
|
||||||
|
"id": 0,
|
||||||
|
"name": "{{item-name}}",
|
||||||
|
"description": "{{item-description}}",
|
||||||
|
"price": "{{price}}",
|
||||||
|
"pictureFileName": "",
|
||||||
|
"pictureUri": "",
|
||||||
|
"catalogTypeId": 1,
|
||||||
|
"catalogType": {
|
||||||
|
"id": 0,
|
||||||
|
"type": ""
|
||||||
|
},
|
||||||
|
"catalogBrandId": 1,
|
||||||
|
"catalogBrand": {
|
||||||
|
"id": 1,
|
||||||
|
"brand": "{{brand-name}}"
|
||||||
|
},
|
||||||
|
"availableStock": "{{available-stock}}",
|
||||||
|
"restockThreshold": "{{restock-threshold}}",
|
||||||
|
"maxStockThreshold": "{{max-stock-threshold}}",
|
||||||
|
"onReorder": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"url": "http://localhost:5101/catalog-api/api/v1/Catalog/items"
|
||||||
|
}
|
12
scenario-definition/operations/op_catalog_get_items.json
Normal file
12
scenario-definition/operations/op_catalog_get_items.json
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
"id": "catalog-get-items",
|
||||||
|
"type": "http",
|
||||||
|
"httpMethod": "get",
|
||||||
|
"queryParameters": [
|
||||||
|
{
|
||||||
|
"key": "pageSize",
|
||||||
|
"value": 3
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"url": "http://localhost:5101/catalog-api/api/v1/Catalog/items"
|
||||||
|
}
|
18
scenario-definition/transactions/add_items_to_basket.json
Normal file
18
scenario-definition/transactions/add_items_to_basket.json
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
transaction:
|
||||||
|
{
|
||||||
|
"id": "add-items-to-basket",
|
||||||
|
"operations": [
|
||||||
|
{
|
||||||
|
operationRefId: "catalog-get-items",
|
||||||
|
id: "op-1",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
operationRefId: "op-id-2",
|
||||||
|
id: "second-op-in-this-transaction",
|
||||||
|
arguments: [
|
||||||
|
userId,
|
||||||
|
@first-op-in-this-transaction.response.id
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user