[JAVA] So fordern Sie mit jMeter eine CSV-Datei als JSON an

Ich möchte mehr als 10.000 CSV-Daten anfordern und veröffentlichen.

Im Moment mache ich eine große Menge an Datenverarbeitung, wenn nicht Big Data. Die Verarbeitung großer Datenmengen ist in der Häufigkeit begrenzt, mit der sie pro Tag getestet werden können

Ich möchte diese Umgebung auch in meinem Haus. Ich habe mich gefragt, ob ich mit jMeter etwas anfangen kann. habe es gerade geschafft.

jMeter kann CSV standardmäßig nicht zu einer JSON-Anforderung machen

JMeter ist eine multifunktionale und leistungsstarke App zum Senden von Anfragen. Standardmäßig gibt es keine "Funktion, die CSV in JSON konvertiert".

Wenn Sie jedoch das Skript ausführen, wenn Sie "** BeanPreProcesser **" senden, Es gibt eine Funktion, die auf verschiedene Arten gesteuert werden kann.

Mach das ungefähr.

・ HTTP-Anfrage mit jMeter senden

Stellen Sie die JSON-Übertragung ein

Stellen Sie zunächst die Einstellungen für die HTTP-Anforderungsübertragung normal ein. Erstellen Sie einen HTTP-Header-Manager. Setzen Sie den Inhaltstyp auf ** application / json **

image.png

Erstellen Sie eine Variable für die Zuweisung im Anforderungshauptteil

Geben Sie normalerweise zuerst die Zieladresse auf dem Zielserver oder -pfad ein.

Fügen Sie dann "** Variable zum Speichern des Ergebnisses des Skripts **" in die Anforderung ein Diesmal habe ich es ** $ {post_data} ** genannt

image.png

Erstellen Sie den BeanPreProcessor

Klicken Sie dann mit der rechten Maustaste, um einen BeanPreProcessor und eine JSON-Zeichenfolge zu erstellen.

BeanPreProcessor ist in Java geschrieben. Wenn Sie daran gewöhnt sind, ist es einfach zu bedienen. Es scheint, dass JSON-Serialisierung und -Deserialisierung auch durch Laden der Bibliothek in jMeter ヾ (.> ﹏ <.) ノ ✧ * möglich sind.

image.png

Der Verarbeitungsinhalt ist wie Sie sehen können. Durchlaufen Sie CSV Zeile für Zeile

request.json


"CSV-Liste":[{
  "Hogehoge":"CSV 1. Spalte"
  "irgendwie":"CSV 2. Spalte"
  "foo":"CSV 3. Spalte"
}
{
  "Hogehoge":"CSV 1. Spalte"
  "irgendwie":"CSV 2. Spalte"
  "foo":"CSV 3. Spalte"
}]
...

Machen Sie einen JSON wie diesen!

BeanShellPreProcessor.java


//▼-----------Die BeanPreProcessor-Verarbeitung wurde gestartet-------------▼
log.info("BeanShell PreProcessor start");


StringBuilder requestBody = new StringBuilder();
//Starten Sie JSON
requestBody.append("{\r\n");
//Zeilenumbrüche werden auch richtig wiedergegeben ヾ(¡>﹏<¡)Nein ✧*。
//Erstellen Sie ein Listenobjekt

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

//CSV-Datei lesen
BufferedReader reader = new BufferedReader(new FileReader(new File("C:\\csvFileForBatche\\06YAMAGAcopied.CSV")));
String line;
//Schleife Zeile für Zeile

boolean secondLoopFlg = false;
while ((line = reader.readLine()) != null) {
	//Teilen Sie die gelesene CSV durch Kommas
	String[] params = line.split(",");

		if(secondLoopFlg){
			requestBody.append(",\r\n");
		}
		requestBody.append("{\r\n");
		//Erstellen Sie CSV-Parameter für jedes Element
    		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");

		//Objekt schließen
		requestBody.append("}\r\n");

		secondLoopFlg = true;
}

//Schließen Sie das JSON-Objekt
requestBody.append("]\r\n");

requestBody.append("}\r\n");
//Datei schließen
reader.close();

//Weisen Sie einer von der Anforderung vorbereiteten Variablen zu
vars.put("post_data", requestBody.toString());

// ▲-----------Die BeanPreProcessor-Verarbeitung wurde gestartet-------------▲
log.info("BeanShell PreProcessor start");

Lassen Sie uns ヾ (.> ﹏ <.) ノ ✧ * ausführen.

Ich werde tatsächlich eine Anfrage in diesem Zustand senden image.png

