2016-08-05 39 views
0

Nehmen wir an, die CSV-Datei (abc.csv) enthält 10 Datensätze mit Anmeldedaten (E-Mail, Passwort), und ich möchte diese Werte sofort mit dem Beanshell-Skript abrufen, um sicherzustellen, dass CSV nur einmal geöffnet und vermieden werden muss Öffnen der CSV-Datei 10 Mal für das Abrufen jedes einzelnen Datensatzes, der das Problem des folgenden Fehlers verursacht:JMeter: Wie CSV-Werte aus dem Beanshell-Skript abgerufen und verwendet werden, um den Fehler "Zu viele geöffnete Dateien" zu vermeiden?

"Zu viele geöffnete Dateien" in Antwortdaten.

Gibt es eine Möglichkeit, es zu tun?

Antwort

0

können Sie tun, mit so etwas wie:

import org.apache.jmeter.threads.JMeterContextService; 
import java.io.File; 
import java.io.FileNotFoundException; 
import java.util.Scanner; 
import java.util.Hashmap; 
import java.util.Map; 

File csvFile = new File("/home/yourname/folder/csvFile.csv"); 
csvData = new Hashmap<String,String>(); 

csvData = null; 

try (Scanner scanner = new Scanner(csvFile)) { 
    while (scanner.hasNextLine()) { 
     String[] line = scanner.nextLine().split(","); 
     csvData.put(line[0],line[1]); 
    } 
} catch (FileNotFoundException ex) { 
    ex.printStackTrace(); 
} 

JMeterContextService.getContext().getVariables().put("csvHashmap", csvData); 

Diese am Anfang getan werden kann, Sie Datei nur einmal und anschließend verwenden, um das Hash-Map-Objekt im Speicher gespeichert öffnen würden.

+0

Aber das zeigt Fehler wie: 2016.08.05 16.15.31 ERROR - jmeter.util. BeanShellInterpreter: Fehler beim Aufruf von bsh method: eval \t In Datei: Inline-Auswertung von: '' import org.apache.jmeter.threads.JMeterContextService; import java.io.File; impo. . . '' Encountered "," in Zeile 8, Spalte 17. – Anonymous

+0

Ich konnte 2 mögliche Probleme sehen ... Lassen Sie mich einen Schnitt machen. –

+0

Ich habe die Hashtabelle initialisiert und den Diamantoperator ersetzt. –

0

Ich glaube nicht, dass Ihr Problem mit "zu vielen offenen Dateien" durch die Workaround behoben wird, an die Sie denken.

IMHO, es wird nur Ihren Test weniger wartbar und weniger skalierbar.

Es ist ein Serverkonfigurationsproblem für Ihr Konto.

Sie sollten anwenden, was in Frage zu Ihnen geraten wurde: