[JAVA] Comment demander un fichier CSV au format JSON avec jMeter

Je souhaite demander et publier plus de 10 000 données CSV.

En ce moment, je fais beaucoup de traitement de données, sinon du big data. Le traitement de données volumineuses est limité dans le nombre de fois qu'elles peuvent être testées par jour

Je veux cet environnement même dans ma maison, je me suis demandé si je pouvais faire quelque chose avec jMeter. vient de le faire.

jMeter n'a pas la possibilité de faire de CSV une requête JSON par défaut

JMeter est une application d'envoi de requêtes multifonctionnelle et performante, Par défaut, il n'y a pas de "fonction qui convertit CSV en JSON".

Cependant, en exécutant le script lors de l'envoi de "** BeanPreProcesser **", Il existe une fonction qui peut être contrôlée de différentes manières.

Faites approximativement ceci. -Définir la variable de réception dans la requête HTTP

-Utilisez Bean PreProcessor pour créer une chaîne JSON et l'assigner à la variable de réception

・ Envoyer une requête HTTP avec jMeter

Définir la transmission JSON

Tout d'abord, définissez normalement les paramètres de transmission des requêtes HTTP. Créez un gestionnaire d'en-tête HTTP, Définissez Content-Type sur ** application / json **

image.png

Créer une variable pour l'affectation dans le corps de la demande

Tout d'abord, entrez normalement l'adresse cible dans le serveur ou le chemin cible.

Ensuite, mettez "** variable pour stocker le résultat du script **" dans la requête Cette fois, je l'ai nommé ** $ {post_data} **

image.png

Créer BeanPreProcessor

Cliquez ensuite avec le bouton droit pour créer un BeanPreProcessor et créer une chaîne JSON.

BeanPreProcessor est écrit en Java, donc si vous y êtes habitué, il est facile à utiliser. Il semble que la sérialisation et la désérialisation JSON soient également possibles en chargeant la bibliothèque dans jMeter ヾ (.> ﹏ <.) ノ ✧ *.

image.png

Le contenu du traitement est comme vous pouvez le voir. Boucle à travers CSV ligne par ligne

request.json


"liste csv":[{
  "Hogehoge":"CSV 1ère colonne"
  "en quelque sorte":"CSV 2e colonne"
  "foo":"CSV 3e colonne"
}
{
  "Hogehoge":"CSV 1ère colonne"
  "en quelque sorte":"CSV 2e colonne"
  "foo":"CSV 3e colonne"
}]
...

Créez un JSON comme celui-ci!

BeanShellPreProcessor.java


//▼-----------Le traitement BeanPreProcessor a démarré-------------▼
log.info("BeanShell PreProcessor start");


StringBuilder requestBody = new StringBuilder();
//Faire un démarrage JSON
requestBody.append("{\r\n");
//Les sauts de ligne sont également reflétés correctement ヾ(¡>﹏<¡)Non ✧*。
//Commencer à créer un objet de liste

requestBody.append("\"requestCSV\":[\r\n");

//Lire le fichier CSV
BufferedReader reader = new BufferedReader(new FileReader(new File("C:\\csvFileForBatche\\06YAMAGAcopied.CSV")));
String line;
//Boucle ligne par ligne

boolean secondLoopFlg = false;
while ((line = reader.readLine()) != null) {
	//Divisez le CSV lu par des virgules
	String[] params = line.split(",");

		if(secondLoopFlg){
			requestBody.append(",\r\n");
		}
		requestBody.append("{\r\n");
		//Créer des paramètres CSV pour chaque élément
    		requestBody.append("\"countryPublicOrgCd\":\"").append(params[0]).append("\",\r\n");
		requestBody.append("\"zipcodePare\":").append(params[1]).append(",\r\n");
		requestBody.append("\"zipcode\":").append(params[2]).append(",\r\n");
		requestBody.append("\"prefNameKana\":").append(params[3]).append(",\r\n");
		requestBody.append("\"cityNameKana\":").append(params[4]).append(",\r\n");
		requestBody.append("\"streetNameKana\":").append(params[5]).append(",\r\n");

		requestBody.append("\"prefNameKanji\":").append(params[6]).append(",\r\n");
		requestBody.append("\"cityNameKanji\":").append(params[7]).append(",\r\n");
		
		requestBody.append("\"streetNameKanji\":").append(params[8]).append(",\r\n");
		requestBody.append("\"var1\": \"").append(params[9]).append("\",\r\n");
		requestBody.append("\"var2\": \"").append(params[10]).append("\",\r\n");
		requestBody.append("\"var3\": \"").append(params[11]).append("\",\r\n");
		requestBody.append("\"var4\": \"").append(params[12]).append("\",\r\n");
		requestBody.append("\"var5\": \"").append(params[13]).append("\",\r\n");
		requestBody.append("\"var6\": \"").append(params[14]).append("\"\r\n");

		//Fermer l'objet
		requestBody.append("}\r\n");

		secondLoopFlg = true;
}

