[Webtest] Problem with 204 No Content response
Jon Davies
Jon Davies" <Jon.Davies@scisys.co.uk
Tue, 19 Jun 2007 17:45:41 +0100
This is a multi-part message in MIME format.
------_=_NextPart_001_01C7B291.720EF705
Content-Type: text/plain;
charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
I've been beginning to use canoo webtest on my current project, but have
hit a problem: I have a page which under some circumstances returns a
204 No content http status code. But the tests I've built in webtest
fail to run - (its not that they run and fail, but they they won't run
and webtest dies). How can I run a test that expects a 204 status code,
or is this a bug that I've found? Details below.
=20
Any help would be appreciated :)
=20
thanks
Jon
=20
=20
=20
The test code is:
<webtest name=3D"3 Camera Control">
<config
host=3D"${target.host}"
basepath=3D"${hanet.basepath}"
summary=3D"true"
saveresponse=3D"true"
haltonfailure=3D"${halt.on.failure}">
<option name=3D"ThrowExceptionOnFailingStatusCode" value=3D"false"/>
</config>
<steps>
<invoke description=3D"3.1/spec 2.2.5 Valid positive pan"
url=3D"control.cgi?cameraid=3D10004&pan=3D45"
/>
<storeResponseCode property=3D"status"/>
<verifyProperty description=3D"expecting 202 No Content"
name=3D"status"
text=3D"202" />
</steps>
</webtest>
=20
The server returns this:
HTTP/1.1 204 No Content
Connection: keep-alive
Date: Tue, 19 Jun 2007 16:40:25 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
MicrosoftOfficeWebServer: 5.0_Pub
X-AspNet-Version: 2.0.50727
Cache-Control: private
Content-Length: 0
=20
(and no content)
=20
and the error message I get is this:
BUILD FAILED
C:\Home\davies_fj\Workspace\SwordTests\runtests.xml:30: The following
error occurred while executing this line:
C:\Home\davies_fj\Workspace\SwordTests\hanet.xml:137: Canoo Webtest:
R_1560.
Test failed.
Exception raised:
java.lang.NullPointerExceptionjava.lang.NullPointerException
at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:1025)
at org.apache.commons.io.IOUtils.copy(IOUtils.java:999)
at org.apache.commons.io.IOUtils.toByteArray(IOUtils.java:218)
at
com.gargoylesoftware.htmlunit.WebResponseData.getBody(WebResponseData.ja
va:150)
at
com.gargoylesoftware.htmlunit.WebResponseData.<init>(WebResponseData.jav
a:105)
at
com.gargoylesoftware.htmlunit.HttpWebConnection.makeWebResponse(HttpWebC
onnection.java:387)
at
com.gargoylesoftware.htmlunit.HttpWebConnection.getResponse(HttpWebConne
ction.java:128)
at
com.gargoylesoftware.htmlunit.WebClient.loadWebResponseFromWebConnection
(WebClient.java:1424)
at
com.gargoylesoftware.htmlunit.WebClient.loadWebResponse(WebClient.java:1
381)
at
com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:332)
at
com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:399)
at
com.canoo.webtest.steps.request.TargetHelper.getResponse(TargetHelper.ja
va:69)
at
com.canoo.webtest.steps.request.AbstractTargetAction.getResponse(Abstrac
tTargetAction.java:68)
at
com.canoo.webtest.steps.request.InvokePage.findTarget(InvokePage.java:13
4)
at
com.canoo.webtest.steps.request.AbstractTargetAction$1.call(AbstractTarg
etAction.java:108)
at
com.canoo.webtest.steps.request.TargetHelper.protectedGoto(TargetHelper.
java:88)
at
com.canoo.webtest.steps.request.AbstractTargetAction.gotoTarget(Abstract
TargetAction.java:106)
at
com.canoo.webtest.steps.request.AbstractTargetAction.doExecute(AbstractT
argetAction.java:78)
at com.canoo.webtest.steps.Step.execute(Step.java:104)
at
org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275)
at org.apache.tools.ant.Task.perform(Task.java:364)
at
com.canoo.webtest.ant.TestStepSequence.executeSteps(TestStepSequence.jav
a:43)
at
com.canoo.webtest.ant.TestStepSequence.doExecute(TestStepSequence.java:3
1)
at com.canoo.webtest.steps.Step.execute(Step.java:104)
at org.apache.tools.ant.Task.perform(Task.java:364)
at
com.canoo.webtest.ant.WebtestTask.execute(WebtestTask.java:164)
at
org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275)
at org.apache.tools.ant.Task.perform(Task.java:364)
at org.apache.tools.ant.Target.execute(Target.java:341)
at org.apache.tools.ant.Target.performTasks(Target.java:369)
at
org.apache.tools.ant.Project.executeSortedTargets(Project.java:1216)
at
org.apache.tools.ant.helper.SingleCheckExecutor.executeTargets(SingleChe
ckExecutor.java:37)
at
org.apache.tools.ant.Project.executeTargets(Project.java:1068)
at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:382)
at
org.apache.tools.ant.taskdefs.CallTarget.execute(CallTarget.java:107)
at
org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275)
at org.apache.tools.ant.Task.perform(Task.java:364)
at org.apache.tools.ant.Target.execute(Target.java:341)
at org.apache.tools.ant.Target.performTasks(Target.java:369)
at
org.apache.tools.ant.Project.executeSortedTargets(Project.java:1216)
at org.apache.tools.ant.Project.executeTarget(Project.java:1185)
at
org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecut
or.java:40)
at
org.apache.tools.ant.Project.executeTargets(Project.java:1068)
at org.apache.tools.ant.Main.runBuild(Main.java:668)
at org.apache.tools.ant.Main.startAnt(Main.java:187)
at org.apache.tools.ant.launch.Launcher.run(Launcher.java:246)
at org.apache.tools.ant.launch.Launcher.main(Launcher.java:67)
=20
=20
------_=_NextPart_001_01C7B291.720EF705
Content-Type: text/html;
charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=3DContent-Type content=3D"text/html; =
charset=3Dus-ascii">
<META content=3D"MSHTML 6.00.6000.16414" name=3DGENERATOR></HEAD>
<BODY>
<DIV><SPAN class=3D375553816-19062007><FONT face=3DArial size=3D2>I've =
been beginning=20
to use canoo webtest on my current project, but have hit a =
problem: I have=20
a page which under some circumstances returns a 204 No content http =
status=20
code. But the tests I've built in webtest fail to run - (its not =
that they=20
run and fail, but they they won't run and webtest dies). How can I =
run a=20
test that expects a 204 status code, or is this a bug that I've =
found? =20
Details below.</FONT></SPAN></DIV>
<DIV><SPAN class=3D375553816-19062007><FONT face=3DArial=20
size=3D2></FONT></SPAN> </DIV>
<DIV><SPAN class=3D375553816-19062007><FONT face=3DArial size=3D2>Any =
help would be=20
appreciated :)</FONT></SPAN></DIV>
<DIV><SPAN class=3D375553816-19062007><FONT face=3DArial=20
size=3D2></FONT></SPAN> </DIV>
<DIV><SPAN class=3D375553816-19062007><FONT face=3DArial=20
size=3D2>thanks</FONT></SPAN></DIV>
<DIV><SPAN class=3D375553816-19062007><FONT face=3DArial=20
size=3D2>Jon</FONT></SPAN></DIV>
<DIV><SPAN class=3D375553816-19062007><FONT face=3DArial=20
size=3D2></FONT></SPAN> </DIV>
<DIV><SPAN class=3D375553816-19062007><FONT face=3DArial size=3D2>
<DIV align=3Dleft><FONT =
face=3DTahoma></FONT> </DIV></FONT></SPAN></DIV>
<DIV><SPAN class=3D375553816-19062007><FONT face=3DArial=20
size=3D2></FONT></SPAN> </DIV>
<DIV><SPAN class=3D375553816-19062007><FONT face=3DArial size=3D2>The =
test code=20
is:</FONT></SPAN></DIV>
<DIV><SPAN class=3D375553816-19062007><FONT face=3DArial =
size=3D2> =20
<webtest name=3D"3 Camera Control"><BR><config<BR> =20
host=3D"${target.host}"<BR> =
basepath=3D"${hanet.basepath}"<BR> =20
summary=3D"true"<BR> saveresponse=3D"true"<BR> =20
haltonfailure=3D"${halt.on.failure}"><BR> <option=20
name=3D"ThrowExceptionOnFailingStatusCode"=20
value=3D"false"/><BR></config><BR> =
=20
<steps><BR> <invoke=20
description=3D"3.1/spec 2.2.5 Valid positive=20
pan"<BR>  =
; =20
url=3D"control.cgi?cameraid=3D10004&amp;pan=3D45"<BR> &nbs=
p; =20
/><BR> =
<storeResponseCode=20
property=3D"status"/><BR> =20
<verifyProperty description=3D"expecting 202 No=20
Content"<BR> &=
nbsp; &n=
bsp;=20
name=3D"status"<BR> =
&=
nbsp; =20
text=3D"202" /><BR> =20
</steps><BR> =
</webtest></FONT></SPAN></DIV>
<DIV><SPAN class=3D375553816-19062007><FONT face=3DArial=20
size=3D2></FONT></SPAN> </DIV>
<DIV><SPAN class=3D375553816-19062007><FONT face=3DArial size=3D2>The =
server returns=20
this:</FONT></SPAN></DIV>
<DIV><SPAN class=3D375553816-19062007><FONT face=3DArial =
size=3D2>HTTP/1.1 204 No=20
Content<BR>Connection: keep-alive<BR>Date: Tue, 19 Jun 2007 16:40:25=20
GMT<BR>Server: Microsoft-IIS/6.0<BR>X-Powered-By:=20
ASP.NET<BR>MicrosoftOfficeWebServer: 5.0_Pub<BR>X-AspNet-Version:=20
2.0.50727<BR>Cache-Control: private<BR>Content-Length: =
0</FONT></SPAN></DIV>
<DIV><SPAN class=3D375553816-19062007><FONT face=3DArial=20
size=3D2></FONT></SPAN> </DIV>
<DIV><SPAN class=3D375553816-19062007><FONT face=3DArial size=3D2>(and =
no=20
content)</FONT></SPAN></DIV>
<DIV><SPAN class=3D375553816-19062007><FONT face=3DArial=20
size=3D2></FONT></SPAN> </DIV>
<DIV><SPAN class=3D375553816-19062007><FONT face=3DArial size=3D2>and =
the error=20
message I get is this:</FONT></SPAN></DIV>
<DIV><SPAN class=3D375553816-19062007><FONT face=3DArial size=3D2>BUILD=20
FAILED<BR>C:\Home\davies_fj\Workspace\SwordTests\runtests.xml:30: The =
following=20
error occurred while executing this=20
line:<BR>C:\Home\davies_fj\Workspace\SwordTests\hanet.xml:137: Canoo =
Webtest:=20
R_1560.<BR>Test failed.<BR>Exception raised:=20
java.lang.NullPointerExceptionjava.lang.NullPointerException<BR> &nb=
sp; =20
at=20
org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:1025)<BR>  =
; =20
at=20
org.apache.commons.io.IOUtils.copy(IOUtils.java:999)<BR>  =
; =20
at=20
org.apache.commons.io.IOUtils.toByteArray(IOUtils.java:218)<BR> &nbs=
p; =20
at=20
com.gargoylesoftware.htmlunit.WebResponseData.getBody(WebResponseData.jav=
a:150)<BR> =20
at=20
com.gargoylesoftware.htmlunit.WebResponseData.<init>(WebResponseDat=
a.java:105)<BR> =20
at=20
com.gargoylesoftware.htmlunit.HttpWebConnection.makeWebResponse(HttpWebCo=
nnection.java:387)<BR> =20
at=20
com.gargoylesoftware.htmlunit.HttpWebConnection.getResponse(HttpWebConnec=
tion.java:128)<BR> =20
at=20
com.gargoylesoftware.htmlunit.WebClient.loadWebResponseFromWebConnection(=
WebClient.java:1424)<BR> =20
at=20
com.gargoylesoftware.htmlunit.WebClient.loadWebResponse(WebClient.java:13=
81)<BR> =20
at=20
com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:332)<BR>&n=
bsp; =20
at=20
com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:399)<BR>&n=
bsp; =20
at=20
com.canoo.webtest.steps.request.TargetHelper.getResponse(TargetHelper.jav=
a:69)<BR> =20
at=20
com.canoo.webtest.steps.request.AbstractTargetAction.getResponse(Abstract=
TargetAction.java:68)<BR> =20
at=20
com.canoo.webtest.steps.request.InvokePage.findTarget(InvokePage.java:134=
)<BR> =20
at=20
com.canoo.webtest.steps.request.AbstractTargetAction$1.call(AbstractTarge=
tAction.java:108)<BR> =20
at=20
com.canoo.webtest.steps.request.TargetHelper.protectedGoto(TargetHelper.j=
ava:88)<BR> =20
at=20
com.canoo.webtest.steps.request.AbstractTargetAction.gotoTarget(AbstractT=
argetAction.java:106)<BR> =20
at=20
com.canoo.webtest.steps.request.AbstractTargetAction.doExecute(AbstractTa=
rgetAction.java:78)<BR> =20
at=20
com.canoo.webtest.steps.Step.execute(Step.java:104)<BR> =
=20
at=20
org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275)<BR>&=
nbsp; =20
at=20
org.apache.tools.ant.Task.perform(Task.java:364)<BR> &nb=
sp; =20
at=20
com.canoo.webtest.ant.TestStepSequence.executeSteps(TestStepSequence.java=
:43)<BR> =20
at=20
com.canoo.webtest.ant.TestStepSequence.doExecute(TestStepSequence.java:31=
)<BR> =20
at=20
com.canoo.webtest.steps.Step.execute(Step.java:104)<BR> =
=20
at=20
org.apache.tools.ant.Task.perform(Task.java:364)<BR> &nb=
sp; =20
at=20
com.canoo.webtest.ant.WebtestTask.execute(WebtestTask.java:164)<BR> =
=20
at=20
org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275)<BR>&=
nbsp; =20
at=20
org.apache.tools.ant.Task.perform(Task.java:364)<BR> &nb=
sp; =20
at=20
org.apache.tools.ant.Target.execute(Target.java:341)<BR>  =
; =20
at=20
org.apache.tools.ant.Target.performTasks(Target.java:369)<BR> =
=20
at=20
org.apache.tools.ant.Project.executeSortedTargets(Project.java:1216)<BR>&=
nbsp; =20
at=20
org.apache.tools.ant.helper.SingleCheckExecutor.executeTargets(SingleChec=
kExecutor.java:37)<BR> =20
at=20
org.apache.tools.ant.Project.executeTargets(Project.java:1068)<BR> &=
nbsp; =20
at=20
org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:382)<BR> &n=
bsp; =20
at=20
org.apache.tools.ant.taskdefs.CallTarget.execute(CallTarget.java:107)</FO=
NT></SPAN></DIV>
<DIV><SPAN class=3D375553816-19062007><FONT face=3DArial=20
size=3D2> at=20
org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275)<BR>&=
nbsp; =20
at=20
org.apache.tools.ant.Task.perform(Task.java:364)<BR> &nb=
sp; =20
at=20
org.apache.tools.ant.Target.execute(Target.java:341)<BR>  =
; =20
at=20
org.apache.tools.ant.Target.performTasks(Target.java:369)<BR> =
=20
at=20
org.apache.tools.ant.Project.executeSortedTargets(Project.java:1216)<BR>&=
nbsp; =20
at=20
org.apache.tools.ant.Project.executeTarget(Project.java:1185)<BR> &n=
bsp; =20
at=20
org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecuto=
r.java:40)<BR> =20
at=20
org.apache.tools.ant.Project.executeTargets(Project.java:1068)<BR> &=
nbsp; =20
at=20
org.apache.tools.ant.Main.runBuild(Main.java:668)<BR> &n=
bsp; =20
at=20
org.apache.tools.ant.Main.startAnt(Main.java:187)<BR> &n=
bsp; =20
at=20
org.apache.tools.ant.launch.Launcher.run(Launcher.java:246)<BR> &nbs=
p; =20
at=20
org.apache.tools.ant.launch.Launcher.main(Launcher.java:67)</FONT></SPAN>=
</DIV>
<DIV><SPAN class=3D375553816-19062007><FONT face=3DArial=20
size=3D2></FONT></SPAN> </DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV></BODY></HTML>
------_=_NextPart_001_01C7B291.720EF705--