test example data body api groovy jmeter jsr223

api - example - obteniendo tiempos de respuesta usando JSR223+JMeter



json extractor jmeter (1)

¿Es posible obtener el tiempo de respuesta real de las solicitudes de API realizadas con el muestreador JSR223 / groovy en JMeter? Tengo el siguiente código de trabajo, pero no obtengo el tiempo de respuesta adecuado cuando veo a mis oyentes (el contenido de la respuesta es realmente bueno, algunos datos json).

La URL objetivo se da en el campo ''parámetro'' en la muestra (basado en el ejemplo de Dmitri). Además, agregué un token de portador en el encabezado para usar el token de acceso OAuth al hacer solicitudes.

Intenté usar un controlador de transacción e incluí el sampler JSR223 dentro de él, pero esto no funcionó para obtener el tiempo de respuesta (incluso cuando se creó una muestra principal).

import org.apache.http.HttpEntity import org.apache.http.HttpResponse import org.apache.http.client.HttpClient import org.apache.http.client.methods.HttpGet import org.apache.http.impl.client.DefaultHttpClient import org.apache.http.util.EntityUtils import java.util.concurrent.ExecutorService import java.util.concurrent.Executors List<String> urls = new ArrayList<String>(); // initialize array of URLs Collections.addAll(urls, args); // read URLs from "Parameters" input and add them to array ExecutorService pool = Executors.newFixedThreadPool(urls.size()); // initialize pool of Future Tasks with number of threads equal to size of URLs provided for (String url : urls) { // for each URL from list final String currentURL = url; pool.submit(new Runnable() { // Sumbit a new thread which will execute GET request @Override public void run() { try { HttpClient client = new DefaultHttpClient(); // Use Apache Commons HTTPClient to perform GET request HttpGet get = new HttpGet(currentURL); get.addHeader("authorization","Bearer ${AccessToken}"); // Add the access token into the header get.addHeader("connection","keep-alive"); // Add keep-alive in header HttpResponse response = client.execute(get); // HttpResponse response = client.execute(post); HttpEntity entity = response.getEntity(); log.info("Response Status Code: " + response.getStatusLine().getStatusCode() + " " + response.getStatusLine().getReasonPhrase()); SampleResult.setResponseData(EntityUtils.toByteArray(entity)); } catch (Exception ex) { ex.printStackTrace(); throw ex; } } }); } pool.shutdown(); // shut down thread pool


Su muestra regresa antes de que el hilo que ejecuta su solicitud finalice, el método shutdown () de ThreadPoolExecutor inicia el apagado pero no lo espera. Pruebe con awaitTermination: pool.awaitTermination(60, TimeUnit.SECONDS)