[INFO] Scanning for projects...
[WARNING] 
[WARNING] Some problems were encountered while building the effective model for org.jclouds.provider:trmk-ecloud:bundle:1.6.0-SNAPSHOT
[WARNING] 'parent.relativePath' of POM org.jclouds:jclouds-project:1.6.0-SNAPSHOT (/private/tmp/jclouds/project/pom.xml) points at org.jclouds:jclouds-multi instead of org.sonatype.oss:oss-parent, please verify your project structure @ org.jclouds:jclouds-project:1.6.0-SNAPSHOT, /private/tmp/jclouds/project/pom.xml, line 24, column 13
[WARNING] 
[WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.
[WARNING] 
[WARNING] For this reason, future Maven versions might no longer support building such malformed projects.
[WARNING] 
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building jclouds Terremark Enterprise Cloud provider 1.6.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-clean-plugin:2.4.1:clean (default-clean) @ trmk-ecloud ---
[INFO] 
[INFO] --- maven-enforcer-plugin:1.1.1:enforce (enforce-maven) @ trmk-ecloud ---
[INFO] 
[INFO] --- maven-enforcer-plugin:1.1.1:enforce (enforce-banned-dependencies) @ trmk-ecloud ---
[INFO] 
[INFO] --- maven-enforcer-plugin:1.1.1:enforce (enforce-java) @ trmk-ecloud ---
[INFO] 
[INFO] --- maven-remote-resources-plugin:1.4:process (process-remote-resources) @ trmk-ecloud ---
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ trmk-ecloud ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /private/tmp/jclouds/providers/trmk-ecloud/src/main/clojure
[INFO] Copying 1 resource
[INFO] Copying 2 resources
[INFO] 
[INFO] --- maven-compiler-plugin:2.5.1:compile (default-compile) @ trmk-ecloud ---
[INFO] Compiling 19 source files to /private/tmp/jclouds/providers/trmk-ecloud/target/classes
[INFO] 
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ trmk-ecloud ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /private/tmp/jclouds/providers/trmk-ecloud/src/test/clojure
[INFO] Copying 5 resources
[INFO] Copying 2 resources
[INFO] 
[INFO] --- maven-compiler-plugin:2.5.1:testCompile (default-testCompile) @ trmk-ecloud ---
[INFO] Compiling 15 source files to /private/tmp/jclouds/providers/trmk-ecloud/target/test-classes
[INFO] 
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ trmk-ecloud ---
[INFO] Surefire report directory: /private/tmp/jclouds/providers/trmk-ecloud/target/surefire-reports

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running TestSuite
Configuring TestNG with: org.apache.maven.surefire.testng.conf.TestNG652Configurator@31f26605
Starting test testLoginSetsContentLength(org.jclouds.trmk.ecloud.TerremarkECloudClientMockTest)
[pool-1-thread-1] Test testLoginSetsContentLength(org.jclouds.trmk.ecloud.TerremarkECloudClientMockTest) succeeded: 1167ms
Test suite progress: tests succeeded: 1, failed: 0, skipped: 0.
Starting test test(org.jclouds.trmk.ecloud.compute.functions.TerremarkECloudParseOsFromVAppTemplateNameTest)
;[pool-3-thread-1] Test test(org.jclouds.trmk.ecloud.compute.functions.TerremarkECloudParseOsFromVAppTemplateNameTest) succeeded: 37ms
Test suite progress: tests succeeded: 2, failed: 0, skipped: 0.
Starting test testlistDataCenters(org.jclouds.trmk.ecloud.features.DataCenterOperationsAsyncClientTest)
Starting test testlistDataCentersInOrg(org.jclouds.trmk.ecloud.features.DataCenterOperationsAsyncClientTest)
[pool-4-thread-2] Test testlistDataCentersInOrg(org.jclouds.trmk.ecloud.features.DataCenterOperationsAsyncClientTest) succeeded: 20ms
Test suite progress: tests succeeded: 3, failed: 0, skipped: 0.
[pool-4-thread-1] Test testlistDataCenters(org.jclouds.trmk.ecloud.features.DataCenterOperationsAsyncClientTest) succeeded: 20ms
Test suite progress: tests succeeded: 4, failed: 0, skipped: 0.
Starting test testgetTagNameToUsageCount(org.jclouds.trmk.ecloud.features.TagOperationsAsyncClientTest)
Starting test testgetTagNameToUsageCountInOrg(org.jclouds.trmk.ecloud.features.TagOperationsAsyncClientTest)
[pool-5-thread-2] Test testgetTagNameToUsageCountInOrg(org.jclouds.trmk.ecloud.features.TagOperationsAsyncClientTest) succeeded: 15ms
Test suite progress: tests succeeded: 5, failed: 0, skipped: 0.
[pool-5-thread-1] Test testgetTagNameToUsageCount(org.jclouds.trmk.ecloud.features.TagOperationsAsyncClientTest) succeeded: 15ms
Test suite progress: tests succeeded: 6, failed: 0, skipped: 0.
Starting test testActivatePublicIpInVDC(org.jclouds.trmk.ecloud.TerremarkECloudAsyncClientTest)
[pool-6-thread-1] Test testActivatePublicIpInVDC(org.jclouds.trmk.ecloud.TerremarkECloudAsyncClientTest) succeeded: 10ms
Test suite progress: tests succeeded: 7, failed: 0, skipped: 0.
Starting test testAddInternetServiceToExistingIp(org.jclouds.trmk.ecloud.TerremarkECloudAsyncClientTest)
[pool-6-thread-1] Test testAddInternetServiceToExistingIp(org.jclouds.trmk.ecloud.TerremarkECloudAsyncClientTest) succeeded: 20ms
Test suite progress: tests succeeded: 8, failed: 0, skipped: 0.
Starting test testAddInternetServiceToExistingIpOptions(org.jclouds.trmk.ecloud.TerremarkECloudAsyncClientTest)
[pool-6-thread-1] Test testAddInternetServiceToExistingIpOptions(org.jclouds.trmk.ecloud.TerremarkECloudAsyncClientTest) succeeded: 4ms
Test suite progress: tests succeeded: 9, failed: 0, skipped: 0.
Starting test testAddNode(org.jclouds.trmk.ecloud.TerremarkECloudAsyncClientTest)
[pool-6-thread-1] Test testAddNode(org.jclouds.trmk.ecloud.TerremarkECloudAsyncClientTest) succeeded: 10ms
Test suite progress: tests succeeded: 10, failed: 0, skipped: 0.
Starting test testAddNodeOptions(org.jclouds.trmk.ecloud.TerremarkECloudAsyncClientTest)
[pool-6-thread-1] Test testAddNodeOptions(org.jclouds.trmk.ecloud.TerremarkECloudAsyncClientTest) succeeded: 5ms
Test suite progress: tests succeeded: 11, failed: 0, skipped: 0.
Starting test testCatalog(org.jclouds.trmk.ecloud.TerremarkECloudAsyncClientTest)
[pool-6-thread-1] Test testCatalog(org.jclouds.trmk.ecloud.TerremarkECloudAsyncClientTest) succeeded: 2ms
Test suite progress: tests succeeded: 12, failed: 0, skipped: 0.
Starting test testConfigureNodeNoDescription(org.jclouds.trmk.ecloud.TerremarkECloudAsyncClientTest)
[pool-6-thread-1] Test testConfigureNodeNoDescription(org.jclouds.trmk.ecloud.TerremarkECloudAsyncClientTest) succeeded: 28ms
Test suite progress: tests succeeded: 13, failed: 0, skipped: 0.
Starting test testConfigureNodeWithDescription(org.jclouds.trmk.ecloud.TerremarkECloudAsyncClientTest)
[pool-6-thread-1] Test testConfigureNodeWithDescription(org.jclouds.trmk.ecloud.TerremarkECloudAsyncClientTest) succeeded: 6ms
Test suite progress: tests succeeded: 14, failed: 0, skipped: 0.
Starting test testDelete(org.jclouds.trmk.ecloud.TerremarkECloudAsyncClientTest)
[pool-6-thread-1] Test testDelete(org.jclouds.trmk.ecloud.TerremarkECloudAsyncClientTest) succeeded: 5ms
Test suite progress: tests succeeded: 15, failed: 0, skipped: 0.
Starting test testDeleteInternetService(org.jclouds.trmk.ecloud.TerremarkECloudAsyncClientTest)
[pool-6-thread-1] Test testDeleteInternetService(org.jclouds.trmk.ecloud.TerremarkECloudAsyncClientTest) succeeded: 5ms
Test suite progress: tests succeeded: 16, failed: 0, skipped: 0.
Starting test testDeleteKeyPair(org.jclouds.trmk.ecloud.TerremarkECloudAsyncClientTest)
[pool-6-thread-1] Test testDeleteKeyPair(org.jclouds.trmk.ecloud.TerremarkECloudAsyncClientTest) succeeded: 2ms
Test suite progress: tests succeeded: 17, failed: 0, skipped: 0.
Starting test testDeleteNode(org.jclouds.trmk.ecloud.TerremarkECloudAsyncClientTest)
[pool-6-thread-1] Test testDeleteNode(org.jclouds.trmk.ecloud.TerremarkECloudAsyncClientTest) succeeded: 1ms
Test suite progress: tests succeeded: 18, failed: 0, skipped: 0.
Starting test testFindNetworkInOrgVDCNamed(org.jclouds.trmk.ecloud.TerremarkECloudAsyncClientTest)
[pool-6-thread-1] Test testFindNetworkInOrgVDCNamed(org.jclouds.trmk.ecloud.TerremarkECloudAsyncClientTest) succeeded: 10ms
Test suite progress: tests succeeded: 19, failed: 0, skipped: 0.
Starting test testGetAllInternetServices(org.jclouds.trmk.ecloud.TerremarkECloudAsyncClientTest)
[pool-6-thread-1] Test testGetAllInternetServices(org.jclouds.trmk.ecloud.TerremarkECloudAsyncClientTest) succeeded: 9ms
Test suite progress: tests succeeded: 20, failed: 0, skipped: 0.
Starting test testGetCustomizationOptionsOfCatalogItem(org.jclouds.trmk.ecloud.TerremarkECloudAsyncClientTest)
[pool-6-thread-1] Test testGetCustomizationOptionsOfCatalogItem(org.jclouds.trmk.ecloud.TerremarkECloudAsyncClientTest) succeeded: 6ms
Test suite progress: tests succeeded: 21, failed: 0, skipped: 0.
Starting test testGetExtendedInfo(org.jclouds.trmk.ecloud.TerremarkECloudAsyncClientTest)
[pool-6-thread-1] Test testGetExtendedInfo(org.jclouds.trmk.ecloud.TerremarkECloudAsyncClientTest) succeeded: 16ms
Test suite progress: tests succeeded: 22, failed: 0, skipped: 0.
Starting test testGetInternetService(org.jclouds.trmk.ecloud.TerremarkECloudAsyncClientTest)
[pool-6-thread-1] Test testGetInternetService(org.jclouds.trmk.ecloud.TerremarkECloudAsyncClientTest) succeeded: 3ms
Test suite progress: tests succeeded: 23, failed: 0, skipped: 0.
Starting test testGetKeyPair(org.jclouds.trmk.ecloud.TerremarkECloudAsyncClientTest)
[pool-6-thread-1] Test testGetKeyPair(org.jclouds.trmk.ecloud.TerremarkECloudAsyncClientTest) succeeded: 6ms
Test suite progress: tests succeeded: 24, failed: 0, skipped: 0.
Starting test testGetKeyPairInOrg(org.jclouds.trmk.ecloud.TerremarkECloudAsyncClientTest)
[pool-6-thread-1] Test testGetKeyPairInOrg(org.jclouds.trmk.ecloud.TerremarkECloudAsyncClientTest) succeeded: 13ms
Test suite progress: tests succeeded: 25, failed: 0, skipped: 0.
Starting test testGetNode(org.jclouds.trmk.ecloud.TerremarkECloudAsyncClientTest)
[pool-6-thread-1] Test testGetNode(org.jclouds.trmk.ecloud.TerremarkECloudAsyncClientTest) succeeded: 2ms
Test suite progress: tests succeeded: 26, failed: 0, skipped: 0.
Starting test testGetNodes(org.jclouds.trmk.ecloud.TerremarkECloudAsyncClientTest)
[pool-6-thread-1] Test testGetNodes(org.jclouds.trmk.ecloud.TerremarkECloudAsyncClientTest) succeeded: 6ms
Test suite progress: tests succeeded: 27, failed: 0, skipped: 0.
Starting test testGetVDC(org.jclouds.trmk.ecloud.TerremarkECloudAsyncClientTest)
[pool-6-thread-1] Test testGetVDC(org.jclouds.trmk.ecloud.TerremarkECloudAsyncClientTest) succeeded: 7ms
Test suite progress: tests succeeded: 28, failed: 0, skipped: 0.
Starting test testInstantiateVAppTemplateInVDCURI(org.jclouds.trmk.ecloud.TerremarkECloudAsyncClientTest)
[pool-6-thread-1] Test testInstantiateVAppTemplateInVDCURI(org.jclouds.trmk.ecloud.TerremarkECloudAsyncClientTest) succeeded: 30ms
Test suite progress: tests succeeded: 29, failed: 0, skipped: 0.
Starting test testInstantiateVAppTemplateInVDCURIOptions(org.jclouds.trmk.ecloud.TerremarkECloudAsyncClientTest)
[pool-6-thread-1] Test testInstantiateVAppTemplateInVDCURIOptions(org.jclouds.trmk.ecloud.TerremarkECloudAsyncClientTest) succeeded: 8ms
Test suite progress: tests succeeded: 30, failed: 0, skipped: 0.
Starting test testListKeyPairsInOrg(org.jclouds.trmk.ecloud.TerremarkECloudAsyncClientTest)
[pool-6-thread-1] Test testListKeyPairsInOrg(org.jclouds.trmk.ecloud.TerremarkECloudAsyncClientTest) succeeded: 2ms
Test suite progress: tests succeeded: 31, failed: 0, skipped: 0.
Starting test testListKeyPairsInOrgNotFound(org.jclouds.trmk.ecloud.TerremarkECloudAsyncClientTest)
[pool-6-thread-1] Test testListKeyPairsInOrgNotFound(org.jclouds.trmk.ecloud.TerremarkECloudAsyncClientTest) succeeded: 0ms
Test suite progress: tests succeeded: 32, failed: 0, skipped: 0.
Starting test testListOrgs(org.jclouds.trmk.ecloud.TerremarkECloudAsyncClientTest)
[pool-6-thread-1] Test testListOrgs(org.jclouds.trmk.ecloud.TerremarkECloudAsyncClientTest) succeeded: 0ms
Test suite progress: tests succeeded: 33, failed: 0, skipped: 0.
Starting test testNetwork(org.jclouds.trmk.ecloud.TerremarkECloudAsyncClientTest)
[pool-6-thread-1] Test testNetwork(org.jclouds.trmk.ecloud.TerremarkECloudAsyncClientTest) succeeded: 2ms
Test suite progress: tests succeeded: 34, failed: 0, skipped: 0.
Starting test testAllContains(org.jclouds.trmk.ecloud.TerremarkECloudProviderTest)
Starting test testOfApiContains(org.jclouds.trmk.ecloud.TerremarkECloudProviderTest)
Starting test testTransformableToContains(org.jclouds.trmk.ecloud.TerremarkECloudProviderTest)
Starting test testWithId(org.jclouds.trmk.ecloud.TerremarkECloudProviderTest)
[pool-7-thread-1] Test testAllContains(org.jclouds.trmk.ecloud.TerremarkECloudProviderTest) succeeded: 2ms
Test suite progress: tests succeeded: 35, failed: 0, skipped: 0.
[pool-7-thread-4] Test testWithId(org.jclouds.trmk.ecloud.TerremarkECloudProviderTest) succeeded: 2ms
Test suite progress: tests succeeded: 36, failed: 0, skipped: 0.
[pool-7-thread-2] Test testOfApiContains(org.jclouds.trmk.ecloud.TerremarkECloudProviderTest) succeeded: 2ms
Test suite progress: tests succeeded: 37, failed: 0, skipped: 0.
[pool-7-thread-3] Test testTransformableToContains(org.jclouds.trmk.ecloud.TerremarkECloudProviderTest) succeeded: 4ms
Test suite progress: tests succeeded: 38, failed: 0, skipped: 0.
Starting test testApplyInputStream(org.jclouds.trmk.ecloud.xml.ECloudOrgHandlerTest)
[pool-8-thread-1] Test testApplyInputStream(org.jclouds.trmk.ecloud.xml.ECloudOrgHandlerTest) succeeded: 6ms
Test suite progress: tests succeeded: 39, failed: 0, skipped: 0.
Starting test testApplyInputStream(org.jclouds.trmk.ecloud.xml.TagNameToUsageCountHandlerTest)
[pool-9-thread-1] Test testApplyInputStream(org.jclouds.trmk.ecloud.xml.TagNameToUsageCountHandlerTest) succeeded: 2ms
Test suite progress: tests succeeded: 40, failed: 0, skipped: 0.
Tests run: 40, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.593 sec

Results :

Tests run: 40, Failures: 0, Errors: 0, Skipped: 0

[INFO] 
[INFO] --- maven-bundle-plugin:2.3.7:bundle (default-bundle) @ trmk-ecloud ---
[INFO] 
[INFO] --- maven-jar-plugin:2.4:test-jar (default) @ trmk-ecloud ---
[INFO] Building jar: /private/tmp/jclouds/providers/trmk-ecloud/target/trmk-ecloud-1.6.0-SNAPSHOT-tests.jar
[INFO] 
[INFO] --- maven-surefire-plugin:2.12.4:test (integration) @ trmk-ecloud ---
[INFO] Surefire report directory: /private/tmp/jclouds/providers/trmk-ecloud/target/surefire-reports

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running TestSuite
Configuring TestNG with: org.apache.maven.surefire.testng.conf.TestNG652Configurator@2107ebe1
Starting test testCompareSizes(org.jclouds.trmk.ecloud.compute.TerremarkECloudComputeServiceLiveTest)
;[TestNG] Test testCompareSizes(org.jclouds.trmk.ecloud.compute.TerremarkECloudComputeServiceLiveTest) succeeded: 52041ms
Test suite progress: tests succeeded: 1, failed: 0, skipped: 0.
Starting test testCorrectExceptionRunningNodesNotFound(org.jclouds.trmk.ecloud.compute.TerremarkECloudComputeServiceLiveTest)
[TestNG] Test testCorrectExceptionRunningNodesNotFound(org.jclouds.trmk.ecloud.compute.TerremarkECloudComputeServiceLiveTest) succeeded: 68360ms
Test suite progress: tests succeeded: 2, failed: 0, skipped: 0.
Starting test testGetAssignableLocations(org.jclouds.trmk.ecloud.compute.TerremarkECloudComputeServiceLiveTest)
[TestNG] Test testGetAssignableLocations(org.jclouds.trmk.ecloud.compute.TerremarkECloudComputeServiceLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 3, failed: 0, skipped: 0.
Starting test testImageById(org.jclouds.trmk.ecloud.compute.TerremarkECloudComputeServiceLiveTest)
[TestNG] Test testImageById(org.jclouds.trmk.ecloud.compute.TerremarkECloudComputeServiceLiveTest) failed.
Test suite progress: tests succeeded: 3, failed: 1, skipped: 0.
Starting test testImagesCache(org.jclouds.trmk.ecloud.compute.TerremarkECloudComputeServiceLiveTest)
[TestNG] Test testImagesCache(org.jclouds.trmk.ecloud.compute.TerremarkECloudComputeServiceLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 4, failed: 1, skipped: 0.
Starting test testListSizes(org.jclouds.trmk.ecloud.compute.TerremarkECloudComputeServiceLiveTest)
[TestNG] Test testListSizes(org.jclouds.trmk.ecloud.compute.TerremarkECloudComputeServiceLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 5, failed: 1, skipped: 0.
Starting test testOptionToNotBlock(org.jclouds.trmk.ecloud.compute.TerremarkECloudComputeServiceLiveTest)
[TestNG] Test testOptionToNotBlock(org.jclouds.trmk.ecloud.compute.TerremarkECloudComputeServiceLiveTest) failed.
Test suite progress: tests succeeded: 5, failed: 2, skipped: 0.
Starting test setServiceDefaults(org.jclouds.trmk.ecloud.compute.TerremarkECloudComputeServiceLiveTest)
[TestNG] Test setServiceDefaults(org.jclouds.trmk.ecloud.compute.TerremarkECloudComputeServiceLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 6, failed: 2, skipped: 0.
Starting test testDestroyNodes(org.jclouds.trmk.ecloud.compute.TerremarkECloudComputeServiceLiveTest)
[TestNG] Test testDestroyNodes(org.jclouds.trmk.ecloud.compute.TerremarkECloudComputeServiceLiveTest) succeeded: 19425ms
Test suite progress: tests succeeded: 7, failed: 2, skipped: 0.
Starting test testListImages(org.jclouds.trmk.ecloud.compute.TerremarkECloudComputeServiceLiveTest)
[TestNG] Test testListImages(org.jclouds.trmk.ecloud.compute.TerremarkECloudComputeServiceLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 8, failed: 2, skipped: 0.
Starting test testListNodes(org.jclouds.trmk.ecloud.compute.TerremarkECloudComputeServiceLiveTest)
[TestNG] Test testListNodes(org.jclouds.trmk.ecloud.compute.TerremarkECloudComputeServiceLiveTest) succeeded: 9933ms
Test suite progress: tests succeeded: 9, failed: 2, skipped: 0.
Starting test testCreateAndRunAService(org.jclouds.trmk.ecloud.compute.TerremarkECloudComputeServiceLiveTest)
[TestNG] Test testCreateAndRunAService(org.jclouds.trmk.ecloud.compute.TerremarkECloudComputeServiceLiveTest) failed.
Test suite progress: tests succeeded: 9, failed: 3, skipped: 0.
Starting test testCorrectAuthException(org.jclouds.trmk.ecloud.compute.TerremarkECloudComputeServiceLiveTest)
[TestNG] Test testCorrectAuthException(org.jclouds.trmk.ecloud.compute.TerremarkECloudComputeServiceLiveTest) succeeded: 1237ms
Test suite progress: tests succeeded: 10, failed: 3, skipped: 0.
Starting test testAScriptExecutionAfterBootWithBasicTemplate(org.jclouds.trmk.ecloud.compute.TerremarkECloudComputeServiceLiveTest)
;[TestNG] Test testAScriptExecutionAfterBootWithBasicTemplate(org.jclouds.trmk.ecloud.compute.TerremarkECloudComputeServiceLiveTest) failed.
Test suite progress: tests succeeded: 10, failed: 4, skipped: 0.
Starting test testConcurrentUseOfComputeServiceToCreateNodes(org.jclouds.trmk.ecloud.compute.TerremarkECloudComputeServiceLiveTest)
[TestNG] Test testConcurrentUseOfComputeServiceToCreateNodes(org.jclouds.trmk.ecloud.compute.TerremarkECloudComputeServiceLiveTest) failed.
Test suite progress: tests succeeded: 10, failed: 5, skipped: 0.
Starting test testTemplateMatch(org.jclouds.trmk.ecloud.compute.TerremarkECloudComputeServiceLiveTest)
;[TestNG] Test testTemplateMatch(org.jclouds.trmk.ecloud.compute.TerremarkECloudComputeServiceLiveTest) succeeded: 5052ms
Test suite progress: tests succeeded: 11, failed: 5, skipped: 0.
[TestNG] Test testCreateTwoNodesWithRunScript(org.jclouds.trmk.ecloud.compute.TerremarkECloudComputeServiceLiveTest) skipped.
Test suite progress: tests succeeded: 11, failed: 5, skipped: 1.
[TestNG] Test testCreateAnotherNodeWithANewContextToEnsureSharedMemIsntRequired(org.jclouds.trmk.ecloud.compute.TerremarkECloudComputeServiceLiveTest) skipped.
Test suite progress: tests succeeded: 11, failed: 5, skipped: 2.
[TestNG] Test testCredentialsCache(org.jclouds.trmk.ecloud.compute.TerremarkECloudComputeServiceLiveTest) skipped.
Test suite progress: tests succeeded: 11, failed: 5, skipped: 3.
[TestNG] Test testGet(org.jclouds.trmk.ecloud.compute.TerremarkECloudComputeServiceLiveTest) skipped.
Test suite progress: tests succeeded: 11, failed: 5, skipped: 4.
[TestNG] Test testReboot(org.jclouds.trmk.ecloud.compute.TerremarkECloudComputeServiceLiveTest) skipped.
Test suite progress: tests succeeded: 11, failed: 5, skipped: 5.
[TestNG] Test testSuspendResume(org.jclouds.trmk.ecloud.compute.TerremarkECloudComputeServiceLiveTest) skipped.
Test suite progress: tests succeeded: 11, failed: 5, skipped: 6.
[TestNG] Test testGetNodesWithDetails(org.jclouds.trmk.ecloud.compute.TerremarkECloudComputeServiceLiveTest) skipped.
Test suite progress: tests succeeded: 11, failed: 5, skipped: 7.
[TestNG] Test testListNodesByIds(org.jclouds.trmk.ecloud.compute.TerremarkECloudComputeServiceLiveTest) skipped.
Test suite progress: tests succeeded: 11, failed: 5, skipped: 8.
Starting test testCompareSizes(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
;smallest {id=cpu=1,ram=512,disk=10, providerId=cpu=1,ram=512,disk=10, processors=[{cores=1.0, speed=1.0}], ram=512, volumes=[{type=LOCAL, size=10.0, bootDevice=true, durable=true}], hypervisor=VMware, supportsImage=ALWAYS_TRUE}
fastest {id=cpu=8,ram=512,disk=10, providerId=cpu=8,ram=512,disk=10, processors=[{cores=8.0, speed=1.0}], ram=512, volumes=[{type=LOCAL, size=10.0, bootDevice=true, durable=true}], hypervisor=VMware, supportsImage=ALWAYS_TRUE}
biggest {id=cpu=8,ram=16384,disk=10, providerId=cpu=8,ram=16384,disk=10, processors=[{cores=8.0, speed=1.0}], ram=16384, volumes=[{type=LOCAL, size=10.0, bootDevice=true, durable=true}], hypervisor=VMware, supportsImage=ALWAYS_TRUE}
[TestNG] Test testCompareSizes(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 8065ms
Test suite progress: tests succeeded: 12, failed: 5, skipped: 8.
Starting test testFromTemplate(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testFromTemplate(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 20ms
Test suite progress: tests succeeded: 13, failed: 5, skipped: 8.
Starting test testGetAssignableLocations(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testGetAssignableLocations(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 14, failed: 5, skipped: 8.
Starting test testTemplateBuilderCanFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCanFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 4ms
Test suite progress: tests succeeded: 15, failed: 5, skipped: 8.
Starting test testTemplateBuilderCanFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCanFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 16, failed: 5, skipped: 8.
Starting test testTemplateBuilderCanFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCanFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 4ms
Test suite progress: tests succeeded: 17, failed: 5, skipped: 8.
Starting test testTemplateBuilderCanFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCanFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 6ms
Test suite progress: tests succeeded: 18, failed: 5, skipped: 8.
Starting test testTemplateBuilderCanFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCanFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 5ms
Test suite progress: tests succeeded: 19, failed: 5, skipped: 8.
Starting test testTemplateBuilderCanFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCanFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 3ms
Test suite progress: tests succeeded: 20, failed: 5, skipped: 8.
Starting test testTemplateBuilderCanFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCanFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 4ms
Test suite progress: tests succeeded: 21, failed: 5, skipped: 8.
Starting test testTemplateBuilderCanFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCanFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 2ms
Test suite progress: tests succeeded: 22, failed: 5, skipped: 8.
Starting test testTemplateBuilderCanFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCanFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 3ms
Test suite progress: tests succeeded: 23, failed: 5, skipped: 8.
Starting test testTemplateBuilderCanFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCanFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 3ms
Test suite progress: tests succeeded: 24, failed: 5, skipped: 8.
Starting test testTemplateBuilderCanFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCanFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 25, failed: 5, skipped: 8.
Starting test testTemplateBuilderCanFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCanFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 26, failed: 5, skipped: 8.
Starting test testTemplateBuilderCanFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCanFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 27, failed: 5, skipped: 8.
Starting test testTemplateBuilderCanFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCanFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 28, failed: 5, skipped: 8.
Starting test testTemplateBuilderCanFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCanFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 29, failed: 5, skipped: 8.
Starting test testTemplateBuilderCanFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCanFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 30, failed: 5, skipped: 8.
Starting test testTemplateBuilderCanFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCanFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 31, failed: 5, skipped: 8.
Starting test testTemplateBuilderCanFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCanFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 32, failed: 5, skipped: 8.
Starting test testTemplateBuilderCanFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCanFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 33, failed: 5, skipped: 8.
Starting test testTemplateBuilderCanFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCanFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 34, failed: 5, skipped: 8.
Starting test testTemplateBuilderCanFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCanFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 35, failed: 5, skipped: 8.
Starting test testTemplateBuilderCanFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCanFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 2ms
Test suite progress: tests succeeded: 36, failed: 5, skipped: 8.
Starting test testTemplateBuilderCanFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCanFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 37, failed: 5, skipped: 8.
Starting test testTemplateBuilderCanFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCanFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 38, failed: 5, skipped: 8.
Starting test testTemplateBuilderCanFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCanFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 39, failed: 5, skipped: 8.
Starting test testTemplateBuilderCanFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCanFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 40, failed: 5, skipped: 8.
Starting test testTemplateBuilderCanFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCanFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 41, failed: 5, skipped: 8.
Starting test testTemplateBuilderCanUseImageId(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
;[TestNG] Test testTemplateBuilderCanUseImageId(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 5938ms
Test suite progress: tests succeeded: 42, failed: 5, skipped: 8.
Starting test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 43, failed: 5, skipped: 8.
Starting test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 44, failed: 5, skipped: 8.
Starting test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 45, failed: 5, skipped: 8.
Starting test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) failed.
Test suite progress: tests succeeded: 45, failed: 6, skipped: 8.
Starting test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 46, failed: 6, skipped: 8.
Starting test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 47, failed: 6, skipped: 8.
Starting test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 48, failed: 6, skipped: 8.
Starting test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 49, failed: 6, skipped: 8.
Starting test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 50, failed: 6, skipped: 8.
Starting test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 51, failed: 6, skipped: 8.
Starting test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 52, failed: 6, skipped: 8.
Starting test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 53, failed: 6, skipped: 8.
Starting test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 54, failed: 6, skipped: 8.
Starting test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 55, failed: 6, skipped: 8.
Starting test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 56, failed: 6, skipped: 8.
Starting test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 57, failed: 6, skipped: 8.
Starting test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 58, failed: 6, skipped: 8.
Starting test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 59, failed: 6, skipped: 8.
Starting test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 60, failed: 6, skipped: 8.
Starting test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 61, failed: 6, skipped: 8.
Starting test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 62, failed: 6, skipped: 8.
Starting test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 63, failed: 6, skipped: 8.
Starting test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 64, failed: 6, skipped: 8.
Starting test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 65, failed: 6, skipped: 8.
Starting test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 66, failed: 6, skipped: 8.
Starting test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 67, failed: 6, skipped: 8.
Starting test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 68, failed: 6, skipped: 8.
Starting test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 69, failed: 6, skipped: 8.
Starting test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 70, failed: 6, skipped: 8.
Starting test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 71, failed: 6, skipped: 8.
Starting test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 72, failed: 6, skipped: 8.
Starting test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 73, failed: 6, skipped: 8.
Starting test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 74, failed: 6, skipped: 8.
Starting test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 75, failed: 6, skipped: 8.
Starting test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 76, failed: 6, skipped: 8.
Starting test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 77, failed: 6, skipped: 8.
Starting test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 78, failed: 6, skipped: 8.
Starting test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 79, failed: 6, skipped: 8.
Starting test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 80, failed: 6, skipped: 8.
Starting test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 81, failed: 6, skipped: 8.
Starting test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 82, failed: 6, skipped: 8.
Starting test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 83, failed: 6, skipped: 8.
Starting test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 84, failed: 6, skipped: 8.
Starting test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 85, failed: 6, skipped: 8.
Starting test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 86, failed: 6, skipped: 8.
Starting test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 87, failed: 6, skipped: 8.
Starting test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 88, failed: 6, skipped: 8.
Starting test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 89, failed: 6, skipped: 8.
Starting test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 90, failed: 6, skipped: 8.
Starting test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 91, failed: 6, skipped: 8.
Starting test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 92, failed: 6, skipped: 8.
Starting test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 2ms
Test suite progress: tests succeeded: 93, failed: 6, skipped: 8.
Starting test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 94, failed: 6, skipped: 8.
Starting test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 95, failed: 6, skipped: 8.
Starting test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 96, failed: 6, skipped: 8.
Starting test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 97, failed: 6, skipped: 8.
Starting test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 98, failed: 6, skipped: 8.
Starting test testTemplateBuilderWithImageIdSpecified(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
;[TestNG] Test testTemplateBuilderWithImageIdSpecified(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) failed.
Test suite progress: tests succeeded: 98, failed: 7, skipped: 8.
Starting test testTemplateBuilderWithLoginUserSpecified(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
;;[TestNG] Test testTemplateBuilderWithLoginUserSpecified(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 12741ms
Test suite progress: tests succeeded: 99, failed: 7, skipped: 8.
Starting test testDefaultTemplateBuilder(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)
[TestNG] Test testDefaultTemplateBuilder(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest) succeeded: 2ms
Test suite progress: tests succeeded: 100, failed: 7, skipped: 8.
Starting test testListDataCentersInOrg(org.jclouds.trmk.ecloud.features.DataCenterOperationsClientLiveTest)
[TestNG] Test testListDataCentersInOrg(org.jclouds.trmk.ecloud.features.DataCenterOperationsClientLiveTest) succeeded: 3286ms
Test suite progress: tests succeeded: 101, failed: 7, skipped: 8.
Starting test testListTagsInOrg(org.jclouds.trmk.ecloud.features.TagOperationsClientLiveTest)
[TestNG] Test testListTagsInOrg(org.jclouds.trmk.ecloud.features.TagOperationsClientLiveTest) succeeded: 3000ms
Test suite progress: tests succeeded: 102, failed: 7, skipped: 8.
Starting test testCatalog(org.jclouds.trmk.ecloud.TerremarkECloudClientLiveTest)
[TestNG] Test testCatalog(org.jclouds.trmk.ecloud.TerremarkECloudClientLiveTest) succeeded: 2422ms
Test suite progress: tests succeeded: 103, failed: 7, skipped: 8.
Starting test testCreateInternetServiceMonitorDisabled(org.jclouds.trmk.ecloud.TerremarkECloudClientLiveTest)
[TestNG] Test testCreateInternetServiceMonitorDisabled(org.jclouds.trmk.ecloud.TerremarkECloudClientLiveTest) succeeded: 5525ms
Test suite progress: tests succeeded: 104, failed: 7, skipped: 8.
Starting test testDefaultTasksList(org.jclouds.trmk.ecloud.TerremarkECloudClientLiveTest)
[TestNG] Test testDefaultTasksList(org.jclouds.trmk.ecloud.TerremarkECloudClientLiveTest) succeeded: 2687ms
Test suite progress: tests succeeded: 105, failed: 7, skipped: 8.
Starting test testDefaultVDC(org.jclouds.trmk.ecloud.TerremarkECloudClientLiveTest)
[TestNG] Test testDefaultVDC(org.jclouds.trmk.ecloud.TerremarkECloudClientLiveTest) succeeded: 2741ms
Test suite progress: tests succeeded: 106, failed: 7, skipped: 8.
Starting test testFindCatalogItem(org.jclouds.trmk.ecloud.TerremarkECloudClientLiveTest)
[TestNG] Test testFindCatalogItem(org.jclouds.trmk.ecloud.TerremarkECloudClientLiveTest) succeeded: 61689ms
Test suite progress: tests succeeded: 107, failed: 7, skipped: 8.
Starting test testFindVAppTemplate(org.jclouds.trmk.ecloud.TerremarkECloudClientLiveTest)
[TestNG] Test testFindVAppTemplate(org.jclouds.trmk.ecloud.TerremarkECloudClientLiveTest) failed.
Test suite progress: tests succeeded: 107, failed: 8, skipped: 8.
Starting test testGetAllInternetServices(org.jclouds.trmk.ecloud.TerremarkECloudClientLiveTest)
[TestNG] Test testGetAllInternetServices(org.jclouds.trmk.ecloud.TerremarkECloudClientLiveTest) succeeded: 1332ms
Test suite progress: tests succeeded: 108, failed: 8, skipped: 8.
Starting test testGetCatalogItem(org.jclouds.trmk.ecloud.TerremarkECloudClientLiveTest)
[TestNG] Test testGetCatalogItem(org.jclouds.trmk.ecloud.TerremarkECloudClientLiveTest) succeeded: 26010ms
Test suite progress: tests succeeded: 109, failed: 8, skipped: 8.
Starting test testGetConfigCustomizationOptions(org.jclouds.trmk.ecloud.TerremarkECloudClientLiveTest)
[TestNG] Test testGetConfigCustomizationOptions(org.jclouds.trmk.ecloud.TerremarkECloudClientLiveTest) failed.
Test suite progress: tests succeeded: 109, failed: 9, skipped: 8.
Starting test testGetPublicIpsAssociatedWithVDC(org.jclouds.trmk.ecloud.TerremarkECloudClientLiveTest)
[TestNG] Test testGetPublicIpsAssociatedWithVDC(org.jclouds.trmk.ecloud.TerremarkECloudClientLiveTest) succeeded: 6499ms
Test suite progress: tests succeeded: 110, failed: 9, skipped: 8.
Starting test testGetTask(org.jclouds.trmk.ecloud.TerremarkECloudClientLiveTest)
[TestNG] Test testGetTask(org.jclouds.trmk.ecloud.TerremarkECloudClientLiveTest) succeeded: 1786ms
Test suite progress: tests succeeded: 111, failed: 9, skipped: 8.
Starting test testGetVApp(org.jclouds.trmk.ecloud.TerremarkECloudClientLiveTest)
[TestNG] Test testGetVApp(org.jclouds.trmk.ecloud.TerremarkECloudClientLiveTest) succeeded: 3949ms
Test suite progress: tests succeeded: 112, failed: 9, skipped: 8.
Starting test testGetVAppTemplate(org.jclouds.trmk.ecloud.TerremarkECloudClientLiveTest)
[TestNG] Test testGetVAppTemplate(org.jclouds.trmk.ecloud.TerremarkECloudClientLiveTest) failed.
Test suite progress: tests succeeded: 112, failed: 10, skipped: 8.
Starting test testGetVDCNetwork(org.jclouds.trmk.ecloud.TerremarkECloudClientLiveTest)
[TestNG] Test testGetVDCNetwork(org.jclouds.trmk.ecloud.TerremarkECloudClientLiveTest) succeeded: 6637ms
Test suite progress: tests succeeded: 113, failed: 10, skipped: 8.
Starting test testInstantiateAndPowerOn(org.jclouds.trmk.ecloud.TerremarkECloudClientLiveTest)
[TestNG] Test testInstantiateAndPowerOn(org.jclouds.trmk.ecloud.TerremarkECloudClientLiveTest) failed.
Test suite progress: tests succeeded: 113, failed: 11, skipped: 8.
Starting test testKeysList(org.jclouds.trmk.ecloud.TerremarkECloudClientLiveTest)
[TestNG] Test testKeysList(org.jclouds.trmk.ecloud.TerremarkECloudClientLiveTest) succeeded: 1104ms
Test suite progress: tests succeeded: 114, failed: 11, skipped: 8.
Starting test testOrg(org.jclouds.trmk.ecloud.TerremarkECloudClientLiveTest)
[TestNG] Test testOrg(org.jclouds.trmk.ecloud.TerremarkECloudClientLiveTest) succeeded: 1048ms
Test suite progress: tests succeeded: 115, failed: 11, skipped: 8.
Starting test testPropertiesCanOverrideDefaultCatalog(org.jclouds.trmk.ecloud.TerremarkECloudClientLiveTest)
[TestNG] Test testPropertiesCanOverrideDefaultCatalog(org.jclouds.trmk.ecloud.TerremarkECloudClientLiveTest) succeeded: 5189ms
Test suite progress: tests succeeded: 116, failed: 11, skipped: 8.
Starting test testPropertiesCanOverrideDefaultNetwork(org.jclouds.trmk.ecloud.TerremarkECloudClientLiveTest)
[TestNG] Test testPropertiesCanOverrideDefaultNetwork(org.jclouds.trmk.ecloud.TerremarkECloudClientLiveTest) succeeded: 8845ms
Test suite progress: tests succeeded: 117, failed: 11, skipped: 8.
Starting test testPropertiesCanOverrideDefaultOrg(org.jclouds.trmk.ecloud.TerremarkECloudClientLiveTest)
[TestNG] Test testPropertiesCanOverrideDefaultOrg(org.jclouds.trmk.ecloud.TerremarkECloudClientLiveTest) succeeded: 2113ms
Test suite progress: tests succeeded: 118, failed: 11, skipped: 8.
Starting test testPropertiesCanOverrideDefaultTasksList(org.jclouds.trmk.ecloud.TerremarkECloudClientLiveTest)
[TestNG] Test testPropertiesCanOverrideDefaultTasksList(org.jclouds.trmk.ecloud.TerremarkECloudClientLiveTest) succeeded: 3589ms
Test suite progress: tests succeeded: 119, failed: 11, skipped: 8.
Starting test testPropertiesCanOverrideDefaultVDC(org.jclouds.trmk.ecloud.TerremarkECloudClientLiveTest)
[TestNG] Test testPropertiesCanOverrideDefaultVDC(org.jclouds.trmk.ecloud.TerremarkECloudClientLiveTest) succeeded: 4264ms
Test suite progress: tests succeeded: 120, failed: 11, skipped: 8.
[TestNG] Test testAddInternetService(org.jclouds.trmk.ecloud.TerremarkECloudClientLiveTest) skipped.
Test suite progress: tests succeeded: 120, failed: 11, skipped: 9.
[TestNG] Test testCloneVApp(org.jclouds.trmk.ecloud.TerremarkECloudClientLiveTest) skipped.
Test suite progress: tests succeeded: 120, failed: 11, skipped: 10.
[TestNG] Test testPublicIp(org.jclouds.trmk.ecloud.TerremarkECloudClientLiveTest) skipped.
Test suite progress: tests succeeded: 120, failed: 11, skipped: 11.
[TestNG] Test testConfigureNode(org.jclouds.trmk.ecloud.TerremarkECloudClientLiveTest) skipped.
Test suite progress: tests succeeded: 120, failed: 11, skipped: 12.
[TestNG] Test testLifeCycle(org.jclouds.trmk.ecloud.TerremarkECloudClientLiveTest) skipped.
Test suite progress: tests succeeded: 120, failed: 11, skipped: 13.
[TestNG] Test testConfigure(org.jclouds.trmk.ecloud.TerremarkECloudClientLiveTest) skipped.
Test suite progress: tests succeeded: 120, failed: 11, skipped: 14.
Tests run: 145, Failures: 11, Errors: 0, Skipped: 14, Time elapsed: 1,641.873 sec <<< FAILURE!
testImageById(org.jclouds.trmk.ecloud.compute.TerremarkECloudComputeServiceLiveTest)  Time elapsed: 0.471 sec  <<< FAILURE!
java.lang.NullPointerException: parent
	at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:208)
	at org.jclouds.trmk.vcloud_0_8.compute.functions.ImageForVCloudExpressVAppTemplate.apply(ImageForVCloudExpressVAppTemplate.java:71)
	at org.jclouds.trmk.vcloud_0_8.compute.functions.ImageForVCloudExpressVAppTemplate.apply(ImageForVCloudExpressVAppTemplate.java:41)
	at org.jclouds.trmk.vcloud_0_8.compute.strategy.TerremarkVCloudGetImageStrategy.getImage(TerremarkVCloudGetImageStrategy.java:56)
	at org.jclouds.compute.internal.BaseComputeService.getImage(BaseComputeService.java:415)
	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.DelegatingInvocationHandler.invoke(DelegatingInvocationHandler.java:37)
	at com.sun.proxy.$Proxy70.getImage(Unknown Source)
	at org.jclouds.compute.internal.BaseComputeServiceLiveTest.testImageById(BaseComputeServiceLiveTest.java:208)
	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:714)
	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901)
	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231)
	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:767)
	at org.testng.TestRunner.run(TestRunner.java:617)
	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$2.call(ThreadUtil.java:64)
	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:895)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
	at java.lang.Thread.run(Thread.java:680)

testOptionToNotBlock(org.jclouds.trmk.ecloud.compute.TerremarkECloudComputeServiceLiveTest)  Time elapsed: 89.975 sec  <<< FAILURE!
org.jclouds.concurrent.TransformParallelException: error destroyNodesMatching(inGroup(te-block)): {{id=https://services.enterprisecloud.terremark.com/api/v0.8b-ext2.8/vapp/10103167, providerId=https://services.enterprisecloud.terremark.com/api/v0.8b-ext2.8/vapp/10103167, uri=https://services.enterprisecloud.terremark.com/api/v0.8b-ext2.8/vapp/10103167, name=te-block-1392, uri=https://services.enterprisecloud.terremark.com/api/v0.8b-ext2.8/vapp/10103167, location={scope=ZONE, id=https://services.enterprisecloud.terremark.com/api/v0.8b-ext2.8/vdc/691, description=jclouds.org, parent=https://services.enterprisecloud.terremark.com/api/v0.8b-ext2.8/org/1907529}, group=te-block, status=PENDING, loginPort=22, hostname=te-block-1392, loginUser=ecloud}=java.util.concurrent.ExecutionException: org.jclouds.http.HttpResponseException: command: POST https://services.enterprisecloud.terremark.com/api/v0.8b-ext2.8/vapp/10103167/power/action/powerOff HTTP/1.1 failed with response: HTTP/1.1 500 Internal Server Error; content: [<html version="-//W3C//DTD XHTML 2.0//EN" xml:lang="en" xsi:schemaLocation="http://www.w3.org/1999/xhtml http://www.w3.org/MarkUp/SCHEMA/xhtml2.xsd" xmlns="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><HEAD><TITLE>Request Error</TITLE></HEAD><BODY><DIV id="content"><P class="heading1"><B>Error Status Code:</B> 'InternalServerError'</P><P><B>Details: </B>Cannot power off te-block-1392 because it is already powered off.</P><!-- Padding xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx--></DIV></BODY></html>]}
	at org.jclouds.concurrent.FutureIterables.transformParallel(FutureIterables.java:104)
	at org.jclouds.concurrent.FutureIterables.transformParallel(FutureIterables.java:74)
	at org.jclouds.compute.internal.BaseComputeService.destroyNodesMatching(BaseComputeService.java:258)
	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.DelegatingInvocationHandler.invoke(DelegatingInvocationHandler.java:37)
	at com.sun.proxy.$Proxy70.destroyNodesMatching(Unknown Source)
	at org.jclouds.compute.internal.BaseComputeServiceLiveTest.testOptionToNotBlock(BaseComputeServiceLiveTest.java:782)
	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:714)
	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901)
	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231)
	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:767)
	at org.testng.TestRunner.run(TestRunner.java:617)
	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$2.call(ThreadUtil.java:64)
	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:895)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
	at java.lang.Thread.run(Thread.java:680)
Caused by: java.util.concurrent.ExecutionException: org.jclouds.http.HttpResponseException: command: POST https://services.enterprisecloud.terremark.com/api/v0.8b-ext2.8/vapp/10103167/power/action/powerOff HTTP/1.1 failed with response: HTTP/1.1 500 Internal Server Error; content: [<html version="-//W3C//DTD XHTML 2.0//EN" xml:lang="en" xsi:schemaLocation="http://www.w3.org/1999/xhtml http://www.w3.org/MarkUp/SCHEMA/xhtml2.xsd" xmlns="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><HEAD><TITLE>Request Error</TITLE></HEAD><BODY><DIV id="content"><P class="heading1"><B>Error Status Code:</B> 'InternalServerError'</P><P><B>Details: </B>Cannot power off te-block-1392 because it is already powered off.</P><!-- Padding xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx--></DIV></BODY></html>]
	at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:222)
	at java.util.concurrent.FutureTask.get(FutureTask.java:83)
	at org.jclouds.concurrent.FutureIterables$1.run(FutureIterables.java:127)
	... 3 more
Caused by: org.jclouds.http.HttpResponseException: command: POST https://services.enterprisecloud.terremark.com/api/v0.8b-ext2.8/vapp/10103167/power/action/powerOff HTTP/1.1 failed with response: HTTP/1.1 500 Internal Server Error; content: [<html version="-//W3C//DTD XHTML 2.0//EN" xml:lang="en" xsi:schemaLocation="http://www.w3.org/1999/xhtml http://www.w3.org/MarkUp/SCHEMA/xhtml2.xsd" xmlns="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><HEAD><TITLE>Request Error</TITLE></HEAD><BODY><DIV id="content"><P class="heading1"><B>Error Status Code:</B> 'InternalServerError'</P><P><B>Details: </B>Cannot power off te-block-1392 because it is already powered off.</P><!-- Padding xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx--></DIV></BODY></html>]
	at org.jclouds.trmk.vcloud_0_8.handlers.ParseTerremarkVCloudErrorFromHttpResponse.handleError(ParseTerremarkVCloudErrorFromHttpResponse.java:58)
	at org.jclouds.http.handlers.DelegatingErrorHandler.handleError(DelegatingErrorHandler.java:71)
	at org.jclouds.http.internal.BaseHttpCommandExecutorService.shouldContinue(BaseHttpCommandExecutorService.java:182)
	at org.jclouds.http.internal.BaseHttpCommandExecutorService.invoke(BaseHttpCommandExecutorService.java:152)
	at org.jclouds.rest.internal.InvokeSyncToAsyncHttpMethod.invoke(InvokeSyncToAsyncHttpMethod.java:133)
	at org.jclouds.rest.internal.InvokeSyncToAsyncHttpMethod.apply(InvokeSyncToAsyncHttpMethod.java:99)
	at org.jclouds.rest.internal.InvokeSyncToAsyncHttpMethod.apply(InvokeSyncToAsyncHttpMethod.java:60)
	at org.jclouds.rest.internal.DelegatesToInvocationFunction.handle(DelegatesToInvocationFunction.java:159)
	at org.jclouds.rest.internal.DelegatesToInvocationFunction.invoke(DelegatesToInvocationFunction.java:126)
	at com.sun.proxy.$Proxy66.powerOffVApp(Unknown Source)
	at org.jclouds.trmk.vcloud_0_8.compute.TerremarkVCloudComputeClient.powerOffAndWait(TerremarkVCloudComputeClient.java:296)
	at org.jclouds.trmk.vcloud_0_8.compute.TerremarkVCloudComputeClient.stop(TerremarkVCloudComputeClient.java:280)
	at org.jclouds.trmk.vcloud_0_8.compute.strategy.TerremarkVCloudDestroyNodeStrategy.destroyNode(TerremarkVCloudDestroyNodeStrategy.java:50)
	at org.jclouds.compute.internal.BaseComputeService$2.apply(BaseComputeService.java:295)
	at org.jclouds.compute.internal.BaseComputeService$2.apply(BaseComputeService.java:292)
	at org.jclouds.util.Predicates2$RetryablePredicate.apply(Predicates2.java:113)
	at org.jclouds.compute.internal.BaseComputeService.doDestroyNode(BaseComputeService.java:306)
	at org.jclouds.compute.internal.BaseComputeService$1$1.call(BaseComputeService.java:266)
	at org.jclouds.compute.internal.BaseComputeService$1$1.call(BaseComputeService.java:264)
	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:895)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
	at java.lang.Thread.run(Thread.java:680)
	at java.lang.Thread.getStackTrace(Thread.java:1503)
	at org.jclouds.compute.internal.BaseComputeService$1.apply(BaseComputeService.java:264)
	at org.jclouds.compute.internal.BaseComputeService$1.apply(BaseComputeService.java:259)
	at org.jclouds.concurrent.FutureIterables.transformParallel(FutureIterables.java:86)
	at org.jclouds.concurrent.FutureIterables.transformParallel(FutureIterables.java:74)
	at org.jclouds.compute.internal.BaseComputeService.destroyNodesMatching(BaseComputeService.java:258)
	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.DelegatingInvocationHandler.invoke(DelegatingInvocationHandler.java:37)
	at com.sun.proxy.$Proxy70.destroyNodesMatching(Unknown Source)
	at org.jclouds.compute.internal.BaseComputeServiceLiveTest.testOptionToNotBlock(BaseComputeServiceLiveTest.java:782)
	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:714)
	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901)
	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231)
	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:767)
	at org.testng.TestRunner.run(TestRunner.java:617)
	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$2.call(ThreadUtil.java:64)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
	... 3 more
Caused by: java.util.concurrent.ExecutionException: org.jclouds.http.HttpResponseException: command: POST https://services.enterprisecloud.terremark.com/api/v0.8b-ext2.8/vapp/10103167/power/action/powerOff HTTP/1.1 failed with response: HTTP/1.1 500 Internal Server Error; content: [<html version="-//W3C//DTD XHTML 2.0//EN" xml:lang="en" xsi:schemaLocation="http://www.w3.org/1999/xhtml http://www.w3.org/MarkUp/SCHEMA/xhtml2.xsd" xmlns="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><HEAD><TITLE>Request Error</TITLE></HEAD><BODY><DIV id="content"><P class="heading1"><B>Error Status Code:</B> 'InternalServerError'</P><P><B>Details: </B>Cannot power off te-block-1392 because it is already powered off.</P><!-- Padding xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx--></DIV></BODY></html>]
	at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:222)
	at java.util.concurrent.FutureTask.get(FutureTask.java:83)
	at org.jclouds.concurrent.FutureIterables$1.run(FutureIterables.java:127)
	... 3 more
