Контекст: Моя текущая структура запускает мой скрипт и отправляет сведения о результатах в Azure cosmosdb с идентификатором (который я генерирую с помощью функции JMeter) в качестве ключа раздела. Но для каждого запроса я получаю один и тот же UUID. Может ли кто-нибудь помочь в том, что мне здесь не хватает. Вот мой слушатель JSR223 с groovy скриптом,
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.util.EntityUtils;
import org.apache.jmeter.samplers.SampleResult;
import groovy.json.*
def payload = [:]
def uuid = '${__UUID}';
payload.put('id', uuid)
def testDetails = []
testDetails.add(['project_name': '${Project_Name}']);
testDetails.add(['test_Name': '${Test_Name}']);
testDetails.add(['test_id': '${test_Id}']);
testDetails.add(['test_executer':'${Test_Triggered_By}']);
payload.put('test_details', testDetails);
String status = 'Failure';
//def responseDetails = []
try {
if (ctx.getPreviousResult().isSuccessful())
{
status = "Success";
def responseDetails = []
responseDetails.add(['requestName' : ctx.getPreviousResult().getSampleLabel(),
'status' : status,
'responseTime' : ctx.getPreviousResult().getTime(),
'responsecode' : ctx.getPreviousResult().getResponseCode(),
'sentBytes' : ctx.getPreviousResult().getSentBytes(),
'receivedBytes' : ctx.getPreviousResult().getBytesAsLong(),
'responseMessage': ctx.getPreviousResult().getResponseMessage(),
'samplecount' : ctx.getPreviousResult().getSampleCount(),
'errorCount' : ctx.getPreviousResult().getErrorCount(),
'time' : ctx.getPreviousResult().getTimeStamp()])
payload.put('response_Details', responseDetails)
payload.put('thread_Details', ['number_vusers': ctx.getThreadGroup().getNumberOfThreads()])
log.info(new groovy.json.JsonBuilder(payload).toPrettyString())
}
else
{
log.info("Something is not correct, please check the values");
}
}
catch (Exception e) {
log.error("Error in Grafana Metrics Listener : " +e );
}
//Ignore the Auth token generator from sending the report to cosmos db
if(sampleResult.getSampleLabel().equals("JSR223 Sampler"))
{}
else
{PostMeasurement(new JsonBuilder(payload).toPrettyString());}
//post the result to influxdb
void PostMeasurement(String Metrics) {
def httpclient = new DefaultHttpClient(new BasicHttpParams());
def httpPost = new HttpPost();
httpPost.setURI(new URI(vars.get("CosmosDB_API")));
httpPost.setEntity(new StringEntity(Metrics));
httpPost.addHeader("Accept" , "application/json");
httpPost.addHeader("x-ms-version" , "2016-07-11");
httpPost.addHeader("Authorization" , '${auth}'); //AuthToken for cosmosdb
httpPost.addHeader("x-ms-date" , '${RFC1123time}');
HttpResponse response = httpclient.execute(httpPost);
EntityUtils.consumeQuietly(response.getEntity());
}
пример полезной нагрузки,
2020-08-02 10:48:51,787 INFO o.a.j.e.StandardJMeterEngine: Running the test!
2020-08-02 10:48:51,787 INFO o.a.j.s.SampleEvent: List of sample_variables: []
2020-08-02 10:48:51,788 INFO o.a.j.g.u.JMeterMenuBar: setRunning(true, *local*)
2020-08-02 10:48:52,412 INFO o.a.j.v.J.Request Sender To Cosmos DB: {
"id": "d3055bf8-3b33-4ff8-9a9e-59fbb9bef729",
"test_details": [
{
"project_name": "APIM"
},
{
"test_Name": "SimpleLoadTest"
},
{
"test_id": "LoadTest02"
},
{
"test_executer": "Administrator"
}
],
"response_Details": [
{
"requestName": "JSR223 Sampler",
"status": "Success",
"responseTime": 264,
"responsecode": "200",
"sentBytes": 0,
"receivedBytes": 0,
"responseMessage": "OK",
"samplecount": 1,
"errorCount": 0,
"time": 1596345532124
}
],
"thread_Details": {
"number_vusers": 1
}
}
2020-08-02 10:48:54,629 INFO o.a.j.v.J.Request Sender To Cosmos DB: {
"id": "d3055bf8-3b33-4ff8-9a9e-59fbb9bef729",
"test_details": [
{
"project_name": "APIM"
},
{
"test_Name": "SimpleLoadTest"
},
{
"test_id": "LoadTest02"
},
{
"test_executer": "Administrator"
}
],
"response_Details": [
{
"requestName": "T01_Generate_Bearer_Token",
"status": "Success",
"responseTime": 2188,
"responsecode": "200",
"sentBytes": 642,
"receivedBytes": 4349,
"responseMessage": "OK",
"samplecount": 1,
"errorCount": 0,
"time": 1596345532440
}
],
"thread_Details": {
"number_vusers": 1
}
}
2020-08-02 10:48:58,423 INFO o.a.j.v.J.Request Sender To Cosmos DB: {
"id": "d3055bf8-3b33-4ff8-9a9e-59fbb9bef729",
"test_details": [
{
"project_name": "APIM"
},
{
"test_Name": "SimpleLoadTest"
},
{
"test_id": "LoadTest02"
},
{
"test_executer": "Administrator"
}
],
"response_Details": [
{
"requestName": "T01_Generate_Bearer_Token",
"status": "Success",
"responseTime": 2021,
"responsecode": "200",
"sentBytes": 640,
"receivedBytes": 4202,
"responseMessage": "OK",
"samplecount": 1,
"errorCount": 0,
"time": 1596345536400
}
],
"thread_Details": {
"number_vusers": 1
}
}
2020-08-02 10:49:03,132 INFO o.a.j.v.J.Request Sender To Cosmos DB: {
"id": "d3055bf8-3b33-4ff8-9a9e-59fbb9bef729",
"test_details": [
{
"project_name": "APIM"
},
{
"test_Name": "SimpleLoadTest"
},
{
"test_id": "LoadTest02"
},
{
"test_executer": "Administrator"
}
],
"response_Details": [
{
"requestName": "T02_Retrieve_Country_Details",
"status": "Success",
"responseTime": 3250,
"responsecode": "200",
"sentBytes": 1750,
"receivedBytes": 269674,
"responseMessage": "OK",
"samplecount": 1,
"errorCount": 0,
"time": 1596345539880
}
],
"thread_Details": {
"number_vusers": 1
}
}
2020-08-02 10:49:06,003 INFO o.a.j.v.J.Request Sender To Cosmos DB: {
"id": "d3055bf8-3b33-4ff8-9a9e-59fbb9bef729",
"test_details": [
{
"project_name": "APIM"
},
{
"test_Name": "SimpleLoadTest"
},
{
"test_id": "LoadTest02"
},
{
"test_executer": "Administrator"
}
],
"response_Details": [
{
"requestName": "T04_Add_New_Country",
"status": "Success",
"responseTime": 1369,
"responsecode": "200",
"sentBytes": 1948,
"receivedBytes": 537,
"responseMessage": "OK",
"samplecount": 1,
"errorCount": 0,
"time": 1596345544633
}
],
"thread_Details": {
"number_vusers": 1
}
}
2020-08-02 10:49:08,869 INFO o.a.j.v.J.Request Sender To Cosmos DB: {
"id": "d3055bf8-3b33-4ff8-9a9e-59fbb9bef729",
"test_details": [
{
"project_name": "APIM"
},
{
"test_Name": "SimpleLoadTest"
},
{
"test_id": "LoadTest02"
},
{
"test_executer": "Administrator"
}
],
"response_Details": [
{
"requestName": "T01_Generate_Bearer_Token",
"status": "Success",
"responseTime": 1351,
"responsecode": "200",
"sentBytes": 647,
"receivedBytes": 4397,
"responseMessage": "OK",
"samplecount": 1,
"errorCount": 0,
"time": 1596345547518
}
],
"thread_Details": {
"number_vusers": 1
}
}
2020-08-02 10:49:11,741 INFO o.a.j.v.J.Request Sender To Cosmos DB: {
"id": "d3055bf8-3b33-4ff8-9a9e-59fbb9bef729",
"test_details": [
{
"project_name": "APIM"
},
{
"test_Name": "SimpleLoadTest"
},
{
"test_id": "LoadTest02"
},
{
"test_executer": "Administrator"
}
],
"response_Details": [
{
"requestName": "T03_Retrieve_Any_Random_Country_Details",
"status": "Success",
"responseTime": 1427,
"responsecode": "200",
"sentBytes": 1830,
"receivedBytes": 544,
"responseMessage": "OK",
"samplecount": 1,
"errorCount": 0,
"time": 1596345550311
}
],
"thread_Details": {
"number_vusers": 1
}
}
2020-08-02 10:49:13,210 INFO o.a.j.e.StandardJMeterEngine: Notifying test listeners of end of test
2020-08-02 10:49:13,210 INFO o.a.j.g.u.JMeterMenuBar: setRunning(false, *local*)
** Все идентификаторы в полезной нагрузке такие же, чего мне здесь не хватает