-------------------------------------------------------------------------------
Test set: TestSuite
-------------------------------------------------------------------------------
Tests run: 141, Failures: 3, Errors: 0, Skipped: 21, Time elapsed: 1,984.025 sec <<< FAILURE!
setupClient(org.jclouds.stratogen.vcloud.mycloud.DeprecatedStratoGenVCloudMyCloudClientLiveTest)  Time elapsed: 10.463 sec  <<< FAILURE!
org.jclouds.rest.AuthorizationException: request: POST https://vcd.stratogen.net/api/v1.0/login HTTP/1.1 failed with response: HTTP/1.1 401 Unauthorized
	at org.jclouds.vcloud.handlers.ParseVCloudErrorFromHttpResponse.handleError(ParseVCloudErrorFromHttpResponse.java:105)
	at org.jclouds.http.handlers.DelegatingErrorHandler.handleError(DelegatingErrorHandler.java:69)
	at org.jclouds.http.internal.BaseHttpCommandExecutorService$HttpResponseCallable.shouldContinue(BaseHttpCommandExecutorService.java:200)
	at org.jclouds.http.internal.BaseHttpCommandExecutorService$HttpResponseCallable.call(BaseHttpCommandExecutorService.java:165)
	at org.jclouds.http.internal.BaseHttpCommandExecutorService$HttpResponseCallable.call(BaseHttpCommandExecutorService.java:134)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
	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)
	at org.jclouds.concurrent.config.ExecutorServiceModule$DescribingExecutorService.submit(ExecutorServiceModule.java:182)
	at org.jclouds.http.internal.BaseHttpCommandExecutorService.submit(BaseHttpCommandExecutorService.java:131)
	at org.jclouds.http.TransformingHttpCommandExecutorServiceImpl.submit(TransformingHttpCommandExecutorServiceImpl.java:54)
	at org.jclouds.http.TransformingHttpCommandImpl.execute(TransformingHttpCommandImpl.java:72)
	at org.jclouds.rest.internal.AsyncRestClientProxy.createListenableFuture(AsyncRestClientProxy.java:156)
	at org.jclouds.rest.internal.AsyncRestClientProxy.invoke(AsyncRestClientProxy.java:126)
	at $Proxy83.login(Unknown Source)
	at org.jclouds.vcloud.config.VCloudRestClientModule$1.get(VCloudRestClientModule.java:153)
	at org.jclouds.vcloud.config.VCloudRestClientModule$1.get(VCloudRestClientModule.java:148)
	at org.jclouds.rest.suppliers.SetAndThrowAuthorizationExceptionSupplier.get(SetAndThrowAuthorizationExceptionSupplier.java:49)
	at org.jclouds.concurrent.RetryOnTimeOutExceptionSupplier.get(RetryOnTimeOutExceptionSupplier.java:47)
	at com.google.common.base.Suppliers$ExpiringMemoizingSupplier.get(Suppliers.java:173)
	at org.jclouds.rest.suppliers.MemoizedRetryOnTimeOutButNotOnAuthorizationExceptionSupplier.get(MemoizedRetryOnTimeOutButNotOnAuthorizationExceptionSupplier.java:59)
	at org.jclouds.vcloud.config.VCloudRestClientModule.provideOrgListURI(VCloudRestClientModule.java:230)
	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 com.google.inject.internal.ProviderMethod.get(ProviderMethod.java:104)
	at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:40)
	at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46)
	at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1031)
	at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
	at com.google.inject.Scopes$1$1.get(Scopes.java:65)
	at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:40)
	at com.google.inject.internal.InjectorImpl$4$1.call(InjectorImpl.java:978)
	at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1024)
	at com.google.inject.internal.InjectorImpl$4.get(InjectorImpl.java:974)
	at com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java:1009)
	at org.jclouds.rest.internal.RestAnnotationProcessor.getEndpointFor(RestAnnotationProcessor.java:756)
	at org.jclouds.rest.internal.RestAnnotationProcessor.createRequest(RestAnnotationProcessor.java:410)
	at org.jclouds.rest.internal.AsyncRestClientProxy.createListenableFuture(AsyncRestClientProxy.java:145)
	at org.jclouds.rest.internal.AsyncRestClientProxy.invoke(AsyncRestClientProxy.java:126)
	at $Proxy81.listOrgs(Unknown Source)
	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.jclouds.concurrent.internal.SyncProxy.invoke(SyncProxy.java:140)
	at $Proxy82.listOrgs(Unknown Source)
	at org.jclouds.vcloud.DeprecatedVCloudClientLiveTest.listOrgs(DeprecatedVCloudClientLiveTest.java:335)
	at org.jclouds.vcloud.DeprecatedVCloudClientLiveTest.setupClient(DeprecatedVCloudClientLiveTest.java:321)
	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.invokeConfigurationMethod(Invoker.java:525)
	at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:202)
	at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:130)
	at org.testng.internal.Invoker.invokeBeforeGroupsConfigurations(Invoker.java:883)
	at org.testng.internal.Invoker.invokeMethod(Invoker.java:605)
	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)
	at org.jclouds.concurrent.config.ExecutorServiceModule$DescribingExecutorService.submit(ExecutorServiceModule.java:182)
	at org.jclouds.http.internal.BaseHttpCommandExecutorService.submit(BaseHttpCommandExecutorService.java:131)
	at org.jclouds.http.TransformingHttpCommandExecutorServiceImpl.submit(TransformingHttpCommandExecutorServiceImpl.java:54)
	at org.jclouds.http.TransformingHttpCommandImpl.execute(TransformingHttpCommandImpl.java:72)
	at org.jclouds.rest.internal.AsyncRestClientProxy.createListenableFuture(AsyncRestClientProxy.java:156)
	at org.jclouds.rest.internal.AsyncRestClientProxy.invoke(AsyncRestClientProxy.java:126)
	at $Proxy83.login(Unknown Source)
	at org.jclouds.vcloud.config.VCloudRestClientModule$1.get(VCloudRestClientModule.java:153)
	at org.jclouds.vcloud.config.VCloudRestClientModule$1.get(VCloudRestClientModule.java:148)
	at org.jclouds.rest.suppliers.SetAndThrowAuthorizationExceptionSupplier.get(SetAndThrowAuthorizationExceptionSupplier.java:49)
	at org.jclouds.concurrent.RetryOnTimeOutExceptionSupplier.get(RetryOnTimeOutExceptionSupplier.java:47)
	at com.google.common.base.Suppliers$ExpiringMemoizingSupplier.get(Suppliers.java:173)
	at org.jclouds.rest.suppliers.MemoizedRetryOnTimeOutButNotOnAuthorizationExceptionSupplier.get(MemoizedRetryOnTimeOutButNotOnAuthorizationExceptionSupplier.java:59)
	at org.jclouds.vcloud.config.VCloudRestClientModule.provideOrgListURI(VCloudRestClientModule.java:230)
	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 com.google.inject.internal.ProviderMethod.get(ProviderMethod.java:104)
	at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:40)
	at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46)
	at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1031)
	at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
	at com.google.inject.Scopes$1$1.get(Scopes.java:65)
	at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:40)
	at com.google.inject.internal.InjectorImpl$4$1.call(InjectorImpl.java:978)
	at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1024)
	at com.google.inject.internal.InjectorImpl$4.get(InjectorImpl.java:974)
	at com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java:1009)
	at org.jclouds.rest.internal.RestAnnotationProcessor.getEndpointFor(RestAnnotationProcessor.java:756)
	at org.jclouds.rest.internal.RestAnnotationProcessor.createRequest(RestAnnotationProcessor.java:410)
	at org.jclouds.rest.internal.AsyncRestClientProxy.createListenableFuture(AsyncRestClientProxy.java:145)
	at org.jclouds.rest.internal.AsyncRestClientProxy.invoke(AsyncRestClientProxy.java:126)
	at $Proxy81.listOrgs(Unknown Source)
	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.jclouds.concurrent.internal.SyncProxy.invoke(SyncProxy.java:140)
	at $Proxy82.listOrgs(Unknown Source)
	at org.jclouds.vcloud.DeprecatedVCloudClientLiveTest.listOrgs(DeprecatedVCloudClientLiveTest.java:335)
	at org.jclouds.vcloud.DeprecatedVCloudClientLiveTest.setupClient(DeprecatedVCloudClientLiveTest.java:321)
	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.invokeConfigurationMethod(Invoker.java:525)
	at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:202)
	at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:130)
	at org.testng.internal.Invoker.invokeBeforeGroupsConfigurations(Invoker.java:883)
	at org.testng.internal.Invoker.invokeMethod(Invoker.java:605)
	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: org.jclouds.http.HttpResponseException: request: POST https://vcd.stratogen.net/api/v1.0/login HTTP/1.1 failed with response: HTTP/1.1 401 Unauthorized
	at org.jclouds.vcloud.handlers.ParseVCloudErrorFromHttpResponse.handleError(ParseVCloudErrorFromHttpResponse.java:66)
	at org.jclouds.http.handlers.DelegatingErrorHandler.handleError(DelegatingErrorHandler.java:69)
	at org.jclouds.http.internal.BaseHttpCommandExecutorService$HttpResponseCallable.shouldContinue(BaseHttpCommandExecutorService.java:200)
	at org.jclouds.http.internal.BaseHttpCommandExecutorService$HttpResponseCallable.call(BaseHttpCommandExecutorService.java:165)
	at org.jclouds.http.internal.BaseHttpCommandExecutorService$HttpResponseCallable.call(BaseHttpCommandExecutorService.java:134)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
	... 3 more