Caused by: org.jclouds.http.HttpResponseException: command: POST https://services.enterprisecloud.terremark.com/api/v0.8b-ext2.8/vapp/10103167/power/action/powerOff HTTP/1.1 failed with response: HTTP/1.1 500 Internal Server Error; content: [<html version="-//W3C//DTD XHTML 2.0//EN" xml:lang="en" xsi:schemaLocation="http://www.w3.org/1999/xhtml http://www.w3.org/MarkUp/SCHEMA/xhtml2.xsd" xmlns="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><HEAD><TITLE>Request Error</TITLE></HEAD><BODY><DIV id="content"><P class="heading1"><B>Error Status Code:</B> 'InternalServerError'</P><P><B>Details: </B>Cannot power off te-block-1392 because it is already powered off.</P><!-- Padding xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx--></DIV></BODY></html>]
	at org.jclouds.trmk.vcloud_0_8.handlers.ParseTerremarkVCloudErrorFromHttpResponse.handleError(ParseTerremarkVCloudErrorFromHttpResponse.java:58)
	at org.jclouds.http.handlers.DelegatingErrorHandler.handleError(DelegatingErrorHandler.java:71)
	at org.jclouds.http.internal.BaseHttpCommandExecutorService.shouldContinue(BaseHttpCommandExecutorService.java:182)
	at org.jclouds.http.internal.BaseHttpCommandExecutorService.invoke(BaseHttpCommandExecutorService.java:152)
	at org.jclouds.rest.internal.InvokeSyncToAsyncHttpMethod.invoke(InvokeSyncToAsyncHttpMethod.java:133)
	at org.jclouds.rest.internal.InvokeSyncToAsyncHttpMethod.apply(InvokeSyncToAsyncHttpMethod.java:99)
	at org.jclouds.rest.internal.InvokeSyncToAsyncHttpMethod.apply(InvokeSyncToAsyncHttpMethod.java:60)
	at org.jclouds.rest.internal.DelegatesToInvocationFunction.handle(DelegatesToInvocationFunction.java:159)
	at org.jclouds.rest.internal.DelegatesToInvocationFunction.invoke(DelegatesToInvocationFunction.java:126)
	at com.sun.proxy.$Proxy66.powerOffVApp(Unknown Source)
	at org.jclouds.trmk.vcloud_0_8.compute.TerremarkVCloudComputeClient.powerOffAndWait(TerremarkVCloudComputeClient.java:296)
	at org.jclouds.trmk.vcloud_0_8.compute.TerremarkVCloudComputeClient.stop(TerremarkVCloudComputeClient.java:280)
	at org.jclouds.trmk.vcloud_0_8.compute.strategy.TerremarkVCloudDestroyNodeStrategy.destroyNode(TerremarkVCloudDestroyNodeStrategy.java:50)
	at org.jclouds.compute.internal.BaseComputeService$2.apply(BaseComputeService.java:295)
	at org.jclouds.compute.internal.BaseComputeService$2.apply(BaseComputeService.java:292)
	at org.jclouds.util.Predicates2$RetryablePredicate.apply(Predicates2.java:113)
	at org.jclouds.compute.internal.BaseComputeService.doDestroyNode(BaseComputeService.java:306)
	at org.jclouds.compute.internal.BaseComputeService$1$1.call(BaseComputeService.java:266)
	at org.jclouds.compute.internal.BaseComputeService$1$1.call(BaseComputeService.java:264)
	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:895)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
	at java.lang.Thread.run(Thread.java:680)
	at java.lang.Thread.getStackTrace(Thread.java:1503)
	at org.jclouds.compute.internal.BaseComputeService$1.apply(BaseComputeService.java:264)
	at org.jclouds.compute.internal.BaseComputeService$1.apply(BaseComputeService.java:259)
	at org.jclouds.concurrent.FutureIterables.transformParallel(FutureIterables.java:86)
	at org.jclouds.concurrent.FutureIterables.transformParallel(FutureIterables.java:74)
	at org.jclouds.compute.internal.BaseComputeService.destroyNodesMatching(BaseComputeService.java:258)
	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.DelegatingInvocationHandler.invoke(DelegatingInvocationHandler.java:37)
	at com.sun.proxy.$Proxy70.destroyNodesMatching(Unknown Source)
	at org.jclouds.compute.internal.BaseComputeServiceLiveTest.testOptionToNotBlock(BaseComputeServiceLiveTest.java:782)
	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:714)
	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901)
	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231)
	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:767)
	at org.testng.TestRunner.run(TestRunner.java:617)
	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$2.call(ThreadUtil.java:64)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
	... 3 more