Wir konnten CSV an 30.000 Anfragen senden. B.

Referenz 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

So fordern Sie mit jMeter eine CSV-Datei als JSON an
So registrieren Sie sich mit Tomcat als Kunde in Square
So erstellen Sie eine JAR-Datei ohne Abhängigkeiten in Maven
So lesen Sie eine Datei und behandeln sie als Standardeingabe
So öffnen Sie eine Skriptdatei von Ubuntu mit VS-Code
So erreichen Sie den Dateidownload mit Feign
So erreichen Sie das Hochladen von Dateien mit Feign
So starten Sie einen Docker-Container mit einem in einer Batchdatei bereitgestellten Volume
[Ruby] So konvertieren Sie eine CSV-Datei in Yaml (Yml)
So stellen Sie Struts2 manuell als Kriegsdatei bereit
Speichern von Objekten in PostgreSQL als JSON mit MyBatis (Mapper XML)
So komprimieren Sie eine JAVA-CSV-Datei und verwalten sie in einem Byte-Array
So erstellen Sie ein Excel-Formular mithilfe einer Vorlagendatei mit Spring MVC
So testen Sie eine Klasse, die application.properties mit SpringBoot verarbeitet (Anfrage: darauf hingewiesen)
So führen Sie die SpringBoot-App als Dienst aus
So springen Sie von Eclipse Java zu einer SQL-Datei
So löschen Sie ein mit Rails erstelltes new_record-Objekt
Umgang mit Keine Vorlage für interaktive Anfragen
So generieren Sie manuell ein JWT mit Knock in Rails
Ich möchte eine bestimmte Datei mit WatchService überwachen
[Java] So erhalten Sie eine Anfrage per HTTP-Kommunikation
[So fügen Sie ein Video mit Rails in haml ein]
Herunterladen von Dateien (Servlet, HTML, Apache, Tomcat)
So konvertieren Sie eine Datei in ein Byte-Array in Java
[Java] So unterbrechen Sie eine Zeile mit StringBuilder
Speichern von Dateien mit der angegebenen Erweiterung unter dem in Java angegebenen Verzeichnis in der Liste
Ausgabe einer CSV-Datei mit offener CSV
[Ruby] So teilen Sie jede GraphQL-Abfrage in Dateien auf
So kehren Sie die Kompilierung der Apk-Datei in Java-Quellcode mit MAC um
Wie hinterlasse ich einen Kommentar?
[Einfach] So formatieren Sie Ruby erb-Dateien automatisch mit vsCode
Ruby mit AtCoder lernen 13 So erstellen Sie ein zweidimensionales Array
So laden Sie eine Bibliothek aus einer JAR-Datei mit VSCode << So verwenden Sie Maven / Gradle nicht >>
Wie man mit html.erb nummeriert (nummeriert)
So aktualisieren Sie mit activerecord-import
So verschieben Sie eine andere Klasse mit einer Schaltflächenaktion einer anderen Klasse.
Zuordnung zu einer Klasse mit einem Wertobjekt in How to My Batis
So installieren Sie GNOME als Desktop-Umgebung unter CentOS 7
So fügen Sie ein Video ein
So richten Sie einen Proxy mit Authentifizierung in Feign ein
So erstellen Sie eine Methode
Konvertieren Sie Excel mit Java in Blob, speichern Sie es, lesen Sie es aus der Datenbank und geben Sie es als Datei aus!
So erstellen Sie eine JAR-Datei und eine War-Datei mit dem Befehl jar
So brechen Sie das Zusammenführen von Zellen innerhalb eines bestimmten Bereichs mit dem POI ab
So realisieren Sie mit TERASOLUNA 5.x (= Spring MVC) das Hochladen großer Dateien
Versuchen Sie, mit JRuby eine plattformübergreifende Anwendung zu erstellen (Generierung von JAR-Dateien).
Lesen Sie die Datei unter dem Klassenpfad als Zeichenfolge mit spring
So laden Sie eine Spring-Upload-Datei und zeigen ihren Inhalt an
So benennen Sie ein Modell mit externen Schlüsseleinschränkungen in Rails um
So geben Sie eine Liste von Zeichenfolgen in JSF als durch Kommas getrennte Zeichenfolgen aus
Dinge, die Sie beim Abfangen einer Anfrage mit Android WebView vergessen sollten # shouldInterceptRequest
[chown] So ändern Sie den Eigentümer einer Datei oder eines Verzeichnisses
Ich habe ein Tool erstellt, um den Unterschied zwischen CSV-Dateien auszugeben