Несколько месяцев назад я покрыл Гатлинг В базовом обзоре. На этот раз мы немного погрузимся в создание Гатлинг (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»