testCreateAndRunAService(org.jclouds.trmk.ecloud.compute.TerremarkECloudComputeServiceLiveTest)  Time elapsed: 326.985 sec  <<< FAILURE!
org.jclouds.compute.RunNodesException: error running 1 node group(tes) location(https://services.enterprisecloud.terremark.com/api/v0.8b-ext2.8/vdc/691) image(https://services.enterprisecloud.terremark.com/api/v0.8b-ext2.8/vappTemplate/351) size(cpu=1,ram=512,disk=10) options(TerremarkVCloudTemplateOptions [keyPair=b0:e8:09:d4:bf:80:59:99:5c:67:1e:81:20:0f:9e:7a, noKeyPair=false, inboundPorts=[22, 8080], privateKey=false, publicKey=false, runScript=false, port:seconds=22:300, userMetadata: {test=tes}])
Execution failures:
1) ExecutionException on tes-1962:
java.util.concurrent.ExecutionException: org.jclouds.http.HttpResponseException: command: POST https://services.enterprisecloud.terremark.com/api/v0.8b-ext2.8/extensions/vdc/691/publicIps HTTP/1.1 failed with response: HTTP/1.1 500 Internal Server Error; content: [<html version="-//W3C//DTD XHTML 2.0//EN" xml:lang="en" xsi:schemaLocation="http://www.w3.org/1999/xhtml http://www.w3.org/MarkUp/SCHEMA/xhtml2.xsd" xmlns="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><HEAD><TITLE>Request Error</TITLE></HEAD><BODY><DIV id="content"><P class="heading1"><B>Error Status Code:</B> 'InternalServerError'</P><P><B>Details: </B>There are no additional Public IPs available.</P><!-- Padding xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx--></DIV></BODY></html>]
	at com.google.common.util.concurrent.AbstractFuture$Sync.getValue(AbstractFuture.java:306)
	at com.google.common.util.concurrent.AbstractFuture$Sync.get(AbstractFuture.java:293)
	at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:116)
	at org.jclouds.concurrent.FutureIterables$1.run(FutureIterables.java:127)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
	at java.lang.Thread.run(Thread.java:680)