Caused by: org.jclouds.http.HttpResponseException: request: POST https://vcd.stratogen.net/api/v1.0/login HTTP/1.1 failed with response: HTTP/1.1 401 Unauthorized
	at org.jclouds.vcloud.handlers.ParseVCloudErrorFromHttpResponse.handleError(ParseVCloudErrorFromHttpResponse.java:66)
	at org.jclouds.http.handlers.DelegatingErrorHandler.handleError(DelegatingErrorHandler.java:69)
	at org.jclouds.http.internal.BaseHttpCommandExecutorService$HttpResponseCallable.shouldContinue(BaseHttpCommandExecutorService.java:200)
	at org.jclouds.http.internal.BaseHttpCommandExecutorService$HttpResponseCallable.call(BaseHttpCommandExecutorService.java:165)
	at org.jclouds.http.internal.BaseHttpCommandExecutorService$HttpResponseCallable.call(BaseHttpCommandExecutorService.java:134)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
	... 3 more

testExtendedOptionsWithCustomizationScript(org.jclouds.stratogen.vcloud.mycloud.features.StratoGenVCloudMyCloudVmClientLiveTest)  Time elapsed: 20.715 sec  <<< FAILURE!
org.jclouds.ssh.SshException: (root:password@212.54.128.21:22) (root:password@212.54.128.21:22) error acquiring SSHClient(timeout=60000): Broken transport; encountered EOF
	at org.jclouds.sshj.SshjSshClient.propagate(SshjSshClient.java:414)
	at org.jclouds.sshj.SshjSshClient.acquire(SshjSshClient.java:231)
	at org.jclouds.sshj.SshjSshClient.connect(SshjSshClient.java:255)
	at org.jclouds.compute.callables.RunScriptOnNodeUsingSsh.call(RunScriptOnNodeUsingSsh.java:73)
	at org.jclouds.compute.internal.BaseComputeService.runScriptOnNode(BaseComputeService.java:612)
	at org.jclouds.compute.internal.BaseComputeService.runScriptOnNode(BaseComputeService.java:588)
	at org.jclouds.vcloud.features.VmClientLiveTest.testExtendedOptionsWithCustomizationScript(VmClientLiveTest.java:120)
	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.transport.TransportException: Broken transport; encountered EOF
	at net.schmizz.sshj.transport.Reader.run(Reader.java:70)
