-------------------------------------------------------------------------------
Test set: TestSuite
-------------------------------------------------------------------------------
Tests run: 152, Failures: 4, Errors: 0, Skipped: 15, Time elapsed: 2,153.049 sec <<< FAILURE!
testGetImagesDetail(org.jclouds.rackspace.cloudservers.CloudServersUSClientLiveTest)  Time elapsed: 1.368 sec  <<< FAILURE!
java.lang.AssertionError: expected [Image{created=Wed Aug 17 03:11:30 PDT 2011, id=118, name=CentOS 6.0, progress=null, serverId=null, status=ACTIVE, updated=Wed Aug 17 03:11:30 PDT 2011}] but found [Image{created=null, id=118, name=CentOS 6.0, progress=null, serverId=null, status=ACTIVE, updated=Wed Aug 17 03:11:30 PDT 2011}]
	at org.testng.Assert.fail(Assert.java:94)
	at org.testng.Assert.failNotEquals(Assert.java:494)
	at org.testng.Assert.assertEquals(Assert.java:123)
	at org.testng.Assert.assertEquals(Assert.java:165)
	at org.jclouds.cloudservers.CloudServersClientLiveTest.testGetImagesDetail(CloudServersClientLiveTest.java:152)
	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)

testLimits(org.jclouds.rackspace.cloudservers.CloudServersUSClientLiveTest)  Time elapsed: 0.607 sec  <<< FAILURE!
org.jclouds.http.HttpResponseException: Error parsing input
{statusCode=200, message=OK, headers={Age=[0], Last-Modified=[Sat, 09 Mar 2013 18:27:57 GMT], Connection=[keep-alive], vary=[Accept, Accept-Encoding, X-Auth-Token], Server=[Apache-Coyote/1.1], Cache-Control=[s-maxage=1800], X-Varnish=[1109082680], Date=[Sat, 09 Mar 2013 18:27:57 GMT], X-PURGE-KEY=[/413274/limits], Via=[1.1 varnish]}, payload=[content=true, contentMetadata=[contentDisposition=null, contentEncoding=null, contentLanguage=null, contentLength=675, contentMD5=null, contentType=application/json, expires=null], written=false]}
	at org.jclouds.http.functions.ParseJson.apply(ParseJson.java:71)
	at org.jclouds.http.functions.UnwrapOnlyJsonValue.apply(UnwrapOnlyJsonValue.java:46)
	at org.jclouds.http.functions.UnwrapOnlyJsonValue.apply(UnwrapOnlyJsonValue.java:34)
	at org.jclouds.rest.internal.InvokeHttpMethod.invoke(InvokeHttpMethod.java:131)
	at org.jclouds.rest.internal.InvokeHttpMethod.apply(InvokeHttpMethod.java:97)
	at org.jclouds.rest.internal.InvokeHttpMethod.apply(InvokeHttpMethod.java:59)
	at org.jclouds.rest.internal.DelegatesToInvocationFunction.handle(DelegatesToInvocationFunction.java:137)
	at org.jclouds.rest.internal.DelegatesToInvocationFunction.invoke(DelegatesToInvocationFunction.java:125)
	at com.sun.proxy.$Proxy63.getLimits(Unknown Source)
	at org.jclouds.cloudservers.CloudServersClientLiveTest.testLimits(CloudServersClientLiveTest.java:99)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:80)
	at org.testng.internal.Invoker.invokeMethod(Invoker.java:714)
	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901)
	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231)
	at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:127)
	at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111)
	at org.testng.TestRunner.privateRun(TestRunner.java:767)
	at org.testng.TestRunner.run(TestRunner.java:617)
	at org.testng.SuiteRunner.runTest(SuiteRunner.java:334)
	at org.testng.SuiteRunner.access$000(SuiteRunner.java:37)
	at org.testng.SuiteRunner$SuiteWorker.run(SuiteRunner.java:368)
	at org.testng.internal.thread.ThreadUtil$2.call(ThreadUtil.java:64)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
	at java.lang.Thread.run(Thread.java:680)