Caused by: org.jclouds.http.HttpResponseException: command: POST https://services.enterprisecloud.terremark.com/api/v0.8b-ext2.8/extensions/vdc/691/publicIps HTTP/1.1 failed with response: HTTP/1.1 500 Internal Server Error; content: [<html version="-//W3C//DTD XHTML 2.0//EN" xml:lang="en" xsi:schemaLocation="http://www.w3.org/1999/xhtml http://www.w3.org/MarkUp/SCHEMA/xhtml2.xsd" xmlns="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><HEAD><TITLE>Request Error</TITLE></HEAD><BODY><DIV id="content"><P class="heading1"><B>Error Status Code:</B> 'InternalServerError'</P><P><B>Details: </B>There are no additional Public IPs available.</P><!-- Padding xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx--></DIV></BODY></html>]
	at org.jclouds.trmk.vcloud_0_8.handlers.ParseTerremarkVCloudErrorFromHttpResponse.handleError(ParseTerremarkVCloudErrorFromHttpResponse.java:58)
	at org.jclouds.http.handlers.DelegatingErrorHandler.handleError(DelegatingErrorHandler.java:71)
	at org.jclouds.http.internal.BaseHttpCommandExecutorService.shouldContinue(BaseHttpCommandExecutorService.java:182)
	at org.jclouds.http.internal.BaseHttpCommandExecutorService.invoke(BaseHttpCommandExecutorService.java:152)
	at org.jclouds.rest.internal.InvokeSyncToAsyncHttpMethod.invoke(InvokeSyncToAsyncHttpMethod.java:133)
	at org.jclouds.rest.internal.InvokeSyncToAsyncHttpMethod.apply(InvokeSyncToAsyncHttpMethod.java:99)
	at org.jclouds.rest.internal.InvokeSyncToAsyncHttpMethod.apply(InvokeSyncToAsyncHttpMethod.java:60)
	at org.jclouds.rest.internal.DelegatesToInvocationFunction.handle(DelegatesToInvocationFunction.java:159)
	at org.jclouds.rest.internal.DelegatesToInvocationFunction.invoke(DelegatesToInvocationFunction.java:126)
	at com.sun.proxy.$Proxy66.activatePublicIpInVDC(Unknown Source)
	at org.jclouds.trmk.ecloud.suppliers.TerremarkECloudInternetServiceAndPublicIpAddressSupplier.getNewInternetServiceAndIp(TerremarkECloudInternetServiceAndPublicIpAddressSupplier.java:68)
	at org.jclouds.trmk.vcloud_0_8.compute.TerremarkVCloudComputeClient.createPublicAddressMappedToPorts(TerremarkVCloudComputeClient.java:192)
	at org.jclouds.trmk.vcloud_0_8.compute.TerremarkVCloudComputeClient.startAndReturnCredentials(TerremarkVCloudComputeClient.java:131)
	at org.jclouds.trmk.vcloud_0_8.compute.strategy.StartVAppWithGroupEncodedIntoName.createNodeWithGroupEncodedIntoName(StartVAppWithGroupEncodedIntoName.java:68)
	at org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet$AddNode.call(CreateNodesWithGroupEncodedIntoNameThenAddToSet.java:82)
	at org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet$AddNode.call(CreateNodesWithGroupEncodedIntoNameThenAddToSet.java:66)
	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:895)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
	at java.lang.Thread.run(Thread.java:680)
	at java.lang.Thread.getStackTrace(Thread.java:1503)
	at org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet.createNodeInGroupWithNameAndTemplate(CreateNodesWithGroupEncodedIntoNameThenAddToSet.java:170)
	at org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet.execute(CreateNodesWithGroupEncodedIntoNameThenAddToSet.java:125)
	at org.jclouds.trmk.vcloud_0_8.compute.strategy.TerremarkEncodeTagIntoNameRunNodesAndAddToSetStrategy.execute(TerremarkEncodeTagIntoNameRunNodesAndAddToSetStrategy.java:77)
	at org.jclouds.compute.internal.BaseComputeService.createNodesInGroup(BaseComputeService.java:214)
	at org.jclouds.compute.internal.BaseComputeService.createNodesInGroup(BaseComputeService.java:234)
	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.DelegatingInvocationHandler.invoke(DelegatingInvocationHandler.java:37)
	at com.sun.proxy.$Proxy70.createNodesInGroup(Unknown Source)
	at org.jclouds.compute.internal.BaseComputeServiceLiveTest.createAndRunAServiceInGroup(BaseComputeServiceLiveTest.java:673)
	at org.jclouds.compute.internal.BaseComputeServiceLiveTest.testCreateAndRunAService(BaseComputeServiceLiveTest.java:660)
	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:714)
	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901)
	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231)
	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:767)
	at org.testng.TestRunner.run(TestRunner.java:617)
	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$2.call(ThreadUtil.java:64)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
	... 3 more
1 error[s]
Node failures:
0 error[s]
	at org.jclouds.compute.internal.BaseComputeService.createNodesInGroup(BaseComputeService.java:226)
	at org.jclouds.compute.internal.BaseComputeService.createNodesInGroup(BaseComputeService.java:234)
	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.DelegatingInvocationHandler.invoke(DelegatingInvocationHandler.java:37)
	at com.sun.proxy.$Proxy70.createNodesInGroup(Unknown Source)
	at org.jclouds.compute.internal.BaseComputeServiceLiveTest.createAndRunAServiceInGroup(BaseComputeServiceLiveTest.java:673)
	at org.jclouds.compute.internal.BaseComputeServiceLiveTest.testCreateAndRunAService(BaseComputeServiceLiveTest.java:660)
	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:714)
	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901)
	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231)
	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:767)
	at org.testng.TestRunner.run(TestRunner.java:617)
	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$2.call(ThreadUtil.java:64)
	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:895)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
	at java.lang.Thread.run(Thread.java:680)
