[Java] Unable to run tests on Selenium Grid with Safari on emulator

Hi all.

I have mac mini node with Appium and IP 10.10.10.1 and selenium hub with Selenium Hub and IP 10.10.10.2

First of all - I was able to run tests with remote address 10.10.10.1:4723/wd/hub, but when I tried to run tests with remote address 10.10.10.2:4444/wd/hub my test was failed.

My driver described in this class

public class MobileDriver implements WebDriverProvider {

    public WebDriver createDriver(DesiredCapabilities desiredCapabilities) {
        DesiredCapabilities capabilities = new DesiredCapabilities();
        capabilities.setCapability("deviceName", "iPad Air");
        capabilities.setCapability("platformName", "iOS");
        capabilities.setCapability("platform", "MAC");
        capabilities.setCapability("platformVersion", "9.1");
        capabilities.setCapability(CapabilityType.BROWSER_NAME, "safari");
        capabilities.setCapability("orientation", "LANDSCAPE");
        IOSDriver driver = null;
        try {
           driver = new IOSDriver(new URL(CustomProperties.getRemote()), capabilities);
        } catch (MalformedURLException e) {
            e.printStackTrace();
        }
        WebDriverRunner.setWebDriver(driver);
        return driver;
    }
}

My json config is:

{
  "capabilities":
      [
        {
          "browserName": "safari",
          "deviceName": "iPad Air",
          "version":"9.1",
          "maxInstances": 1,
          "platform":"MAC",
          "platformName":"iOS"
        }
      ],
  "configuration":
  {
    "cleanUpCycle":2000,
    "timeout":30000,
    "proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
    "url":"http://10.10.10.1:4723/wd/hub",
    "host": "10.10.10.1",
    "port": 4723,
    "maxSession": 1,
    "register": true,
    "registerCycle": 5000,
    "hubPort": 4444,
    "hubHost": "10.10.10.2"
  }
}

Appium node was successfully registered on hub.

DefaultRemoteProxy (version : 1.4.14)
id : http://10.10.10.1:4723, OS : MAC
BrowsersConfiguration
WebDriver
v:9.1{browserName=safari, maxInstances=1, platformName=iOS, deviceName=iPad Air, version=9.1, platform=MAC}

But when I tried to run my tests with remote address 10.10.10.2:4444/wd/hub I could see that Appium starts simulator. Then Safari was opened and Welcome page was loaded. But after that my tests failed with this errors:

org.openqa.selenium.remote.UnreachableBrowserException: Could not start a new session. Possible causes are invalid address of the remote server or browser start-up failure.
Build info: version: '2.45.0', revision: '5017cb8e7ca8e37638dc3091b2440b90a1d8686f', time: '2015-02-27 09:10:26'
System info: host: 'My-MacBook-Pro.local', ip: 'my_ip', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.10.5', java.version: '1.8.0_20'
Driver info: driver.version: MobileDriver
	at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:593)
	at io.appium.java_client.DefaultGenericMobileDriver.execute(DefaultGenericMobileDriver.java:42)
	at io.appium.java_client.AppiumDriver.execute(AppiumDriver.java:1)
	at io.appium.java_client.ios.IOSDriver.execute(IOSDriver.java:1)
	at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:240)
	at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:126)
	at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:139)
	at io.appium.java_client.DefaultGenericMobileDriver.<init>(DefaultGenericMobileDriver.java:37)
	at io.appium.java_client.AppiumDriver.<init>(AppiumDriver.java:160)
	at io.appium.java_client.AppiumDriver.<init>(AppiumDriver.java:168)
	at io.appium.java_client.ios.IOSDriver.<init>(IOSDriver.java:56)
	at com.project.base.webdrivers.MobileDriver.createDriver(MobileDriver.java:37)

Caused by: org.openqa.selenium.WebDriverException: org.apache.http.conn.HttpHostConnectException: Connect to 172.17.42.1:4444 [/172.17.42.1] failed: Connection refused
Build info: version: '2.45.0', revision: '5017cb8e7ca8e37638dc3091b2440b90a1d8686f', time: '2015-02-27 09:10:26'
System info: host: 'My-MacBook-Pro.local', ip: 'my_ip', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.10.5', java.version: '1.8.0_20'
Driver info: driver.version: MobileDriver
	at io.appium.java_client.remote.AppiumCommandExecutor.execute(AppiumCommandExecutor.java:64)
	at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:572)
	... 45 more
Caused by: org.apache.http.conn.HttpHostConnectException: Connect to 172.17.42.1:4444 [/172.17.42.1] failed: Connection refused
	at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:151)
	at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:353)
	at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:380)
	at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236)
	at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:184)
	at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:88)
	at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)
	at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:184)
	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:71)
	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:55)
	at org.openqa.selenium.remote.internal.ApacheHttpClient.fallBackExecute(ApacheHttpClient.java:126)
	at org.openqa.selenium.remote.internal.ApacheHttpClient.execute(ApacheHttpClient.java:72)
	at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:133)
	at io.appium.java_client.remote.AppiumCommandExecutor.execute(AppiumCommandExecutor.java:52)
	... 46 more
Caused by: java.net.ConnectException: Connection refused
	at java.net.PlainSocketImpl.socketConnect(Native Method)
	at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:345)
	at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
	at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
	at java.net.Socket.connect(Socket.java:589)
	at org.apache.http.conn.socket.PlainConnectionSocketFactory.connectSocket(PlainConnectionSocketFactory.java:74)
	at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:134)
	... 59 more

Could someone suggest me what am I doing wrong?

Also I don’t know where he gets 172.17.42.1:4444 (I am using 10.10.10.2:4444)