Caused by: java.lang.NullPointerException: uri
	at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:208)
	at org.jclouds.cloudservers.domain.RateLimit.<init>(RateLimit.java:159)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
	at com.google.common.reflect.Invokable$ConstructorInvokable.invokeInternal(Invokable.java:243)
	at com.google.common.reflect.Invokable.invoke(Invokable.java:102)
	at org.jclouds.json.internal.DeserializationConstructorAndReflectiveTypeAdapterFactory$DeserializeIntoParameterizedConstructor.newInstance(DeserializationConstructorAndReflectiveTypeAdapterFactory.java:214)
	at org.jclouds.json.internal.DeserializationConstructorAndReflectiveTypeAdapterFactory$DeserializeIntoParameterizedConstructor.read(DeserializationConstructorAndReflectiveTypeAdapterFactory.java:194)
	at org.jclouds.json.internal.NullFilteringTypeAdapterFactories$IterableTypeAdapterFactory$IterableTypeAdapter.readAndBuild(NullFilteringTypeAdapterFactories.java:120)
	at org.jclouds.json.internal.NullFilteringTypeAdapterFactories$SetTypeAdapterFactory$SetTypeAdapter.read(NullFilteringTypeAdapterFactories.java:223)
	at org.jclouds.json.internal.NullFilteringTypeAdapterFactories$SetTypeAdapterFactory$SetTypeAdapter.read(NullFilteringTypeAdapterFactories.java:209)
	at org.jclouds.json.internal.DeserializationConstructorAndReflectiveTypeAdapterFactory$ParameterReader.read(DeserializationConstructorAndReflectiveTypeAdapterFactory.java:262)
	at org.jclouds.json.internal.DeserializationConstructorAndReflectiveTypeAdapterFactory$DeserializeIntoParameterizedConstructor.read(DeserializationConstructorAndReflectiveTypeAdapterFactory.java:176)
	at org.jclouds.json.internal.NullFilteringTypeAdapterFactories$MapTypeAdapterFactory$MapTypeAdapter.read(NullFilteringTypeAdapterFactories.java:355)
	at org.jclouds.json.internal.NullFilteringTypeAdapterFactories$MapTypeAdapterFactory$MapTypeAdapter.read(NullFilteringTypeAdapterFactories.java:325)
	at com.google.gson.Gson.fromJson(Gson.java:795)
	at com.google.gson.Gson.fromJson(Gson.java:761)
	at com.google.gson.Gson.fromJson(Gson.java:710)
	at org.jclouds.json.internal.GsonWrapper.fromJson(GsonWrapper.java:47)
	at org.jclouds.http.functions.ParseJson.apply(ParseJson.java:86)
	at org.jclouds.http.functions.ParseJson.apply(ParseJson.java:80)
	at org.jclouds.http.functions.ParseJson.apply(ParseJson.java:66)
	... 30 more
