Programmazione:Java/Sampler Test for JMeter

Da WikiSitech.
Versione del 20 nov 2007 alle 14:11 di Rimondini (discussione | contributi) (Nuova pagina: Questo è un esempio di implementazione di un Sampler di test per JMeter, nello specifico un Sampler per le notifiche JMS su ApacheMQ. I passi sono pochi * Creare un progetto Java * I...)
(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)
Vai alla navigazioneVai alla ricerca

Questo è un esempio di implementazione di un Sampler di test per JMeter, nello specifico un Sampler per le notifiche JMS su ApacheMQ.

I passi sono pochi

  • Creare un progetto Java
  • Impostare il runtime in modo tale che il modulo possa funzionare da solo
  • Scrivere la classe Sampler


ApacheMQ JMS Sampler code :

public class JMeterJmsProducerSampler extends AbstractJavaSamplerClient {

  protected class JMeterJmsExceptionListener implements ExceptionListener {
     protected SampleResult result;
     public JMeterJmsExceptionListener(SampleResult r) {
        result = r;
     }
     /*
      * Funzione chiamata se arriva un eccezione
      */
     public void onException(JMSException e) {
        result.setSuccessful(false);
        result.setResponseMessage(e.getMessage());
     }
  }
  protected String topic, client, message;
  /*
   * Definizione dei parametri, con default, configurabili da JMeter
   */
  @Override
  public Arguments getDefaultParameters() {
     Arguments args = new Arguments();
     args.addArgument("topic", "NotifyTopic");
     args.addArgument("client", "");
     args.addArgument("message", "");
     return args;
  }
  /*
   * Inizializzazione per run
   */
  @Override
  public void setupTest(JavaSamplerContext context) {
     super.setupTest(context);
     topic = context.getParameter("topic", "NotifyTopic");
     client = context.getParameter("client", "");
     message = context.getParameter("message", "");
  }
  /*
   * Lancio del Sampler
   */
  public SampleResult runTest(JavaSamplerContext arg0) {
     SampleResult result = new SampleResult();
     try {
        result.sampleStart();
        Properties props = new Properties();
        props.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.apache.activemq.jndi.ActiveMQInitialContextFactory");
        props.setProperty(Context.PROVIDER_URL, "tcp://localhost:61616");
        Context ctx = new InitialContext(props);
        TopicConnectionFactory factory = (TopicConnectionFactory) ctx.lookup("ConnectionFactory");
        TopicConnection connection = factory.createTopicConnection();
        connection.start();
        TopicSession session = connection.createTopicSession(false, TopicSession.AUTO_ACKNOWLEDGE);
        Topic _topic = session.createTopic(topic);
        MessageProducer producer = session.createProducer(_topic);
        TextMessage sms = session.createTextMessage();
        sms.setStringProperty("idclient", client);
        sms.setText(message);
        producer.send(sms);
     } catch (Throwable t) {
        result.setSuccessful(false);
        getLogger().fatalError(t.getMessage());
     } finally {
        result.sampleEnd();
     }
     return result;
  }

}

Per utilizzare successivamente il modulo bisogna esportare il jar nella cartella dei plugin di JMeter...e comparirà nell'alenco dei Sampler disponibili