-------------------------------------------------------------------------------
Test set: TestSuite
-------------------------------------------------------------------------------
Tests run: 128, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 1,265.416 sec <<< FAILURE!
testCreateAndRunAService(org.jclouds.openhosting.compute.OpenHostingEast1ComputeServiceLiveTest)  Time elapsed: 146.709 sec  <<< FAILURE!
org.jclouds.ssh.SshException: (toor:pw[cb0704ede95d3683c58d674e71230eaf]@206.191.128.242:22) (toor:pw[cb0704ede95d3683c58d674e71230eaf]@206.191.128.242:22) error acquiring SSHClient(timeout=60000) (out of retries - max 5): Socket closed
	at org.jclouds.sshj.SshjSshClient.propagate(SshjSshClient.java:415)
	at org.jclouds.sshj.SshjSshClient.acquire(SshjSshClient.java:236)
	at org.jclouds.sshj.SshjSshClient.connect(SshjSshClient.java:255)
	at org.jclouds.compute.callables.RunScriptOnNodeAsInitScriptUsingSsh.call(RunScriptOnNodeAsInitScriptUsingSsh.java:90)
	at org.jclouds.compute.internal.BaseComputeService.runScriptOnNode(BaseComputeService.java:557)
	at org.jclouds.compute.BaseComputeServiceLiveTest.testCreateAndRunAService(BaseComputeServiceLiveTest.java:667)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:80)
	at org.testng.internal.Invoker.invokeMethod(Invoker.java:691)
	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:883)
	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1208)
	at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:127)
	at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111)
	at org.testng.TestRunner.privateRun(TestRunner.java:758)
	at org.testng.TestRunner.run(TestRunner.java:613)
	at org.testng.SuiteRunner.runTest(SuiteRunner.java:334)
	at org.testng.SuiteRunner.access$000(SuiteRunner.java:37)
	at org.testng.SuiteRunner$SuiteWorker.run(SuiteRunner.java:368)
	at org.testng.internal.thread.ThreadUtil$CountDownLatchedRunnable.run(ThreadUtil.java:165)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:680)
Caused by: net.schmizz.sshj.transport.TransportException: Socket closed
	at net.schmizz.sshj.transport.TransportImpl.write(TransportImpl.java:427)
	at net.schmizz.sshj.transport.KeyExchanger.sendKexInit(KeyExchanger.java:197)
	at net.schmizz.sshj.transport.KeyExchanger.startKex(KeyExchanger.java:164)
	at net.schmizz.sshj.transport.TransportImpl.doKex(TransportImpl.java:235)
	at net.schmizz.sshj.SSHClient.doKex(SSHClient.java:685)
	at net.schmizz.sshj.SSHClient.onConnect(SSHClient.java:672)
	at net.schmizz.sshj.SocketClient.connect(SocketClient.java:71)
	at net.schmizz.sshj.SocketClient.connect(SocketClient.java:77)
	at org.jclouds.sshj.SshjSshClient$1.create(SshjSshClient.java:199)
	at org.jclouds.sshj.SshjSshClient$1.create(SshjSshClient.java:177)
	at org.jclouds.sshj.SshjSshClient.acquire(SshjSshClient.java:226)
	... 23 more
Caused by: java.net.SocketException: Socket closed
	at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:99)
	at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
	at net.schmizz.sshj.transport.TransportImpl.write(TransportImpl.java:424)
	... 33 more
Caused by: net.schmizz.sshj.transport.TransportException: Socket closed
	at net.schmizz.sshj.transport.TransportImpl.write(TransportImpl.java:427)
	at net.schmizz.sshj.transport.KeyExchanger.sendKexInit(KeyExchanger.java:197)
	at net.schmizz.sshj.transport.KeyExchanger.startKex(KeyExchanger.java:164)
	at net.schmizz.sshj.transport.TransportImpl.doKex(TransportImpl.java:235)
	at net.schmizz.sshj.SSHClient.doKex(SSHClient.java:685)
	at net.schmizz.sshj.SSHClient.onConnect(SSHClient.java:672)
	at net.schmizz.sshj.SocketClient.connect(SocketClient.java:71)
	at net.schmizz.sshj.SocketClient.connect(SocketClient.java:77)
	at org.jclouds.sshj.SshjSshClient$1.create(SshjSshClient.java:199)
	at org.jclouds.sshj.SshjSshClient$1.create(SshjSshClient.java:177)
	at org.jclouds.sshj.SshjSshClient.acquire(SshjSshClient.java:226)
	... 23 more
Caused by: java.net.SocketException: Socket closed
	at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:99)
	at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
	at net.schmizz.sshj.transport.TransportImpl.write(TransportImpl.java:424)
	... 33 more
