2010-12-09 5 views
2

Ich versuche ein JMeter-Skript zu schreiben, das nach dem Empfang und der XML-Antwort von einem Server eine Zeichenfolge daraus extrahiert (löscht den ersten Teil der Antwort) und schreibt sie zu einer Datei.JMeter ändert Ausgabe in Datei von XML Stream

Momentan verwende ich Save Response Data, um ChannelData_UAT_1 (Dateiname) zu schreiben. Alles gut, schreibt es glücklich.

Dann füge ich ein BSF PreProcessorvor es, und verwenden Sie Javascript, um zu versuchen und extrahieren Sie die Zeichenfolge. Es ist eine Reihe von XML-Tags, ich möchte alles von "<Markets>" ab.

Ich benutze:

function extract_markets(str) 
{ 
    marketIndex = str.indexOf("<Markets"); 
    __log(marketIndex); 
    length = str.length; 
    marketString = str.substring(markeIndex, length-1); 
    return str; 
} 

vars.put('ChannelData_UAT_1', extract_markets(vars.get('ChannelData_UAT_1'))); 

Soweit ich das beurteilen kann, ChannelData_UAT_1 die Variablen sind die Daten in sind jedoch ist dies nur in den Save Response Data erwähnt.. Aber ich kann es danach nicht machen sonst hätte es schon in die Datei geschrieben.

Die aktuelle Leistung ist es für die Antwort erhalten und in die Datei schreiben. Es wird keine Filterung durchgeführt - als ob mein Javascript nicht existiert hätte.

Alles klein oder offensichtlich, dass ich verpasst habe? Vorschläge?

Antwort

4

Ich glaube, das Problem stammt aus der Tatsache, dass ChannelData_UAT_1 keine Variable ist und wie Save Response Data funktioniert.

ChannelData_UAT_1 ist der Dateiname, nicht der Inhalt der Datei.

Sie müssen den Inhalt der "Antwort" ändern. Sie können den Wert der Seitenantwort durch den Wert Ihrer Funktion ersetzen.

I denken der Code wie folgt aussehen würde:

import org.apache.jmeter.util.JMeterUtils; 
import org.apache.jmeter.samplers.SampleResult; 

prev.setResponseData(extract_markets(vars.get('ChannelData_UAT_1'))); 

Quelle: http://www.javadocexamples.com/java_examples/org/apache/jmeter/samplers/SampleResult/