//Fermer l'objet JSON
requestBody.append("]\r\n");

requestBody.append("}\r\n");
//Fermer le fichier
reader.close();

//Affecter à une variable préparée par la requête
vars.put("post_data", requestBody.toString());

// ▲-----------Le traitement BeanPreProcessor a démarré-------------▲
log.info("BeanShell PreProcessor start");

Exécutons ヾ (.> ﹏ <.) ノ ✧ *.

J'enverrai effectivement une demande dans cet état image.png

Nous avons pu envoyer du CSV à 30000 demandes b

référence Sending Complete JSON Data from the CSV file in one request in JMeter https://stackoverflow.com/questions/32628934/sending-complete-json-data-from-the-csv-file-in-one-request-in-jmeter

receiving json and deserializing as List of object at spring mvc controller https://stackoverflow.com/questions/23012841/receiving-json-and-deserializing-as-list-of-object-at-spring-mvc-controller

Recommended Posts

Comment demander un fichier CSV au format JSON avec jMeter
Comment s'inscrire en tant que client dans Square à l'aide de Tomcat
Comment créer un fichier jar sans dépendances dans Maven
Comment lire un fichier et le traiter comme une entrée standard
Comment ouvrir un fichier de script à partir d'Ubuntu avec du code VS
Comment réaliser le téléchargement de fichiers avec Feign
Comment réaliser le téléchargement de fichiers avec Feign
Comment démarrer un conteneur Docker avec un volume monté dans un fichier de commandes
[Ruby] Comment convertir un fichier CSV en Yaml (Yml)
Pour déployer manuellement Struts2 en tant que fichier war
Comment stocker des objets dans PostgreSQL au format JSON avec MyBatis (Mapper XML)
Comment compresser un fichier JAVA CSV et le gérer dans un tableau d'octets
Comment créer un formulaire Excel à l'aide d'un fichier modèle avec Spring MVC
Comment tester une classe qui gère application.properties avec SpringBoot (requête: signalée)
Comment exécuter l'application SpringBoot en tant que service
Comment passer d'Eclipse Java à un fichier SQL
Comment supprimer un objet new_record construit avec Rails
Comment traiter Aucun modèle de demande interactive
Comment générer manuellement un JWT avec Knock in Rails
Je souhaite surveiller un fichier spécifique avec WatchService
[Java] Comment obtenir une requête par communication HTTP
[Comment insérer une vidéo dans un hameau avec Rails]
Comment télécharger des fichiers (Servlet, HTML, Apache, Tomcat)
Comment convertir un fichier en tableau d'octets en Java
[Java] Comment rompre une ligne avec StringBuilder
Comment enregistrer des fichiers avec l'extension spécifiée sous le répertoire spécifié en Java dans la liste
Sortie de fichier csv avec csv ouvert
[Ruby] Comment diviser chaque requête GraphQL en fichiers
Comment inverser la compilation du fichier apk en code source Java avec MAC
Comment laisser un commentaire
[Facile] Comment formater automatiquement les fichiers Ruby erb avec vsCode
Apprendre Ruby avec AtCoder 13 Comment créer un tableau à deux dimensions
Comment charger une bibliothèque à partir d'un fichier JAR avec VSCode << Comment ne pas utiliser Maven / Gradle >>
Comment numéroter (nombre) avec html.erb
Comment mettre à jour avec activerecord-import
Comment déplacer une autre classe avec une action de bouton d'une autre classe.
Mappage à une classe avec un objet de valeur dans How to My Batis
Comment installer GNOME en tant qu'environnement de bureau sur CentOS 7
Comment insérer une vidéo
Comment configurer un proxy avec authentification dans Feign
Comment créer une méthode
Convertissez Excel en Blob avec java, enregistrez-le, lisez-le à partir de DB et exportez-le sous forme de fichier!
Comment créer un fichier jar et un fichier war à l'aide de la commande jar
Comment annuler la fusion de cellules dans une plage spécifiée avec POI
Comment réaliser un téléchargement de fichiers volumineux avec TERASOLUNA 5.x (= Spring MVC)
Faisons une application multiplateforme avec JRuby (génération de fichier jar)
Lisez le fichier sous le chemin de classe sous forme de chaîne de caractères avec ressort
Comment charger un fichier de téléchargement Spring et afficher son contenu
Comment renommer un modèle avec des contraintes de clé externes dans Rails
Comment afficher une liste de chaînes dans JSF sous forme de chaînes séparées par des virgules
Choses à oublier lors de l'interception d'une requête avec Android WebView # shouldInterceptRequest
[chown] Comment changer le propriétaire d'un fichier ou d'un répertoire
J'ai créé un outil pour afficher la différence du fichier CSV