JPOS-тестирование (Функциональное и Perf) с использованием Apache Jmeter - PullRequest
0 голосов
/ 28 ноября 2018

Я хочу выполнить функциональное тестирование ISO-сообщения и ответа (TPS) на основе JPOS с помощью Jmeter.Можно ли мне помочь с этим? Нужно ли устанавливать какой-либо плагин в Jmeter.Как я пытался установить Jmeter в своей системе.Но не вижу ни одного плагина Jpos в слушателях, с которого можно начать. Dev использует соединение Socket в Jpos.

Ответы [ 2 ]

0 голосов
/ 11 декабря 2018

Мы можем отправить XML или rawMessage на jpos-сервер из Jmeter TCPSampler

  • Вы также можете добавить слушателей TPS

введите описание изображения здесь

И JPosTCPClient может быть реализован

public class JPosTCPClient extends TCPClientImpl {
private static final Logger log = LoggingManager.getLoggerForClass();

private String containsString = "</isomsg>";
private boolean filterEnabled = true;

public JPosTCPClient() {
    filterEnabled = Boolean.parseBoolean(JMeterUtils.getPropDefault("jpos.tcp.use", "true"));
    containsString = JMeterUtils.getPropDefault("jpos.tcp.contains", "</isomsg>");
}


/**
 * Reads data until the defined EOL byte is reached.
 * If there is no EOL byte defined, then reads until
 * the end of the stream is reached.
 */
@Override
public String read(InputStream is) {
    byte[] buffer = new byte[4096];
    ByteArrayOutputStream w = new ByteArrayOutputStream();
    int x = 0;
    boolean contains = false;
    try {
        while ((x = is.read(buffer)) > -1) {
            w.write(buffer, 0, x);
            if(filterEnabled){
                String response = new String(buffer);
                if(response.contains(containsString)){
                    contains = true;
                    break;
                } else {
                    System.out.println("Contents: " + response);
                }
            }
        }
        if(filterEnabled && !contains){
            System.out.println("Skipped containsString checking, x length:" + x);
        }

    } catch (SocketTimeoutException e) {
        // drop out to handle buffer
        System.out.println(e.getMessage());
    } catch (InterruptedIOException e) {
        // drop out to handle buffer
        System.out.println(e.getMessage());
    } catch (IOException e) {
        System.out.println(e.getMessage());
        log.warn("Read error:" + e);
        return "";
    }

    // do we need to close byte array (or flush it?)
    log.debug("Read: " + w.size() + "\n" + w.toString());
    return w.toString();
}

}

0 голосов
/ 28 ноября 2018

Я не думаю, что вы сможете найти какой-либо плагин, однако вы должны иметь возможность использовать jPOS клиентскую библиотеку из JSR223 Sampler

  1. Загрузите jPOS и создайте его, используя Gradle
  2. Скопируйте jpos/build/libs/jpos-x.x.x.jar в JMeter Classpath (вместе с зависимостями, если вы неих пока нет)
  3. Перезапустите JMeter, чтобы выбрать библиотеку
  4. Добавьте JSR223 Sampler в ваш план тестирования и поместите код, реализующий ваш сценарий тестирования, в область «Сценарий».Примером может быть что-то вроде:

    import org.jpos.iso.ISOMsg
    import org.jpos.iso.channel.ASCIIChannel
    import org.jpos.iso.packager.ISO87APackager
    
    def host = 'your_host'
    def port = 1234
    
    def channel = new ASCIIChannel(host, port, new ISO87APackager())
    channel.connect()
    def message = new ISOMsg()
    message.setMTI("0800")
    message.set(3, "000000")
    message.set(41, "00000001")
    message.set(70, "301")
    channel.send(message)
    ISOMsg response = channel.receive()
    channel.disconnect()
    

Дополнительная информация:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...