Caused by: net.schmizz.sshj.transport.TransportException: Broken transport; encountered EOF
	at net.schmizz.sshj.transport.Reader.run(Reader.java:70)

testGetOvfEnvelopeForVAppTemplate(org.jclouds.stratogen.vcloud.mycloud.features.StratoGenVCloudMyCloudVAppTemplateClientLiveTest)  Time elapsed: 36.959 sec  <<< FAILURE!
java.lang.RuntimeException: request: GET https://vcd.stratogen.net/api/v1.0/vAppTemplate/vappTemplate-1299426522/ovf HTTP/1.1; cause: java.lang.NullPointerException: virtualSystem
	at org.jclouds.http.functions.ParseSax.addDetailsAndPropagate(ParseSax.java:152)
	at org.jclouds.http.functions.ParseSax.parse(ParseSax.java:116)
	at org.jclouds.http.functions.ParseSax.apply(ParseSax.java:78)
	at org.jclouds.http.functions.ParseSax.apply(ParseSax.java:51)
	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)
Caused by: java.lang.NullPointerException: virtualSystem
	at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:204)
	at org.jclouds.ovf.internal.BaseEnvelope.<init>(BaseEnvelope.java:144)
	at org.jclouds.ovf.Envelope.<init>(Envelope.java:122)
	at org.jclouds.ovf.Envelope$Builder.build(Envelope.java:48)
	at org.jclouds.ovf.Envelope$Builder.build(Envelope.java:42)
	at org.jclouds.ovf.xml.internal.BaseEnvelopeHandler.getResult(BaseEnvelopeHandler.java:49)
	at org.jclouds.ovf.xml.internal.BaseEnvelopeHandler.getResult(BaseEnvelopeHandler.java:44)
	at org.jclouds.http.functions.ParseSax.doParse(ParseSax.java:126)
	at org.jclouds.http.functions.ParseSax.parse(ParseSax.java:114)
	... 8 more
Caused by: java.lang.NullPointerException: virtualSystem
	at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:204)
	at org.jclouds.ovf.internal.BaseEnvelope.<init>(BaseEnvelope.java:144)
	at org.jclouds.ovf.Envelope.<init>(Envelope.java:122)
	at org.jclouds.ovf.Envelope$Builder.build(Envelope.java:48)
	at org.jclouds.ovf.Envelope$Builder.build(Envelope.java:42)
	at org.jclouds.ovf.xml.internal.BaseEnvelopeHandler.getResult(BaseEnvelopeHandler.java:49)
	at org.jclouds.ovf.xml.internal.BaseEnvelopeHandler.getResult(BaseEnvelopeHandler.java:44)
	at org.jclouds.http.functions.ParseSax.doParse(ParseSax.java:126)
	at org.jclouds.http.functions.ParseSax.parse(ParseSax.java:114)
	... 8 more

