Перейти к содержимому

Фотография

apache.http.client Не получается выполнить post запрос на удаленную ма


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 7

#1 PunkLiner

PunkLiner

    Новый участник

  • Members
  • Pip
  • 73 сообщений


Отправлено 05 октября 2014 - 11:32

Всем привет.

Необходимо в тесте вызвать метод, который отправит файл .json в контроллер запущенного приложения, для создания определенной фикстуры (например user). Проблема в том, что локально под Windows это отрабатывает, а на удаленной виртуалке (linux) - нет. 

Вот метод, который реализует отправку:

package utils;

import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.message.BasicNameValuePair;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class HttpTransport {

    public static void sendJsonToController(String json, String url) throws IOException {
        url = "http://localhost:9000/" + url; //тут в результате получается http://localhost:9000/UserAPI/createUser
        HttpClient client = HttpClientBuilder.create().build();
        HttpPost post = new HttpPost(url);
        List<NameValuePair> urlParameters = new ArrayList<NameValuePair>();
        urlParameters.add(new BasicNameValuePair("json", json));
        post.setEntity(new UrlEncodedFormEntity(urlParameters, "UTF-8"));
        client.execute(post);
    }
}

Валится, при попытке выполнить 

client.execute(post);
org.apache.http.conn.HttpHostConnectException: Connect to 127.0.0.1:9000 [/127.0.0.1] failed: Connection refused
	at java.net.PlainSocketImpl.socketConnect(Native Method)
	at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
	at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
	at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
	at java.net.Socket.connect(Socket.java:579)
	at org.apache.http.conn.socket.PlainConnectionSocketFactory.connectSocket(PlainConnectionSocketFactory.java:72)
	at org.apache.http.impl.conn.HttpClientConnectionOperator.connect(HttpClientConnectionOperator.java:117)
	at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:314)
	at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:363)
	at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:219)
	at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:195)
	at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:86)
	at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:108)
	at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:186)
	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82)
	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:106)
	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:57)
	at utils.HttpTransport.sendJsonToController(HttpTransport.java:23)

Но самое удивительное то, что следом запускаются тесты, которые не дергают это метод для создания фикстур, а идут  прямиком на localhost:9000, и отрабатывают через UI. И эти тесты проходят. Т.е приложение запущено, факт, и отрабатывает на localhost:9000. Замена localhost:9000 на 127.0.0.1 не помогла. Приложение использует протокол tcp4. Как это можно победить?


  • 0

#2 checo

checo

    Опытный участник

  • Members
  • PipPipPipPip
  • 400 сообщений
  • Город:Н.Новгород

Отправлено 06 октября 2014 - 09:55

1) возможно, там https://

2) попробуйте вместо старого HttpPost использовать новый класс RequestBuilder


  • 0

#3 PunkLiner

PunkLiner

    Новый участник

  • Members
  • Pip
  • 73 сообщений


Отправлено 06 октября 2014 - 13:41

Нет, я уже разобрался в чем была причина. Конечно же никакой там не localhost. Нужно прописывать IP виртуалки. Сейчас другая проблема. Все прекрасно работает в том случае, если из восьми виртуалок остается одна, и я в коде железно прописываю IP адрес этой самой виртуалки. Но по факту виртуалок у меня 8 штук, соответственно мне необходимо как то 8 IP адресов где то хранить, затем парсить, и передавать в метод. В общем пока что ничего толкового не получается придумать. Пробовал через <parameter> в testng.xml указывать IP-шники, но все равно тесты валятся, видимо хаб отправляет тесты не туда куда надо. Вопрос открыт


  • 0

#4 user12

user12

    Специалист

  • Members
  • PipPipPipPipPip
  • 894 сообщений
  • ФИО:Виктор
  • Город:Минск


Отправлено 06 октября 2014 - 15:12

http://selenium.polt...-selenium-grid/


  • 0

#5 PunkLiner

PunkLiner

    Новый участник

  • Members
  • Pip
  • 73 сообщений


Отправлено 06 октября 2014 - 15:50

Мне известны IP-шники нодов


  • 0

#6 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 872 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 07 октября 2014 - 07:55

Поясните, какое отношение эта тема имеет к Selenium, иначе я перенесу её в более общий раздел форума.


  • 0
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium

#7 PunkLiner

PunkLiner

    Новый участник

  • Members
  • Pip
  • 73 сообщений


Отправлено 07 октября 2014 - 08:01

Ну все завязано на Selenium Grid, параллельное выполнение тестов на нодах.


  • 0

#8 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 872 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 07 октября 2014 - 08:16

Я вижу, что есть проблемы с отправкой прямых HTTP-запросов в тестируемое приложение. Причём тут Selenium?


  • 0
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных