-------------------------------------------------------------------------------
Test set: TestSuite
-------------------------------------------------------------------------------
Tests run: 138, Failures: 2, Errors: 0, Skipped: 8, Time elapsed: 2,754.251 sec <<< FAILURE!
testCreateAnotherNodeWithANewContextToEnsureSharedMemIsntRequired(org.jclouds.trmk.ecloud.compute.TerremarkECloudComputeServiceLiveTest)  Time elapsed: 169.69 sec  <<< FAILURE!
org.jclouds.compute.RunNodesException: error running 1 node tag(te-) location(https://services.enterprisecloud.terremark.com/api/v0.8b-ext2.8/vdc/1155) image(https://services.enterprisecloud.terremark.com/api/v0.8b-ext2.8/vappTemplate/351) size(cpu=1,ram=512,disk=10) options(TerremarkVCloudTemplateOptions [keyPair=d9:85:f8:d1:e3:a8:4b:e5:63:c7:3a:11:16:2b:77:0d, noKeyPair=false, inboundPorts=[22], privateKey=false, publicKey=false, runScript=true, port:seconds=-1:-1, userMetadata: {}])
Execution failures:
0 error[s]
Node failures:
1) NullPointerException on node https://services.enterprisecloud.terremark.com/api/v0.8b-ext2.8/vapp/193719:
java.lang.NullPointerException: no credentials found for node https://services.enterprisecloud.terremark.com/api/v0.8b-ext2.8/vapp/193719
	at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:231)
	at org.jclouds.compute.functions.CreateSshClientOncePortIsListeningOnNode.apply(CreateSshClientOncePortIsListeningOnNode.java:54)
	at org.jclouds.compute.functions.CreateSshClientOncePortIsListeningOnNode.apply(CreateSshClientOncePortIsListeningOnNode.java:40)
	at org.jclouds.compute.callables.SudoAwareInitManager.init(SudoAwareInitManager.java:66)
	at org.jclouds.compute.callables.RunScriptOnNodeAsInitScriptUsingSsh.init(RunScriptOnNodeAsInitScriptUsingSsh.java:92)
	at org.jclouds.compute.callables.RunScriptOnNodeAsInitScriptUsingSshAndBlockUntilComplete.init(RunScriptOnNodeAsInitScriptUsingSshAndBlockUntilComplete.java:76)
	at org.jclouds.compute.callables.RunScriptOnNodeAsInitScriptUsingSshAndBlockUntilComplete.init(RunScriptOnNodeAsInitScriptUsingSshAndBlockUntilComplete.java:43)
	at org.jclouds.compute.strategy.InitializeRunScriptOnNodeOrPlaceInBadMap.call(InitializeRunScriptOnNodeOrPlaceInBadMap.java:67)
	at org.jclouds.compute.strategy.InitializeRunScriptOnNodeOrPlaceInBadMap.call(InitializeRunScriptOnNodeOrPlaceInBadMap.java:40)
	at org.jclouds.compute.strategy.CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.call(CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.java:148)
	at org.jclouds.compute.strategy.CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.apply(CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.java:170)
	at org.jclouds.compute.strategy.CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.apply(CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.java:57)
	at com.google.common.util.concurrent.Futures$4.apply(Futures.java:477)
	at com.google.common.util.concurrent.Futures$4.apply(Futures.java:475)
	at com.google.common.util.concurrent.Futures$ChainingListenableFuture.run(Futures.java:826)
	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)
1 error[s]
	at org.jclouds.compute.internal.BaseComputeService.createNodesInGroup(BaseComputeService.java:238)
	at org.jclouds.compute.BaseComputeServiceLiveTest.testCreateAnotherNodeWithANewContextToEnsureSharedMemIsntRequired(BaseComputeServiceLiveTest.java:433)
	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:76)
	at org.testng.internal.Invoker.invokeMethod(Invoker.java:673)
	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:846)
	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1170)
	at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125)
	at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109)
	at org.testng.TestRunner.runWorkers(TestRunner.java:1147)
	at org.testng.TestRunner.privateRun(TestRunner.java:749)
	at org.testng.TestRunner.run(TestRunner.java:600)
	at org.testng.SuiteRunner.runTest(SuiteRunner.java:317)
	at org.testng.SuiteRunner.access$000(SuiteRunner.java:34)
	at org.testng.SuiteRunner$SuiteWorker.run(SuiteRunner.java:351)
	at org.testng.internal.thread.ThreadUtil$CountDownLatchedRunnable.run(ThreadUtil.java:147)
	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)

testPublicIp(org.jclouds.trmk.ecloud.TerremarkECloudClientLiveTest)  Time elapsed: 5.52 sec  <<< FAILURE!
org.jclouds.rest.AuthorizationException: (ecloud:password@208.39.104.132:22) (ecloud:password@208.39.104.132:22) error acquiring SSHClient(timeout=60000): Exhausted available authentication methods
	at org.jclouds.sshj.SshjSshClient.propagate(SshjSshClient.java:413)
	at org.jclouds.sshj.SshjSshClient.acquire(SshjSshClient.java:244)
	at org.jclouds.sshj.SshjSshClient.connect(SshjSshClient.java:255)
	at org.jclouds.trmk.vcloud_0_8.TerremarkClientLiveTest.doCheckPass(TerremarkClientLiveTest.java:422)
	at org.jclouds.trmk.vcloud_0_8.TerremarkClientLiveTest.loopAndCheckPass(TerremarkClientLiveTest.java:309)
	at org.jclouds.trmk.vcloud_0_8.TerremarkClientLiveTest.testPublicIp(TerremarkClientLiveTest.java:303)
	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:76)
	at org.testng.internal.Invoker.invokeMethod(Invoker.java:673)
	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:846)
	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1170)
	at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125)
	at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109)
	at org.testng.TestRunner.runWorkers(TestRunner.java:1147)
	at org.testng.TestRunner.privateRun(TestRunner.java:749)
	at org.testng.TestRunner.run(TestRunner.java:600)
	at org.testng.SuiteRunner.runTest(SuiteRunner.java:317)
	at org.testng.SuiteRunner.access$000(SuiteRunner.java:34)
	at org.testng.SuiteRunner$SuiteWorker.run(SuiteRunner.java:351)
	at org.testng.internal.thread.ThreadUtil$CountDownLatchedRunnable.run(ThreadUtil.java:147)
	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.userauth.UserAuthException: Exhausted available authentication methods
	at net.schmizz.sshj.userauth.UserAuthImpl.authenticate(UserAuthImpl.java:114)
	at net.schmizz.sshj.SSHClient.auth(SSHClient.java:204)
	at net.schmizz.sshj.SSHClient.auth(SSHClient.java:189)
	at net.schmizz.sshj.SSHClient.authPassword(SSHClient.java:265)
	at net.schmizz.sshj.SSHClient.authPassword(SSHClient.java:235)
	at net.schmizz.sshj.SSHClient.authPassword(SSHClient.java:219)
	at org.jclouds.sshj.SshjSshClient$1.create(SshjSshClient.java:195)
	at org.jclouds.sshj.SshjSshClient$1.create(SshjSshClient.java:171)
	at org.jclouds.sshj.SshjSshClient.acquire(SshjSshClient.java:220)
	... 24 more
Caused by: net.schmizz.sshj.userauth.UserAuthException: keyboard-interactive auth failed
	at net.schmizz.sshj.userauth.UserAuthImpl.handle(UserAuthImpl.java:157)
	at net.schmizz.sshj.transport.TransportImpl.handle(TransportImpl.java:474)
	at net.schmizz.sshj.transport.Decoder.decode(Decoder.java:127)
	at net.schmizz.sshj.transport.Decoder.received(Decoder.java:195)
	at net.schmizz.sshj.transport.Reader.run(Reader.java:72)
Caused by: net.schmizz.sshj.userauth.UserAuthException: Exhausted available authentication methods
	at net.schmizz.sshj.userauth.UserAuthImpl.authenticate(UserAuthImpl.java:114)
	at net.schmizz.sshj.SSHClient.auth(SSHClient.java:204)
	at net.schmizz.sshj.SSHClient.auth(SSHClient.java:189)
	at net.schmizz.sshj.SSHClient.authPassword(SSHClient.java:265)
	at net.schmizz.sshj.SSHClient.authPassword(SSHClient.java:235)
	at net.schmizz.sshj.SSHClient.authPassword(SSHClient.java:219)
	at org.jclouds.sshj.SshjSshClient$1.create(SshjSshClient.java:195)
	at org.jclouds.sshj.SshjSshClient$1.create(SshjSshClient.java:171)
	at org.jclouds.sshj.SshjSshClient.acquire(SshjSshClient.java:220)
	... 24 more
Caused by: net.schmizz.sshj.userauth.UserAuthException: keyboard-interactive auth failed
	at net.schmizz.sshj.userauth.UserAuthImpl.handle(UserAuthImpl.java:157)
	at net.schmizz.sshj.transport.TransportImpl.handle(TransportImpl.java:474)
	at net.schmizz.sshj.transport.Decoder.decode(Decoder.java:127)
	at net.schmizz.sshj.transport.Decoder.received(Decoder.java:195)
	at net.schmizz.sshj.transport.Reader.run(Reader.java:72)

