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

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running org.jclouds.go2cloud.Go2CloudJohannesburg1ProviderTest
Configuring TestNG with: org.apache.maven.surefire.testng.conf.TestNG652Configurator@5a77a7f9
Starting test testTransformableToContains(org.jclouds.go2cloud.Go2CloudJohannesburg1ProviderTest)
Starting test testAllContains(org.jclouds.go2cloud.Go2CloudJohannesburg1ProviderTest)
Starting test testWithId(org.jclouds.go2cloud.Go2CloudJohannesburg1ProviderTest)
Starting test testOfApiContains(org.jclouds.go2cloud.Go2CloudJohannesburg1ProviderTest)
[pool-1-thread-1] Test testAllContains(org.jclouds.go2cloud.Go2CloudJohannesburg1ProviderTest) succeeded: 11ms
Test suite progress: tests succeeded: 1, failed: 0, skipped: 0.
[pool-1-thread-2] Test testOfApiContains(org.jclouds.go2cloud.Go2CloudJohannesburg1ProviderTest) succeeded: 14ms
Test suite progress: tests succeeded: 2, failed: 0, skipped: 0.
[pool-1-thread-3] Test testTransformableToContains(org.jclouds.go2cloud.Go2CloudJohannesburg1ProviderTest) succeeded: 16ms
Test suite progress: tests succeeded: 3, failed: 0, skipped: 0.
[pool-1-thread-4] Test testWithId(org.jclouds.go2cloud.Go2CloudJohannesburg1ProviderTest) succeeded: 17ms
Test suite progress: tests succeeded: 4, failed: 0, skipped: 0.
Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.467 sec