Caused by: org.jclouds.http.HttpResponseException: command: POST https://services.enterprisecloud.terremark.com/api/v0.8b-ext2.8/extensions/vdc/691/publicIps HTTP/1.1 failed with response: HTTP/1.1 500 Internal Server Error; content: [<html version="-//W3C//DTD XHTML 2.0//EN" xml:lang="en" xsi:schemaLocation="http://www.w3.org/1999/xhtml http://www.w3.org/MarkUp/SCHEMA/xhtml2.xsd" xmlns="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><HEAD><TITLE>Request Error</TITLE></HEAD><BODY><DIV id="content"><P class="heading1"><B>Error Status Code:</B> 'InternalServerError'</P><P><B>Details: </B>There are no additional Public IPs available.</P><!-- Padding xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx--></DIV></BODY></html>]
	at org.jclouds.trmk.vcloud_0_8.handlers.ParseTerremarkVCloudErrorFromHttpResponse.handleError(ParseTerremarkVCloudErrorFromHttpResponse.java:58)
	at org.jclouds.http.handlers.DelegatingErrorHandler.handleError(DelegatingErrorHandler.java:71)
	at org.jclouds.http.internal.BaseHttpCommandExecutorService.shouldContinue(BaseHttpCommandExecutorService.java:182)
	at org.jclouds.http.internal.BaseHttpCommandExecutorService.invoke(BaseHttpCommandExecutorService.java:152)
	at org.jclouds.rest.internal.InvokeSyncToAsyncHttpMethod.invoke(InvokeSyncToAsyncHttpMethod.java:133)
	at org.jclouds.rest.internal.InvokeSyncToAsyncHttpMethod.apply(InvokeSyncToAsyncHttpMethod.java:99)
	at org.jclouds.rest.internal.InvokeSyncToAsyncHttpMethod.apply(InvokeSyncToAsyncHttpMethod.java:60)
	at org.jclouds.rest.internal.DelegatesToInvocationFunction.handle(DelegatesToInvocationFunction.java:159)
	at org.jclouds.rest.internal.DelegatesToInvocationFunction.invoke(DelegatesToInvocationFunction.java:126)
	at com.sun.proxy.$Proxy66.activatePublicIpInVDC(Unknown Source)
	at org.jclouds.trmk.ecloud.suppliers.TerremarkECloudInternetServiceAndPublicIpAddressSupplier.getNewInternetServiceAndIp(TerremarkECloudInternetServiceAndPublicIpAddressSupplier.java:68)
	at org.jclouds.trmk.vcloud_0_8.compute.TerremarkVCloudComputeClient.createPublicAddressMappedToPorts(TerremarkVCloudComputeClient.java:192)
	at org.jclouds.trmk.vcloud_0_8.compute.TerremarkVCloudComputeClient.startAndReturnCredentials(TerremarkVCloudComputeClient.java:131)
	at org.jclouds.trmk.vcloud_0_8.compute.strategy.StartVAppWithGroupEncodedIntoName.createNodeWithGroupEncodedIntoName(StartVAppWithGroupEncodedIntoName.java:68)
	at org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet$AddNode.call(CreateNodesWithGroupEncodedIntoNameThenAddToSet.java:82)
	at org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet$AddNode.call(CreateNodesWithGroupEncodedIntoNameThenAddToSet.java:66)
	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:895)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
	at java.lang.Thread.run(Thread.java:680)
	at java.lang.Thread.getStackTrace(Thread.java:1503)
	at org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet.createNodeInGroupWithNameAndTemplate(CreateNodesWithGroupEncodedIntoNameThenAddToSet.java:170)
	at org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet.execute(CreateNodesWithGroupEncodedIntoNameThenAddToSet.java:125)
	at org.jclouds.trmk.vcloud_0_8.compute.strategy.TerremarkEncodeTagIntoNameRunNodesAndAddToSetStrategy.execute(TerremarkEncodeTagIntoNameRunNodesAndAddToSetStrategy.java:77)
	at org.jclouds.compute.internal.BaseComputeService.createNodesInGroup(BaseComputeService.java:214)
	at org.jclouds.compute.internal.BaseComputeService.createNodesInGroup(BaseComputeService.java:234)
	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.DelegatingInvocationHandler.invoke(DelegatingInvocationHandler.java:37)
	at com.sun.proxy.$Proxy70.createNodesInGroup(Unknown Source)
	at org.jclouds.compute.internal.BaseComputeServiceLiveTest.createAndRunAServiceInGroup(BaseComputeServiceLiveTest.java:673)
	at org.jclouds.compute.internal.BaseComputeServiceLiveTest.testCreateAndRunAService(BaseComputeServiceLiveTest.java:660)
	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:714)
	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901)
	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231)
	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:767)
	at org.testng.TestRunner.run(TestRunner.java:617)
	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$2.call(ThreadUtil.java:64)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
	... 3 more
1 error[s]
Node failures:
0 error[s]
	at org.jclouds.compute.internal.BaseComputeService.createNodesInGroup(BaseComputeService.java:226)
	at org.jclouds.compute.internal.BaseComputeService.createNodesInGroup(BaseComputeService.java:234)
	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.DelegatingInvocationHandler.invoke(DelegatingInvocationHandler.java:37)
	at com.sun.proxy.$Proxy70.createNodesInGroup(Unknown Source)
	at org.jclouds.compute.internal.BaseComputeServiceLiveTest.createAndRunAServiceInGroup(BaseComputeServiceLiveTest.java:673)
	at org.jclouds.compute.internal.BaseComputeServiceLiveTest.testCreateAndRunAService(BaseComputeServiceLiveTest.java:660)
	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:714)
	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901)
	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231)
	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:767)
	at org.testng.TestRunner.run(TestRunner.java:617)
	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$2.call(ThreadUtil.java:64)
	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:895)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
	at java.lang.Thread.run(Thread.java:680)

testAScriptExecutionAfterBootWithBasicTemplate(org.jclouds.trmk.ecloud.compute.TerremarkECloudComputeServiceLiveTest)  Time elapsed: 308.093 sec  <<< FAILURE!
org.jclouds.compute.RunNodesException: error running 1 node group(ter) location(https://services.enterprisecloud.terremark.com/api/v0.8b-ext2.8/vdc/691) image(https://services.enterprisecloud.terremark.com/api/v0.8b-ext2.8/vappTemplate/351) size(cpu=1,ram=512,disk=10) options(TerremarkVCloudTemplateOptions [keyPair=b5:eb:d2:31:4d:8a:28:9b:e5:bf:53:62:86:02:2b:b3, noKeyPair=false, inboundPorts=[22], privateKey=false, publicKey=false, runScript=false, port:seconds=22:120, userMetadata: {}])
Execution failures:
1) ExecutionException on ter-3916:
java.util.concurrent.ExecutionException: org.jclouds.http.HttpResponseException: command: POST https://services.enterprisecloud.terremark.com/api/v0.8b-ext2.8/extensions/vdc/691/publicIps HTTP/1.1 failed with response: HTTP/1.1 500 Internal Server Error; content: [<html version="-//W3C//DTD XHTML 2.0//EN" xml:lang="en" xsi:schemaLocation="http://www.w3.org/1999/xhtml http://www.w3.org/MarkUp/SCHEMA/xhtml2.xsd" xmlns="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><HEAD><TITLE>Request Error</TITLE></HEAD><BODY><DIV id="content"><P class="heading1"><B>Error Status Code:</B> 'InternalServerError'</P><P><B>Details: </B>There are no additional Public IPs available.</P><!-- Padding xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx--></DIV></BODY></html>]
	at com.google.common.util.concurrent.AbstractFuture$Sync.getValue(AbstractFuture.java:306)
	at com.google.common.util.concurrent.AbstractFuture$Sync.get(AbstractFuture.java:293)
	at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:116)
	at org.jclouds.concurrent.FutureIterables$1.run(FutureIterables.java:127)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
	at java.lang.Thread.run(Thread.java:680)
Caused by: org.jclouds.http.HttpResponseException: command: POST https://services.enterprisecloud.terremark.com/api/v0.8b-ext2.8/extensions/vdc/691/publicIps HTTP/1.1 failed with response: HTTP/1.1 500 Internal Server Error; content: [<html version="-//W3C//DTD XHTML 2.0//EN" xml:lang="en" xsi:schemaLocation="http://www.w3.org/1999/xhtml http://www.w3.org/MarkUp/SCHEMA/xhtml2.xsd" xmlns="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><HEAD><TITLE>Request Error</TITLE></HEAD><BODY><DIV id="content"><P class="heading1"><B>Error Status Code:</B> 'InternalServerError'</P><P><B>Details: </B>There are no additional Public IPs available.</P><!-- Padding xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx--></DIV></BODY></html>]
	at org.jclouds.trmk.vcloud_0_8.handlers.ParseTerremarkVCloudErrorFromHttpResponse.handleError(ParseTerremarkVCloudErrorFromHttpResponse.java:58)
	at org.jclouds.http.handlers.DelegatingErrorHandler.handleError(DelegatingErrorHandler.java:71)
	at org.jclouds.http.internal.BaseHttpCommandExecutorService.shouldContinue(BaseHttpCommandExecutorService.java:182)
	at org.jclouds.http.internal.BaseHttpCommandExecutorService.invoke(BaseHttpCommandExecutorService.java:152)
	at org.jclouds.rest.internal.InvokeSyncToAsyncHttpMethod.invoke(InvokeSyncToAsyncHttpMethod.java:133)
	at org.jclouds.rest.internal.InvokeSyncToAsyncHttpMethod.apply(InvokeSyncToAsyncHttpMethod.java:99)
	at org.jclouds.rest.internal.InvokeSyncToAsyncHttpMethod.apply(InvokeSyncToAsyncHttpMethod.java:60)
	at org.jclouds.rest.internal.DelegatesToInvocationFunction.handle(DelegatesToInvocationFunction.java:159)
	at org.jclouds.rest.internal.DelegatesToInvocationFunction.invoke(DelegatesToInvocationFunction.java:126)
	at com.sun.proxy.$Proxy66.activatePublicIpInVDC(Unknown Source)
	at org.jclouds.trmk.ecloud.suppliers.TerremarkECloudInternetServiceAndPublicIpAddressSupplier.getNewInternetServiceAndIp(TerremarkECloudInternetServiceAndPublicIpAddressSupplier.java:68)
	at org.jclouds.trmk.vcloud_0_8.compute.TerremarkVCloudComputeClient.createPublicAddressMappedToPorts(TerremarkVCloudComputeClient.java:192)
	at org.jclouds.trmk.vcloud_0_8.compute.TerremarkVCloudComputeClient.startAndReturnCredentials(TerremarkVCloudComputeClient.java:131)
	at org.jclouds.trmk.vcloud_0_8.compute.strategy.StartVAppWithGroupEncodedIntoName.createNodeWithGroupEncodedIntoName(StartVAppWithGroupEncodedIntoName.java:68)
	at org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet$AddNode.call(CreateNodesWithGroupEncodedIntoNameThenAddToSet.java:82)
	at org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet$AddNode.call(CreateNodesWithGroupEncodedIntoNameThenAddToSet.java:66)
	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:895)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
	at java.lang.Thread.run(Thread.java:680)
	at java.lang.Thread.getStackTrace(Thread.java:1503)
	at org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet.createNodeInGroupWithNameAndTemplate(CreateNodesWithGroupEncodedIntoNameThenAddToSet.java:170)
	at org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet.execute(CreateNodesWithGroupEncodedIntoNameThenAddToSet.java:125)
	at org.jclouds.trmk.vcloud_0_8.compute.strategy.TerremarkEncodeTagIntoNameRunNodesAndAddToSetStrategy.execute(TerremarkEncodeTagIntoNameRunNodesAndAddToSetStrategy.java:77)
	at org.jclouds.compute.internal.BaseComputeService.createNodesInGroup(BaseComputeService.java:214)
	at org.jclouds.compute.internal.BaseComputeService.createNodesInGroup(BaseComputeService.java:234)
	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.DelegatingInvocationHandler.invoke(DelegatingInvocationHandler.java:37)
	at com.sun.proxy.$Proxy70.createNodesInGroup(Unknown Source)
	at org.jclouds.compute.internal.BaseComputeServiceLiveTest.testAScriptExecutionAfterBootWithBasicTemplate(BaseComputeServiceLiveTest.java:224)
	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:714)
	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901)
	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231)
	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:767)
	at org.testng.TestRunner.run(TestRunner.java:617)
	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$2.call(ThreadUtil.java:64)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
	... 3 more
1 error[s]
Node failures:
0 error[s]
	at org.jclouds.compute.internal.BaseComputeService.createNodesInGroup(BaseComputeService.java:226)
	at org.jclouds.compute.internal.BaseComputeService.createNodesInGroup(BaseComputeService.java:234)
	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.DelegatingInvocationHandler.invoke(DelegatingInvocationHandler.java:37)
	at com.sun.proxy.$Proxy70.createNodesInGroup(Unknown Source)
	at org.jclouds.compute.internal.BaseComputeServiceLiveTest.testAScriptExecutionAfterBootWithBasicTemplate(BaseComputeServiceLiveTest.java:224)
	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:714)
	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901)
	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231)
	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:767)
	at org.testng.TestRunner.run(TestRunner.java:617)
	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$2.call(ThreadUtil.java:64)
	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:895)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
	at java.lang.Thread.run(Thread.java:680)
Caused by: org.jclouds.http.HttpResponseException: command: POST https://services.enterprisecloud.terremark.com/api/v0.8b-ext2.8/extensions/vdc/691/publicIps HTTP/1.1 failed with response: HTTP/1.1 500 Internal Server Error; content: [<html version="-//W3C//DTD XHTML 2.0//EN" xml:lang="en" xsi:schemaLocation="http://www.w3.org/1999/xhtml http://www.w3.org/MarkUp/SCHEMA/xhtml2.xsd" xmlns="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><HEAD><TITLE>Request Error</TITLE></HEAD><BODY><DIV id="content"><P class="heading1"><B>Error Status Code:</B> 'InternalServerError'</P><P><B>Details: </B>There are no additional Public IPs available.</P><!-- Padding xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx--></DIV></BODY></html>]
	at org.jclouds.trmk.vcloud_0_8.handlers.ParseTerremarkVCloudErrorFromHttpResponse.handleError(ParseTerremarkVCloudErrorFromHttpResponse.java:58)
	at org.jclouds.http.handlers.DelegatingErrorHandler.handleError(DelegatingErrorHandler.java:71)
	at org.jclouds.http.internal.BaseHttpCommandExecutorService.shouldContinue(BaseHttpCommandExecutorService.java:182)
	at org.jclouds.http.internal.BaseHttpCommandExecutorService.invoke(BaseHttpCommandExecutorService.java:152)
	at org.jclouds.rest.internal.InvokeSyncToAsyncHttpMethod.invoke(InvokeSyncToAsyncHttpMethod.java:133)
	at org.jclouds.rest.internal.InvokeSyncToAsyncHttpMethod.apply(InvokeSyncToAsyncHttpMethod.java:99)
	at org.jclouds.rest.internal.InvokeSyncToAsyncHttpMethod.apply(InvokeSyncToAsyncHttpMethod.java:60)
	at org.jclouds.rest.internal.DelegatesToInvocationFunction.handle(DelegatesToInvocationFunction.java:159)
	at org.jclouds.rest.internal.DelegatesToInvocationFunction.invoke(DelegatesToInvocationFunction.java:126)
	at com.sun.proxy.$Proxy66.activatePublicIpInVDC(Unknown Source)
	at org.jclouds.trmk.ecloud.suppliers.TerremarkECloudInternetServiceAndPublicIpAddressSupplier.getNewInternetServiceAndIp(TerremarkECloudInternetServiceAndPublicIpAddressSupplier.java:68)
	at org.jclouds.trmk.vcloud_0_8.compute.TerremarkVCloudComputeClient.createPublicAddressMappedToPorts(TerremarkVCloudComputeClient.java:192)
	at org.jclouds.trmk.vcloud_0_8.compute.TerremarkVCloudComputeClient.startAndReturnCredentials(TerremarkVCloudComputeClient.java:131)
	at org.jclouds.trmk.vcloud_0_8.compute.strategy.StartVAppWithGroupEncodedIntoName.createNodeWithGroupEncodedIntoName(StartVAppWithGroupEncodedIntoName.java:68)
	at org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet$AddNode.call(CreateNodesWithGroupEncodedIntoNameThenAddToSet.java:82)
	at org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet$AddNode.call(CreateNodesWithGroupEncodedIntoNameThenAddToSet.java:66)
	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:895)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
	at java.lang.Thread.run(Thread.java:680)
	at java.lang.Thread.getStackTrace(Thread.java:1503)
	at org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet.createNodeInGroupWithNameAndTemplate(CreateNodesWithGroupEncodedIntoNameThenAddToSet.java:170)
	at org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet.execute(CreateNodesWithGroupEncodedIntoNameThenAddToSet.java:125)
	at org.jclouds.trmk.vcloud_0_8.compute.strategy.TerremarkEncodeTagIntoNameRunNodesAndAddToSetStrategy.execute(TerremarkEncodeTagIntoNameRunNodesAndAddToSetStrategy.java:77)
	at org.jclouds.compute.internal.BaseComputeService.createNodesInGroup(BaseComputeService.java:214)
	at org.jclouds.compute.internal.BaseComputeService.createNodesInGroup(BaseComputeService.java:234)
	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.DelegatingInvocationHandler.invoke(DelegatingInvocationHandler.java:37)
	at com.sun.proxy.$Proxy70.createNodesInGroup(Unknown Source)
	at org.jclouds.compute.internal.BaseComputeServiceLiveTest.testAScriptExecutionAfterBootWithBasicTemplate(BaseComputeServiceLiveTest.java:224)
	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:714)
	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901)
	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231)
	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:767)
	at org.testng.TestRunner.run(TestRunner.java:617)
	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$2.call(ThreadUtil.java:64)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
	... 3 more
