Каратэ-Гатлинг: установить локальные адреса - PullRequest
2 голосов
/ 01 апреля 2019

У меня есть простой файл функций каратэ для тестирования API, и я хочу использовать этот файл функций для нагрузочного тестирования. Таким образом, я использую Гатлинга для выполнения файла особенности каратэ: https://github.com/intuit/karate/tree/master/karate-gatling

Однако, когда я запускаю несколько пользователей, я хочу отправлять запросы с другим IP-псевдонимом, который я настроил.

Используя Gatling, я мог бы использовать localAddress для привязки к сокету

val protocol = http.localAddresses(ip)

Но в карате-гатлинге вместо этого используется karateProtocol

val protocol = karateProtocol()

И в readme говорится, что «Карате отвечает за выполнение HTTP-запросов, в то время как Гатлинг только измеряет время и управляет потоками».

Это означает, что HTTP-запросы и привязки localAddress нельзя изменить с помощью Gatling, но мне интересно, есть ли обходной путь через Karate, чтобы разные псевдонимы ip могли использоваться для разных запросов.

1 Ответ

0 голосов
/ 01 апреля 2019

Похоже, что запрос функции необходим, чтобы указать HTTP-клиенту (например, Apache) использовать локальный адрес.

Было бы замечательно, если вы можете помочь внести свой вклад и протестировать, один из способов установитьлокальный адрес будет в коде здесь :

    RequestConfig.Builder configBuilder = RequestConfig.custom()
            .setCookieSpec(LenientCookieSpec.KARATE)
            .setConnectTimeout(config.getConnectTimeout())
            .setSocketTimeout(config.getReadTimeout());
    String localIp = "1.2.3.4";
    try {            
        InetAddress localAddress = InetAddress.getByName(localIp);
        configBuilder.setLocalAddress(localAddress);
    } catch (Exception e) {
        context.logger.error("failed to resolve local address: {}", localIp);
    }
...