Results :

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

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

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running TestSuite
Configuring TestNG with: org.apache.maven.surefire.testng.conf.TestNG652Configurator@2996c1b0
Starting test testCompareSizes(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
Starting test setServiceDefaults(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1ComputeServiceLiveTest)
[TestNG] Test setServiceDefaults(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1ComputeServiceLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 1, failed: 0, skipped: 0.
Starting test testCompareSizes(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1ComputeServiceLiveTest)
[TestNG] Test testCompareSizes(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1ComputeServiceLiveTest) succeeded: 6259ms
Test suite progress: tests succeeded: 2, failed: 0, skipped: 0.
Starting test testCorrectExceptionRunningNodesNotFound(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1ComputeServiceLiveTest)
Starting test testCreateDrive(org.jclouds.go2cloud.Go2CloudJohannesburg1ClientLiveTest)
smallest {id=cpu=1000.000000,ram=512,disk=1.000000, providerId=cpu=1000.000000,ram=512,disk=1.000000, processors=[{cores=1.0, speed=1000.0}], ram=512, volumes=[{type=LOCAL, size=1.0, bootDevice=true, durable=true}], hypervisor=kvm, supportsImage=sizeLessThanOrEqual(1.0)}
fastest {id=cpu=20000.000000,ram=512,disk=20.000000, providerId=cpu=20000.000000,ram=512,disk=20.000000, processors=[{cores=1.0, speed=20000.0}], ram=512, volumes=[{type=LOCAL, size=20.0, bootDevice=true, durable=true}], hypervisor=kvm, supportsImage=sizeLessThanOrEqual(20.0)}
biggest {id=cpu=20000.000000,ram=8192,disk=20.000000, providerId=cpu=20000.000000,ram=8192,disk=20.000000, processors=[{cores=1.0, speed=20000.0}], ram=8192, volumes=[{type=LOCAL, size=20.0, bootDevice=true, durable=true}], hypervisor=kvm, supportsImage=sizeLessThanOrEqual(20.0)}
[TestNG] Test testCompareSizes(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 6919ms
Test suite progress: tests succeeded: 3, failed: 0, skipped: 0.
Starting test testFromTemplate(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testFromTemplate(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 6ms
Test suite progress: tests succeeded: 4, failed: 0, skipped: 0.
Starting test testGetAssignableLocations(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testGetAssignableLocations(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 5, failed: 0, skipped: 0.
Starting test testTemplateBuilderCanFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCanFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) failed.
Test suite progress: tests succeeded: 5, failed: 1, skipped: 0.
Starting test testTemplateBuilderCanFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCanFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 6, failed: 1, skipped: 0.
Starting test testTemplateBuilderCanFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCanFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 7, failed: 1, skipped: 0.
Starting test testTemplateBuilderCanFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCanFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 2ms
Test suite progress: tests succeeded: 8, failed: 1, skipped: 0.
Starting test testTemplateBuilderCanFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCanFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 9, failed: 1, skipped: 0.
Starting test testTemplateBuilderCanUseImageId(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testCorrectExceptionRunningNodesNotFound(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1ComputeServiceLiveTest) succeeded: 693ms
Test suite progress: tests succeeded: 10, failed: 1, skipped: 0.
Starting test testGetAssignableLocations(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1ComputeServiceLiveTest)
[TestNG] Test testGetAssignableLocations(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1ComputeServiceLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 11, failed: 1, skipped: 0.
Starting test testImageById(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1ComputeServiceLiveTest)
[TestNG] Test testCreateDrive(org.jclouds.go2cloud.Go2CloudJohannesburg1ClientLiveTest) failed.
Test suite progress: tests succeeded: 11, failed: 2, skipped: 0.
Starting test testGetDrive(org.jclouds.go2cloud.Go2CloudJohannesburg1ClientLiveTest)
[TestNG] Test testImageById(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1ComputeServiceLiveTest) succeeded: 717ms
Test suite progress: tests succeeded: 12, failed: 2, skipped: 0.
Starting test testImagesCache(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1ComputeServiceLiveTest)
[TestNG] Test testImagesCache(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1ComputeServiceLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 13, failed: 2, skipped: 0.
Starting test testListImages(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1ComputeServiceLiveTest)
[TestNG] Test testListImages(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1ComputeServiceLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 14, failed: 2, skipped: 0.
Starting test testListSizes(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1ComputeServiceLiveTest)
[TestNG] Test testListSizes(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1ComputeServiceLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 15, failed: 2, skipped: 0.
Starting test testOptionToNotBlock(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1ComputeServiceLiveTest)
[TestNG] Test testOptionToNotBlock(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1ComputeServiceLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 16, failed: 2, skipped: 0.
Starting test testCreateAndRunAService(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1ComputeServiceLiveTest)
[TestNG] Test testGetDrive(org.jclouds.go2cloud.Go2CloudJohannesburg1ClientLiveTest) succeeded: 707ms
Test suite progress: tests succeeded: 17, failed: 2, skipped: 0.
Starting test testGetServer(org.jclouds.go2cloud.Go2CloudJohannesburg1ClientLiveTest)
[TestNG] Test testGetServer(org.jclouds.go2cloud.Go2CloudJohannesburg1ClientLiveTest) succeeded: 694ms
Test suite progress: tests succeeded: 18, failed: 2, skipped: 0.
Starting test testListDriveInfo(org.jclouds.go2cloud.Go2CloudJohannesburg1ClientLiveTest)
[TestNG] Test testListDriveInfo(org.jclouds.go2cloud.Go2CloudJohannesburg1ClientLiveTest) succeeded: 720ms
Test suite progress: tests succeeded: 19, failed: 2, skipped: 0.
Starting test testListDrives(org.jclouds.go2cloud.Go2CloudJohannesburg1ClientLiveTest)
[TestNG] Test testTemplateBuilderCanUseImageId(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 3364ms
Test suite progress: tests succeeded: 20, failed: 2, skipped: 0.
Starting test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 21, failed: 2, skipped: 0.
Starting test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 22, failed: 2, skipped: 0.
Starting test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 23, failed: 2, skipped: 0.
Starting test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 24, failed: 2, skipped: 0.
Starting test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 25, failed: 2, skipped: 0.
Starting test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 26, failed: 2, skipped: 0.
Starting test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 27, failed: 2, skipped: 0.
Starting test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 28, failed: 2, skipped: 0.
Starting test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 29, failed: 2, skipped: 0.
Starting test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 30, failed: 2, skipped: 0.
Starting test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 31, failed: 2, skipped: 0.
Starting test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 32, failed: 2, skipped: 0.
Starting test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 33, failed: 2, skipped: 0.
Starting test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 34, failed: 2, skipped: 0.
Starting test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 35, failed: 2, skipped: 0.
Starting test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 36, failed: 2, skipped: 0.
Starting test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 37, failed: 2, skipped: 0.
Starting test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 38, failed: 2, skipped: 0.
Starting test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 39, failed: 2, skipped: 0.
Starting test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 40, failed: 2, skipped: 0.
Starting test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 41, failed: 2, skipped: 0.
Starting test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 42, failed: 2, skipped: 0.
Starting test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 43, failed: 2, skipped: 0.
Starting test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 44, failed: 2, skipped: 0.
Starting test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 45, failed: 2, skipped: 0.
Starting test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 46, failed: 2, skipped: 0.
Starting test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 47, failed: 2, skipped: 0.
Starting test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 48, failed: 2, skipped: 0.
Starting test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 49, failed: 2, skipped: 0.
Starting test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 50, failed: 2, skipped: 0.
Starting test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 51, failed: 2, skipped: 0.
Starting test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 52, failed: 2, skipped: 0.
Starting test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 53, failed: 2, skipped: 0.
Starting test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 54, failed: 2, skipped: 0.
Starting test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 55, failed: 2, skipped: 0.
Starting test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 56, failed: 2, skipped: 0.
Starting test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 57, failed: 2, skipped: 0.
Starting test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 58, failed: 2, skipped: 0.
Starting test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 59, failed: 2, skipped: 0.
Starting test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 60, failed: 2, skipped: 0.
Starting test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 61, failed: 2, skipped: 0.
Starting test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 62, failed: 2, skipped: 0.
Starting test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 63, failed: 2, skipped: 0.
Starting test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 64, failed: 2, skipped: 0.
Starting test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 65, failed: 2, skipped: 0.
Starting test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 66, failed: 2, skipped: 0.
Starting test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 67, failed: 2, skipped: 0.
Starting test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 68, failed: 2, skipped: 0.
Starting test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 4ms
Test suite progress: tests succeeded: 69, failed: 2, skipped: 0.
Starting test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 70, failed: 2, skipped: 0.
Starting test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 71, failed: 2, skipped: 0.
Starting test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 72, failed: 2, skipped: 0.
Starting test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 73, failed: 2, skipped: 0.
Starting test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 74, failed: 2, skipped: 0.
Starting test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 75, failed: 2, skipped: 0.
Starting test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 76, failed: 2, skipped: 0.
Starting test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 77, failed: 2, skipped: 0.
Starting test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 78, failed: 2, skipped: 0.
Starting test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 79, failed: 2, skipped: 0.
Starting test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 80, failed: 2, skipped: 0.
Starting test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 81, failed: 2, skipped: 0.
Starting test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 82, failed: 2, skipped: 0.
Starting test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 83, failed: 2, skipped: 0.
Starting test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 84, failed: 2, skipped: 0.
Starting test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 85, failed: 2, skipped: 0.
Starting test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 86, failed: 2, skipped: 0.
Starting test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 87, failed: 2, skipped: 0.
Starting test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 88, failed: 2, skipped: 0.
Starting test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 89, failed: 2, skipped: 0.
Starting test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 90, failed: 2, skipped: 0.
Starting test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 91, failed: 2, skipped: 0.
Starting test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 92, failed: 2, skipped: 0.
Starting test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 93, failed: 2, skipped: 0.
Starting test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 94, failed: 2, skipped: 0.
Starting test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 95, failed: 2, skipped: 0.
Starting test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 96, failed: 2, skipped: 0.
Starting test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 97, failed: 2, skipped: 0.
Starting test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 1ms
Test suite progress: tests succeeded: 98, failed: 2, skipped: 0.
Starting test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testTemplateBuilderCannotFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 0ms
Test suite progress: tests succeeded: 99, failed: 2, skipped: 0.
Starting test testTemplateBuilderWithImageIdSpecified(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testListDrives(org.jclouds.go2cloud.Go2CloudJohannesburg1ClientLiveTest) succeeded: 726ms
Test suite progress: tests succeeded: 100, failed: 2, skipped: 0.
Starting test testListServers(org.jclouds.go2cloud.Go2CloudJohannesburg1ClientLiveTest)
[TestNG] Test testCreateAndRunAService(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1ComputeServiceLiveTest) failed.
Test suite progress: tests succeeded: 100, failed: 3, skipped: 0.
Starting test testCorrectAuthException(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1ComputeServiceLiveTest)
[TestNG] Test testListServers(org.jclouds.go2cloud.Go2CloudJohannesburg1ClientLiveTest) succeeded: 693ms
Test suite progress: tests succeeded: 101, failed: 3, skipped: 0.
Starting test testWeCanReadAndWriteToDrive(org.jclouds.go2cloud.Go2CloudJohannesburg1ClientLiveTest)
[TestNG] Test testCorrectAuthException(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1ComputeServiceLiveTest) succeeded: 863ms
Test suite progress: tests succeeded: 102, failed: 3, skipped: 0.
Starting test testAScriptExecutionAfterBootWithBasicTemplate(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1ComputeServiceLiveTest)
[TestNG] Test testWeCanReadAndWriteToDrive(org.jclouds.go2cloud.Go2CloudJohannesburg1ClientLiveTest) failed.
Test suite progress: tests succeeded: 102, failed: 4, skipped: 0.
Starting test testListServerInfo(org.jclouds.go2cloud.Go2CloudJohannesburg1ClientLiveTest)
[TestNG] Test testListServerInfo(org.jclouds.go2cloud.Go2CloudJohannesburg1ClientLiveTest) succeeded: 690ms
Test suite progress: tests succeeded: 103, failed: 4, skipped: 0.
[TestNG] Test testSetDriveData(org.jclouds.go2cloud.Go2CloudJohannesburg1ClientLiveTest) skipped.
Test suite progress: tests succeeded: 103, failed: 4, skipped: 1.
[TestNG] Test testWeCopyADriveContentsViaGzip(org.jclouds.go2cloud.Go2CloudJohannesburg1ClientLiveTest) skipped.
Test suite progress: tests succeeded: 103, failed: 4, skipped: 2.
[TestNG] Test testCreateAndStartServer(org.jclouds.go2cloud.Go2CloudJohannesburg1ClientLiveTest) skipped.
Test suite progress: tests succeeded: 103, failed: 4, skipped: 3.
[TestNG] Test testConnectivity(org.jclouds.go2cloud.Go2CloudJohannesburg1ClientLiveTest) skipped.
Test suite progress: tests succeeded: 103, failed: 4, skipped: 4.
[TestNG] Test testLifeCycle(org.jclouds.go2cloud.Go2CloudJohannesburg1ClientLiveTest) skipped.
Test suite progress: tests succeeded: 103, failed: 4, skipped: 5.
[TestNG] Test testSetServerConfiguration(org.jclouds.go2cloud.Go2CloudJohannesburg1ClientLiveTest) skipped.
Test suite progress: tests succeeded: 103, failed: 4, skipped: 6.
[TestNG] Test testDestroyServer(org.jclouds.go2cloud.Go2CloudJohannesburg1ClientLiveTest) skipped.
Test suite progress: tests succeeded: 103, failed: 4, skipped: 7.
[TestNG] Test testDestroyDrive(org.jclouds.go2cloud.Go2CloudJohannesburg1ClientLiveTest) skipped.
Test suite progress: tests succeeded: 103, failed: 4, skipped: 8.
[TestNG] Test testAScriptExecutionAfterBootWithBasicTemplate(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1ComputeServiceLiveTest) failed.
Test suite progress: tests succeeded: 103, failed: 5, skipped: 8.
Starting test testConcurrentUseOfComputeServiceToCreateNodes(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1ComputeServiceLiveTest)
[TestNG] Test testTemplateBuilderWithImageIdSpecified(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 6730ms
Test suite progress: tests succeeded: 104, failed: 5, skipped: 8.
Starting test testTemplateBuilderWithLoginUserSpecified(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testConcurrentUseOfComputeServiceToCreateNodes(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1ComputeServiceLiveTest) failed.
Test suite progress: tests succeeded: 104, failed: 6, skipped: 8.
Starting test testTemplateMatch(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1ComputeServiceLiveTest)
[TestNG] Test testTemplateMatch(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1ComputeServiceLiveTest) succeeded: 3ms
Test suite progress: tests succeeded: 105, failed: 6, skipped: 8.
[TestNG] Test testCreateTwoNodesWithRunScript(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1ComputeServiceLiveTest) skipped.
Test suite progress: tests succeeded: 105, failed: 6, skipped: 9.
[TestNG] Test testCreateAnotherNodeWithANewContextToEnsureSharedMemIsntRequired(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1ComputeServiceLiveTest) skipped.
Test suite progress: tests succeeded: 105, failed: 6, skipped: 10.
[TestNG] Test testCredentialsCache(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1ComputeServiceLiveTest) skipped.
Test suite progress: tests succeeded: 105, failed: 6, skipped: 11.
[TestNG] Test testGet(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1ComputeServiceLiveTest) skipped.
Test suite progress: tests succeeded: 105, failed: 6, skipped: 12.
[TestNG] Test testReboot(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1ComputeServiceLiveTest) skipped.
Test suite progress: tests succeeded: 105, failed: 6, skipped: 13.
[TestNG] Test testSuspendResume(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1ComputeServiceLiveTest) skipped.
Test suite progress: tests succeeded: 105, failed: 6, skipped: 14.
[TestNG] Test testGetNodesWithDetails(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1ComputeServiceLiveTest) skipped.
Test suite progress: tests succeeded: 105, failed: 6, skipped: 15.
[TestNG] Test testListNodes(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1ComputeServiceLiveTest) skipped.
Test suite progress: tests succeeded: 105, failed: 6, skipped: 16.
[TestNG] Test testListNodesByIds(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1ComputeServiceLiveTest) skipped.
Test suite progress: tests succeeded: 105, failed: 6, skipped: 17.
[TestNG] Test testDestroyNodes(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1ComputeServiceLiveTest) skipped.
Test suite progress: tests succeeded: 105, failed: 6, skipped: 18.
[TestNG] Test testTemplateBuilderWithLoginUserSpecified(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 6519ms
Test suite progress: tests succeeded: 106, failed: 6, skipped: 18.
Starting test testDefaultTemplateBuilder(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)
[TestNG] Test testDefaultTemplateBuilder(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest) succeeded: 3ms
Test suite progress: tests succeeded: 107, failed: 6, skipped: 18.
Tests run: 131, Failures: 6, Errors: 0, Skipped: 18, Time elapsed: 25.515 sec <<< FAILURE!
testTemplateBuilderCanFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest)  Time elapsed: 0.005 sec  <<< FAILURE!
java.util.NoSuchElementException: no image matched predicate: And(nullEqualToIsParentOrIsGrandparentOfCurrentLocation(),And(osFamily(windows),os64Bit(true)))
	at org.jclouds.compute.domain.internal.TemplateBuilderImpl.throwNoSuchElementExceptionAfterLoggingImageIds(TemplateBuilderImpl.java:723)
	at org.jclouds.compute.domain.internal.TemplateBuilderImpl.findSupportedImages(TemplateBuilderImpl.java:697)
	at org.jclouds.compute.domain.internal.TemplateBuilderImpl.build(TemplateBuilderImpl.java:679)
	at org.jclouds.compute.internal.BaseTemplateBuilderLiveTest.testTemplateBuilderCanFind(BaseTemplateBuilderLiveTest.java:141)
	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)

testCreateDrive(org.jclouds.go2cloud.Go2CloudJohannesburg1ClientLiveTest)  Time elapsed: 0.631 sec  <<< FAILURE!
org.jclouds.http.HttpResponseException: command: POST http://api.jhb1.go2cloud.co.za/drives/create HTTP/1.1 failed with response: HTTP/1.1 402 Payment Required; content: [Please top up your balance, which is currently negative
]
	at org.jclouds.elasticstack.handlers.ElasticStackErrorHandler.handleError(ElasticStackErrorHandler.java:56)
	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.$Proxy56.createDrive(Unknown Source)
	at org.jclouds.elasticstack.ElasticStackClientLiveTest.testCreateDrive(ElasticStackClientLiveTest.java:139)
	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)

testCreateAndRunAService(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1ComputeServiceLiveTest)  Time elapsed: 0.282 sec  <<< FAILURE!
org.jclouds.compute.RunNodesException: error running 1 node group(go2cloud-s) location(go2cloud-jhb1) image(14c88d27-1f5e-4ad5-9f3a-28e5d2282f61) size(cpu=1000.000000,ram=512,disk=1.000000) options({blockOnPort:seconds=22:300, inboundPorts=[22, 8080], tags=[go2cloud-s], userMetadata={test=go2cloud-s}})
Execution failures:
1) ExecutionException on go2cloud-s-60f:
java.util.concurrent.ExecutionException: org.jclouds.http.HttpResponseException: command: POST http://api.jhb1.go2cloud.co.za/drives/create HTTP/1.1 failed with response: HTTP/1.1 402 Payment Required; content: [Please top up your balance, which is currently negative
]
	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 http://api.jhb1.go2cloud.co.za/drives/create HTTP/1.1 failed with response: HTTP/1.1 402 Payment Required; content: [Please top up your balance, which is currently negative
]
	at org.jclouds.elasticstack.handlers.ElasticStackErrorHandler.handleError(ElasticStackErrorHandler.java:56)
	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.$Proxy56.createDrive(Unknown Source)
	at org.jclouds.elasticstack.compute.ElasticStackComputeServiceAdapter.createNodeWithGroupEncodedIntoName(ElasticStackComputeServiceAdapter.java:113)
	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: org.jclouds.http.HttpResponseException: command: POST http://api.jhb1.go2cloud.co.za/drives/create HTTP/1.1 failed with response: HTTP/1.1 402 Payment Required; content: [Please top up your balance, which is currently negative
]
	at org.jclouds.elasticstack.handlers.ElasticStackErrorHandler.handleError(ElasticStackErrorHandler.java:56)
	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.$Proxy56.createDrive(Unknown Source)
	at org.jclouds.elasticstack.compute.ElasticStackComputeServiceAdapter.createNodeWithGroupEncodedIntoName(ElasticStackComputeServiceAdapter.java:113)
	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)

testWeCanReadAndWriteToDrive(org.jclouds.go2cloud.Go2CloudJohannesburg1ClientLiveTest)  Time elapsed: 0.436 sec  <<< FAILURE!
org.jclouds.http.HttpResponseException: command: POST http://api.jhb1.go2cloud.co.za/drives/create HTTP/1.1 failed with response: HTTP/1.1 402 Payment Required; content: [Please top up your balance, which is currently negative
]
	at org.jclouds.elasticstack.handlers.ElasticStackErrorHandler.handleError(ElasticStackErrorHandler.java:56)
	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.$Proxy56.createDrive(Unknown Source)
	at org.jclouds.elasticstack.ElasticStackClientLiveTest.testWeCanReadAndWriteToDrive(ElasticStackClientLiveTest.java:317)
	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.go2cloud.compute.Go2CloudJohannesburg1ComputeServiceLiveTest)  Time elapsed: 2.66 sec  <<< FAILURE!
org.jclouds.compute.RunNodesException: error running 1 node group(go2cloud-r) location(go2cloud-jhb1) image(14c88d27-1f5e-4ad5-9f3a-28e5d2282f61) size(cpu=1000.000000,ram=512,disk=1.000000) options({blockOnPort:seconds=22:120})
Execution failures:
1) ExecutionException on go2cloud-r-1b4:
java.util.concurrent.ExecutionException: org.jclouds.http.HttpResponseException: command: POST http://api.jhb1.go2cloud.co.za/drives/create HTTP/1.1 failed with response: HTTP/1.1 402 Payment Required; content: [Please top up your balance, which is currently negative
]
	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 http://api.jhb1.go2cloud.co.za/drives/create HTTP/1.1 failed with response: HTTP/1.1 402 Payment Required; content: [Please top up your balance, which is currently negative
]
	at org.jclouds.elasticstack.handlers.ElasticStackErrorHandler.handleError(ElasticStackErrorHandler.java:56)
	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.$Proxy56.createDrive(Unknown Source)
	at org.jclouds.elasticstack.compute.ElasticStackComputeServiceAdapter.createNodeWithGroupEncodedIntoName(ElasticStackComputeServiceAdapter.java:113)
	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: org.jclouds.http.HttpResponseException: command: POST http://api.jhb1.go2cloud.co.za/drives/create HTTP/1.1 failed with response: HTTP/1.1 402 Payment Required; content: [Please top up your balance, which is currently negative
]
	at org.jclouds.elasticstack.handlers.ElasticStackErrorHandler.handleError(ElasticStackErrorHandler.java:56)
	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.$Proxy56.createDrive(Unknown Source)
	at org.jclouds.elasticstack.compute.ElasticStackComputeServiceAdapter.createNodeWithGroupEncodedIntoName(ElasticStackComputeServiceAdapter.java:113)
	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.go2cloud.compute.Go2CloudJohannesburg1ComputeServiceLiveTest)  Time elapsed: 0.835 sec  <<< FAILURE!
java.util.concurrent.ExecutionException: org.jclouds.compute.RunNodesException: error running 1 node group(twin1) location(go2cloud-jhb1) image(14c88d27-1f5e-4ad5-9f3a-28e5d2282f61) size(cpu=1000.000000,ram=512,disk=1.000000) options({blockOnPort:seconds=22:301, inboundPorts=[22, 8080]})
Execution failures:
1) ExecutionException on twin1-d34:
java.util.concurrent.ExecutionException: org.jclouds.http.HttpResponseException: command: POST http://api.jhb1.go2cloud.co.za/drives/create HTTP/1.1 failed with response: HTTP/1.1 402 Payment Required; content: [Please top up your balance, which is currently negative
]
	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 http://api.jhb1.go2cloud.co.za/drives/create HTTP/1.1 failed with response: HTTP/1.1 402 Payment Required; content: [Please top up your balance, which is currently negative
]
	at org.jclouds.elasticstack.handlers.ElasticStackErrorHandler.handleError(ElasticStackErrorHandler.java:56)
	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.$Proxy56.createDrive(Unknown Source)
	at org.jclouds.elasticstack.compute.ElasticStackComputeServiceAdapter.createNodeWithGroupEncodedIntoName(ElasticStackComputeServiceAdapter.java:113)
	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$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(go2cloud-jhb1) image(14c88d27-1f5e-4ad5-9f3a-28e5d2282f61) size(cpu=1000.000000,ram=512,disk=1.000000) options({blockOnPort:seconds=22:301, inboundPorts=[22, 8080]})
