Рубрики
Uncategorized

Передача данных в Gatling из командной строки

Передача данных в моделирование нагрузки Gatling очень проще, едва ли неудобство. Tagged с DevOps, тестирование, Gatling, Howto.

Несколько месяцев назад я покрыл Гатлинг В базовом обзоре. На этот раз мы немного погрузимся в создание Гатлинг (3.0) Тестовое моделирование.

Базовая настройка

С тех пор Написание предыдущей статьи о Gatling Еще в июле была выпущена версия 3,0-RC4. Насколько я могу судить, процесс записи трафика вообще не изменился. Большинство изменений, по -видимому, являются внутренними для движения запроса/ответа и некоторой функции переименования. Проверьте официальный журнал об изменении здесь.

Чтобы быстро запустить и запустить, я создал файл моделирования нагрузки, который используется в остальной части статьи. Содержимое файла ниже.

import scala.concurrent.duration._

import io.gatling.core.Predef._
import io.gatling.http.Predef._
import io.gatling.jdbc.Predef._

class PassingDataIntoGatling extends Simulation {

    val target = System.getProperty("target")

    val httpProtocol = http
        .baseUrl("http://" + target)
        .inferHtmlResources()
        .acceptHeader("text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8")
        .acceptEncodingHeader("gzip, deflate")
        .acceptLanguageHeader("en-US,en;q=0.5")
        .doNotTrackHeader("1")
        .userAgentHeader("Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:63.0) Gecko/20100101 Firefox/63.0")

    val headers_0 = Map(
        "Pragma" -> "no-cache",
        "Upgrade-Insecure-Requests" -> "1")

    val scn = scenario("PassingDataIntoGatling")
        .exec(
            http("request_0").get("/").headers(headers_0)
        )

    setUp(
        scn.inject(
            constantUsersPerSec(10) during (5 seconds)
        ).protocols(httpProtocol)
    )
}

Сохраните этот файл как /path/to/gatling/user-files/simulations/passingdataintogatling.scala . Таким образом, Gatling найдет класс моделирования автоматически; Упростить остальную часть процесса.

Создать глобальную переменную

Давайте начнем с самого высокого уровня абстракции. Чтобы перенести данные в Gatling, нам сначала нужно предоставить их Java. Это достигается с помощью глобальной переменной Java_opts (Galting — это программа Java, которая использует сценарии Scala для выполнения HTTP -запросов с выходом HTML/JS. #abstraction) Синтаксис для установки java_opts выглядит следующим образом:

JAVA_OPTS="-DVARIABLE_NAME=VARIABLE_VALUE"

Обратите внимание на -d внутри кавычек. Это не было случайно. Эта логика создает глобальную пару вариантов Java/значение для ключей/значения. Это становится доступным Gatling во время исполнения.

Затем, в классе моделирования Gatling, нам нужно получить доступ к глобальной переменной.

Добавление значения в класс

Чтобы получить доступ к значению переменной java_opts Команда:

val variable_name = System.getProperty("VARIABLE_NAME")

Это было просто! Теперь мы можем получить доступ к значению в любом месте в функции класса…

...
val httpProtocol = http
.baseUrl("http://" + target)
...

Тестируя это

Со всем на месте. Время проверить выполнение моделирования нагрузки.

JAVA_OPTS="-Dtarget=google.com" ./gatling.sh -s PassingDataIntoGatling -nr
...
================================================================================
2018-11-08 18:31:03 6s elapsed
---- Requests ------------------------------------------------------------------
Global (OK=200 KO=0 )
request_0 (OK=50 KO=0 )
request_0 Redirect 1 (OK=50 KO=0 )
request_0 Redirect 2 (OK=50 KO=0 )
googlelogo_color_272x92dp.png (OK=50 KO=0 )
---- PassingDataIntoGatling ----------------------------------------------------
[##########################################################################]100%
waiting: 0 / active: 0 / done: 50

Это, казалось, сработало хорошо. Давайте изменим целевое значение и убедитесь.

JAVA_OPTS="-Dtarget=yahoo.com" ./gatling.sh -s PassingDataIntoGatling -nr
...
================================================================================
2018-11-08 18:29:50 10s elapsed
---- Requests ------------------------------------------------------------------
Global (OK=3093 KO=0 )
request_0 (OK=50 KO=0 )
request_0 Redirect 1 (OK=50 KO=0 )
request_0 Redirect 2 (OK=50 KO=0 )
...
---- PassingDataIntoGatling ----------------------------------------------------
[##########################################################################]100%
waiting: 0 / active: 0 / done: 50

Да, работая, как и ожидалось! Ницца. Теперь мы можем указать значения переменных при выполнении моделирования гатлинга.

Это обертка

Когда колено глубоко в развитии каждую секунду, это может держать вас в «потоке», стоит усилий. С этими знаниями теперь мы можем быстро выполнить нагрузочные тесты против целей, не теряя контекста.

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

Оригинал: «https://dev.to/david_j_eddy/passing-data-into-gatling-from-the-command-line-56dh»