[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&amp;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:&nbsp; I have=20
a page which under some circumstances returns a 204 No content http =
status=20
code.&nbsp; 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).&nbsp; How can I =
run a=20
test that expects a 204 status code, or is this a bug that I've =
found?&nbsp;=20
Details below.</FONT></SPAN></DIV>
<DIV><SPAN class=3D375553816-19062007><FONT face=3DArial=20
size=3D2></FONT></SPAN>&nbsp;</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>&nbsp;</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>&nbsp;</DIV>
<DIV><SPAN class=3D375553816-19062007><FONT face=3DArial size=3D2>
<DIV align=3Dleft><FONT =
face=3DTahoma></FONT>&nbsp;</DIV></FONT></SPAN></DIV>
<DIV><SPAN class=3D375553816-19062007><FONT face=3DArial=20
size=3D2></FONT></SPAN>&nbsp;</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>&nbsp;&nbsp;&nbsp;=20
&lt;webtest name=3D"3 Camera Control"&gt;<BR>&lt;config<BR>&nbsp;=20
host=3D"${target.host}"<BR>&nbsp; =
basepath=3D"${hanet.basepath}"<BR>&nbsp;=20
summary=3D"true"<BR>&nbsp; saveresponse=3D"true"<BR>&nbsp;=20
haltonfailure=3D"${halt.on.failure}"&gt;<BR>&nbsp; &lt;option=20
name=3D"ThrowExceptionOnFailingStatusCode"=20
value=3D"false"/&gt;<BR>&lt;/config&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
=20
&lt;steps&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;invoke=20
description=3D"3.1/spec 2.2.5 Valid positive=20
pan"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;=20
url=3D"control.cgi?cameraid=3D10004&amp;amp;pan=3D45"<BR>&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
/&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
&lt;storeResponseCode=20
property=3D"status"/&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
&lt;verifyProperty description=3D"expecting 202 No=20
Content"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;=20
name=3D"status"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;=20
text=3D"202" /&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
&lt;/steps&gt;<BR>&nbsp;&nbsp;&nbsp; =
&lt;/webtest&gt;</FONT></SPAN></DIV>
<DIV><SPAN class=3D375553816-19062007><FONT face=3DArial=20
size=3D2></FONT></SPAN>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
at=20
org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:1025)<BR>&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
at=20
org.apache.commons.io.IOUtils.copy(IOUtils.java:999)<BR>&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;=20
at=20
org.apache.commons.io.IOUtils.toByteArray(IOUtils.java:218)<BR>&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
at=20
com.gargoylesoftware.htmlunit.WebResponseData.getBody(WebResponseData.jav=
a:150)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
at=20
com.gargoylesoftware.htmlunit.WebResponseData.&lt;init&gt;(WebResponseDat=
a.java:105)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
at=20
com.gargoylesoftware.htmlunit.HttpWebConnection.makeWebResponse(HttpWebCo=
nnection.java:387)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
at=20
com.gargoylesoftware.htmlunit.HttpWebConnection.getResponse(HttpWebConnec=
tion.java:128)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
at=20
com.gargoylesoftware.htmlunit.WebClient.loadWebResponseFromWebConnection(=
WebClient.java:1424)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
at=20
com.gargoylesoftware.htmlunit.WebClient.loadWebResponse(WebClient.java:13=
81)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
at=20
com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:332)<BR>&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
at=20
com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:399)<BR>&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
at=20
com.canoo.webtest.steps.request.TargetHelper.getResponse(TargetHelper.jav=
a:69)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
at=20
com.canoo.webtest.steps.request.AbstractTargetAction.getResponse(Abstract=
TargetAction.java:68)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
at=20
com.canoo.webtest.steps.request.InvokePage.findTarget(InvokePage.java:134=
)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
at=20
com.canoo.webtest.steps.request.AbstractTargetAction$1.call(AbstractTarge=
tAction.java:108)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
at=20
com.canoo.webtest.steps.request.TargetHelper.protectedGoto(TargetHelper.j=
ava:88)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
at=20
com.canoo.webtest.steps.request.AbstractTargetAction.gotoTarget(AbstractT=
argetAction.java:106)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
at=20
com.canoo.webtest.steps.request.AbstractTargetAction.doExecute(AbstractTa=
rgetAction.java:78)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
at=20
com.canoo.webtest.steps.Step.execute(Step.java:104)<BR>&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;=20
at=20
org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275)<BR>&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
at=20
org.apache.tools.ant.Task.perform(Task.java:364)<BR>&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;=20
at=20
com.canoo.webtest.ant.TestStepSequence.executeSteps(TestStepSequence.java=
:43)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
at=20
com.canoo.webtest.ant.TestStepSequence.doExecute(TestStepSequence.java:31=
)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
at=20
com.canoo.webtest.steps.Step.execute(Step.java:104)<BR>&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;=20
at=20
org.apache.tools.ant.Task.perform(Task.java:364)<BR>&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;=20
at=20
com.canoo.webtest.ant.WebtestTask.execute(WebtestTask.java:164)<BR>&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
at=20
org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275)<BR>&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
at=20
org.apache.tools.ant.Task.perform(Task.java:364)<BR>&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;=20
at=20
org.apache.tools.ant.Target.execute(Target.java:341)<BR>&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;=20
at=20
org.apache.tools.ant.Target.performTasks(Target.java:369)<BR>&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
at=20
org.apache.tools.ant.Project.executeSortedTargets(Project.java:1216)<BR>&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
at=20
org.apache.tools.ant.helper.SingleCheckExecutor.executeTargets(SingleChec=
kExecutor.java:37)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
at=20
org.apache.tools.ant.Project.executeTargets(Project.java:1068)<BR>&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
at=20
org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:382)<BR>&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;=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>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at=20
org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275)<BR>&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
at=20
org.apache.tools.ant.Task.perform(Task.java:364)<BR>&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;=20
at=20
org.apache.tools.ant.Target.execute(Target.java:341)<BR>&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;=20
at=20
org.apache.tools.ant.Target.performTasks(Target.java:369)<BR>&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
at=20
org.apache.tools.ant.Project.executeSortedTargets(Project.java:1216)<BR>&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
at=20
org.apache.tools.ant.Project.executeTarget(Project.java:1185)<BR>&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
at=20
org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecuto=
r.java:40)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
at=20
org.apache.tools.ant.Project.executeTargets(Project.java:1068)<BR>&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
at=20
org.apache.tools.ant.Main.runBuild(Main.java:668)<BR>&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;=20
at=20
org.apache.tools.ant.Main.startAnt(Main.java:187)<BR>&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;=20
at=20
org.apache.tools.ant.launch.Launcher.run(Launcher.java:246)<BR>&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=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>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV></BODY></HTML>

------_=_NextPart_001_01C7B291.720EF705--