Execution failures:
1) ExecutionException on twin1-d34:
java.util.concurrent.ExecutionException: org.jclouds.http.HttpResponseException: command: POST http://api.jhb1.go2cloud.co.za/drives/create HTTP/1.1 failed with response: HTTP/1.1 402 Payment Required; content: [Please top up your balance, which is currently negative
]
	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 http://api.jhb1.go2cloud.co.za/drives/create HTTP/1.1 failed with response: HTTP/1.1 402 Payment Required; content: [Please top up your balance, which is currently negative
]
	at org.jclouds.elasticstack.handlers.ElasticStackErrorHandler.handleError(ElasticStackErrorHandler.java:56)
	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.$Proxy56.createDrive(Unknown Source)
	at org.jclouds.elasticstack.compute.ElasticStackComputeServiceAdapter.createNodeWithGroupEncodedIntoName(ElasticStackComputeServiceAdapter.java:113)
	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$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 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 http://api.jhb1.go2cloud.co.za/drives/create HTTP/1.1 failed with response: HTTP/1.1 402 Payment Required; content: [Please top up your balance, which is currently negative
]
	at org.jclouds.elasticstack.handlers.ElasticStackErrorHandler.handleError(ElasticStackErrorHandler.java:56)
	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.$Proxy56.createDrive(Unknown Source)
	at org.jclouds.elasticstack.compute.ElasticStackComputeServiceAdapter.createNodeWithGroupEncodedIntoName(ElasticStackComputeServiceAdapter.java:113)
	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$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(go2cloud-jhb1) image(14c88d27-1f5e-4ad5-9f3a-28e5d2282f61) size(cpu=1000.000000,ram=512,disk=1.000000) options({blockOnPort:seconds=22:301, inboundPorts=[22, 8080]})