1 error[s]
Node failures:
0 error[s]
	at org.jclouds.compute.internal.BaseComputeService.createNodesInGroup(BaseComputeService.java:226)
	at org.jclouds.compute.internal.BaseComputeService.createNodesInGroup(BaseComputeService.java:234)
	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.DelegatingInvocationHandler.invoke(DelegatingInvocationHandler.java:37)
	at com.sun.proxy.$Proxy70.createNodesInGroup(Unknown Source)
	at org.jclouds.compute.internal.BaseComputeServiceLiveTest.testAScriptExecutionAfterBootWithBasicTemplate(BaseComputeServiceLiveTest.java:224)
	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:714)
	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901)
	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231)
	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:767)
	at org.testng.TestRunner.run(TestRunner.java:617)
	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$2.call(ThreadUtil.java:64)
	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:895)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
	at java.lang.Thread.run(Thread.java:680)

testConcurrentUseOfComputeServiceToCreateNodes(org.jclouds.trmk.ecloud.compute.TerremarkECloudComputeServiceLiveTest)  Time elapsed: 519.764 sec  <<< FAILURE!
java.util.concurrent.ExecutionException: org.jclouds.compute.RunNodesException: error running 1 node group(twin1) location(https://services.enterprisecloud.terremark.com/api/v0.8b-ext2.8/vdc/691) image(https://services.enterprisecloud.terremark.com/api/v0.8b-ext2.8/vappTemplate/351) size(cpu=1,ram=512,disk=10) options(TerremarkVCloudTemplateOptions [keyPair=d3:f9:ec:f6:b3:58:4b:a6:00:3a:68:58:d3:cf:5b:34, noKeyPair=false, inboundPorts=[22, 8080], privateKey=false, publicKey=false, runScript=false, port:seconds=22:301, userMetadata: {}])
Execution failures:
1) ExecutionException on twin1-2647:
java.util.concurrent.ExecutionException: org.jclouds.http.HttpResponseException: command: POST https://services.enterprisecloud.terremark.com/api/v0.8b-ext2.8/extensions/vdc/691/publicIps HTTP/1.1 failed with response: HTTP/1.1 500 Internal Server Error; content: [<html version="-//W3C//DTD XHTML 2.0//EN" xml:lang="en" xsi:schemaLocation="http://www.w3.org/1999/xhtml http://www.w3.org/MarkUp/SCHEMA/xhtml2.xsd" xmlns="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><HEAD><TITLE>Request Error</TITLE></HEAD><BODY><DIV id="content"><P class="heading1"><B>Error Status Code:</B> 'InternalServerError'</P><P><B>Details: </B>There are no additional Public IPs available.</P><!-- Padding xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx--></DIV></BODY></html>]
	at com.google.common.util.concurrent.AbstractFuture$Sync.getValue(AbstractFuture.java:306)
	at com.google.common.util.concurrent.AbstractFuture$Sync.get(AbstractFuture.java:293)
	at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:116)
	at org.jclouds.concurrent.FutureIterables$1.run(FutureIterables.java:127)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
	at java.lang.Thread.run(Thread.java:680)
Caused by: org.jclouds.http.HttpResponseException: command: POST https://services.enterprisecloud.terremark.com/api/v0.8b-ext2.8/extensions/vdc/691/publicIps HTTP/1.1 failed with response: HTTP/1.1 500 Internal Server Error; content: [<html version="-//W3C//DTD XHTML 2.0//EN" xml:lang="en" xsi:schemaLocation="http://www.w3.org/1999/xhtml http://www.w3.org/MarkUp/SCHEMA/xhtml2.xsd" xmlns="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><HEAD><TITLE>Request Error</TITLE></HEAD><BODY><DIV id="content"><P class="heading1"><B>Error Status Code:</B> 'InternalServerError'</P><P><B>Details: </B>There are no additional Public IPs available.</P><!-- Padding xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx--></DIV></BODY></html>]
	at org.jclouds.trmk.vcloud_0_8.handlers.ParseTerremarkVCloudErrorFromHttpResponse.handleError(ParseTerremarkVCloudErrorFromHttpResponse.java:58)
	at org.jclouds.http.handlers.DelegatingErrorHandler.handleError(DelegatingErrorHandler.java:71)
	at org.jclouds.http.internal.BaseHttpCommandExecutorService.shouldContinue(BaseHttpCommandExecutorService.java:182)
	at org.jclouds.http.internal.BaseHttpCommandExecutorService.invoke(BaseHttpCommandExecutorService.java:152)
	at org.jclouds.rest.internal.InvokeSyncToAsyncHttpMethod.invoke(InvokeSyncToAsyncHttpMethod.java:133)
	at org.jclouds.rest.internal.InvokeSyncToAsyncHttpMethod.apply(InvokeSyncToAsyncHttpMethod.java:99)
	at org.jclouds.rest.internal.InvokeSyncToAsyncHttpMethod.apply(InvokeSyncToAsyncHttpMethod.java:60)
	at org.jclouds.rest.internal.DelegatesToInvocationFunction.handle(DelegatesToInvocationFunction.java:159)
	at org.jclouds.rest.internal.DelegatesToInvocationFunction.invoke(DelegatesToInvocationFunction.java:126)
	at com.sun.proxy.$Proxy66.activatePublicIpInVDC(Unknown Source)
	at org.jclouds.trmk.ecloud.suppliers.TerremarkECloudInternetServiceAndPublicIpAddressSupplier.getNewInternetServiceAndIp(TerremarkECloudInternetServiceAndPublicIpAddressSupplier.java:68)
	at org.jclouds.trmk.vcloud_0_8.compute.TerremarkVCloudComputeClient.createPublicAddressMappedToPorts(TerremarkVCloudComputeClient.java:192)
	at org.jclouds.trmk.vcloud_0_8.compute.TerremarkVCloudComputeClient.startAndReturnCredentials(TerremarkVCloudComputeClient.java:131)
	at org.jclouds.trmk.vcloud_0_8.compute.strategy.StartVAppWithGroupEncodedIntoName.createNodeWithGroupEncodedIntoName(StartVAppWithGroupEncodedIntoName.java:68)
	at org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet$AddNode.call(CreateNodesWithGroupEncodedIntoNameThenAddToSet.java:82)
	at org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet$AddNode.call(CreateNodesWithGroupEncodedIntoNameThenAddToSet.java:66)
	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:895)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
	at java.lang.Thread.run(Thread.java:680)
	at java.lang.Thread.getStackTrace(Thread.java:1503)
	at org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet.createNodeInGroupWithNameAndTemplate(CreateNodesWithGroupEncodedIntoNameThenAddToSet.java:170)
	at org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet.execute(CreateNodesWithGroupEncodedIntoNameThenAddToSet.java:125)
	at org.jclouds.trmk.vcloud_0_8.compute.strategy.TerremarkEncodeTagIntoNameRunNodesAndAddToSetStrategy.execute(TerremarkEncodeTagIntoNameRunNodesAndAddToSetStrategy.java:77)
	at org.jclouds.compute.internal.BaseComputeService.createNodesInGroup(BaseComputeService.java:214)
	at org.jclouds.compute.internal.BaseComputeService.createNodesInGroup(BaseComputeService.java:234)
	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.DelegatingInvocationHandler.invoke(DelegatingInvocationHandler.java:37)
	at com.sun.proxy.$Proxy70.createNodesInGroup(Unknown Source)
	at org.jclouds.compute.internal.BaseComputeServiceLiveTest$1.call(BaseComputeServiceLiveTest.java:438)
	at org.jclouds.compute.internal.BaseComputeServiceLiveTest$1.call(BaseComputeServiceLiveTest.java:436)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
	... 3 more
1 error[s]
Node failures:
0 error[s]
	at com.google.common.util.concurrent.AbstractFuture$Sync.getValue(AbstractFuture.java:306)
	at com.google.common.util.concurrent.AbstractFuture$Sync.get(AbstractFuture.java:279)
	at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:96)
	at org.jclouds.compute.internal.BaseComputeServiceLiveTest.testConcurrentUseOfComputeServiceToCreateNodes(BaseComputeServiceLiveTest.java:448)
	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:714)
	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901)
	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231)
	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:767)
	at org.testng.TestRunner.run(TestRunner.java:617)
	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$2.call(ThreadUtil.java:64)
	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:895)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
	at java.lang.Thread.run(Thread.java:680)
Caused by: org.jclouds.compute.RunNodesException: error running 1 node group(twin1) location(https://services.enterprisecloud.terremark.com/api/v0.8b-ext2.8/vdc/691) image(https://services.enterprisecloud.terremark.com/api/v0.8b-ext2.8/vappTemplate/351) size(cpu=1,ram=512,disk=10) options(TerremarkVCloudTemplateOptions [keyPair=d3:f9:ec:f6:b3:58:4b:a6:00:3a:68:58:d3:cf:5b:34, noKeyPair=false, inboundPorts=[22, 8080], privateKey=false, publicKey=false, runScript=false, port:seconds=22:301, userMetadata: {}])
Execution failures:
1) ExecutionException on twin1-2647:
java.util.concurrent.ExecutionException: org.jclouds.http.HttpResponseException: command: POST https://services.enterprisecloud.terremark.com/api/v0.8b-ext2.8/extensions/vdc/691/publicIps HTTP/1.1 failed with response: HTTP/1.1 500 Internal Server Error; content: [<html version="-//W3C//DTD XHTML 2.0//EN" xml:lang="en" xsi:schemaLocation="http://www.w3.org/1999/xhtml http://www.w3.org/MarkUp/SCHEMA/xhtml2.xsd" xmlns="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><HEAD><TITLE>Request Error</TITLE></HEAD><BODY><DIV id="content"><P class="heading1"><B>Error Status Code:</B> 'InternalServerError'</P><P><B>Details: </B>There are no additional Public IPs available.</P><!-- Padding xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx--></DIV></BODY></html>]
	at com.google.common.util.concurrent.AbstractFuture$Sync.getValue(AbstractFuture.java:306)
	at com.google.common.util.concurrent.AbstractFuture$Sync.get(AbstractFuture.java:293)
	at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:116)
	at org.jclouds.concurrent.FutureIterables$1.run(FutureIterables.java:127)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
	at java.lang.Thread.run(Thread.java:680)
Caused by: org.jclouds.http.HttpResponseException: command: POST https://services.enterprisecloud.terremark.com/api/v0.8b-ext2.8/extensions/vdc/691/publicIps HTTP/1.1 failed with response: HTTP/1.1 500 Internal Server Error; content: [<html version="-//W3C//DTD XHTML 2.0//EN" xml:lang="en" xsi:schemaLocation="http://www.w3.org/1999/xhtml http://www.w3.org/MarkUp/SCHEMA/xhtml2.xsd" xmlns="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><HEAD><TITLE>Request Error</TITLE></HEAD><BODY><DIV id="content"><P class="heading1"><B>Error Status Code:</B> 'InternalServerError'</P><P><B>Details: </B>There are no additional Public IPs available.</P><!-- Padding xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx--></DIV></BODY></html>]
	at org.jclouds.trmk.vcloud_0_8.handlers.ParseTerremarkVCloudErrorFromHttpResponse.handleError(ParseTerremarkVCloudErrorFromHttpResponse.java:58)
	at org.jclouds.http.handlers.DelegatingErrorHandler.handleError(DelegatingErrorHandler.java:71)
	at org.jclouds.http.internal.BaseHttpCommandExecutorService.shouldContinue(BaseHttpCommandExecutorService.java:182)
	at org.jclouds.http.internal.BaseHttpCommandExecutorService.invoke(BaseHttpCommandExecutorService.java:152)
	at org.jclouds.rest.internal.InvokeSyncToAsyncHttpMethod.invoke(InvokeSyncToAsyncHttpMethod.java:133)
	at org.jclouds.rest.internal.InvokeSyncToAsyncHttpMethod.apply(InvokeSyncToAsyncHttpMethod.java:99)
	at org.jclouds.rest.internal.InvokeSyncToAsyncHttpMethod.apply(InvokeSyncToAsyncHttpMethod.java:60)
	at org.jclouds.rest.internal.DelegatesToInvocationFunction.handle(DelegatesToInvocationFunction.java:159)
	at org.jclouds.rest.internal.DelegatesToInvocationFunction.invoke(DelegatesToInvocationFunction.java:126)
	at com.sun.proxy.$Proxy66.activatePublicIpInVDC(Unknown Source)
	at org.jclouds.trmk.ecloud.suppliers.TerremarkECloudInternetServiceAndPublicIpAddressSupplier.getNewInternetServiceAndIp(TerremarkECloudInternetServiceAndPublicIpAddressSupplier.java:68)
	at org.jclouds.trmk.vcloud_0_8.compute.TerremarkVCloudComputeClient.createPublicAddressMappedToPorts(TerremarkVCloudComputeClient.java:192)
	at org.jclouds.trmk.vcloud_0_8.compute.TerremarkVCloudComputeClient.startAndReturnCredentials(TerremarkVCloudComputeClient.java:131)
	at org.jclouds.trmk.vcloud_0_8.compute.strategy.StartVAppWithGroupEncodedIntoName.createNodeWithGroupEncodedIntoName(StartVAppWithGroupEncodedIntoName.java:68)
	at org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet$AddNode.call(CreateNodesWithGroupEncodedIntoNameThenAddToSet.java:82)
	at org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet$AddNode.call(CreateNodesWithGroupEncodedIntoNameThenAddToSet.java:66)
	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:895)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
	at java.lang.Thread.run(Thread.java:680)
	at java.lang.Thread.getStackTrace(Thread.java:1503)
	at org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet.createNodeInGroupWithNameAndTemplate(CreateNodesWithGroupEncodedIntoNameThenAddToSet.java:170)
	at org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet.execute(CreateNodesWithGroupEncodedIntoNameThenAddToSet.java:125)
	at org.jclouds.trmk.vcloud_0_8.compute.strategy.TerremarkEncodeTagIntoNameRunNodesAndAddToSetStrategy.execute(TerremarkEncodeTagIntoNameRunNodesAndAddToSetStrategy.java:77)
	at org.jclouds.compute.internal.BaseComputeService.createNodesInGroup(BaseComputeService.java:214)
	at org.jclouds.compute.internal.BaseComputeService.createNodesInGroup(BaseComputeService.java:234)
	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.DelegatingInvocationHandler.invoke(DelegatingInvocationHandler.java:37)
	at com.sun.proxy.$Proxy70.createNodesInGroup(Unknown Source)
	at org.jclouds.compute.internal.BaseComputeServiceLiveTest$1.call(BaseComputeServiceLiveTest.java:438)
	at org.jclouds.compute.internal.BaseComputeServiceLiveTest$1.call(BaseComputeServiceLiveTest.java:436)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
	... 3 more
1 error[s]
Node failures:
0 error[s]
	at org.jclouds.compute.internal.BaseComputeService.createNodesInGroup(BaseComputeService.java:226)
	at org.jclouds.compute.internal.BaseComputeService.createNodesInGroup(BaseComputeService.java:234)
	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.DelegatingInvocationHandler.invoke(DelegatingInvocationHandler.java:37)
	at com.sun.proxy.$Proxy70.createNodesInGroup(Unknown Source)
	at org.jclouds.compute.internal.BaseComputeServiceLiveTest$1.call(BaseComputeServiceLiveTest.java:438)
	at org.jclouds.compute.internal.BaseComputeServiceLiveTest$1.call(BaseComputeServiceLiveTest.java:436)
	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:895)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
	at java.lang.Thread.run(Thread.java:680)
	at java.lang.Thread.getStackTrace(Thread.java:1503)
	at org.jclouds.compute.internal.BaseComputeServiceLiveTest.testConcurrentUseOfComputeServiceToCreateNodes(BaseComputeServiceLiveTest.java:436)
	... 21 more
