Запустите команды aws cli из jmeter - PullRequest
2 голосов
/ 22 апреля 2020

Я пытаюсь использовать OS Process Sampler для запуска команд aws cli в JMeter. Я буду запускать это на docker, где будут установлены JMeter и aws cli. Но прежде чем я смог это сделать, я попытался запустить это локально на своей ма c, но пока не смог запустить команду aws.

На моем локальном терминале, например, я могу запустить: , aws - версия б. bash j. sh (aws --version) Оба возврата aws -cli / 2.0.8 Python / 3.7.4 Darwin / 18.7.0 botocore / 2.0.0dev12

Это подтверждает aws cli доступно в path, чтобы быть доступным глобально.

Однако, когда я запускаю ту же команду из сэмплера OS Process, я пытался сделать следующее: a.

Working Directory: /Users/tester/Downloads/apache-jmeter-5.1.1/bin
Environment: {}
Executing: bash aws --version

enter image description here

ОТВЕТ: bash: aws --version: No such file or directory

b.

Working Directory: /Users/tester
Environment: {}
Executing: bash j.sh
where j.sh just contains the aws --version command

enter image description here

ОТВЕТ: j.sh: line 1: aws: command not found

Чего мне не хватает?

Ответы [ 3 ]

1 голос
/ 22 апреля 2020

Для запуска aws команды cli в JMeter:

  1. Добавить ОС Process Sampler в ваш план тестирования.
  2. В поле Command введите Ваша команда: aws.
  3. В поле Command Parameters добавьте все необходимые параметры, например, этот: --version.

enter image description here

Добавьте дерево результатов просмотра в свою группу потоков, запустите тест и посмотрите тело ответа:

aws-cli/2.0.0 Python/3.7.5 Windows/10 botocore/2.0.0dev4

0 голосов
/ 22 апреля 2020

Спасибо Дмитрию и Вадиму за ваш ответ на мой вопрос. К сожалению, оба примера относятся к Windows, где сэмплер OS Process будет работать иначе, чем Ma c. Я получил его для работы еще с несколькими твиками, используя OS Process Sampler на Ma c:

enter image description here

Ключевая разница для Ma c Jmeter нуждается в местоположении aws Cli установлен

/usr/local/bin/aws

Я смог найти это с помощью какой команды

which aws

Я также решил использовать сэмплер Beanshell вместе с регистрацией в сделать это, что позволит мне лучше писать сценарии и контролировать мои другие потребности. Вот мой справочный код, который работает:

try {

    Process p = Runtime.getRuntime().exec("/usr/local/bin/aws --version");
    p.waitFor();


    BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
    StringBuilder logCommandOutput = new StringBuilder();
    String line;
    while ((line = in.readLine()) != null) {
        logCommandOutput.append(line);
    } in .close();
    log.info("Output: " + logCommandOutput.toString());
} catch (Exception e) {
    log.error("exception" + e);

}

Надеюсь, это поможет тому, кто пытается сделать то же самое.

0 голосов
/ 22 апреля 2020

Полагаю, вам необходимо настроить Sampler Process OS следующим образом:

  • Команда: /bin/bash
  • Параметр 1: -c
  • Параметр 2: aws --version

    enter image description here

Демонстрация:

enter image description here

С bash Страница справочника :

-c Если присутствует опция - c, то команды читаются из первого неопционального аргумента command_string. Если после command_string есть аргументы, первый аргумент присваивается $ 0, а все остальные аргументы присваиваются позиционным параметрам. Присвоение $ 0 устанавливает имя оболочки, которое используется в предупреждениях и сообщениях об ошибках.

Дополнительная информация: Как запускать внешние команды и программы локально и удаленно из JMeter

...