2016-03-24 2 views
3

Ich erstelle benutzerdefinierte Sampler für JMeter. Ich bin in der Lage, meinen jar in die Bibliothek zu importieren, der Sampler ist in der GUI sichtbar, aber die Felder werden nicht richtig angezeigt.Jmeter Sampler sieht keine Ressourcen-Datei

Project structure

Hier ist mein Code.

Custom.java

public class Custom extends AbstractSampler implements TestBean { 

    private String email = ""; 

    public Custom() { 
    super(); 
    } 

    public SampleResult sample(Entry entry) { 
    SampleResult res = new SampleResult(); 
    res.setSampleLabel(getName()); 
    res.setResponseData(("Hello " + getEmail()).getBytes()); 
    res.setSuccessful(Boolean.TRUE); 
    return res; 
    } 

    public void setEmail(String email){ this.email = email; } 
    public String getEmail(){ return email; } 
} 

CustomBeanInfo.java

public class CustomBeanInfo extends BeanInfoSupport { 

    protected CustomBeanInfo() { 
    super(Custom.class); 

    createPropertyGroup("contact", new String[]{ 
     "email" 
    }); 

    PropertyDescriptor p = property("email"); 
    p.setValue(NOT_UNDEFINED, Boolean.TRUE); 
    p.setValue(DEFAULT, "asd"); 
    } 
} 

CustomResources.properties

displayName=Custom Sampler 
email.displayName=Email Address 
email.shortDescription=User Email Address 
contact.displayName=Contact 

Und das ist, wie es in JMeter GUI aussieht. Meine Vermutung ist, dass die Eigenschaftendatei nicht korrekt an den Sampler angehängt ist oder der Konstruktor nicht ausgeführt wird.

JMeter Gui

EDIT 1: hinzugefügt pom.xml Dateiinhalt

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>org.apache.jmeter</groupId> 
    <artifactId>custom-sampler</artifactId> 
    <version>0.2.0-SNAPSHOT</version> 
    <packaging>jar</packaging> 
    <properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    </properties> 
    <dependencies> 
    <dependency> 
     <groupId>org.apache.jmeter</groupId> 
     <artifactId>ApacheJMeter_core</artifactId> 
     <version>2.10</version> 
     <scope>provided</scope> 
    </dependency> 
    </dependencies> 
    <build> 
    <resources> 
     <resource> 
     <directory>src/main/resources</directory> 
     <filtering>true</filtering> 
     </resource> 
    </resources> 
    </build> 
</project> 

EDIT 2: Bei Verwendung von Probenehmer (Hinzufügen es Gruppe Gewinde) folgende Fehler im Protokoll angezeigt wird

2016/03/25 09:28:23 WARN - jmeter.testbeans.gui.GenericTestBeanCustomizer: org.apache.jmeter.protocol.java.sampler.Custom#email(java.lang.String) does not appear to have been configured 
+0

Brauchen Sie wirklich Bohnen/Ressourcen? Im Allgemeinen müssen Sie sie nicht haben: Wenn Sie jmeter-plugins.org oder sogar JMeters eigene Sampler betrachten, verwenden die meisten keine Beans und Ressourcen. –

Antwort

0

Bearbeiten: Wahrscheinlich falsch. Zeige Kommentare.

Ich denke, Sie haben gerade die Eigenschaftendatei falsch benannt. Die JavaDoc for BeanInfoSupport lautet:

Noch bevor diese Änderungen ein Ressourcenbündel xxxResources genannt (wobei xxx die voll qualifizierten Bean-Klasse Name ist) wird falls vorhanden erhalten und verwendet werden, um lokalisieren die folgenden:

Es besagt, dass der Dateiname vollständig qualifiziert sein muss. Graben um den Quellcode für ein Beispiel, das ich nicht gut finden konnte, aber ich habe diese Datei finden, notes_on_extending.txt:

  1. ein Paket-Auswahl und drei Dateien machen:
    • [Component] .java- (org.apache.jmeter.config.CSVDataSet.java)
    • [Component] BeanInfo.java (org.apache.jmeter.config.CSVDataSetBeanInfo.java)
    • [Component] Resources.properties (org. apache.jmeter.config.CSVDataSetResources.properti es)

Ich denke, Ihre Eigenschaften Datei org.apache.jmeter.custom.CustomResources.properties genannt werden müssen.

+0

Dies ist die Seite, die ich auf https://github.com/yciabaud/jmeter-ssh-sampler – user2847238

+0

Ich denke, ich liege falsch. Ich habe einige Beispiele im [offiziellen Repo-Spiegel] (https://github.com/apache/jmeter) gefunden (zB [KeystoreConfig.properties] (https://github.com/apache/jmeter/blob/trunk/src/ Komponenten/org/apache/jmeter/config/KeystoreConfigResources.properties)), und sie haben die Eigenschaftendatei wie gewohnt benannt. Ich werde meine Antwort hier lassen, damit andere nicht diesen Weg gehen, wenn sie versuchen, dir zu helfen. – DavidS

0

Das Problem ist der Modifikator des Konstrukteurs

protected CustomBeanInfo() { 

sein muss

public CustomBeanInfo() { 

fragen nicht, warum com/sun/Bohnen/finder/InstanceFinder.class die Ausnahme ohne Nachricht fangen:

protected T instantiate(Class<?> var1, String var2) { 
    if (var1 != null) {// 90 
     try { 
      if (var2 != null) {// 92 
       var1 = ClassFinder.findClass(var2, var1.getClassLoader());// 93 
      } 

      if (this.type.isAssignableFrom(var1)) {// 95 
       return var1.newInstance();// 96 
      } 
     } catch (Exception var4) {// 99 
      ; 
     } 
    } 

    return null;// 103 
}