Caused by: org.jclouds.http.HttpResponseException: command: POST https://services.enterprisecloud.terremark.com/api/v0.8b-ext2.8/extensions/vdc/691/publicIps HTTP/1.1 failed with response: HTTP/1.1 500 Internal Server Error; content: [<html version="-//W3C//DTD XHTML 2.0//EN" xml:lang="en" xsi:schemaLocation="http://www.w3.org/1999/xhtml http://www.w3.org/MarkUp/SCHEMA/xhtml2.xsd" xmlns="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><HEAD><TITLE>Request Error</TITLE></HEAD><BODY><DIV id="content"><P class="heading1"><B>Error Status Code:</B> 'InternalServerError'</P><P><B>Details: </B>There are no additional Public IPs available.</P><!-- Padding xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx--></DIV></BODY></html>]
	at org.jclouds.trmk.vcloud_0_8.handlers.ParseTerremarkVCloudErrorFromHttpResponse.handleError(ParseTerremarkVCloudErrorFromHttpResponse.java:58)
	at org.jclouds.http.handlers.DelegatingErrorHandler.handleError(DelegatingErrorHandler.java:71)
	at org.jclouds.http.internal.BaseHttpCommandExecutorService.shouldContinue(BaseHttpCommandExecutorService.java:182)
	at org.jclouds.http.internal.BaseHttpCommandExecutorService.invoke(BaseHttpCommandExecutorService.java:152)
	at org.jclouds.rest.internal.InvokeSyncToAsyncHttpMethod.invoke(InvokeSyncToAsyncHttpMethod.java:133)
	at org.jclouds.rest.internal.InvokeSyncToAsyncHttpMethod.apply(InvokeSyncToAsyncHttpMethod.java:99)
	at org.jclouds.rest.internal.InvokeSyncToAsyncHttpMethod.apply(InvokeSyncToAsyncHttpMethod.java:60)
	at org.jclouds.rest.internal.DelegatesToInvocationFunction.handle(DelegatesToInvocationFunction.java:159)
	at org.jclouds.rest.internal.DelegatesToInvocationFunction.invoke(DelegatesToInvocationFunction.java:126)
	at com.sun.proxy.$Proxy66.activatePublicIpInVDC(Unknown Source)
	at org.jclouds.trmk.ecloud.suppliers.TerremarkECloudInternetServiceAndPublicIpAddressSupplier.getNewInternetServiceAndIp(TerremarkECloudInternetServiceAndPublicIpAddressSupplier.java:68)
	at org.jclouds.trmk.vcloud_0_8.compute.TerremarkVCloudComputeClient.createPublicAddressMappedToPorts(TerremarkVCloudComputeClient.java:192)
	at org.jclouds.trmk.vcloud_0_8.compute.TerremarkVCloudComputeClient.startAndReturnCredentials(TerremarkVCloudComputeClient.java:131)
	at org.jclouds.trmk.vcloud_0_8.compute.strategy.StartVAppWithGroupEncodedIntoName.createNodeWithGroupEncodedIntoName(StartVAppWithGroupEncodedIntoName.java:68)
	at org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet$AddNode.call(CreateNodesWithGroupEncodedIntoNameThenAddToSet.java:82)
	at org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet$AddNode.call(CreateNodesWithGroupEncodedIntoNameThenAddToSet.java:66)
	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:895)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
	at java.lang.Thread.run(Thread.java:680)
	at java.lang.Thread.getStackTrace(Thread.java:1503)
	at org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet.createNodeInGroupWithNameAndTemplate(CreateNodesWithGroupEncodedIntoNameThenAddToSet.java:170)
	at org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet.execute(CreateNodesWithGroupEncodedIntoNameThenAddToSet.java:125)
	at org.jclouds.trmk.vcloud_0_8.compute.strategy.TerremarkEncodeTagIntoNameRunNodesAndAddToSetStrategy.execute(TerremarkEncodeTagIntoNameRunNodesAndAddToSetStrategy.java:77)
	at org.jclouds.compute.internal.BaseComputeService.createNodesInGroup(BaseComputeService.java:214)
	at org.jclouds.compute.internal.BaseComputeService.createNodesInGroup(BaseComputeService.java:234)
	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.DelegatingInvocationHandler.invoke(DelegatingInvocationHandler.java:37)
	at com.sun.proxy.$Proxy70.createNodesInGroup(Unknown Source)
	at org.jclouds.compute.internal.BaseComputeServiceLiveTest$1.call(BaseComputeServiceLiveTest.java:438)
	at org.jclouds.compute.internal.BaseComputeServiceLiveTest$1.call(BaseComputeServiceLiveTest.java:436)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
	... 3 more
1 error[s]
Node failures:
0 error[s]
	at com.google.common.util.concurrent.AbstractFuture$Sync.getValue(AbstractFuture.java:306)
	at com.google.common.util.concurrent.AbstractFuture$Sync.get(AbstractFuture.java:279)
	at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:96)
	at org.jclouds.compute.internal.BaseComputeServiceLiveTest.testConcurrentUseOfComputeServiceToCreateNodes(BaseComputeServiceLiveTest.java:448)
	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:714)
	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901)
	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231)
	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:767)
	at org.testng.TestRunner.run(TestRunner.java:617)
	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$2.call(ThreadUtil.java:64)
	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:895)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
	at java.lang.Thread.run(Thread.java:680)
Caused by: org.jclouds.compute.RunNodesException: error running 1 node group(twin1) location(https://services.enterprisecloud.terremark.com/api/v0.8b-ext2.8/vdc/691) image(https://services.enterprisecloud.terremark.com/api/v0.8b-ext2.8/vappTemplate/351) size(cpu=1,ram=512,disk=10) options(TerremarkVCloudTemplateOptions [keyPair=d3:f9:ec:f6:b3:58:4b:a6:00:3a:68:58:d3:cf:5b:34, noKeyPair=false, inboundPorts=[22, 8080], privateKey=false, publicKey=false, runScript=false, port:seconds=22:301, userMetadata: {}])
Execution failures:
1) ExecutionException on twin1-2647:
java.util.concurrent.ExecutionException: org.jclouds.http.HttpResponseException: command: POST https://services.enterprisecloud.terremark.com/api/v0.8b-ext2.8/extensions/vdc/691/publicIps HTTP/1.1 failed with response: HTTP/1.1 500 Internal Server Error; content: [<html version="-//W3C//DTD XHTML 2.0//EN" xml:lang="en" xsi:schemaLocation="http://www.w3.org/1999/xhtml http://www.w3.org/MarkUp/SCHEMA/xhtml2.xsd" xmlns="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><HEAD><TITLE>Request Error</TITLE></HEAD><BODY><DIV id="content"><P class="heading1"><B>Error Status Code:</B> 'InternalServerError'</P><P><B>Details: </B>There are no additional Public IPs available.</P><!-- Padding xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx--></DIV></BODY></html>]
	at com.google.common.util.concurrent.AbstractFuture$Sync.getValue(AbstractFuture.java:306)
	at com.google.common.util.concurrent.AbstractFuture$Sync.get(AbstractFuture.java:293)
	at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:116)
	at org.jclouds.concurrent.FutureIterables$1.run(FutureIterables.java:127)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
	at java.lang.Thread.run(Thread.java:680)
Caused by: org.jclouds.http.HttpResponseException: command: POST https://services.enterprisecloud.terremark.com/api/v0.8b-ext2.8/extensions/vdc/691/publicIps HTTP/1.1 failed with response: HTTP/1.1 500 Internal Server Error; content: [<html version="-//W3C//DTD XHTML 2.0//EN" xml:lang="en" xsi:schemaLocation="http://www.w3.org/1999/xhtml http://www.w3.org/MarkUp/SCHEMA/xhtml2.xsd" xmlns="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><HEAD><TITLE>Request Error</TITLE></HEAD><BODY><DIV id="content"><P class="heading1"><B>Error Status Code:</B> 'InternalServerError'</P><P><B>Details: </B>There are no additional Public IPs available.</P><!-- Padding xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx--></DIV></BODY></html>]
	at org.jclouds.trmk.vcloud_0_8.handlers.ParseTerremarkVCloudErrorFromHttpResponse.handleError(ParseTerremarkVCloudErrorFromHttpResponse.java:58)
	at org.jclouds.http.handlers.DelegatingErrorHandler.handleError(DelegatingErrorHandler.java:71)
	at org.jclouds.http.internal.BaseHttpCommandExecutorService.shouldContinue(BaseHttpCommandExecutorService.java:182)
	at org.jclouds.http.internal.BaseHttpCommandExecutorService.invoke(BaseHttpCommandExecutorService.java:152)
	at org.jclouds.rest.internal.InvokeSyncToAsyncHttpMethod.invoke(InvokeSyncToAsyncHttpMethod.java:133)
	at org.jclouds.rest.internal.InvokeSyncToAsyncHttpMethod.apply(InvokeSyncToAsyncHttpMethod.java:99)
	at org.jclouds.rest.internal.InvokeSyncToAsyncHttpMethod.apply(InvokeSyncToAsyncHttpMethod.java:60)
	at org.jclouds.rest.internal.DelegatesToInvocationFunction.handle(DelegatesToInvocationFunction.java:159)
	at org.jclouds.rest.internal.DelegatesToInvocationFunction.invoke(DelegatesToInvocationFunction.java:126)
	at com.sun.proxy.$Proxy66.activatePublicIpInVDC(Unknown Source)
	at org.jclouds.trmk.ecloud.suppliers.TerremarkECloudInternetServiceAndPublicIpAddressSupplier.getNewInternetServiceAndIp(TerremarkECloudInternetServiceAndPublicIpAddressSupplier.java:68)
	at org.jclouds.trmk.vcloud_0_8.compute.TerremarkVCloudComputeClient.createPublicAddressMappedToPorts(TerremarkVCloudComputeClient.java:192)
	at org.jclouds.trmk.vcloud_0_8.compute.TerremarkVCloudComputeClient.startAndReturnCredentials(TerremarkVCloudComputeClient.java:131)
	at org.jclouds.trmk.vcloud_0_8.compute.strategy.StartVAppWithGroupEncodedIntoName.createNodeWithGroupEncodedIntoName(StartVAppWithGroupEncodedIntoName.java:68)
	at org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet$AddNode.call(CreateNodesWithGroupEncodedIntoNameThenAddToSet.java:82)
	at org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet$AddNode.call(CreateNodesWithGroupEncodedIntoNameThenAddToSet.java:66)
	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:895)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
	at java.lang.Thread.run(Thread.java:680)
	at java.lang.Thread.getStackTrace(Thread.java:1503)
	at org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet.createNodeInGroupWithNameAndTemplate(CreateNodesWithGroupEncodedIntoNameThenAddToSet.java:170)
	at org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet.execute(CreateNodesWithGroupEncodedIntoNameThenAddToSet.java:125)
	at org.jclouds.trmk.vcloud_0_8.compute.strategy.TerremarkEncodeTagIntoNameRunNodesAndAddToSetStrategy.execute(TerremarkEncodeTagIntoNameRunNodesAndAddToSetStrategy.java:77)
	at org.jclouds.compute.internal.BaseComputeService.createNodesInGroup(BaseComputeService.java:214)
	at org.jclouds.compute.internal.BaseComputeService.createNodesInGroup(BaseComputeService.java:234)
	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.DelegatingInvocationHandler.invoke(DelegatingInvocationHandler.java:37)
	at com.sun.proxy.$Proxy70.createNodesInGroup(Unknown Source)
	at org.jclouds.compute.internal.BaseComputeServiceLiveTest$1.call(BaseComputeServiceLiveTest.java:438)
	at org.jclouds.compute.internal.BaseComputeServiceLiveTest$1.call(BaseComputeServiceLiveTest.java:436)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
	... 3 more
1 error[s]
Node failures:
0 error[s]
	at org.jclouds.compute.internal.BaseComputeService.createNodesInGroup(BaseComputeService.java:226)
	at org.jclouds.compute.internal.BaseComputeService.createNodesInGroup(BaseComputeService.java:234)
	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.DelegatingInvocationHandler.invoke(DelegatingInvocationHandler.java:37)
	at com.sun.proxy.$Proxy70.createNodesInGroup(Unknown Source)
	at org.jclouds.compute.internal.BaseComputeServiceLiveTest$1.call(BaseComputeServiceLiveTest.java:438)
	at org.jclouds.compute.internal.BaseComputeServiceLiveTest$1.call(BaseComputeServiceLiveTest.java:436)
	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:895)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
	at java.lang.Thread.run(Thread.java:680)
	at java.lang.Thread.getStackTrace(Thread.java:1503)
	at org.jclouds.compute.internal.BaseComputeServiceLiveTest.testConcurrentUseOfComputeServiceToCreateNodes(BaseComputeServiceLiveTest.java:436)
	... 21 more

testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)  Time elapsed: 0.002 sec  <<< FAILURE!
org.testng.TestException: 
Method BaseTemplateBuilderLiveTest.testTemplateBuilderCannotFind(org.jclouds.compute.domain.OsFamilyVersion64Bit)[pri:0, instance:org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest@7b5a6029] should have thrown an exception of class java.util.NoSuchElementException
	at org.testng.internal.Invoker.handleInvocationResults(Invoker.java:1512)
	at org.testng.internal.Invoker.invokeMethod(Invoker.java:754)
	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901)
	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231)
	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:767)
	at org.testng.TestRunner.run(TestRunner.java:617)
	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$2.call(ThreadUtil.java:64)
	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:895)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
	at java.lang.Thread.run(Thread.java:680)

testTemplateBuilderWithImageIdSpecified(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest)  Time elapsed: 5.86 sec  <<< FAILURE!
java.lang.AssertionError: expected [{image={id=https://services.enterprisecloud.terremark.com/api/v0.8b-ext2.8/vappTemplate/351, providerId=https://services.enterprisecloud.terremark.com/api/v0.8b-ext2.8/vappTemplate/351, uri=https://services.enterprisecloud.terremark.com/api/v0.8b-ext2.8/vappTemplate/351, name=Ubuntu Server 10.04 x64, uri=https://services.enterprisecloud.terremark.com/api/v0.8b-ext2.8/vappTemplate/351, location={scope=REGION, id=https://services.enterprisecloud.terremark.com/api/v0.8b-ext2.8/org/1907529, description=Opscode, Inc., parent=trmk-ecloud}, os={family=ubuntu, version=10.04, description=Ubuntu Server 10.04 x64, is64Bit=true}, description=username: ecloud
password: TmrkCl0ud1s#1!
This template consists of a base Ubuntu Server 10.04 installation. Additional software is available via apt. Updates are available via Software Updater.
The hostname and base IP will be set as part of the server creation process based on user input., status=AVAILABLE, loginUser=ecloud}, hardware={id=cpu=1,ram=512,disk=10, providerId=cpu=1,ram=512,disk=10, processors=[{cores=1.0, speed=1.0}], ram=512, volumes=[{type=LOCAL, size=10.0, bootDevice=true, durable=true}], hypervisor=VMware, supportsImage=ALWAYS_TRUE}, location={scope=ZONE, id=https://services.enterprisecloud.terremark.com/api/v0.8b-ext2.8/vdc/691, description=jclouds.org, parent=https://services.enterprisecloud.terremark.com/api/v0.8b-ext2.8/org/1907529}, options=TerremarkVCloudTemplateOptions [keyPair=null, noKeyPair=false, inboundPorts=[22], privateKey=false, publicKey=false, runScript=false, port:seconds=-1:-1, userMetadata: {}]}] but found [{image={id=https://services.enterprisecloud.terremark.com/api/v0.8b-ext2.8/vappTemplate/351, providerId=https://services.enterprisecloud.terremark.com/api/v0.8b-ext2.8/vappTemplate/351, uri=https://services.enterprisecloud.terremark.com/api/v0.8b-ext2.8/vappTemplate/351, name=Ubuntu Server 10.04 x64, uri=https://services.enterprisecloud.terremark.com/api/v0.8b-ext2.8/vappTemplate/351, location={scope=REGION, id=https://services.enterprisecloud.terremark.com/api/v0.8b-ext2.8/org/1907529, description=Opscode, Inc., parent=trmk-ecloud}, os={family=ubuntu, version=10.04, description=Ubuntu Server 10.04 x64, is64Bit=true}, description=username: ecloud
password: TmrkCl0ud1s#1!
This template consists of a base Ubuntu Server 10.04 installation. Additional software is available via apt. Updates are available via Software Updater.
The hostname and base IP will be set as part of the server creation process based on user input., status=AVAILABLE, loginUser=ecloud}, hardware={id=cpu=1,ram=512,disk=10, providerId=cpu=1,ram=512,disk=10, processors=[{cores=1.0, speed=1.0}], ram=512, volumes=[{type=LOCAL, size=10.0, bootDevice=true, durable=true}], hypervisor=VMware, supportsImage=ALWAYS_TRUE}, location={scope=REGION, id=https://services.enterprisecloud.terremark.com/api/v0.8b-ext2.8/org/1907529, description=Opscode, Inc., parent=trmk-ecloud}, options=TerremarkVCloudTemplateOptions [keyPair=null, noKeyPair=false, inboundPorts=[22], privateKey=false, publicKey=false, runScript=false, port:seconds=-1:-1, userMetadata: {}]}]
	at org.testng.Assert.fail(Assert.java:94)
	at org.testng.Assert.failNotEquals(Assert.java:494)
	at org.testng.Assert.assertEquals(Assert.java:123)
	at org.testng.Assert.assertEquals(Assert.java:176)
	at org.testng.Assert.assertEquals(Assert.java:186)
	at org.jclouds.compute.internal.BaseTemplateBuilderLiveTest.testTemplateBuilderWithImageIdSpecified(BaseTemplateBuilderLiveTest.java:246)
	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:714)
	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901)
	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231)
	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:767)
	at org.testng.TestRunner.run(TestRunner.java:617)
	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$2.call(ThreadUtil.java:64)
	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:895)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
	at java.lang.Thread.run(Thread.java:680)

testFindVAppTemplate(org.jclouds.trmk.ecloud.TerremarkECloudClientLiveTest)  Time elapsed: 18.898 sec  <<< FAILURE!
java.lang.AssertionError: expected object to not be null
	at org.testng.Assert.fail(Assert.java:94)
	at org.testng.Assert.assertNotNull(Assert.java:404)
	at org.testng.Assert.assertNotNull(Assert.java:389)
	at org.jclouds.trmk.vcloud_0_8.TerremarkClientLiveTest.testFindVAppTemplate(TerremarkClientLiveTest.java:784)
	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:714)
	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901)
	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231)
	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:767)
	at org.testng.TestRunner.run(TestRunner.java:617)
	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$2.call(ThreadUtil.java:64)
	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:895)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
	at java.lang.Thread.run(Thread.java:680)

testGetConfigCustomizationOptions(org.jclouds.trmk.ecloud.TerremarkECloudClientLiveTest)  Time elapsed: 16.597 sec  <<< FAILURE!
org.jclouds.rest.ResourceNotFoundException: /api/v0.8b-ext2.8/extensions/catalogItem/344-691/options/customization
	at org.jclouds.trmk.vcloud_0_8.handlers.ParseTerremarkVCloudErrorFromHttpResponse.handleError(ParseTerremarkVCloudErrorFromHttpResponse.java:86)
	at org.jclouds.http.handlers.DelegatingErrorHandler.handleError(DelegatingErrorHandler.java:69)
	at org.jclouds.http.internal.BaseHttpCommandExecutorService.shouldContinue(BaseHttpCommandExecutorService.java:182)
	at org.jclouds.http.internal.BaseHttpCommandExecutorService.invoke(BaseHttpCommandExecutorService.java:152)
	at org.jclouds.rest.internal.InvokeSyncToAsyncHttpMethod.invoke(InvokeSyncToAsyncHttpMethod.java:133)
	at org.jclouds.rest.internal.InvokeSyncToAsyncHttpMethod.apply(InvokeSyncToAsyncHttpMethod.java:99)
	at org.jclouds.rest.internal.InvokeSyncToAsyncHttpMethod.apply(InvokeSyncToAsyncHttpMethod.java:60)
	at org.jclouds.rest.internal.DelegatesToInvocationFunction.handle(DelegatesToInvocationFunction.java:159)
	at org.jclouds.rest.internal.DelegatesToInvocationFunction.invoke(DelegatesToInvocationFunction.java:126)
	at com.sun.proxy.$Proxy66.getCustomizationOptions(Unknown Source)
	at org.jclouds.trmk.vcloud_0_8.TerremarkClientLiveTest.testGetConfigCustomizationOptions(TerremarkClientLiveTest.java:172)
	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:714)
	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901)
	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231)
	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:767)
	at org.testng.TestRunner.run(TestRunner.java:617)
	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$2.call(ThreadUtil.java:64)
	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:895)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
	at java.lang.Thread.run(Thread.java:680)
Caused by: org.jclouds.http.HttpResponseException: command: GET https://services.enterprisecloud.terremark.com/api/v0.8b-ext2.8/extensions/catalogItem/344-691/options/customization HTTP/1.1 failed with response: HTTP/1.1 404 Not Found; content: [<html version="-//W3C//DTD XHTML 2.0//EN" xml:lang="en" xsi:schemaLocation="http://www.w3.org/1999/xhtml http://www.w3.org/MarkUp/SCHEMA/xhtml2.xsd" xmlns="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><HEAD><TITLE>Request Error</TITLE></HEAD><BODY><DIV id="content"><P class="heading1"><B>Error Status Code:</B> 'NotFound'</P><P><B>Details: </B>NotFound</P><!-- Padding xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx--></DIV></BODY></html>]
	at org.jclouds.trmk.vcloud_0_8.handlers.ParseTerremarkVCloudErrorFromHttpResponse.handleError(ParseTerremarkVCloudErrorFromHttpResponse.java:58)
	... 31 more
Caused by: org.jclouds.http.HttpResponseException: command: GET https://services.enterprisecloud.terremark.com/api/v0.8b-ext2.8/extensions/catalogItem/344-691/options/customization HTTP/1.1 failed with response: HTTP/1.1 404 Not Found; content: [<html version="-//W3C//DTD XHTML 2.0//EN" xml:lang="en" xsi:schemaLocation="http://www.w3.org/1999/xhtml http://www.w3.org/MarkUp/SCHEMA/xhtml2.xsd" xmlns="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><HEAD><TITLE>Request Error</TITLE></HEAD><BODY><DIV id="content"><P class="heading1"><B>Error Status Code:</B> 'NotFound'</P><P><B>Details: </B>NotFound</P><!-- Padding xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx--></DIV></BODY></html>]
	at org.jclouds.trmk.vcloud_0_8.handlers.ParseTerremarkVCloudErrorFromHttpResponse.handleError(ParseTerremarkVCloudErrorFromHttpResponse.java:58)
	... 31 more

testGetVAppTemplate(org.jclouds.trmk.ecloud.TerremarkECloudClientLiveTest)  Time elapsed: 6.235 sec  <<< FAILURE!
java.lang.AssertionError: expected object to not be null
	at org.testng.Assert.fail(Assert.java:94)
	at org.testng.Assert.assertNotNull(Assert.java:404)
	at org.testng.Assert.assertNotNull(Assert.java:389)
	at org.jclouds.trmk.vcloud_0_8.TerremarkClientLiveTest.testGetVAppTemplate(TerremarkClientLiveTest.java:748)
	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:714)
	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901)
	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231)
	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:767)
	at org.testng.TestRunner.run(TestRunner.java:617)
	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$2.call(ThreadUtil.java:64)
	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:895)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
	at java.lang.Thread.run(Thread.java:680)

testInstantiateAndPowerOn(org.jclouds.trmk.ecloud.TerremarkECloudClientLiveTest)  Time elapsed: 8.743 sec  <<< FAILURE!
org.jclouds.rest.ResourceNotFoundException: vdc 691 not found
	at org.jclouds.trmk.vcloud_0_8.handlers.ParseTerremarkVCloudErrorFromHttpResponse.handleError(ParseTerremarkVCloudErrorFromHttpResponse.java:86)
	at org.jclouds.http.handlers.DelegatingErrorHandler.handleError(DelegatingErrorHandler.java:69)
	at org.jclouds.http.internal.BaseHttpCommandExecutorService.shouldContinue(BaseHttpCommandExecutorService.java:182)
	at org.jclouds.http.internal.BaseHttpCommandExecutorService.invoke(BaseHttpCommandExecutorService.java:152)
	at org.jclouds.rest.internal.InvokeSyncToAsyncHttpMethod.invoke(InvokeSyncToAsyncHttpMethod.java:133)
	at org.jclouds.rest.internal.InvokeSyncToAsyncHttpMethod.apply(InvokeSyncToAsyncHttpMethod.java:99)
	at org.jclouds.rest.internal.InvokeSyncToAsyncHttpMethod.apply(InvokeSyncToAsyncHttpMethod.java:60)
	at org.jclouds.rest.internal.DelegatesToInvocationFunction.handle(DelegatesToInvocationFunction.java:159)
	at org.jclouds.rest.internal.DelegatesToInvocationFunction.invoke(DelegatesToInvocationFunction.java:126)
	at com.sun.proxy.$Proxy66.instantiateVAppTemplateInVDC(Unknown Source)
	at org.jclouds.trmk.vcloud_0_8.TerremarkClientLiveTest.testInstantiateAndPowerOn(TerremarkClientLiveTest.java:214)
	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:714)
	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901)
	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231)
	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:767)
	at org.testng.TestRunner.run(TestRunner.java:617)
	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$2.call(ThreadUtil.java:64)
	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:895)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
	at java.lang.Thread.run(Thread.java:680)
Caused by: org.jclouds.http.HttpResponseException: command: POST https://services.enterprisecloud.terremark.com/api/v0.8b-ext2.8/vdc/691/action/instantiateVAppTemplate HTTP/1.1 failed with response: HTTP/1.1 403 Forbidden; content: [<html version="-//W3C//DTD XHTML 2.0//EN" xml:lang="en" xsi:schemaLocation="http://www.w3.org/1999/xhtml http://www.w3.org/MarkUp/SCHEMA/xhtml2.xsd" xmlns="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><HEAD><TITLE>Request Error</TITLE></HEAD><BODY><DIV id="content"><P class="heading1"><B>Error Status Code:</B> 'Forbidden'</P><P><B>Details: </B>Server with name "ddddddddddddddd" already exists.</P><!-- Padding xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx--></DIV></BODY></html>]
	at org.jclouds.trmk.vcloud_0_8.handlers.ParseTerremarkVCloudErrorFromHttpResponse.handleError(ParseTerremarkVCloudErrorFromHttpResponse.java:58)
	... 31 more
Caused by: org.jclouds.http.HttpResponseException: command: POST https://services.enterprisecloud.terremark.com/api/v0.8b-ext2.8/vdc/691/action/instantiateVAppTemplate HTTP/1.1 failed with response: HTTP/1.1 403 Forbidden; content: [<html version="-//W3C//DTD XHTML 2.0//EN" xml:lang="en" xsi:schemaLocation="http://www.w3.org/1999/xhtml http://www.w3.org/MarkUp/SCHEMA/xhtml2.xsd" xmlns="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><HEAD><TITLE>Request Error</TITLE></HEAD><BODY><DIV id="content"><P class="heading1"><B>Error Status Code:</B> 'Forbidden'</P><P><B>Details: </B>Server with name "ddddddddddddddd" already exists.</P><!-- Padding xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx--></DIV></BODY></html>]
	at org.jclouds.trmk.vcloud_0_8.handlers.ParseTerremarkVCloudErrorFromHttpResponse.handleError(ParseTerremarkVCloudErrorFromHttpResponse.java:58)
	... 31 more


Results :

Failed tests:   testImageById(org.jclouds.trmk.ecloud.compute.TerremarkECloudComputeServiceLiveTest): parent
  testOptionToNotBlock(org.jclouds.trmk.ecloud.compute.TerremarkECloudComputeServiceLiveTest): error destroyNodesMatching(inGroup(te-block)): {{id=https://services.enterprisecloud.terremark.com/api/v0.8b-ext2.8/vapp/10103167, providerId=https://services.enterprisecloud.terremark.com/api/v0.8b-ext2.8/vapp/10103167, uri=https://services.enterprisecloud.terremark.com/api/v0.8b-ext2.8/vapp/10103167, name=te-block-1392, uri=https://services.enterprisecloud.terremark.com/api/v0.8b-ext2.8/vapp/10103167, location={scope=ZONE, id=https://services.enterprisecloud.terremark.com/api/v0.8b-ext2.8/vdc/691, description=jclouds.org, parent=https://services.enterprisecloud.terremark.com/api/v0.8b-ext2.8/org/1907529}, group=te-block, status=PENDING, loginPort=22, hostname=te-block-1392, loginUser=ecloud}=java.util.concurrent.ExecutionException: org.jclouds.http.HttpResponseException: command: POST https://services.enterprisecloud.terremark.com/api/v0.8b-ext2.8/vapp/10103167/power/action/powerOff HTTP/1.1 failed with response: HTTP/1.1 500 Internal Server Error; content: [<html version="-//W3C//DTD XHTML 2.0//EN" xml:lang="en" xsi:schemaLocation="http://www.w3.org/1999/xhtml http://www.w3.org/MarkUp/SCHEMA/xhtml2.xsd" xmlns="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><HEAD><TITLE>Request Error</TITLE></HEAD><BODY><DIV id="content"><P class="heading1"><B>Error Status Code:</B> 'InternalServerError'</P><P><B>Details: </B>Cannot power off te-block-1392 because it is already powered off.</P><!-- Padding xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx--></DIV></BODY></html>]}
  testCreateAndRunAService(org.jclouds.trmk.ecloud.compute.TerremarkECloudComputeServiceLiveTest): error running 1 node group(tes) location(https://services.enterprisecloud.terremark.com/api/v0.8b-ext2.8/vdc/691) image(https://services.enterprisecloud.terremark.com/api/v0.8b-ext2.8/vappTemplate/351) size(cpu=1,ram=512,disk=10) options(TerremarkVCloudTemplateOptions [keyPair=b0:e8:09:d4:bf:80:59:99:5c:67:1e:81:20:0f:9e:7a, noKeyPair=false, inboundPorts=[22, 8080], privateKey=false, publicKey=false, runScript=false, port:seconds=22:300, userMetadata: {test=tes}])(..)
  testAScriptExecutionAfterBootWithBasicTemplate(org.jclouds.trmk.ecloud.compute.TerremarkECloudComputeServiceLiveTest): error running 1 node group(ter) location(https://services.enterprisecloud.terremark.com/api/v0.8b-ext2.8/vdc/691) image(https://services.enterprisecloud.terremark.com/api/v0.8b-ext2.8/vappTemplate/351) size(cpu=1,ram=512,disk=10) options(TerremarkVCloudTemplateOptions [keyPair=b5:eb:d2:31:4d:8a:28:9b:e5:bf:53:62:86:02:2b:b3, noKeyPair=false, inboundPorts=[22], privateKey=false, publicKey=false, runScript=false, port:seconds=22:120, userMetadata: {}])(..)
  testConcurrentUseOfComputeServiceToCreateNodes(org.jclouds.trmk.ecloud.compute.TerremarkECloudComputeServiceLiveTest): org.jclouds.compute.RunNodesException: error running 1 node group(twin1) location(https://services.enterprisecloud.terremark.com/api/v0.8b-ext2.8/vdc/691) image(https://services.enterprisecloud.terremark.com/api/v0.8b-ext2.8/vappTemplate/351) size(cpu=1,ram=512,disk=10) options(TerremarkVCloudTemplateOptions [keyPair=d3:f9:ec:f6:b3:58:4b:a6:00:3a:68:58:d3:cf:5b:34, noKeyPair=false, inboundPorts=[22, 8080], privateKey=false, publicKey=false, runScript=false, port:seconds=22:301, userMetadata: {}])(..)
  testTemplateBuilderCannotFind(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest): (..)
  testTemplateBuilderWithImageIdSpecified(org.jclouds.trmk.ecloud.compute.TerremarkECloudTemplateBuilderLiveTest): expected [{image={id=https://services.enterprisecloud.terremark.com/api/v0.8b-ext2.8/vappTemplate/351, providerId=https://services.enterprisecloud.terremark.com/api/v0.8b-ext2.8/vappTemplate/351, uri=https://services.enterprisecloud.terremark.com/api/v0.8b-ext2.8/vappTemplate/351, name=Ubuntu Server 10.04 x64, uri=https://services.enterprisecloud.terremark.com/api/v0.8b-ext2.8/vappTemplate/351, location={scope=REGION, id=https://services.enterprisecloud.terremark.com/api/v0.8b-ext2.8/org/1907529, description=Opscode, Inc., parent=trmk-ecloud}, os={family=ubuntu, version=10.04, description=Ubuntu Server 10.04 x64, is64Bit=true}, description=username: ecloud(..)
  testFindVAppTemplate(org.jclouds.trmk.ecloud.TerremarkECloudClientLiveTest): expected object to not be null
  testGetConfigCustomizationOptions(org.jclouds.trmk.ecloud.TerremarkECloudClientLiveTest): /api/v0.8b-ext2.8/extensions/catalogItem/344-691/options/customization
  testGetVAppTemplate(org.jclouds.trmk.ecloud.TerremarkECloudClientLiveTest): expected object to not be null
  testInstantiateAndPowerOn(org.jclouds.trmk.ecloud.TerremarkECloudClientLiveTest): vdc 691 not found

Tests run: 145, Failures: 11, Errors: 0, Skipped: 14

[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 27:30.440s
[INFO] Finished at: Sat Apr 27 21:31:40 PDT 2013
[INFO] Final Memory: 16M/125M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.12.4:test (integration) on project trmk-ecloud: There are test failures.
[ERROR] 
[ERROR] Please refer to /private/tmp/jclouds/providers/trmk-ecloud/target/surefire-reports for the individual test results.
[ERROR] -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
