@ -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 |
@ -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" | |||
} |
@ -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" | |||
} |
@ -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" | |||
} |
@ -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 | |||
] | |||
} | |||
] | |||
} |