Caused by: java.lang.NullPointerException: uri
	at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:208)
	at org.jclouds.cloudservers.domain.RateLimit.<init>(RateLimit.java:159)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
	at com.google.common.reflect.Invokable$ConstructorInvokable.invokeInternal(Invokable.java:243)
	at com.google.common.reflect.Invokable.invoke(Invokable.java:102)
	at org.jclouds.json.internal.DeserializationConstructorAndReflectiveTypeAdapterFactory$DeserializeIntoParameterizedConstructor.newInstance(DeserializationConstructorAndReflectiveTypeAdapterFactory.java:214)
	at org.jclouds.json.internal.DeserializationConstructorAndReflectiveTypeAdapterFactory$DeserializeIntoParameterizedConstructor.read(DeserializationConstructorAndReflectiveTypeAdapterFactory.java:194)
	at org.jclouds.json.internal.NullFilteringTypeAdapterFactories$IterableTypeAdapterFactory$IterableTypeAdapter.readAndBuild(NullFilteringTypeAdapterFactories.java:120)
	at org.jclouds.json.internal.NullFilteringTypeAdapterFactories$SetTypeAdapterFactory$SetTypeAdapter.read(NullFilteringTypeAdapterFactories.java:223)
	at org.jclouds.json.internal.NullFilteringTypeAdapterFactories$SetTypeAdapterFactory$SetTypeAdapter.read(NullFilteringTypeAdapterFactories.java:209)
	at org.jclouds.json.internal.DeserializationConstructorAndReflectiveTypeAdapterFactory$ParameterReader.read(DeserializationConstructorAndReflectiveTypeAdapterFactory.java:262)
	at org.jclouds.json.internal.DeserializationConstructorAndReflectiveTypeAdapterFactory$DeserializeIntoParameterizedConstructor.read(DeserializationConstructorAndReflectiveTypeAdapterFactory.java:176)
	at org.jclouds.json.internal.NullFilteringTypeAdapterFactories$MapTypeAdapterFactory$MapTypeAdapter.read(NullFilteringTypeAdapterFactories.java:355)
	at org.jclouds.json.internal.NullFilteringTypeAdapterFactories$MapTypeAdapterFactory$MapTypeAdapter.read(NullFilteringTypeAdapterFactories.java:325)
	at com.google.gson.Gson.fromJson(Gson.java:795)
	at com.google.gson.Gson.fromJson(Gson.java:761)
	at com.google.gson.Gson.fromJson(Gson.java:710)
	at org.jclouds.json.internal.GsonWrapper.fromJson(GsonWrapper.java:47)
	at org.jclouds.http.functions.ParseJson.apply(ParseJson.java:86)
	at org.jclouds.http.functions.ParseJson.apply(ParseJson.java:80)
	at org.jclouds.http.functions.ParseJson.apply(ParseJson.java:66)
	... 30 more

testListSharedIpGroupsDetail(org.jclouds.rackspace.cloudservers.CloudServersUSClientLiveTest)  Time elapsed: 0.969 sec  <<< FAILURE!
java.lang.AssertionError: SharedIpGroup{id=132, name=adriancole.cscreateSharedIpGroup-1094333284, servers=null}
	at org.jclouds.cloudservers.CloudServersClientLiveTest.testListSharedIpGroupsDetail(CloudServersClientLiveTest.java:238)
	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)

testCreateSharedIpGroup(org.jclouds.rackspace.cloudservers.CloudServersUSClientLiveTest)  Time elapsed: 1.115 sec  <<< FAILURE!
org.jclouds.http.HttpResponseException: command: POST https://servers.api.rackspacecloud.com/v1.0/413274/shared_ip_groups?format=json HTTP/1.1 failed with response: HTTP/1.1 413 Request Entity Too Large; content: [{"overLimit":{"message":"Customer can not create any additional shared IP groups.","code":413,"retryAfter":null}}]
	at org.jclouds.cloudservers.handlers.ParseCloudServersErrorFromHttpResponse.handleError(ParseCloudServersErrorFromHttpResponse.java:76)
	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.InvokeHttpMethod.invoke(InvokeHttpMethod.java:131)
	at org.jclouds.rest.internal.InvokeHttpMethod.apply(InvokeHttpMethod.java:97)
	at org.jclouds.rest.internal.InvokeHttpMethod.apply(InvokeHttpMethod.java:59)
	at org.jclouds.rest.internal.DelegatesToInvocationFunction.handle(DelegatesToInvocationFunction.java:137)
	at org.jclouds.rest.internal.DelegatesToInvocationFunction.invoke(DelegatesToInvocationFunction.java:125)
	at com.sun.proxy.$Proxy63.createSharedIpGroup(Unknown Source)
	at org.jclouds.cloudservers.CloudServersClientLiveTest.testCreateSharedIpGroup(CloudServersClientLiveTest.java:264)
	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.InvokeMethodRunnable.runOne(InvokeMethodRunnable.java:46)
	at org.testng.internal.InvokeMethodRunnable.run(InvokeMethodRunnable.java:37)
	at org.testng.internal.MethodInvocationHelper.invokeWithTimeoutWithNoExecutor(MethodInvocationHelper.java:222)
	at org.testng.internal.MethodInvocationHelper.invokeWithTimeout(MethodInvocationHelper.java:211)
	at org.testng.internal.Invoker.invokeMethod(Invoker.java:724)
	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)