Execution failures:
1) ExecutionException on twin1-d34:
java.util.concurrent.ExecutionException: org.jclouds.http.HttpResponseException: command: POST http://api.jhb1.go2cloud.co.za/drives/create HTTP/1.1 failed with response: HTTP/1.1 402 Payment Required; content: [Please top up your balance, which is currently negative
]
	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 http://api.jhb1.go2cloud.co.za/drives/create HTTP/1.1 failed with response: HTTP/1.1 402 Payment Required; content: [Please top up your balance, which is currently negative
]
	at org.jclouds.elasticstack.handlers.ElasticStackErrorHandler.handleError(ElasticStackErrorHandler.java:56)
	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.$Proxy56.createDrive(Unknown Source)
	at org.jclouds.elasticstack.compute.ElasticStackComputeServiceAdapter.createNodeWithGroupEncodedIntoName(ElasticStackComputeServiceAdapter.java:113)
	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$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 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


Results :

Failed tests:   testTemplateBuilderCanFind(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1TemplateBuilderLiveTest): no image matched predicate: And(nullEqualToIsParentOrIsGrandparentOfCurrentLocation(),And(osFamily(windows),os64Bit(true)))
  testCreateDrive(org.jclouds.go2cloud.Go2CloudJohannesburg1ClientLiveTest): command: POST http://api.jhb1.go2cloud.co.za/drives/create HTTP/1.1 failed with response: HTTP/1.1 402 Payment Required; content: [Please top up your balance, which is currently negative(..)
  testCreateAndRunAService(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1ComputeServiceLiveTest): error running 1 node group(go2cloud-s) location(go2cloud-jhb1) image(14c88d27-1f5e-4ad5-9f3a-28e5d2282f61) size(cpu=1000.000000,ram=512,disk=1.000000) options({blockOnPort:seconds=22:300, inboundPorts=[22, 8080], tags=[go2cloud-s], userMetadata={test=go2cloud-s}})(..)
  testWeCanReadAndWriteToDrive(org.jclouds.go2cloud.Go2CloudJohannesburg1ClientLiveTest): command: POST http://api.jhb1.go2cloud.co.za/drives/create HTTP/1.1 failed with response: HTTP/1.1 402 Payment Required; content: [Please top up your balance, which is currently negative(..)
  testAScriptExecutionAfterBootWithBasicTemplate(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1ComputeServiceLiveTest): error running 1 node group(go2cloud-r) location(go2cloud-jhb1) image(14c88d27-1f5e-4ad5-9f3a-28e5d2282f61) size(cpu=1000.000000,ram=512,disk=1.000000) options({blockOnPort:seconds=22:120})(..)
  testConcurrentUseOfComputeServiceToCreateNodes(org.jclouds.go2cloud.compute.Go2CloudJohannesburg1ComputeServiceLiveTest): org.jclouds.compute.RunNodesException: error running 1 node group(twin1) location(go2cloud-jhb1) image(14c88d27-1f5e-4ad5-9f3a-28e5d2282f61) size(cpu=1000.000000,ram=512,disk=1.000000) options({blockOnPort:seconds=22:301, inboundPorts=[22, 8080]})(..)

Tests run: 131, Failures: 6, Errors: 0, Skipped: 18

[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 30.983s
[INFO] Finished at: Sat Apr 27 16:41:12 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 go2cloud-jhb1: There are test failures.
[ERROR] 
[ERROR] Please refer to /private/tmp/jclouds/providers/go2cloud-jhb1/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
