Jmeter возвращает «Оператор не возвратил набор результатов» для SQL-запроса

Ваша проблема вызвана тем, что sudo выводит на поток ошибок. Это происходит:

curlProc1 = Runtime.getRuntime().exec(command1);
blockquote>
  1. Ваша программа запускается sudo
  2. Поскольку sudo по умолчанию работает на базе терминалов, он выдает либо «sudo : no tty присутствует и не указывается запрошенная программа "или" Пароль: "по stderr
while ((outputString1 = curlIn1.readLine()) != null) {
blockquote>
  1. Ваша программа ждет ввода на stdout
  2. Поскольку вы никогда не читаете stderr, sudo никогда не закончится, и, следовательно, sudo никогда не закроет stdout, поэтому ваша программа останется застрявшей

. Один быстрый способ исправить это с помощью конструктора процессов , у него есть полезная опция для объединения как stderr, так и stdout в одном потоке, что означает, что вам нужен только один поток для чтения потока , и сохраняя ваш код простым.

ProcessBuilder pb =
    new ProcessBuilder("sudo", "openvpn", "--config", "/etc/openvpn/configFile");
pb.redirectErrorStream(true);
Process curlProc1 = pb.start();
....

Поскольку есть вероятность, что sudo запросит пароль (, вы можете настроить его, чтобы попросить его вместо того, чтобы давать ошибку ), вы можете указать пароль, записав входной поток процесса после , получив приглашение пароля:

p.getOutputStream().write("correct battery horse staple\n".getBytes(STandardCharsets.UTF_8));

1
задан Rakesh133 20 January 2019 в 00:05
поделиться

1 ответ

Согласно документации JMeter:

Запрос JDBC

Этот образец позволяет отправлять запрос JDBC ( запрос SQL ) в базу данных.

В вашем случае есть несколько запросов различной природы, которые не могут быть выполнены за один раз. Таким образом, параметры находятся в:

  1. Разделить оператор на отдельные запросы, чтобы сэмплер JDBC Request выполнял только один запрос
  2. Преобразуйте ваш запрос в хранимую процедуру и выполните его, используя Callable Statement
  3. Используйте операторы BEGIN и END для указания логических блоков
  4. Перейдите к JSR223 Sampler и напишите свой запросы на языке Groovy (однако вам все равно придется разделить его, как предложено в пункте 1, и использовать функцию execute () для частей, которые не дают результатов, и executeQuery) для частей, которые делают.
0
ответ дан Dmitri T 20 January 2019 в 00:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: