[INFO] Scanning for projects...
[WARNING] 
[WARNING] Some problems were encountered while building the effective model for org.jclouds.provider:ninefold-compute: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 Ninefold Compute provider 1.6.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-clean-plugin:2.4.1:clean (default-clean) @ ninefold-compute ---
[INFO] 
[INFO] --- maven-enforcer-plugin:1.1.1:enforce (enforce-maven) @ ninefold-compute ---
[INFO] 
[INFO] --- maven-enforcer-plugin:1.1.1:enforce (enforce-banned-dependencies) @ ninefold-compute ---
[INFO] 
[INFO] --- maven-enforcer-plugin:1.1.1:enforce (enforce-java) @ ninefold-compute ---
[INFO] 
[INFO] --- maven-remote-resources-plugin:1.4:process (process-remote-resources) @ ninefold-compute ---
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ ninefold-compute ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /private/tmp/jclouds/providers/ninefold-compute/src/main/clojure
[INFO] Copying 1 resource
[INFO] Copying 2 resources
[INFO] 
[INFO] --- maven-compiler-plugin:2.5.1:compile (default-compile) @ ninefold-compute ---
[INFO] Compiling 1 source file to /private/tmp/jclouds/providers/ninefold-compute/target/classes
[INFO] 
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ ninefold-compute ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /private/tmp/jclouds/providers/ninefold-compute/src/test/clojure
[INFO] skip non existing resourceDirectory /private/tmp/jclouds/providers/ninefold-compute/src/test/resources
[INFO] Copying 2 resources
[INFO] 
[INFO] --- maven-compiler-plugin:2.5.1:testCompile (default-testCompile) @ ninefold-compute ---
[INFO] Compiling 3 source files to /private/tmp/jclouds/providers/ninefold-compute/target/test-classes
[INFO] 
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ ninefold-compute ---
[INFO] Surefire report directory: /private/tmp/jclouds/providers/ninefold-compute/target/surefire-reports

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running org.jclouds.ninefold.compute.NinefoldComputeProviderTest
Configuring TestNG with: org.apache.maven.surefire.testng.conf.TestNG652Configurator@4cbfea1d
Starting test testAllContains(org.jclouds.ninefold.compute.NinefoldComputeProviderTest)
Starting test testTransformableToContains(org.jclouds.ninefold.compute.NinefoldComputeProviderTest)
Starting test testWithId(org.jclouds.ninefold.compute.NinefoldComputeProviderTest)
Starting test testOfApiContains(org.jclouds.ninefold.compute.NinefoldComputeProviderTest)
[pool-1-thread-1] Test testAllContains(org.jclouds.ninefold.compute.NinefoldComputeProviderTest) succeeded: 11ms
Test suite progress: tests succeeded: 1, failed: 0, skipped: 0.
[pool-1-thread-2] Test testOfApiContains(org.jclouds.ninefold.compute.NinefoldComputeProviderTest) succeeded: 13ms
Test suite progress: tests succeeded: 2, failed: 0, skipped: 0.
[pool-1-thread-3] Test testTransformableToContains(org.jclouds.ninefold.compute.NinefoldComputeProviderTest) succeeded: 15ms
Test suite progress: tests succeeded: 3, failed: 0, skipped: 0.
[pool-1-thread-4] Test testWithId(org.jclouds.ninefold.compute.NinefoldComputeProviderTest) succeeded: 16ms
Test suite progress: tests succeeded: 4, failed: 0, skipped: 0.
Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.451 sec

Results :

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

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

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running TestSuite
Configuring TestNG with: org.apache.maven.surefire.testng.conf.TestNG652Configurator@52b2a2d8
Starting test setServiceDefaults(org.jclouds.ninefold.compute.compute.NinefoldComputeServiceLiveTest)
[TestNG] Test setServiceDefaults(org.jclouds.ninefold.compute.compute.NinefoldComputeServiceLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 1, failed: 0, skipped: 0.
Starting test testCompareSizes(org.jclouds.ninefold.compute.compute.NinefoldComputeServiceLiveTest)
[TestNG] Test testCompareSizes(org.jclouds.ninefold.compute.compute.NinefoldComputeServiceLiveTest) succeeded: 13878ms
Test suite progress: tests succeeded: 2, failed: 0, skipped: 0.
Starting test testCorrectExceptionRunningNodesNotFound(org.jclouds.ninefold.compute.compute.NinefoldComputeServiceLiveTest)
[TestNG] Test testCorrectExceptionRunningNodesNotFound(org.jclouds.ninefold.compute.compute.NinefoldComputeServiceLiveTest) succeeded: 21130ms
Test suite progress: tests succeeded: 3, failed: 0, skipped: 0.
Starting test testGetAssignableLocations(org.jclouds.ninefold.compute.compute.NinefoldComputeServiceLiveTest)
[TestNG] Test testGetAssignableLocations(org.jclouds.ninefold.compute.compute.NinefoldComputeServiceLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 4, failed: 0, skipped: 0.
Starting test testImageById(org.jclouds.ninefold.compute.compute.NinefoldComputeServiceLiveTest)
[TestNG] Test testImageById(org.jclouds.ninefold.compute.compute.NinefoldComputeServiceLiveTest) succeeded: 1963ms
Test suite progress: tests succeeded: 5, failed: 0, skipped: 0.
Starting test testImagesCache(org.jclouds.ninefold.compute.compute.NinefoldComputeServiceLiveTest)
[TestNG] Test testImagesCache(org.jclouds.ninefold.compute.compute.NinefoldComputeServiceLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 6, failed: 0, skipped: 0.
Starting test testListImages(org.jclouds.ninefold.compute.compute.NinefoldComputeServiceLiveTest)
[TestNG] Test testListImages(org.jclouds.ninefold.compute.compute.NinefoldComputeServiceLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 7, failed: 0, skipped: 0.
Starting test testListSizes(org.jclouds.ninefold.compute.compute.NinefoldComputeServiceLiveTest)
[TestNG] Test testListSizes(org.jclouds.ninefold.compute.compute.NinefoldComputeServiceLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 8, failed: 0, skipped: 0.
Starting test testOptionToNotBlock(org.jclouds.ninefold.compute.compute.NinefoldComputeServiceLiveTest)
[TestNG] Test testOptionToNotBlock(org.jclouds.ninefold.compute.compute.NinefoldComputeServiceLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 9, failed: 0, skipped: 0.
Starting test testCreateAndRunAService(org.jclouds.ninefold.compute.compute.NinefoldComputeServiceLiveTest)
[TestNG] Test testCreateAndRunAService(org.jclouds.ninefold.compute.compute.NinefoldComputeServiceLiveTest) failed.
Test suite progress: tests succeeded: 9, failed: 1, skipped: 0.
Starting test testCorrectAuthException(org.jclouds.ninefold.compute.compute.NinefoldComputeServiceLiveTest)
[TestNG] Test testCorrectAuthException(org.jclouds.ninefold.compute.compute.NinefoldComputeServiceLiveTest) succeeded: 15584ms
Test suite progress: tests succeeded: 10, failed: 1, skipped: 0.
Starting test testAScriptExecutionAfterBootWithBasicTemplate(org.jclouds.ninefold.compute.compute.NinefoldComputeServiceLiveTest)
[TestNG] Test testAScriptExecutionAfterBootWithBasicTemplate(org.jclouds.ninefold.compute.compute.NinefoldComputeServiceLiveTest) failed.
Test suite progress: tests succeeded: 10, failed: 2, skipped: 0.
Starting test testConcurrentUseOfComputeServiceToCreateNodes(org.jclouds.ninefold.compute.compute.NinefoldComputeServiceLiveTest)
[TestNG] Test testConcurrentUseOfComputeServiceToCreateNodes(org.jclouds.ninefold.compute.compute.NinefoldComputeServiceLiveTest) failed.
Test suite progress: tests succeeded: 10, failed: 3, skipped: 0.
Starting test testTemplateMatch(org.jclouds.ninefold.compute.compute.NinefoldComputeServiceLiveTest)
[TestNG] Test testTemplateMatch(org.jclouds.ninefold.compute.compute.NinefoldComputeServiceLiveTest) succeeded: 1188ms
Test suite progress: tests succeeded: 11, failed: 3, skipped: 0.
[TestNG] Test testCreateTwoNodesWithRunScript(org.jclouds.ninefold.compute.compute.NinefoldComputeServiceLiveTest) skipped.
Test suite progress: tests succeeded: 11, failed: 3, skipped: 1.
[TestNG] Test testCreateAnotherNodeWithANewContextToEnsureSharedMemIsntRequired(org.jclouds.ninefold.compute.compute.NinefoldComputeServiceLiveTest) skipped.
Test suite progress: tests succeeded: 11, failed: 3, skipped: 2.
[TestNG] Test testCredentialsCache(org.jclouds.ninefold.compute.compute.NinefoldComputeServiceLiveTest) skipped.
Test suite progress: tests succeeded: 11, failed: 3, skipped: 3.
[TestNG] Test testGet(org.jclouds.ninefold.compute.compute.NinefoldComputeServiceLiveTest) skipped.
Test suite progress: tests succeeded: 11, failed: 3, skipped: 4.
[TestNG] Test testReboot(org.jclouds.ninefold.compute.compute.NinefoldComputeServiceLiveTest) skipped.
Test suite progress: tests succeeded: 11, failed: 3, skipped: 5.
[TestNG] Test testSuspendResume(org.jclouds.ninefold.compute.compute.NinefoldComputeServiceLiveTest) skipped.
Test suite progress: tests succeeded: 11, failed: 3, skipped: 6.
[TestNG] Test testGetNodesWithDetails(org.jclouds.ninefold.compute.compute.NinefoldComputeServiceLiveTest) skipped.
Test suite progress: tests succeeded: 11, failed: 3, skipped: 7.
[TestNG] Test testListNodes(org.jclouds.ninefold.compute.compute.NinefoldComputeServiceLiveTest) skipped.
Test suite progress: tests succeeded: 11, failed: 3, skipped: 8.
[TestNG] Test testListNodesByIds(org.jclouds.ninefold.compute.compute.NinefoldComputeServiceLiveTest) skipped.
Test suite progress: tests succeeded: 11, failed: 3, skipped: 9.
[TestNG] Test testDestroyNodes(org.jclouds.ninefold.compute.compute.NinefoldComputeServiceLiveTest) skipped.
Test suite progress: tests succeeded: 11, failed: 3, skipped: 10.
Starting test testCompareSizes(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
smallest {id=105, providerId=105, name=Compute Micro PRD, processors=[{cores=1.0, speed=1200.0}], ram=384, supportsImage=ALWAYS_TRUE}
fastest {id=70, providerId=70, name=Compute XLarge PRD, processors=[{cores=8.0, speed=1200.0}], ram=13928, supportsImage=ALWAYS_TRUE}
biggest {id=70, providerId=70, name=Compute XLarge PRD, processors=[{cores=8.0, speed=1200.0}], ram=13928, supportsImage=ALWAYS_TRUE}
[TestNG] Test testCompareSizes(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 9863ms
Test suite progress: tests succeeded: 12, failed: 3, skipped: 10.
Starting test testFromTemplate(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testFromTemplate(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) failed.
Test suite progress: tests succeeded: 12, failed: 4, skipped: 10.
Starting test testGetAssignableLocations(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testGetAssignableLocations(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 13, failed: 4, skipped: 10.
Starting test testTemplateBuilderCanFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCanFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 10ms
Test suite progress: tests succeeded: 14, failed: 4, skipped: 10.
Starting test testTemplateBuilderCanFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCanFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 3ms
Test suite progress: tests succeeded: 15, failed: 4, skipped: 10.
Starting test testTemplateBuilderCanFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCanFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 3ms
Test suite progress: tests succeeded: 16, failed: 4, skipped: 10.
Starting test testTemplateBuilderCanFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCanFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 4ms
Test suite progress: tests succeeded: 17, failed: 4, skipped: 10.
Starting test testTemplateBuilderCanFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCanFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 5ms
Test suite progress: tests succeeded: 18, failed: 4, skipped: 10.
Starting test testTemplateBuilderCanFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCanFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 3ms
Test suite progress: tests succeeded: 19, failed: 4, skipped: 10.
Starting test testTemplateBuilderCanFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCanFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 4ms
Test suite progress: tests succeeded: 20, failed: 4, skipped: 10.
Starting test testTemplateBuilderCanFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCanFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 3ms
Test suite progress: tests succeeded: 21, failed: 4, skipped: 10.
Starting test testTemplateBuilderCanFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCanFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 4ms
Test suite progress: tests succeeded: 22, failed: 4, skipped: 10.
Starting test testTemplateBuilderCanFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCanFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 3ms
Test suite progress: tests succeeded: 23, failed: 4, skipped: 10.
Starting test testTemplateBuilderCanFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCanFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 3ms
Test suite progress: tests succeeded: 24, failed: 4, skipped: 10.
Starting test testTemplateBuilderCanFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCanFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 25, failed: 4, skipped: 10.
Starting test testTemplateBuilderCanFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCanFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 2ms
Test suite progress: tests succeeded: 26, failed: 4, skipped: 10.
Starting test testTemplateBuilderCanUseImageId(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCanUseImageId(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 11222ms
Test suite progress: tests succeeded: 27, failed: 4, skipped: 10.
Starting test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 2ms
Test suite progress: tests succeeded: 28, failed: 4, skipped: 10.
Starting test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 29, failed: 4, skipped: 10.
Starting test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 30, failed: 4, skipped: 10.
Starting test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 31, failed: 4, skipped: 10.
Starting test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 32, failed: 4, skipped: 10.
Starting test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 33, failed: 4, skipped: 10.
Starting test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 34, failed: 4, skipped: 10.
Starting test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 35, failed: 4, skipped: 10.
Starting test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 36, failed: 4, skipped: 10.
Starting test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 37, failed: 4, skipped: 10.
Starting test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 38, failed: 4, skipped: 10.
Starting test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 39, failed: 4, skipped: 10.
Starting test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 40, failed: 4, skipped: 10.
Starting test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 41, failed: 4, skipped: 10.
Starting test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 42, failed: 4, skipped: 10.
Starting test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 43, failed: 4, skipped: 10.
Starting test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 44, failed: 4, skipped: 10.
Starting test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 45, failed: 4, skipped: 10.
Starting test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 46, failed: 4, skipped: 10.
Starting test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 47, failed: 4, skipped: 10.
Starting test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 48, failed: 4, skipped: 10.
Starting test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 49, failed: 4, skipped: 10.
Starting test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 50, failed: 4, skipped: 10.
Starting test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 51, failed: 4, skipped: 10.
Starting test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 52, failed: 4, skipped: 10.
Starting test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 53, failed: 4, skipped: 10.
Starting test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 54, failed: 4, skipped: 10.
Starting test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 55, failed: 4, skipped: 10.
Starting test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 56, failed: 4, skipped: 10.
Starting test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 57, failed: 4, skipped: 10.
Starting test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 58, failed: 4, skipped: 10.
Starting test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 59, failed: 4, skipped: 10.
Starting test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 60, failed: 4, skipped: 10.
Starting test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 61, failed: 4, skipped: 10.
Starting test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 62, failed: 4, skipped: 10.
Starting test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 63, failed: 4, skipped: 10.
Starting test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 64, failed: 4, skipped: 10.
Starting test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 65, failed: 4, skipped: 10.
Starting test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 66, failed: 4, skipped: 10.
Starting test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 67, failed: 4, skipped: 10.
Starting test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 68, failed: 4, skipped: 10.
Starting test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 69, failed: 4, skipped: 10.
Starting test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 70, failed: 4, skipped: 10.
Starting test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 71, failed: 4, skipped: 10.
Starting test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 72, failed: 4, skipped: 10.
Starting test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 73, failed: 4, skipped: 10.
Starting test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 74, failed: 4, skipped: 10.
Starting test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 75, failed: 4, skipped: 10.
Starting test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 76, failed: 4, skipped: 10.
Starting test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 77, failed: 4, skipped: 10.
Starting test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 78, failed: 4, skipped: 10.
Starting test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 79, failed: 4, skipped: 10.
Starting test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 80, failed: 4, skipped: 10.
Starting test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 81, failed: 4, skipped: 10.
Starting test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 82, failed: 4, skipped: 10.
Starting test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 83, failed: 4, skipped: 10.
Starting test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 84, failed: 4, skipped: 10.
Starting test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 85, failed: 4, skipped: 10.
Starting test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 86, failed: 4, skipped: 10.
Starting test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 87, failed: 4, skipped: 10.
Starting test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 88, failed: 4, skipped: 10.
Starting test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 89, failed: 4, skipped: 10.
Starting test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 7ms
Test suite progress: tests succeeded: 90, failed: 4, skipped: 10.
Starting test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 91, failed: 4, skipped: 10.
Starting test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 92, failed: 4, skipped: 10.
Starting test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 93, failed: 4, skipped: 10.
Starting test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 94, failed: 4, skipped: 10.
Starting test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 95, failed: 4, skipped: 10.
Starting test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 96, failed: 4, skipped: 10.
Starting test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 97, failed: 4, skipped: 10.
Starting test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 98, failed: 4, skipped: 10.
Starting test testTemplateBuilderWithImageIdSpecified(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderWithImageIdSpecified(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 18067ms
Test suite progress: tests succeeded: 99, failed: 4, skipped: 10.
Starting test testTemplateBuilderWithLoginUserSpecified(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderWithLoginUserSpecified(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 23921ms
Test suite progress: tests succeeded: 100, failed: 4, skipped: 10.
Starting test testDefaultTemplateBuilder(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)
[TestNG] Test testDefaultTemplateBuilder(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest) succeeded: 3ms
Test suite progress: tests succeeded: 101, failed: 4, skipped: 10.
Tests run: 115, Failures: 4, Errors: 0, Skipped: 10, Time elapsed: 479.253 sec <<< FAILURE!
testCreateAndRunAService(org.jclouds.ninefold.compute.compute.NinefoldComputeServiceLiveTest)  Time elapsed: 143.651 sec  <<< FAILURE!
org.jclouds.compute.RunNodesException: error running 1 node group(ninefold-computes) location(1) image(2188) size(105) options({blockOnPort:seconds=22:300, inboundPorts=[22, 8080], tags=[ninefold-computes], userMetadata={test=ninefold-computes}})
Execution failures:
1) ExecutionException on ninefold-computes-2fc:
java.util.concurrent.ExecutionException: java.lang.IllegalStateException: ip PublicIPAddress{id=42581, account=jclouds, allocated=Fri Jul 13 07:51:50 PDT 2012, associatedNetworkId=582, domain=AA000062-jclouds-dev, domainId=457, usesVirtualNetwork=true, IPAddress=202.2.92.88, isSourceNAT=false, isStaticNAT=false, networkId=200, state=Allocated, virtualMachineDisplayName=null, virtualMachineId=null, virtualMachineName=null, VLANId=null, VLANName=null, zoneId=1, zoneName=Sydney Zone 1, jobId=null, jobStatus=null} should be static NATed to a virtual machine before applying rules
	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: java.lang.IllegalStateException: ip PublicIPAddress{id=42581, account=jclouds, allocated=Fri Jul 13 07:51:50 PDT 2012, associatedNetworkId=582, domain=AA000062-jclouds-dev, domainId=457, usesVirtualNetwork=true, IPAddress=202.2.92.88, isSourceNAT=false, isStaticNAT=false, networkId=200, state=Allocated, virtualMachineDisplayName=null, virtualMachineId=null, virtualMachineName=null, VLANId=null, VLANName=null, zoneId=1, zoneName=Sydney Zone 1, jobId=null, jobStatus=null} should be static NATed to a virtual machine before applying rules
	at com.google.common.base.Preconditions.checkState(Preconditions.java:176)
	at org.jclouds.cloudstack.functions.CreatePortForwardingRulesForIP.apply(CreatePortForwardingRulesForIP.java:75)
	at org.jclouds.cloudstack.functions.CreatePortForwardingRulesForIP.apply(CreatePortForwardingRulesForIP.java:71)
	at org.jclouds.cloudstack.compute.strategy.CloudStackComputeServiceAdapter.createNodeWithGroupEncodedIntoName(CloudStackComputeServiceAdapter.java:204)
	at org.jclouds.compute.strategy.impl.AdaptingComputeServiceStrategies.createNodeWithGroupEncodedIntoName(AdaptingComputeServiceStrategies.java:197)
	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.compute.internal.BaseComputeService.createNodesInGroup(BaseComputeService.java:214)
	at org.jclouds.compute.internal.BaseComputeService.createNodesInGroup(BaseComputeService.java:234)
	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 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: java.lang.IllegalStateException: ip PublicIPAddress{id=42581, account=jclouds, allocated=Fri Jul 13 07:51:50 PDT 2012, associatedNetworkId=582, domain=AA000062-jclouds-dev, domainId=457, usesVirtualNetwork=true, IPAddress=202.2.92.88, isSourceNAT=false, isStaticNAT=false, networkId=200, state=Allocated, virtualMachineDisplayName=null, virtualMachineId=null, virtualMachineName=null, VLANId=null, VLANName=null, zoneId=1, zoneName=Sydney Zone 1, jobId=null, jobStatus=null} should be static NATed to a virtual machine before applying rules
	at com.google.common.base.Preconditions.checkState(Preconditions.java:176)
	at org.jclouds.cloudstack.functions.CreatePortForwardingRulesForIP.apply(CreatePortForwardingRulesForIP.java:75)
	at org.jclouds.cloudstack.functions.CreatePortForwardingRulesForIP.apply(CreatePortForwardingRulesForIP.java:71)
	at org.jclouds.cloudstack.compute.strategy.CloudStackComputeServiceAdapter.createNodeWithGroupEncodedIntoName(CloudStackComputeServiceAdapter.java:204)
	at org.jclouds.compute.strategy.impl.AdaptingComputeServiceStrategies.createNodeWithGroupEncodedIntoName(AdaptingComputeServiceStrategies.java:197)
	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.compute.internal.BaseComputeService.createNodesInGroup(BaseComputeService.java:214)
	at org.jclouds.compute.internal.BaseComputeService.createNodesInGroup(BaseComputeService.java:234)
	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 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.ninefold.compute.compute.NinefoldComputeServiceLiveTest)  Time elapsed: 106.17 sec  <<< FAILURE!
org.jclouds.compute.RunNodesException: error running 1 node group(ninefold-computer) location(1) image(2188) size(105) options({blockOnPort:seconds=22:120})
Execution failures:
1) ExecutionException on ninefold-computer-dea:
java.util.concurrent.ExecutionException: java.lang.IllegalStateException: ip PublicIPAddress{id=42581, account=jclouds, allocated=Fri Jul 13 07:51:50 PDT 2012, associatedNetworkId=582, domain=AA000062-jclouds-dev, domainId=457, usesVirtualNetwork=true, IPAddress=202.2.92.88, isSourceNAT=false, isStaticNAT=false, networkId=200, state=Allocated, virtualMachineDisplayName=null, virtualMachineId=null, virtualMachineName=null, VLANId=null, VLANName=null, zoneId=1, zoneName=Sydney Zone 1, jobId=null, jobStatus=null} should be static NATed to a virtual machine before applying rules
	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: java.lang.IllegalStateException: ip PublicIPAddress{id=42581, account=jclouds, allocated=Fri Jul 13 07:51:50 PDT 2012, associatedNetworkId=582, domain=AA000062-jclouds-dev, domainId=457, usesVirtualNetwork=true, IPAddress=202.2.92.88, isSourceNAT=false, isStaticNAT=false, networkId=200, state=Allocated, virtualMachineDisplayName=null, virtualMachineId=null, virtualMachineName=null, VLANId=null, VLANName=null, zoneId=1, zoneName=Sydney Zone 1, jobId=null, jobStatus=null} should be static NATed to a virtual machine before applying rules
	at com.google.common.base.Preconditions.checkState(Preconditions.java:176)
	at org.jclouds.cloudstack.functions.CreatePortForwardingRulesForIP.apply(CreatePortForwardingRulesForIP.java:75)
	at org.jclouds.cloudstack.functions.CreatePortForwardingRulesForIP.apply(CreatePortForwardingRulesForIP.java:71)
	at org.jclouds.cloudstack.compute.strategy.CloudStackComputeServiceAdapter.createNodeWithGroupEncodedIntoName(CloudStackComputeServiceAdapter.java:204)
	at org.jclouds.compute.strategy.impl.AdaptingComputeServiceStrategies.createNodeWithGroupEncodedIntoName(AdaptingComputeServiceStrategies.java:197)
	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.compute.internal.BaseComputeService.createNodesInGroup(BaseComputeService.java:214)
	at org.jclouds.compute.internal.BaseComputeService.createNodesInGroup(BaseComputeService.java:234)
	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 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: java.lang.IllegalStateException: ip PublicIPAddress{id=42581, account=jclouds, allocated=Fri Jul 13 07:51:50 PDT 2012, associatedNetworkId=582, domain=AA000062-jclouds-dev, domainId=457, usesVirtualNetwork=true, IPAddress=202.2.92.88, isSourceNAT=false, isStaticNAT=false, networkId=200, state=Allocated, virtualMachineDisplayName=null, virtualMachineId=null, virtualMachineName=null, VLANId=null, VLANName=null, zoneId=1, zoneName=Sydney Zone 1, jobId=null, jobStatus=null} should be static NATed to a virtual machine before applying rules
	at com.google.common.base.Preconditions.checkState(Preconditions.java:176)
	at org.jclouds.cloudstack.functions.CreatePortForwardingRulesForIP.apply(CreatePortForwardingRulesForIP.java:75)
	at org.jclouds.cloudstack.functions.CreatePortForwardingRulesForIP.apply(CreatePortForwardingRulesForIP.java:71)
	at org.jclouds.cloudstack.compute.strategy.CloudStackComputeServiceAdapter.createNodeWithGroupEncodedIntoName(CloudStackComputeServiceAdapter.java:204)
	at org.jclouds.compute.strategy.impl.AdaptingComputeServiceStrategies.createNodeWithGroupEncodedIntoName(AdaptingComputeServiceStrategies.java:197)
	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.compute.internal.BaseComputeService.createNodesInGroup(BaseComputeService.java:214)
	at org.jclouds.compute.internal.BaseComputeService.createNodesInGroup(BaseComputeService.java:234)
	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 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.ninefold.compute.compute.NinefoldComputeServiceLiveTest)  Time elapsed: 110.175 sec  <<< FAILURE!
org.jclouds.concurrent.TransformParallelException: error destroyNodesMatching(inGroup(twin0)): {{id=21261, providerId=21261, name=i-505-21261-VM, location={scope=ZONE, id=1, description=Sydney Zone 1, parent=ninefold-compute}, group=twin0, status=PENDING, loginPort=22, hostname=twin0-80a, privateAddresses=[10.17.60.197], hardware={id=105, providerId=105, name=Compute Micro PRD, processors=[{cores=1.0, speed=1200.0}], ram=384, hypervisor=XenServer, supportsImage=ALWAYS_TRUE}}=java.util.concurrent.ExecutionException: org.jclouds.cloudstack.AsyncJobException: job AsyncJob{accountId=null, cmd=null, created=null, id=213122, instanceId=null, instanceType=null, progress=0, result=null, resultCode=FAIL, resultType=object, status=FAILED, userId=null, error=AsyncJobError{errorCode=INTERNAL_ERROR, errorText=Internal error executing command, please contact your system administrator}} failed with exception AsyncJobError{errorCode=INTERNAL_ERROR, errorText=Internal error executing command, please contact your system administrator}}
	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 org.jclouds.compute.internal.BaseComputeServiceLiveTest.testConcurrentUseOfComputeServiceToCreateNodes(BaseComputeServiceLiveTest.java:452)
	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.cloudstack.AsyncJobException: job AsyncJob{accountId=null, cmd=null, created=null, id=213122, instanceId=null, instanceType=null, progress=0, result=null, resultCode=FAIL, resultType=object, status=FAILED, userId=null, error=AsyncJobError{errorCode=INTERNAL_ERROR, errorText=Internal error executing command, please contact your system administrator}} failed with exception AsyncJobError{errorCode=INTERNAL_ERROR, errorText=Internal error executing command, please contact your system administrator}
	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.cloudstack.AsyncJobException: job AsyncJob{accountId=null, cmd=null, created=null, id=213122, instanceId=null, instanceType=null, progress=0, result=null, resultCode=FAIL, resultType=object, status=FAILED, userId=null, error=AsyncJobError{errorCode=INTERNAL_ERROR, errorText=Internal error executing command, please contact your system administrator}} failed with exception AsyncJobError{errorCode=INTERNAL_ERROR, errorText=Internal error executing command, please contact your system administrator}
	at org.jclouds.cloudstack.predicates.JobComplete.apply(JobComplete.java:62)
	at org.jclouds.cloudstack.predicates.JobComplete.apply(JobComplete.java:40)
	at org.jclouds.util.Predicates2$RetryablePredicate.apply(Predicates2.java:113)
	at org.jclouds.cloudstack.compute.strategy.CloudStackComputeServiceAdapter.awaitCompletion(CloudStackComputeServiceAdapter.java:375)
	at org.jclouds.cloudstack.compute.strategy.CloudStackComputeServiceAdapter.destroyVirtualMachine(CloudStackComputeServiceAdapter.java:306)
	at org.jclouds.cloudstack.compute.strategy.CloudStackComputeServiceAdapter.destroyNode(CloudStackComputeServiceAdapter.java:289)
	at org.jclouds.compute.strategy.impl.AdaptingComputeServiceStrategies.destroyNode(AdaptingComputeServiceStrategies.java:183)
	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 org.jclouds.compute.internal.BaseComputeServiceLiveTest.testConcurrentUseOfComputeServiceToCreateNodes(BaseComputeServiceLiveTest.java:452)
	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.cloudstack.AsyncJobException: job AsyncJob{accountId=null, cmd=null, created=null, id=213122, instanceId=null, instanceType=null, progress=0, result=null, resultCode=FAIL, resultType=object, status=FAILED, userId=null, error=AsyncJobError{errorCode=INTERNAL_ERROR, errorText=Internal error executing command, please contact your system administrator}} failed with exception AsyncJobError{errorCode=INTERNAL_ERROR, errorText=Internal error executing command, please contact your system administrator}
	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.cloudstack.AsyncJobException: job AsyncJob{accountId=null, cmd=null, created=null, id=213122, instanceId=null, instanceType=null, progress=0, result=null, resultCode=FAIL, resultType=object, status=FAILED, userId=null, error=AsyncJobError{errorCode=INTERNAL_ERROR, errorText=Internal error executing command, please contact your system administrator}} failed with exception AsyncJobError{errorCode=INTERNAL_ERROR, errorText=Internal error executing command, please contact your system administrator}
	at org.jclouds.cloudstack.predicates.JobComplete.apply(JobComplete.java:62)
	at org.jclouds.cloudstack.predicates.JobComplete.apply(JobComplete.java:40)
	at org.jclouds.util.Predicates2$RetryablePredicate.apply(Predicates2.java:113)
	at org.jclouds.cloudstack.compute.strategy.CloudStackComputeServiceAdapter.awaitCompletion(CloudStackComputeServiceAdapter.java:375)
	at org.jclouds.cloudstack.compute.strategy.CloudStackComputeServiceAdapter.destroyVirtualMachine(CloudStackComputeServiceAdapter.java:306)
	at org.jclouds.cloudstack.compute.strategy.CloudStackComputeServiceAdapter.destroyNode(CloudStackComputeServiceAdapter.java:289)
	at org.jclouds.compute.strategy.impl.AdaptingComputeServiceStrategies.destroyNode(AdaptingComputeServiceStrategies.java:183)
	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 org.jclouds.compute.internal.BaseComputeServiceLiveTest.testConcurrentUseOfComputeServiceToCreateNodes(BaseComputeServiceLiveTest.java:452)
	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

testFromTemplate(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest)  Time elapsed: 0.015 sec  <<< FAILURE!
java.lang.AssertionError: expected [{image={id=2188, providerId=2188, name=Ubuntu 10.04.4 x64 Micro [80GB], location={scope=ZONE, id=1, description=Sydney Zone 1, parent=ninefold-compute}, os={family=ubuntu, name=Ubuntu, version=10.04, description=Ubuntu 10.04 (64-bit), is64Bit=true}, description=Ubuntu 10.04.4 x64 Micro [80GB], status=AVAILABLE, loginUser=root}, hardware={id=105, providerId=105, name=Compute Micro PRD, processors=[{cores=1.0, speed=1200.0}], ram=384, supportsImage=ALWAYS_TRUE}, location={scope=ZONE, id=1, description=Sydney Zone 1, parent=ninefold-compute}, options={loginUser=user, loginPasswordPresent=true, loginPrivateKeyPresent=true, authenticateSudo=true}}] but found [{image={id=2188, providerId=2188, name=Ubuntu 10.04.4 x64 Micro [80GB], location={scope=ZONE, id=1, description=Sydney Zone 1, parent=ninefold-compute}, os={family=ubuntu, name=Ubuntu, version=10.04, description=Ubuntu 10.04 (64-bit), is64Bit=true}, description=Ubuntu 10.04.4 x64 Micro [80GB], status=AVAILABLE, loginUser=root}, hardware={id=105, providerId=105, name=Compute Micro PRD, processors=[{cores=1.0, speed=1200.0}], ram=384, supportsImage=ALWAYS_TRUE}, location={scope=ZONE, id=1, description=Sydney Zone 1, parent=ninefold-compute}, options={loginUser=user, loginPasswordPresent=true, authenticateSudo=true}}]
	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.testFromTemplate(BaseTemplateBuilderLiveTest.java:93)
	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)


Results :

Failed tests:   testCreateAndRunAService(org.jclouds.ninefold.compute.compute.NinefoldComputeServiceLiveTest): error running 1 node group(ninefold-computes) location(1) image(2188) size(105) options({blockOnPort:seconds=22:300, inboundPorts=[22, 8080], tags=[ninefold-computes], userMetadata={test=ninefold-computes}})(..)
  testAScriptExecutionAfterBootWithBasicTemplate(org.jclouds.ninefold.compute.compute.NinefoldComputeServiceLiveTest): error running 1 node group(ninefold-computer) location(1) image(2188) size(105) options({blockOnPort:seconds=22:120})(..)
  testConcurrentUseOfComputeServiceToCreateNodes(org.jclouds.ninefold.compute.compute.NinefoldComputeServiceLiveTest): error destroyNodesMatching(inGroup(twin0)): {{id=21261, providerId=21261, name=i-505-21261-VM, location={scope=ZONE, id=1, description=Sydney Zone 1, parent=ninefold-compute}, group=twin0, status=PENDING, loginPort=22, hostname=twin0-80a, privateAddresses=[10.17.60.197], hardware={id=105, providerId=105, name=Compute Micro PRD, processors=[{cores=1.0, speed=1200.0}], ram=384, hypervisor=XenServer, supportsImage=ALWAYS_TRUE}}=java.util.concurrent.ExecutionException: org.jclouds.cloudstack.AsyncJobException: job AsyncJob{accountId=null, cmd=null, created=null, id=213122, instanceId=null, instanceType=null, progress=0, result=null, resultCode=FAIL, resultType=object, status=FAILED, userId=null, error=AsyncJobError{errorCode=INTERNAL_ERROR, errorText=Internal error executing command, please contact your system administrator}} failed with exception AsyncJobError{errorCode=INTERNAL_ERROR, errorText=Internal error executing command, please contact your system administrator}}
  testFromTemplate(org.jclouds.ninefold.compute.compute.NinefoldComputeTemplateBuilderLiveTest): expected [{image={id=2188, providerId=2188, name=Ubuntu 10.04.4 x64 Micro [80GB], location={scope=ZONE, id=1, description=Sydney Zone 1, parent=ninefold-compute}, os={family=ubuntu, name=Ubuntu, version=10.04, description=Ubuntu 10.04 (64-bit), is64Bit=true}, description=Ubuntu 10.04.4 x64 Micro [80GB], status=AVAILABLE, loginUser=root}, hardware={id=105, providerId=105, name=Compute Micro PRD, processors=[{cores=1.0, speed=1200.0}], ram=384, supportsImage=ALWAYS_TRUE}, location={scope=ZONE, id=1, description=Sydney Zone 1, parent=ninefold-compute}, options={loginUser=user, loginPasswordPresent=true, loginPrivateKeyPresent=true, authenticateSudo=true}}] but found [{image={id=2188, providerId=2188, name=Ubuntu 10.04.4 x64 Micro [80GB], location={scope=ZONE, id=1, description=Sydney Zone 1, parent=ninefold-compute}, os={family=ubuntu, name=Ubuntu, version=10.04, description=Ubuntu 10.04 (64-bit), is64Bit=true}, description=Ubuntu 10.04.4 x64 Micro [80GB], status=AVAILABLE, loginUser=root}, hardware={id=105, providerId=105, name=Compute Micro PRD, processors=[{cores=1.0, speed=1200.0}], ram=384, supportsImage=ALWAYS_TRUE}, location={scope=ZONE, id=1, description=Sydney Zone 1, parent=ninefold-compute}, options={loginUser=user, loginPasswordPresent=true, authenticateSudo=true}}]

Tests run: 115, Failures: 4, Errors: 0, Skipped: 10

[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 8:04.738s
[INFO] Finished at: Sat Apr 27 17:44:15 PDT 2013
[INFO] Final Memory: 18M/125M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.12.4:test (integration) on project ninefold-compute: There are test failures.
[ERROR] 
[ERROR] Please refer to /private/tmp/jclouds/providers/ninefold-compute/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
